
    Kxh,                        U d dl Z d dlZd dlZd dlZd dlZd dlZd dlZd dlmZm	Z	m
Z
mZmZmZ  G d d          Zdee         fdZdefdZdefdZd	edefd
Z e j        d           Ze	eef         ed<    G d de          Zdee         fdZdee         fdZdee         fdZdedeeef         fdZ ej                    deeef         fd            Zded	ededefdZ ddddZ!ded	ede
e         fdZ"dS )    N)IODictIterator
NamedTupleOptionalTuplec                   v    e Zd Z G d de          ZdZdZdZdZdZ	dZ
dZdZd	Zd
ZdZdZdee         ddfdZdS )_ELFFileHeaderc                       e Zd ZdZdS )$_ELFFileHeader._InvalidELFFileHeaderz7
        An invalid ELF file header was found.
        N)__name__
__module____qualname____doc__     S/var/www/html/what/lib/python3.11/site-packages/pip/_vendor/packaging/_manylinux.py_InvalidELFFileHeaderr      s        	 	 	 	r   r   iFLE            (   >   l      ~ i   i   filereturnNc                 n   dt           dt          ffd} |d          | _        | j        | j        k    rt                                           |d          | _        | j        | j        | j        hvrt                                           |d          | _	        | j	        | j
        | j        hvrt                                           |d          | _         |d          | _         |d          | _                            d          | _        | j	        | j
        k    rdnd}| j	        | j
        k    rd	nd}| j	        | j
        k    rd
nd}| j        | j        k    r|n|} ||          | _         ||          | _         ||          | _         ||          | _         ||          | _         ||          | _         ||          | _         ||          | _         ||          | _         ||          | _         ||          | _         ||          | _         ||          | _        d S )Nfmtr   c                     	                      t          j        |                     }t          j        | |          }n,# t          j        $ r t
                                          w xY w|d         S )Nr   )readstructcalcsizeunpackerrorr
   r   )r   dataresultr   s      r   r#   z'_ELFFileHeader.__init__.<locals>.unpack$   so    =yy!5!566*0-T*B*B< = = =$::<<<=!9s   <A   )A)z>IB   z<Hz>Hz<Iz<Qz>Q)strinte_ident_magicELF_MAGIC_NUMBERr
   r   e_ident_class
ELFCLASS32
ELFCLASS64e_ident_dataELFDATA2LSBELFDATA2MSBe_ident_versione_ident_osabie_ident_abiversionr    e_ident_pade_type	e_machine	e_versione_entrye_phoffe_shoffe_flagse_ehsizee_phentsizee_phnume_shentsizee_shnum
e_shstrndx)selfr   r#   format_hformat_iformat_qformat_ps    `     r   __init__z_ELFFileHeader.__init__#   s`   	 	 	 	 	 	 	 	 $VD\\!666 66888#VC[[dot%GGG 66888"F3KKT%5t7G$HHH 66888%vc{{#VC[["(&++99Q<<,0@@@44d,0@@@44d,0@@@44d#1T_DD88(fX&&))))vh''vh''vh''vh''x((!6(++vh''!6(++vh'' &**r   )r   r   r   
ValueErrorr   r,   r.   r/   r1   r2   EM_386EM_S390EM_ARM	EM_X86_64EF_ARM_ABIMASKEF_ARM_ABI_VER5EF_ARM_ABI_FLOAT_HARDr   bytesrI   r   r   r   r
   r
      s            
   
 "JJKKFGFIN O&&+RY &+4 &+ &+ &+ &+ &+ &+r   r
   r   c                      	 t          t          j        d          5 } t          |           }d d d            n# 1 swxY w Y   n## t          t
          t          j        f$ r Y d S w xY w|S )Nrb)opensys
executabler
   OSError	TypeErrorr   )f
elf_headers     r   _get_elf_headerr\   L   s    #.$'' 	+1'**J	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+Y DE   tts-   A 8A <A < A A$#A$c                     t                      } | dS | j        | j        k    }|| j        | j        k    z  }|| j        | j        k    z  }|| j        | j        z  | j	        k    z  }|| j        | j
        z  | j
        k    z  }|S NF)r\   r-   r.   r0   r1   r8   rM   r=   rO   rP   rQ   r[   r&   s     r   _is_linux_armhfr`   U   s     !""Ju%)>>F
j%)???F
j"j&777F
Z66		#$ $F Z==		)* *F Mr   c                      t                      } | dS | j        | j        k    }|| j        | j        k    z  }|| j        | j        k    z  }|S r^   )r\   r-   r.   r0   r1   r8   rK   r_   s     r   _is_linux_i686rb   h   sW     ""Ju%)>>F
j%)???F
j"j&777FMr   archc                 Z    | dk    rt                      S | dk    rt                      S | dv S )Narmv7li686>   ppc64s390xx86_64aarch64ppc64le)r`   rb   )rc   s    r   _have_compatible_abirl   r   s:    x   v~~EEEr   c                      dS )N2   r   r   r   r   <lambda>ro      s    B r   _LAST_GLIBC_MINORc                   $    e Zd ZU eed<   eed<   dS )_GLibCVersionmajorminorN)r   r   r   r*   __annotations__r   r   r   rr   rr      s"         JJJJJJJJr   rr   c                      	 t          j        d          } | J |                                 \  }}n$# t          t          t
          t          f$ r Y dS w xY w|S )zJ
    Primary implementation of glibc_version_string using os.confstr.
    CS_GNU_LIBC_VERSIONN)osconfstrsplitAssertionErrorAttributeErrorrX   rJ   )version_string_versions      r   _glibc_version_string_confstrr      sl    $9::)))#))++
77NGZ@   tt Ns   /2 AAc                  8   	 ddl } n# t          $ r Y dS w xY w	 |                     d          }n# t          $ r Y dS w xY w	 |j        }n# t
          $ r Y dS w xY w| j        |_         |            }t          |t                    s|
                    d          }|S )zG
    Fallback implementation of glibc_version_string using ctypes.
    r   Nascii)ctypesImportErrorCDLLrX   gnu_get_libc_versionr|   c_char_prestype
isinstancer)   decode)r   process_namespacer   version_strs       r   _glibc_version_string_ctypesr      s       tt "KK--   tt0E    tt $*? ++--Kk3'' 2!((11s*    
/ 
==A	 	
AAc                  :    t                      pt                      S )z9Returns glibc version string, or None if not using glibc.)r   r   r   r   r   _glibc_version_stringr      s    (**L.J.L.LLr   r   c                     t          j        d|           }|st          j        d| z  t                     dS t          |                    d                    t          |                    d                    fS )a3  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: %sr   rs   rt   )rematchwarningswarnRuntimeWarningr*   group)r   ms     r   _parse_glibc_versionr      s|     	8+FFA $%	
 	
 	

 vqwww  #aggg&6&6"7"777r   c                  D    t                      } | dS t          |           S )Nr   )r   r   )r   s    r   _get_glibc_versionr      s&    '))Kx,,,r   namer   c                 <   t                      }||k     rdS 	 dd l}n# t          $ r Y dS w xY wt          |d          r6|                    |d         |d         |          }|t          |          S dS |t          dd          k    r$t          |d          rt          |j                  S |t          dd	          k    r$t          |d
          rt          |j                  S |t          dd          k    r$t          |d          rt          |j	                  S dS )NFr   Tmanylinux_compatibler   r      manylinux1_compatible   manylinux2010_compatible   manylinux2014_compatible)
r   
_manylinuxr   hasattrr   boolrr   r   r   r   )r   rc   r   	sys_glibcr   r&   s         r   _is_compatibler      sL   "$$I7u   ttz122 00WQZNN<<t-1%%%%:677 	:
8999-2&&&&:9:: 	=
;<<<-2&&&&:9:: 	=
;<<<4s    
++manylinux2014manylinux2010
manylinux1))r   r   )r   r   )r   r   linuxc              #     K   t          |          sd S t          dd          }|dv rt          dd          }t          t                       }|g}t          |j        dz
  dd          D ]2}t
          |         }|                    t          ||                     3|D ]}|j        |j        k    r|j        }nd}t          |j        |d          D ]}t          |j        |          }	 dj        |	 }
t          |
||	          r| 
                    d|
          V  |	t          v r6t          |	         }t          |||	          r| 
                    d|          V  d S )	Nr      >   rf   ri      r   r   zmanylinux_{}_{}r   )rl   rr   r   rangers   rp   appendrt   formatr   replace_LEGACY_MANYLINUX_MAP)r   rc   too_old_glibc2current_glibcglibc_max_listglibc_majorglibc_minor	glibc_max	min_minorglibc_versiontag
legacy_tags               r   platform_tagsr     s     %% "1b))N!!!&q!,,!#5#7#78M#_N ]014a<< G G'4mKEEFFFF# = =	?n222&,II I )R@@ 		= 		=K))/;GGM*#*M:Cc477 2mmGS11111 5552=A
!*dMBB =--<<<<<		== =r   )#collections	functoolsrx   r   r!   rV   r   typingr   r   r   r   r   r   r
   r\   r   r`   rb   r)   rl   defaultdictrp   r*   ru   rr   r   r   r   r   	lru_cacher   r   r   r   r   r   r   <module>r      s            				 				  



  B B B B B B B B B B B B B B B B:+ :+ :+ :+ :+ :+ :+ :+z.1        &    Fs Ft F F F F %<K$;JJ$G$G 4S> G G G    J   
x}    &)hsm ) ) ) )XMx} M M M M
8c 8eCHo 8 8 8 8& -E#s(O - - - - C - D    8   "= "=C "=HSM "= "= "= "= "= "=r   