Current File : //usr/lib/python3/dist-packages/wheel/vendored/packaging/__pycache__/_manylinux.cpython-312.pyc
�

C�e6%���UddlZddlZddlZddlZddlZddlZddlZddlmZm	Z	m
Z
mZmZm
Z
mZddlmZmZmZmZdZdZdZej.ded	e	eeddffd
��Zded	efd�Zded	efd
�Zdede
ed	efd�Zej<d��Zee e fe!d<Gd�de�Z"d	eefd�Z#d	eefd�Z$d	eefd�Z%ded	ee e ffd�Z&ejN�d	ee e ffd��Z(dede"d	efd�Z)dddd �Z*de
ed	e
efd!�Z+y)"�N)�Dict�	Generator�Iterator�
NamedTuple�Optional�Sequence�Tuple�)�EIClass�EIData�ELFFile�EMachinel~ii�path�returnc#�K�	t|d�5}t|���ddd�y#1swYyxYw#tttf$rd��YywxYw�w)N�rb)�openr
�OSError�	TypeError�
ValueError)r�fs  �E/usr/lib/python3/dist-packages/wheel/vendored/packaging/_manylinux.py�
_parse_elfrsO�����
�$��
�	���!�*��	�	�	���Y�
�+���
��s>�A�3�'�3�A�0�3�A�3�A�A�
A�A�
executablec�x�t|�5}|duxr�|jtjk(xrt|jt
jk(xrU|jtjk(xr6|jtztk(xr|jtztk(	cddd�S#1swYyxYw�N)r�capacityr�C32�encodingr�Lsb�machiner�Arm�flags�EF_ARM_ABIMASK�EF_ARM_ABI_VER5�EF_ARM_ABI_FLOAT_HARD�rrs  r�_is_linux_armhfr(s���
�J�	�
�1�
�T�M�
I��
�
�g�k�k�)�
I��
�
�f�j�j�(�
I��	�	�X�\�\�)�
I����.�(�O�;�	
I�
���/�/�3H�H�
	
�
�
�
�s�BB0�0B9c��t|�5}|duxr[|jtjk(xr<|jt
jk(xr|jtjk(	cddd�S#1swYyxYwr)
rrrrrrr r!r�I386r's  r�_is_linux_i686r++sn��	�J�	�
�1�
�T�M�
+��
�
�g�k�k�)�
+��
�
�f�j�j�(�
+��	�	�X�]�]�*�		
�
�
�
�s�A"A8�8B�archsc�p��d|vrt|�Sd|vrt|�Shd��t�fd�|D��S)N�armv7l�i686>�ppc64�s390x�x86_64�aarch64�ppc64le�loongarch64c3�&�K�|]}|�v���
y�wr�)�.0�arch�
allowed_archss  �r�	<genexpr>z'_have_compatible_abi.<locals>.<genexpr>;s�����7��t�}�$�7�s�)r(r+�any)rr,r:s  @r�_have_compatible_abir=5s>����5���z�*�*�
����j�)�)�U�M��7��7�7�7�c��y)N�2r7r7r>r�<lambda>rACs�r>�_LAST_GLIBC_MINORc�"�eZdZUeed<eed<y)�
_GLibCVersion�major�minorN)�__name__�
__module__�__qualname__�int�__annotations__r7r>rrDrDFs���J��Jr>rDc��	ttd�d�}|�J�|j�\}}|S#ttt
tf$rYywxYw)zJ
    Primary implementation of glibc_version_string using os.confstr.
    �confstr�CS_GNU_LIBC_VERSIONN)�getattr�os�rsplit�AssertionError�AttributeErrorrr)�version_string�_�versions   r�_glibc_version_string_confstrrWKs]���4�g�b�)�4�5J�K���)�)�)�#�*�*�,�
��7��N��
�N�G�Z�@����s�-1�A
�A
c��	ddl}	|jd�}	|j}|j|_|�}t|t�s|jd�}|S#t$rYywxYw#t$rYywxYw#t
$rYywxYw)zG
    Fallback implementation of glibc_version_string using ctypes.
    rN�ascii)�ctypes�ImportError�CDLLr�gnu_get_libc_versionrS�c_char_p�restype�
isinstance�str�decode)rZ�process_namespacer]�version_strs    r�_glibc_version_string_ctypesre^s�����"�"�K�K��-���0�E�E��$*�?�?�� �+�-�K��k�3�'�!�(�(��1�����G�����$�����
����s3�A �A/�A>� 	A,�+A,�/	A;�:A;�>	B
�	B
c�.�t�xs
t�S)z9Returns glibc version string, or None if not using glibc.)rWrer7r>r�_glibc_version_stringrg�s��(�*�L�.J�.L�Lr>rdc���tjd|�}|stjd|��t�yt|j
d��t|j
d��fS)a3Parse 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: ����rjrErF)�re�match�warnings�warn�RuntimeWarningrJ�group)rd�ms  r�_parse_glibc_versionrr�sb��	���8�+�F�A���
�
�� �M�
#��	
�
��q�w�w�w�� �#�a�g�g�g�&6�"7�7�7r>c�2�t�}|�yt|�S)Nri)rgrr)rds r�_get_glibc_versionrt�s��'�)�K������,�,r>r9rVc���t�}||kry	ddl}t|d�r'|j	|d|d|�}|�t|�Sy|t
dd�k(r!t|d�rt|j�S|t
dd	�k(r!t|d
�rt|j�S|t
dd�k(r!t|d�rt|j�Sy#t$rYywxYw)
NFrT�manylinux_compatibler
���manylinux1_compatible��manylinux2010_compatible��manylinux2014_compatible)
rt�
_manylinuxr[�hasattrrv�boolrDryr{r})r9rV�	sys_glibcr~�results     r�_is_compatibler��s���"�$�I��7������z�1�2��0�0����W�Q�Z��N������<����-��1�%�%��:�6�7��
�8�8�9�9��-��2�&�&��:�9�:��
�;�;�<�<��-��2�&�&��:�9�:��
�;�;�<�<���!����s�C�	C&�%C&�
manylinux2014�
manylinux2010�
manylinux1))rwr|)rwrz)rwrxc#�K�ttj|�sytdd�}t	|�ddhzrtdd�}tt��}|g}t
|jdz
dd�D]&}t|}|jt||���(|D]�}|D]�}|j|jk(r
|j}nd}t
|j|d�D]d}t|j|�}	d	j|	�}
t||	�r	|
�d
|����|	tvs�Ft|	}t||	�s�\|�d
|�����f����y�w)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.
    Nrw�r2r/�r
rjzmanylinux_{}_{}rU)r=�sysrrD�setrt�rangerErB�appendrF�formatr��_LEGACY_MANYLINUX_MAP)r,�too_old_glibc2�
current_glibc�glibc_max_list�glibc_major�glibc_minorr9�	glibc_max�	min_minor�
glibc_version�tag�
legacy_tags            r�
platform_tagsr��sh���� �����6��"�1�b�)�N�
�5�z�X�v�&�&�&�q�!�,��!�#5�#7�8�M�#�_�N��]�0�0�1�4�a��<�G��'��4�����m�K��E�F�G��5��'�	5�I����.�"6�"6�6�*�0�0�	��	�$�Y�_�_�i��D�	
5�� -�i�o�o�{� K�
�.�'�.�.�
�>��!�$�
�6� �E��4�&�/�)� �$9�9�!6�}�!E�J�%�d�M�:�!+��A�d�V�4�4�	
5�
	5�5�s�D(E�+E�E),�collections�
contextlib�	functoolsrPrkr�rm�typingrrrrrrr	�_elffilerrr
rr$r%r&�contextmanagerrarr�r(r+r=�defaultdictrBrJrKrDrWrergrr�	lru_cachertr�r�r�r7r>r�<module>r�s������	�	�
��S�S�S�8�8�����"��
����S��Y�x��'8�$��'D�E����
��
��
�
�s�
�t�
�8�S�8��#��8�4�8�%<�K�$;�$;�J�$G��4��S��>�G��J��
�x��}��&)�h�s�m�)�XM�x��}�M�
8�c�8�e�C��H�o�8�&�����-�E�#�s�(�O�-��-����}����8�
��
��-5��#��-5�8�C�=�-5r>