
    uviW%                       % 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1 S	kr\R.                  S#S
 j5       rS$S jrS$S jrS%S jr\R8                  " 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#\RH                  S(S j5       r%S)S jr&\" SS5      S\" SS5      S\" SS5      S0r'S \S!'   S*S" jr(g)+    )annotationsN)	GeneratorIterator
NamedTupleSequence   )EIClassEIDataELFFileEMachinel      ~ i   i   >   ppc64s390xx86_64aarch64ppc64leriscv64loongarch64c              #     #     [        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     B/root/pdf_env/lib/python3.13/site-packages/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/   7   se    	J	1TM +

gkk)+

fjj(+ 		X]]*		
 
 		s   A1B
Bc                j    SU;   a  [        U 5      $ SU;   a  [        U 5      $ [        S U 5       5      $ )Narmv7li686c              3  2   #    U  H  o[         ;   v   M     g 7fr   )_ALLOWED_ARCHS).0archs     r   	<genexpr>'_have_compatible_abi.<locals>.<genexpr>F   s     8%$~%%s   )r,   r/   any)r+   archss     r   _have_compatible_abir;   A   s8    5z**j))8%888    c                     g)N2    r?   r<   r   <lambda>r@   N   s    Br<   zdict[int, int]_LAST_GLIBC_MINORc                  *    \ rS rSr% S\S'   S\S'   Srg)_GLibCVersionQ   intmajorminorr?   N)__name__
__module____qualname____firstlineno____annotations____static_attributes__r?   r<   r   rC   rC   Q   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   V   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   i   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   r?   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  [        SS5      $ [        [        UR                  S5      5      [        UR                  S5      5      5      $ )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:    )
stacklevelrF   rG   )rematchwarningswarnRuntimeWarningrC   rE   group)re   ms     r   _parse_glibc_versionrt      sl     	8+FAI+W	

 R$$QWWW-.AGGG4D0EFFr<   c                 J    [        5       n U c  [        SS5      $ [        U 5      $ )Nrl   )rh   rC   rt   )re   s    r   _get_glibc_versionrv      s(    ')KR$$,,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)
rv   
_manylinuxr\   hasattrrx   boolrC   rz   r|   r~   )r6   rW   	sys_glibcr   results        r   _is_compatibler      s   "$I z12200WQZN<-1%%'*>U*V*VJ4455-2&&7., , J7788-2&&7., , J7788#  s   C2 2
C?>C?rj   r}   manylinux2014r{   manylinux2010ry   
manylinux1zdict[_GLibCVersion, str]_LEGACY_MANYLINUX_MAPc              #    #    [        [        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       Hh  n[        UR                  U5      n	[        Xi5      (       d  M+  S	R                  " / U	QUP76 v   [        R                  U	5      =n
(       d  M_  U
 S
U 3v   Mj     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   r2      r   rl   zmanylinux_{}_{}_{}rV   )r;   sysr+   rC   setrv   rangerF   rA   appendrG   r   formatr   get)r:   too_old_glibc2current_glibcglibc_max_listglibc_majorglibc_minorr6   	glibc_max	min_minorglibc_version
legacy_tags              r   platform_tagsr      sE      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.55K}KdKK &;%>%>}%MMzM!+AdV44  E ( s   DE&0E&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   rC   )r   rC   )r6   rb   rW   rC   r   r   )r:   r   r   zIterator[str]))
__future__r   collections
contextlib	functoolsrP   rm   r   ro   typingr   r   r   r   _elffiler	   r
   r   r   r'   r(   r)   r4   contextmanagerr   r,   r/   r;   defaultdictrA   rL   rC   rX   rf   rh   rt   	lru_cacherv   r   r   r   r?   r<   r   <module>r      s    "    	 	 
  < < 8 8"   

9 %0$;$;J$G > GJ 
&)XM
G& - -: !R/!R/!Q3 / +5r<   