Your IP : 216.73.216.52


Current Path : /snap/certbot/5451/lib/python3.12/site-packages/packaging/__pycache__/
Upload File :
Current File : //snap/certbot/5451/lib/python3.12/site-packages/packaging/__pycache__/_manylinux.cpython-312.pyc

�

^[�iW%���UddlmZddlZddlZddlZddlZddlZddlZddlZddl	m
Z
mZmZm
Z
ddlmZmZmZmZdZdZdZhd	�Zej.d#d
��Zd$d�Zd$d�Zd%d
�Zej8d��Zded<Gd�de�Zd&d�Z d&d�Z!d&d�Z"d'd�Z#ejHd(d��Z%d)d�Z&edd�dedd�dedd�diZ'd ed!<d*d"�Z(y)+�)�annotationsN)�	Generator�Iterator�
NamedTuple�Sequence�)�EIClass�EIData�ELFFile�EMachinel~ii>�ppc64�s390x�x86_64�aarch64�ppc64le�riscv64�loongarch64c#�K�	t|d�5}t|���ddd�y#1swYyxYw#tttf$rd��YywxYw�w)N�rb)�openr�OSError�	TypeError�
ValueError)�path�fs  ��/build/snapcraft-certbot-8ace4148c346cc61c23dfdbf9a13f72e/parts/certbot/install/lib/python3.12/site-packages/packaging/_manylinux.py�
_parse_elfrsO�����
�$��
�	���!�*��	�	�	���Y�
�+���
��s>�A�3�'�3�A�0�3�A�3�A�A�
A�Ac�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��
executablers  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)
rr r	r!r"r
r#r$r�I386r*s  r�_is_linux_i686r/7sn��	�J�	�
�1�
�T�M�
+��
�
�g�k�k�)�
+��
�
�f�j�j�(�
+��	�	�X�]�]�*�		
�
�
�
�s�A"A8�8Bc�b�d|vrt|�Sd|vrt|�Std�|D��S)N�armv7l�i686c3�,K�|]}|tv���y�wr)�_ALLOWED_ARCHS)�.0�archs  r�	<genexpr>z'_have_compatible_abi.<locals>.<genexpr>Fs����8�$�t�~�%�8�s�)r,r/�any)r+�archss  r�_have_compatible_abir:As8���5���z�*�*�
����j�)�)��8�%�8�8�8�c��y)N�2�r>r;r�<lambda>r?Ns�r;zdict[int, int]�_LAST_GLIBC_MINORc�"�eZdZUded<ded<y)�
_GLibCVersion�int�major�minorN)�__name__�
__module__�__qualname__�__annotations__r>r;rrBrBQs���J��Jr;rBc��	tjd�}|�J�|j�\}}|S#ttt
tf$rYywxYw)zJ
    Primary implementation of glibc_version_string using os.confstr.
    �CS_GNU_LIBC_VERSIONN)�os�confstr�rsplit�AssertionError�AttributeErrorrr)�version_string�_�versions   r�_glibc_version_string_confstrrTVsX���%'�Z�Z�0E�%F���)�)�)�#�*�*�,�
��7��N��
�N�G�Z�@����s�,0�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_versionrP�c_char_p�restype�
isinstance�str�decode)rW�process_namespacerZ�version_strs    r�_glibc_version_string_ctypesrbis�����"�"�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.)rTrbr>r;r�_glibc_version_stringrd�s��(�*�L�.J�.L�Lr;c��tjd|�}|s+tjd|��td��tdd�Stt
|jd��t
|jd���S)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: �)�
stacklevel���rDrE)�re�match�warnings�warn�RuntimeWarningrBrC�group)ra�ms  r�_parse_glibc_versionrp�sl��	���8�+�F�A���
�
�I�+��W���	
�
�R��$�$���Q�W�W�W�-�.��A�G�G�G�4D�0E�F�Fr;c�H�t�}|�tdd�St|�S)Nrh)rdrBrp)ras r�_get_glibc_versionrr�s(��'�)�K����R��$�$���,�,r;c���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_compatiblerrf��manylinux1_compatible��manylinux2010_compatible��manylinux2014_compatible)
rr�
_manylinuxrX�hasattrrt�boolrBrvrxrz)r6rS�	sys_glibcr{�results     r�_is_compatibler��s���"�$�I��7������z�1�2��0�0����W�Q�Z��N������<����-��1�%�%�'�*�>U�*V��J�4�4�5�5��-��2�&�&�7��.�,��J�7�7�8�8��-��2�&�&�7��.�,��J�7�7�8�8���#����s�C�	C&�%C&rfry�
manylinux2014rw�
manylinux2010ru�
manylinux1zdict[_GLibCVersion, str]�_LEGACY_MANYLINUX_MAPc#�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]\}t|j|�}	t||	�s�&d	jg|	�|�����tj|	�x}
s�T|
�d
|�����^����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.
    Nrf�rr2�rrhzmanylinux_{}_{}_{}rR)r:�sysr+rB�setrr�rangerDr@�appendrEr��formatr��get)r9�too_old_glibc2�
current_glibc�glibc_max_list�glibc_major�glibc_minorr6�	glibc_max�	min_minor�
glibc_version�
legacy_tags           r�
platform_tagsr��s\���� �����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�5�.�5�5�K�}�K�d�K�K�&;�%>�%>�}�%M�M�z�M�!+��A�d�V�4�4�
5�

	5�5�s�DE	�-E	�9E	)rr^�returnz%Generator[ELFFile | None, None, None])r+r^r�r})r+r^r9�
Sequence[str]r�r})r�z
str | None)rar^r�rB)r�rB)r6r^rSrBr�r})r9r�r�z
Iterator[str]))�
__future__r�collections�
contextlib�	functoolsrLrir�rk�typingrrrr�_elffiler	r
rrr'r(r)r4�contextmanagerrr,r/r:�defaultdictr@rIrBrTrbrdrp�	lru_cacherrr�r�r�r>r;r�<module>r�s��"����	�	�
��<�<�8�8�����"����������
�
�9�%<�K�$;�$;�J�$G��>�G��J��
�&)�XM�
G�&���-��-��:�!�R��/��!�R��/��!�Q���
3��/��+5r;