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

R"f��	���ddlZddlmZmZmZmZmZddlmZm	Z	ddl
mZmZeedee
effZede�ZGd�d	e�ZGd
�de�ZGd�d
e�Zej*dej,�Zej*d�Zej*d�Zej*d�Zdd�dededefd�Zdedefd�Zdd�deeefdedefd�Zdedeeeeeeffd�Zdedeeeffd �Z y)!�N)�	FrozenSet�NewType�Tuple�Union�cast�)�Tag�	parse_tag)�InvalidVersion�Version��NormalizedNamec��eZdZdZy)�InvalidNamezW
    An invalid distribution name; users should refer to the packaging user guide.
    N��__name__�
__module__�__qualname__�__doc__r
��1/usr/lib/python3/dist-packages/packaging/utils.pyrr���rrc��eZdZdZy)�InvalidWheelFilenamezM
    An invalid wheel filename was found, users should refer to PEP 427.
    Nrr
rrrrrrrc��eZdZdZy)�InvalidSdistFilenamez^
    An invalid sdist filename was found, users should refer to the packaging user guide.
    Nrr
rrrrrrrz)^([A-Z0-9]|[A-Z0-9][A-Z0-9._-]*[A-Z0-9])$z[-_.]+z/^([a-z0-9]|[a-z0-9]([a-z0-9-](?!--))*[a-z0-9])$z	(\d+)(.*)F)�validate�namer�returnc��|r#tj|�std|����tj	d|�j�}t
t|�S)Nzname is invalid: �-)�_validate_regex�matchr�_canonicalize_regex�sub�lowerrr)rr�values   r�canonicalize_namer(+sM����-�-�d�3��-�d�X�6�7�7��#�#�C��.�4�4�6�E����&�&rc�0�tj|�duS�N)�_normalized_regexr#)rs r�is_normalized_namer,3s���"�"�4�(��4�4rT)�strip_trailing_zero�versionr-c���t|t�r
	t|�}n|}g}|jdk7r|j|j�d��dj
d�|jD��}|rtjdd|�}|j|�|j�1|jdj
d�|jD���|j�|jd|j���|j�|jd	|j���|j�|jd
|j���dj
|�S#t$r|cYSwxYw)z�
    This is very similar to Version.__str__, but has one subtle difference
    with the way it handles the release segment.
    r�!�.c3�2K�|]}t|����y�wr*��str��.0�xs  r�	<genexpr>z'canonicalize_version.<locals>.<genexpr>Ns����>�!�s�1�v�>���z(\.0)+$�c3�2K�|]}t|����y�wr*r3r5s  rr8z'canonicalize_version.<locals>.<genexpr>Vs����8��S��V�8�r9z.postz.dev�+)�
isinstancer4rr�epoch�append�join�release�rer%�pre�post�dev�local)r.r-�parsed�parts�release_segments     r�canonicalize_versionrJ7sB���'�3��	��W�%�F�
���E��|�|�q��
������~�Q�'�(��h�h�>�v�~�~�>�>�O���&�&��R��A��	�L�L��!��z�z��
���R�W�W�8�V�Z�Z�8�8�9��{�{��
���u�V�[�[�M�*�+��z�z��
���t�F�J�J�<�(�)��|�|��
���q�����'�(�
�7�7�5�>���G�	��N�	�s�E'�'E5�4E5�filenamec��|jd�std|����|dd}|jd�}|dvrtd|����|jd|dz
�}|d}d	|vs%t	j
d
|tj��td|����t|�}	t|d�}|dk(rh|d}tj|�}|�td|�d|�d���ttt|jd��|jd�f�}	nd}	t|d�}
|||	|
fS#t$r}td
|���|�d}~wwxYw)Nz.whlz3Invalid wheel filename (extension must be '.whl'): ���r!)��z0Invalid wheel filename (wrong number of parts): �r�__z^[\w\d._]*$zInvalid project name: rz*Invalid wheel filename (invalid version): rOzInvalid build number: z in '�'r
���)�endswithr�count�splitrBr#�UNICODEr(rr�_build_tag_regexr�BuildTag�int�groupr
)rK�dashesrH�	name_partrr.�e�
build_part�build_match�build�tagss           r�parse_wheel_filenamercgs������V�$�"�A�(��L�
�	
����}�H�
�^�^�C�
 �F�
�V��"�>�x�j�I�
�	
�
�N�N�3���
�+�E��a��I��y��B�H�H�^�Y��
�
�K�S�"�%;�H�:�#F�G�G��Y�'�D���%��(�#����{��1�X�
�&�,�,�Z�8����&�(���E�(��1�E��
��X��K�$5�$5�a�$8� 9�;�;L�;L�Q�;O�P�Q�����U�2�Y��D��'�5�$�'�'��!��"�8��
�C�
��	���s�%D6�6	E�?E�Ec�b�|jd�r|dtd�}n/|jd�r|dtd�}ntd|����|jd�\}}}|std|����t	|�}	t|�}||fS#t$r}td|���|�d}~wwxYw)Nz.tar.gzz.zipz@Invalid sdist filename (extension must be '.tar.gz' or '.zip'): r!zInvalid sdist filename: z*Invalid sdist filename (invalid version): )rT�lenr�
rpartitionr(rr)rK�	file_stemr]�sep�version_partrr.r^s        r�parse_sdist_filenamerj�s�������#��.��I���/�	�	�	�	�6�	"��^��F��|�,�	�"���z�
�
�	
�$-�#7�#7��#<� �I�s�L��"�%=�h�Z�#H�I�I��Y�'�D���,�'��
�'�?�����"�8��
�C�
��	���s�B�	B.�B)�)B.)!rB�typingrrrrrrbr	r
r.rrrZr4rYr�
ValueErrorrrr�compile�
IGNORECASEr"r$r+rX�boolr(r,rJrcrjr
rr�<module>rpsX��

�9�9� �,���r��E�#�s�(�O�+�,���)�3�/���*���:���:���"�*�*�0�"�-�-���!�b�j�j��+���B�J�J�Q�R���2�:�:�l�+��6;�'�C�'�d�'�~�'�5�S�5�T�5�
BF�-�
�7�C�<�
 �-�:>�-��-�`((��((�
�>�7�H�i��n�<�=�((�V�3��5���1H�+I�r