
    q"h|%                       % S SK Jr  S SKrS SKrS SKrS SKrS SKrS SKrS SKrS SK	J
r
JrJrJr  SSKJrJrJrJr  SrSrSr\R,                  SS	 j5       rSS
 jrSS jrSS jr\R6                  " S 5      rS\S'    " S S\5      rS S jrS S jr S S jr!S!S jr"\RF                  S"S j5       r$S#S jr%SSSS.r&S$S jr'g)%    )annotationsN)	GeneratorIterator
NamedTupleSequence   )EIClassEIDataELFFileEMachinel      ~ i   i   c              #     #     [        U S5       n[        U5      v   S S S 5        g ! , (       d  f       g = f! [        [        [        4 a    S v    g f = f7f)Nrb)openr   OSError	TypeError
ValueError)pathfs     R/var/www/html/env/lib/python3.13/site-packages/pip/_vendor/packaging/_manylinux.py
_parse_elfr      sE     $!* Y
+ 
s>   A8 '8 A
58 A8 AAAAc                   [        U 5       nUS L=(       a    UR                  [        R                  :H  =(       a    UR                  [
        R                  :H  =(       a_    UR                  [        R                  :H  =(       a;    UR                  [        -  [        :H  =(       a    UR                  [        -  [        :H   sS S S 5        $ ! , (       d  f       g = fN)r   capacityr	   C32encodingr
   Lsbmachiner   ArmflagsEF_ARM_ABIMASKEF_ARM_ABI_VER5EF_ARM_ABI_FLOAT_HARD
executabler   s     r   _is_linux_armhfr%      s     
J	1TM I

gkk)I

fjj(I 		X\\)I .(O;	I
 //3HH	
 
 		s   B3C		
Cc                0   [        U 5       nUS L=(       ae    UR                  [        R                  :H  =(       aA    UR                  [
        R                  :H  =(       a    UR                  [        R                  :H   sS S S 5        $ ! , (       d  f       g = fr   )
r   r   r	   r   r   r
   r   r   r   I386r#   s     r   _is_linux_i686r(   -   se    	J	1TM +

gkk)+

fjj(+ 		X]]*		
 
 		s   A1B
Bc                z   ^ SU;   a  [        U 5      $ SU;   a  [        U 5      $ 1 Skm[        U4S jU 5       5      $ )Narmv7li686>   ppc64s390xx86_64aarch64ppc64leriscv64loongarch64c              3  ,   >#    U  H	  oT;   v   M     g 7fr    ).0archallowed_archss     r   	<genexpr>'_have_compatible_abi.<locals>.<genexpr>E   s     7}$s   )r%   r(   any)r$   archsr7   s     @r   _have_compatible_abir<   7   sB    5z**j))M 7777    c                     g)N2   r4   r4   r=   r   <lambda>r@   M   s    Br=   zdict[int, int]_LAST_GLIBC_MINORc                  *    \ rS rSr% S\S'   S\S'   Srg)_GLibCVersionP   intmajorminorr4   N)__name__
__module____qualname____firstlineno____annotations____static_attributes__r4   r=   r   rC   rC   P   s    JJr=   rC   c                      [         R                  " S5      n U c   eU R                  5       u  pU$ ! [        [        [
        [        4 a     gf = f)zB
Primary implementation of glibc_version_string using os.confstr.
CS_GNU_LIBC_VERSIONN)osconfstrrsplitAssertionErrorAttributeErrorr   r   )version_string_versions      r   _glibc_version_string_confstrrX   U   sV    %'ZZ0E%F)))#**,
 N NGZ@ s   -1 AAc                 *    SSK n  U R                  S5      n UR                  nU R                  Ul        U" 5       n[        U[        5      (       d  UR                  S5      nU$ ! [         a     gf = f! [         a     gf = f! [
         a     gf = f)z?
Fallback implementation of glibc_version_string using ctypes.
r   Nascii)ctypesImportErrorCDLLr   gnu_get_libc_versionrT   c_char_prestype
isinstancestrdecode)r[   process_namespacer^   version_strs       r   _glibc_version_string_ctypesrf   h   s    ""KK-0EE $*?? +-Kk3''!((1G  $  
   s3   A% A5 B %
A21A25
BB
BBc                 8    [        5       =(       d
    [        5       $ )z9Returns glibc version string, or None if not using glibc.)rX   rf   r4   r=   r   _glibc_version_stringrh      s    (*L.J.LLr=   c                    [         R                  " SU 5      nU(       d  [        R                  " SU  3[        SS9  g[        UR                  S5      5      [        UR                  S5      5      4$ )a  Parse glibc version.

We use a regexp instead of str.split because we want to discard any
random junk that might come after the minor version -- this might happen
in patched/forked versions of glibc (e.g. Linaro's version of glibc
uses version strings like "2.20-2014.11"). See gh-3588.
z$(?P<major>[0-9]+)\.(?P<minor>[0-9]+)z;Expected glibc version with 2 components major.minor, got:    )
stacklevelrm   rF   rG   )rematchwarningswarnRuntimeWarningrE   group)re   ms     r   _parse_glibc_versionru      s`     	8+FAI+W	

 qwww #aggg&6"777r=   c                 4    [        5       n U c  g[        U 5      $ )Nrl   )rh   ru   )re   s    r   _get_glibc_versionrw      s    ')K,,r=   c                   [        5       nX!:  a  g SS Kn[        US5      (       a(  UR	                  US   US   U 5      nUb  [        U5      $ gU[        SS5      :X  a&  [        US5      (       a  [        UR                  5      $ U[        SS	5      :X  a&  [        US
5      (       a  [        UR                  5      $ U[        SS5      :X  a&  [        US5      (       a  [        UR                  5      $ g! [         a     gf = f)NFr   Tmanylinux_compatibler   rj      manylinux1_compatible   manylinux2010_compatible   manylinux2014_compatible)
rw   
_manylinuxr\   hasattrry   boolrC   r{   r}   r   )r6   rW   	sys_glibcr   results        r   _is_compatibler      s    "$I z12200WQZN<-1%%:677
8899-2&&:9::
;;<<-2&&:9::
;;<<!  s   C2 2
C?>C?manylinux2014manylinux2010
manylinux1))rj   r~   )rj   r|   )rj   rz   c              #    #    [        [        R                  U 5      (       d  g[        SS5      n[	        U 5      SS1-  (       a  [        SS5      n[        [        5       6 nU/n[        UR                  S-
  SS5       H&  n[        U   nUR                  [        XE5      5        M(     U  H  nU H  nUR                  UR                  :X  a  UR                  nOSn[        UR                  US5       Hq  n[        UR                  U5      n	S	R                  " U	6 n
[        Xi5      (       a	  U
 S
U 3v   U	[        ;   d  MM  [        U	   n[        Xi5      (       d  Mh  U S
U 3v   Ms     M     M     g7f)a  Generate manylinux tags compatible to the current platform.

:param archs: Sequence of compatible architectures.
    The first one shall be the closest to the actual architecture and be the part of
    platform tag after the ``linux_`` prefix, e.g. ``x86_64``.
    The ``linux_`` prefix is assumed as a prerequisite for the current platform to
    be manylinux-compatible.

:returns: An iterator of compatible manylinux tags.
Nrj      r.   r+      r   rm   zmanylinux_{}_{}rV   )r<   sysr$   rC   setrw   rangerF   rA   appendrG   formatr   _LEGACY_MANYLINUX_MAP)r;   too_old_glibc2current_glibcglibc_max_listglibc_majorglibc_minorr6   	glibc_max	min_minorglibc_versiontag
legacy_tags               r   platform_tagsr      sR      66"1b)N
5zXv&&&q!,!#5#78M#_N ]0014a<'4mKEF = 'I."6"66*00	 	$Y__iD -ioo{ K'..>!$66 E4&/) $99!6}!EJ%d::!+AdV44  E ( s   D8E/>E/E/)r   rb   returnz%Generator[ELFFile | None, None, None])r$   rb   r   r   )r$   rb   r;   Sequence[str]r   r   )r   z
str | None)re   rb   r   tuple[int, int])r   r   )r6   rb   rW   rC   r   r   )r;   r   r   zIterator[str])(
__future__r   collections
contextlib	functoolsrP   rn   r   rp   typingr   r   r   r   _elffiler	   r
   r   r   r    r!   r"   contextmanagerr   r%   r(   r<   defaultdictrA   rL   rC   rX   rf   rh   ru   	lru_cacherw   r   r   r   r4   r=   r   <module>r      s    "    	 	 
  < < 8 8" 
  

8, %0$;$;J$G > GJ 
&)XM
8& - -8  -5r=   