+
    UBi|%                      a  0 t $ ^ RIHt ^ RIt^ RIt^ RIt^ RIt^ RIt^ RIt^ RI	t	^ RI
HtHtHtHt ^RIHtHtHtHt RtRtRt]P.                  R R	 l4       tR
 R ltR R ltR R lt]P8                  ! R 4      tR]R&    ! R R]4      tR R lt R R lt!R R lt"R R lt#]PH                  R R l4       t%R R  lt&R&R!R'R"R(R#/t'R$ R% lt(R# ))    )annotationsN)	GeneratorIterator
NamedTupleSequence)EIClassEIDataELFFileEMachinel      ~ i   i   c                    V ^8  d   QhRRRR/# )   pathstrreturnz%Generator[ELFFile | None, None, None] )formats   "9/usr/lib/python3.14/site-packages/packaging/_manylinux.py__annotate__r      s      S B     c              #     "    \        V R 4      ;_uu_ 4       p\        V4      x  RRR4       R#   + '       g   i     R# ; i  \        \        \        3 d	    Rx   R# i ; i5i)rbN)openr
   OSError	TypeError
ValueError)r   fs   & r   
_parse_elfr      sK     $!* Y
+ 
sE   A%A 0A A%A	A A%A A"A%!A""A%c                    V ^8  d   QhRRRR/# r   
executabler   r   boolr   )r   s   "r   r   r      s     
 
 
 
r   c                   \        V 4      ;_uu_ 4       pVR J;'       d    VP                  \        P                  8H  ;'       d    VP                  \
        P                  8H  ;'       dj    VP                  \        P                  8H  ;'       dE    VP                  \        ,          \        8H  ;'       d    VP                  \        ,          \        8H   uuR R R 4       #   + '       g   i     R # ; iN)r   capacityr   C32encodingr	   Lsbmachiner   ArmflagsEF_ARM_ABIMASKEF_ARM_ABI_VER5EF_ARM_ABI_FLOAT_HARDr    r   s   & r   _is_linux_armhfr/      s     
J		1TM I I

gkk)I I

fjj(I I 		X\\)I I .(O;	I I
 //3HH	
 
 			s#   0C$C*$C%C5CC0	c                    V ^8  d   QhRRRR/# r   r   )r   s   "r   r   r   -   s     
 
s 
t 
r   c                N   \        V 4      ;_uu_ 4       pVR J;'       dh    VP                  \        P                  8H  ;'       dC    VP                  \
        P                  8H  ;'       d    VP                  \        P                  8H   uuR R R 4       #   + '       g   i     R # ; ir#   )
r   r$   r   r%   r&   r	   r'   r(   r   I386r.   s   & r   _is_linux_i686r3   -   sz    	J		1TM + +

gkk)+ +

fjj(+ + 		X]]*		
 
 			s   0B$B*BB$	c               $    V ^8  d   QhRRRRRR/# )r   r    r   archsSequence[str]r   r!   r   )r   s   "r   r   r   7   s!     8 8S 8 84 8r   c                   a R V9   d   \        V 4      # RV9   d   \        V 4      # 0 Rmo\        ;QJ d    V3R lV 4       F  '       g   K   R# 	  R# ! V3R lV 4       4      # )armv7li686c              3  ,   <"   T F	  qS9   x  K  	  R # 5ir#   r   ).0archallowed_archss   & r   	<genexpr>'_have_compatible_abi.<locals>.<genexpr>E   s     7}$s   TF>   ppc64s390xx86_64aarch64ppc64leriscv64loongarch64)r/   r3   any)r    r5   r=   s   &&@r   _have_compatible_abirH   7   sZ    5z**j))M 3773373737777r   c                     ^2# )2   r   r   r   r   <lambda>rK   M   s    Br   zdict[int, int]_LAST_GLIBC_MINORc                  ,    ] tR t^Pt$ R]R&   R]R&   RtR# )_GLibCVersionintmajorminorr   N)__name__
__module____qualname____firstlineno____annotations____static_attributes__r   r   r   rN   rN   P   s    JJr   rN   c                   V ^8  d   QhRR/# r   r   z
str | Noner   )r   s   "r   r   r   U   s      z r   c                      \         P                  ! R4      p V f   Q hV P                  4       w  rV#   \        \        \
        \        3 d     R# i ; i)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_confstrrd   U   sV    %'ZZ0E%F)))#**,
 N NGZ@ s   .2 AAc                   V ^8  d   QhRR/# rY   r   )r   s   "r   r   r   h   s     ) )j )r   c                 8    ^ RI p  T P                  R4      p TP                  pT P                  Tn        T! 4       p\        T\        4      '       g   TP                  R4      pT#   \         d     R# i ; i  \         d     R# i ; i  \
         d     R# i ; i)z?
Fallback implementation of glibc_version_string using ctypes.
Nascii)ctypesImportErrorCDLLr   gnu_get_libc_versionr`   c_char_prestype
isinstancer   decode)rh   process_namespacerk   version_strs       r   _glibc_version_string_ctypesrr   h   s    ""KK-0EE $*?? +-Kk3''!((1G  $  
   s3   A& A8 B
 &A54A58BB
BBc                   V ^8  d   QhRR/# rY   r   )r   s   "r   r   r      s     M Mz Mr   c                 :    \        4       ;'       g    \        4       # )z9Returns glibc version string, or None if not using glibc.)rd   rr   r   r   r   _glibc_version_stringru      s    (*LL.J.LLr   c                    V ^8  d   QhRRRR/# )r   rq   r   r   tuple[int, int]r   )r   s   "r   r   r      s     8 8c 8o 8r   c                    \         P                  ! RV 4      pV'       g#   \        P                  ! RV  2\        ^R7       R# \        VP                  R4      4      \        VP                  R4      4      3# )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: )
stacklevelrP   rQ   r{   )rematchwarningswarnRuntimeWarningrO   group)rq   ms   & r   _parse_glibc_versionr      sb     	8+FAI+W	

 qwww #aggg&6"777r   c                   V ^8  d   QhRR/# )r   r   rw   r   )r   s   "r   r   r      s     - -O -r   c                 8    \        4       p V f   R# \        V 4      # )Nrz   )ru   r   )rq   s    r   _get_glibc_versionr      s     ')K,,r   c               $    V ^8  d   QhRRRRRR/# )r   r<   r   rc   rN   r   r!   r   )r   s   "r   r   r      s!       }  r   c                0   \        4       pW!8  d   R #  ^ RIp\        TR4      '       d3   TP	                  T^ ,          T^,          T 4      pTe   \        T4      # R# T\        ^^4      8X  d(   \        TR4      '       d   \        TP                  4      # T\        ^^4      8X  d(   \        TR4      '       d   \        TP                  4      # T\        ^^4      8X  d(   \        TR4      '       d   \        TP                  4      # R#   \         d     R# i ; i)FNTmanylinux_compatiblemanylinux1_compatiblemanylinux2010_compatiblemanylinux2014_compatible)
r   
_manylinuxri   hasattrr   r!   rN   r   r   r   )r<   rc   	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   D DDmanylinux2014manylinux2010
manylinux1c                    V ^8  d   QhRRRR/# )r   r5   r6   r   zIterator[str]r   )r   s   "r   r   r      s     -5 -5 -5= -5r   c              #    "   \        \        P                  V 4      '       g   R# \        ^^4      p\	        V 4      RR0,          '       d   \        ^^4      p\        \        4       !  pV.p\        VP                  ^,
          ^R4       F*  p\        V,          pVP                  \        WE4      4       K,  	  V  F  pV F  pVP                  VP                  8X  d   VP                  pMRp\        VP                  VR4       Fy  p\        VP                  V4      p	RP                  ! V	!  p
\        Wi4      '       d
   V
 RV 2x  V	\        9   g   KP  \        V	,          p\        Wi4      '       g   Kp  V RV 2x  K{  	  K  	  K  	  R# 5i)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.
NrB   r9   zmanylinux_{}_{}rb   r{   )rH   sysr    rN   setr   rangerP   rL   appendrQ   r   r   _LEGACY_MANYLINUX_MAP)r5   too_old_glibc2current_glibcglibc_max_listglibc_majorglibc_minorr<   	glibc_max	min_minorglibc_versiontag
legacy_tags   &           r   platform_tagsr      sU      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   EF	F	2F	)r      )r      )r      ))__conditional_annotations__
__future__r   collections
contextlib	functoolsr\   r|   r   r~   typingr   r   r   r   _elffiler   r	   r
   r   r+   r,   r-   contextmanagerr   r/   r3   rH   defaultdictrL   rV   rN   rd   rr   ru   r   	lru_cacher   r   r   r   )r   s   @r   <module>r      s    " "    	 	 
  < < 8 8" 
  

8, %0$;$;J$G > GJ 
&)XM
8& - -8 __
L -5r   