
    j'                       U d dl m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Zd dl	m
Z
mZ ddlmZmZmZmZ e
rd dlZd dlmZmZmZ dZdZd	Zh d
Zej        d4d            Zd5dZd5dZd6dZ ej        d           Z de!d<    G d de          Z"d7dZ#d7dZ$d7dZ%d8d!Z&ej'        d9d"            Z( ej'        d#          d:d%            Z)d;d(Z* e"d)d*          d+ e"d)d,          d- e"d)d.          d/iZ+d0e!d1<   d<d3Z,dS )=    )annotationsN)TYPE_CHECKING
NamedTuple   )EIClassEIDataELFFileEMachine)	GeneratorIteratorSequencel      ~ i   i   >   ppc64s390xx86_64aarch64ppc64leriscv64loongarch64pathstrreturn%Generator[ELFFile | None, None, None]c              #     K   	 t          | d          5 }t          |          V  d d d            d S # 1 swxY w Y   d S # t          t          t          f$ r d V  Y d S w xY w)Nrb)openr	   OSError	TypeError
ValueError)r   fs     S/var/www/html/python-test/venv/lib/python3.11/site-packages/packaging/_manylinux.py
_parse_elfr!   !   s      $ 	!**	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	Y
+   





s,   A  3A  7A  7A   AA
executableboolc                <   t          |           5 }|d uon|j        t          j        k    oY|j        t
          j        k    oD|j        t          j	        k    o/|j
        t          z  t          k    o|j
        t          z  t          k    	 cd d d            S # 1 swxY w Y   d S 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_armhfr1   *   s     
J		 
1TM I
gk)I
fj(I 	X\)I .(O;	I
 //3HH	

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
s   A4BBBc                    t          |           5 }|d uo>|j        t          j        k    o)|j        t
          j        k    o|j        t          j	        k    	 cd d d            S # 1 swxY w Y   d S r%   )
r!   r&   r   r'   r(   r   r)   r*   r
   I386r0   s     r    _is_linux_i686r4   9   s    	J		 
1TM +
gk)+
fj(+ 	X]*		

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
s   AA!!A%(A%archsSequence[str]c                    d|v rt          |           S d|v rt          |           S t          d |D                       S )Narmv7li686c              3  (   K   | ]}|t           v V  d S r%   )_ALLOWED_ARCHS).0archs     r    	<genexpr>z'_have_compatible_abi.<locals>.<genexpr>H   s'      88$t~%888888    )r1   r4   any)r"   r5   s     r    _have_compatible_abirA   C   sO    5z***j)))88%888888r?   c                     dS )N2    rD   r?   r    <lambda>rE   P   s    B r?   zdict[int, int]_LAST_GLIBC_MINORc                  $    e Zd ZU ded<   ded<   dS )_GLibCVersionintmajorminorN)__name__
__module____qualname____annotations__rD   r?   r    rH   rH   S   s"         JJJJJJJJr?   rH   
str | Nonec                     	 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rsplitAssertionErrorAttributeErrorr   r   )version_string_versions      r    _glibc_version_string_confstrr[   X   sl    %'Z0E%F%F)))#**,,
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                    r|
                    d          }|S )zG
    Fallback implementation of glibc_version_string using ctypes.
    r   Nascii)ctypesImportErrorCDLLr   gnu_get_libc_versionrW   c_char_prestype
isinstancebytesdecode)r^   process_namespacera   version_strs       r    _glibc_version_string_ctypesri   k   s       tt "KK--   tt0E    tt $*? 3355K+u%% 2!((11s*    
/ 
==A	 	
AAc                 :    t                      pt                      S )z9Returns glibc version string, or None if not using glibc.)r[   ri   rD   r?   r    _glibc_version_stringrk      s    (**L.J.L.LLr?   rh   c                .   t          j        d|           }|s/t          j        d|  t          d           t          dd          S t          t          |                    d                    t          |                    d                              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:    )
stacklevelrJ   rK   )rematchwarningswarnRuntimeWarningrH   rI   group)rh   ms     r    _parse_glibc_versionrw      s     	8+FFA %W+WW	
 	
 	
 	

 R$$$QWWW--..AGGG4D4D0E0EFFFr?   c                 `    t                      } | t          dd          S t          |           S )Nro   )rk   rH   rw   )rh   s    r    _get_glibc_versionry      s1    '))KR$$$,,,r?   )maxsizetypes.ModuleType | Nonec                 D    	 t          d          S # t          $ r Y dS w xY w)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_   rD   r?   r    _get_manylinux_moduler      s7    ,'''   tts    
r=   rZ   c                2   t                      }||k     rdS t                      }|dS 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 )NFTmanylinux_compatibler   r   rm      manylinux1_compatible   manylinux2010_compatible   manylinux2014_compatible)	ry   r   hasattrr   r#   rH   r   r   r   )r=   rZ   	sys_glibcmanylinux_modresults        r    _is_compatibler      s8   "$$I7u)++Mt}455 33GAJ
DQQ<<t-1%%%%'.+ +% M7888-2&&&&71, ,& M:;;;-2&&&&71, ,& M:;;;4r?   rm   r   manylinux2014r   manylinux2010r   
manylinux1zdict[_GLibCVersion, str]_LEGACY_MANYLINUX_MAPIterator[str]c              #    K   t          t          j        |           sdS t          dd          }t	          |           ddhz  rt          dd          }t          t                       }|g}t          |j        dz
  dd          D ]2}t          |         }|	                    t          ||                     3| D ]}|D ]}|j        |j        k    r|j
        }nd}t          |j
        |d          D ]]}t          |j        |          }	t          ||	          r6 d	j        g |	|R  V  t                              |	          x}
r	|
 d
| V  ^dS )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.
    Nrm      r   r9      r   ro   zmanylinux_{}_{}_{}rY   )rA   sysr"   rH   setry   rangerJ   rF   appendrK   r   formatr   get)r5   too_old_glibc2current_glibcglibc_max_listglibc_majorglibc_minorr=   	glibc_max	min_minorglibc_version
legacy_tags              r    platform_tagsr      s       66 "1b))N
5zzXv&& -&q!,,!#5#7#78M#_N ]014a<< G G'4mKEEFFFF 5 5' 	5 	5I."666*0		 	$Y_iDD 5 5 -io{ K K!$66 55.5K}KdKKKKKK &;%>%>}%M%MMz 5!+44d444445	55 5r?   )r   r   r   r   )r"   r   r   r#   )r"   r   r5   r6   r   r#   )r   rP   )rh   r   r   rH   )r   rH   )r   r{   )r=   r   rZ   rH   r   r#   )r5   r6   r   r   )-
__future__r   collections
contextlib	functoolsrS   rp   r   rr   typingr   r   _elffiler   r   r	   r
   typescollections.abcr   r   r   r-   r.   r/   r;   contextmanagerr!   r1   r4   rA   defaultdictrF   rO   rH   r[   ri   rk   rw   	lru_cachery   r   r   r   r   rD   r?   r    <module>r      s   " " " " " " "             				 				 



  , , , , , , , , 8 8 8 8 8 8 8 8 8 8 8 8 >LLL=========="       
 
 
 

 
 
 
9 9 9 9 %<K$;JJ$G$G  G G G G    J   
   &) ) ) )XM M M M
G G G G& - - - - Q	 	 	  	   < M!R/M!R/M!Q3     +5 +5 +5 +5 +5 +5r?   