
    ցj'                       % 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  SSKJrJrJrJr  \
(       a  S SKrS SKJrJrJr  SrSrS	r1 S
kr\R4                  S&S j5       rS'S jrS'S jrS(S jr\R>                  " 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&\RN                  S+S j5       r(\RN                  " SS9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)TYPE_CHECKING
NamedTuple   )EIClassEIDataELFFileEMachine)	GeneratorIteratorSequencel      ~ 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     N/mnt/workspace/venv-train/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_i686r0   9   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>H   s     8%$~%%s   )r-   r0   any)r,   archss     r   _have_compatible_abir<   C   s8    5z**j))8%888    c                     g)N2    r@   r=   r   <lambda>rA   P   s    Br=   zdict[int, int]_LAST_GLIBC_MINORc                  *    \ rS rSr% S\S'   S\S'   Srg)_GLibCVersionS   intmajorminorr@   N)__name__
__module____qualname____firstlineno____annotations____static_attributes__r@   r=   r   rD   rD   S   s    JJr=   rD   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_confstrrY   X   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      (       a  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_versionrU   c_char_prestype
isinstancebytesdecode)r\   process_namespacer_   version_strs       r   _glibc_version_string_ctypesrg   k   s    ""KK-0EE $*?? 35K+u%%!((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.)rY   rg   r@   r=   r   _glibc_version_stringri      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:    )
stacklevelrG   rH   )rematchwarningswarnRuntimeWarningrD   rF   group)rf   ms     r   _parse_glibc_versionru      sl     	8+FAI+W	

 R$$QWWW-.AGGG4D0EFFr=   c                 J    [        5       n U c  [        SS5      $ [        U 5      $ )Nrm   )ri   rD   ru   )rf   s    r   _get_glibc_versionrw      s(    ')KR$$,,r=   )maxsizec                 :     [        S5      $ ! [         a     gf = f)zReturn the ``_manylinux`` C extension module, or None if unavailable.

The result is cached for the lifetime of the process, since the presence
of the module does not change while running.

_manylinuxN)
__import__r]   r@   r=   r   _get_manylinux_moduler|      s$    ,'' s   
 
c                   [        5       nX!:  a  g[        5       nUc  g[        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)NFTmanylinux_compatibler   r   rk      manylinux1_compatible   manylinux2010_compatible   manylinux2014_compatible)	rw   r|   hasattrr~   boolrD   r   r   r   )r7   rX   	sys_glibcmanylinux_modresults        r   _is_compatibler      s    "$I)+M}45533GAJ
DQ<-1%%'.+ + M7788-2&&71, , M::;;-2&&71, , M::;;r=   rk   r   manylinux2014r   manylinux2010r   
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.
Nrk      r   r3      r   rm   zmanylinux_{}_{}_{}rW   )r<   sysr,   rD   setrw   rangerG   rB   appendrH   r   formatr   get)r;   too_old_glibc2current_glibcglibc_max_listglibc_majorglibc_minorr7   	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   strreturnz%Generator[ELFFile | None, None, None])r,   r   r   r   )r,   r   r;   Sequence[str]r   r   )r   z
str | None)rf   r   r   rD   )r   rD   )r   ztypes.ModuleType | None)r7   r   rX   rD   r   r   )r;   r   r   zIterator[str])-
__future__r   collections
contextlib	functoolsrQ   rn   r   rp   typingr   r   _elffiler   r   r	   r
   typescollections.abcr   r   r   r(   r)   r*   r5   contextmanagerr   r-   r0   r<   defaultdictrB   rM   rD   rY   rg   ri   ru   	lru_cacherw   r|   r   r   r   r@   r=   r   <module>r      s&   "    	 	 
  , 8 8=="   

9 %0$;$;J$G > GJ 
&)XM
G& - - Q	  	< !R/!R/!Q3 / +5r=   