
    eg,                        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"y)    N)IODictIterator
NamedTupleOptionalTuplec                   h    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y)_ELFFileHeaderc                       e Zd ZdZy)$_ELFFileHeader._InvalidELFFileHeaderz7
        An invalid ELF file header was found.
        N)__name__
__module____qualname____doc__     }/var/www/html/FastMealFinder_FlaskServer-InitialRelease/venv/lib/python3.12/site-packages/pip/_vendor/packaging/_manylinux.py_InvalidELFFileHeaderr      s    	r   r   iFLE            (   >   l      ~ i   i   filereturnNc                 f   dt         dt        ffd} |d      | _        | j                  | j                  k7  rt        j                          |d      | _        | j                  | j                  | j                  hvrt        j                          |d      | _	        | j                  | j                  | j                  hvrt        j                          |d      | _         |d      | _         |d      | _        j                  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|} ||      | _         ||      | _         ||      | _         ||      | _         ||      | _         ||      | _         ||      | _         ||      | _         ||      | _         ||      | _         ||      | _         ||      | _         ||      | _        y )Nfmtr   c                     	 j                  t        j                  |             }t        j                  | |      }|d   S # t        j                  $ r t
        j                         w xY w)Nr   )readstructcalcsizeunpackerrorr
   r   )r   dataresultr   s      r   r#   z'_ELFFileHeader.__init__.<locals>.unpack$   s_    =yy!56*0--T*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   	 	 	 $D\!6!66 6688#C[doot%GG 6688"3KT%5%5t7G7G$HH 6688%c{#C["(+99Q<,,0@0@@4d,,0@0@@4d,,0@0@@4d#11T__D8(X&))h'h'h'h'x(!(+h'!(+h' *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
      se    
 
 "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        |S # 1 sw Y   S xY w# t        t
        t        j                  f$ r Y y w xY w)Nrb)opensys
executabler
   OSError	TypeErrorr   )f
elf_headers     r   _get_elf_headerr\   L   sa    #..$' 	+1'*J	+ 		+  Y D DE s#   ? 2? <? ? A A c                  f   t               } | y| 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%%)>)>>F
j%%)?)???F
j""j&7&777F
Z666		#	#$ $F Z===		)	)* *F Mr   c                      t               } | y| 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   sd     "J%%)>)>>F
j%%)?)???F
j""j&7&777FMr   archc                 F    | 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                       y)N2   r   r   r   r   <lambda>ro      s    r   _LAST_GLIBC_MINORc                   "    e Zd ZU eed<   eed<   y)_GLibCVersionmajorminorN)r   r   r   r*   __annotations__r   r   r   rr   rr      s    JJr   rr   c                      	 t        j                  d      } | J | j                         \  }}|S # t        t        t
        t        f$ r Y yw xY w)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      sX    $9:)))#))+
7 N NGZ@ s   ,0 AAc                     	 ddl } 	 | j                  d      }	 |j                  }| j                  |_         |       }t        |t              s|j                  d      }|S # t        $ r Y yw xY w# t        $ r Y yw xY w# t
        $ r Y yw xY w)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    ""KK-0EE $*?? +-Kk3'!((1G  $  
   s3   A  A/ A>  	A,+A,/	A;:A;>	B
	B
c                  .    t               xs
 t               S )z9Returns glibc version string, or None if not using glibc.)r   r   r   r   r   _glibc_version_stringr      s    (*L.J.LLr   r   c                     t        j                  d|       }|st        j                  d| z  t               yt        |j                  d            t        |j                  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+FA$%	

 qwww #aggg&6"777r   c                  2    t               } | yt        |       S )Nr   )r   r   )r   s    r   _get_glibc_versionr      s    ')K,,r   namer   c                    t               }||k  ry	 dd l}t        |d      r'|j	                  |d   |d   |      }|t        |      S y|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 y# t        $ r Y yw xY w)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      s    "$I7 z1200WQZN<-1%%:67
8899-2&&:9:
;;<<-2&&:9:
;;<<!  s   C 	C&%C&manylinux2014manylinux2010
manylinux1))r   r   )r   r   )r   r   linuxc              #     K   t        |      sy t        dd      }|dv rt        dd      }t        t                }|g}t        |j                  dz
  dd      D ]&  }t
        |   }|j                  t        ||             ( |D ]  }|j                  |j                  k(  r|j                  }nd}t        |j                  |d      D ]|  }t        |j                  |      }	 dj                  |	 }
t        |
||	      r| j                  d|
       |	t        v sRt        |	   }t        |||	      si| j                  d|       ~  y w)	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     sN    %"1b)N!!&q!,!#5#78M#_N ]0014a< G'4mKEFG $ =	??n222&,,I I )R@ 		=K))//;GM*#**M:Cc47mmGS11 552=A
!*dMB--<<		==s   DEE.E)#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      sf     	 	  
  B B:+ :+z.1  & Fs Ft F %<K$;$;J$G 4S> GJ 
x} &)hsm )XMx} M
8c 8eCHo 8& -E#s(O - - C - D 8  "= "=C "=HSM "=r   