o
    'j6h                     @  s4  d dl mZ d dlZd dlZd dlmZmZmZmZ ddl	m
Z
mZ ddlmZmZmZ eed eeef f ZedeZG d	d
 d
eZG dd deZG dd deZedejZedZedZedZddd.ddZd/ddZej ddd0d#d$Z!e!j"ddd1d%d&Z#d2d)d*Z$d3d,d-Z%dS )4    )annotationsN)NewTypeTupleUnioncast   )Tag	parse_tag)InvalidVersionVersion_TrimmedRelease NormalizedNamec                   @     e Zd ZdZdS )InvalidNamezW
    An invalid distribution name; users should refer to the packaging user guide.
    N__name__
__module____qualname____doc__r   r   r   ^/var/www/html/chefvision.cloud.itp360.com/venv/lib/python3.10/site-packages/packaging/utils.pyr          r   c                   @  r   )InvalidWheelFilenamezM
    An invalid wheel filename was found, users should refer to PEP 427.
    Nr   r   r   r   r   r      r   r   c                   @  r   )InvalidSdistFilenamez^
    An invalid sdist filename was found, users should refer to the packaging user guide.
    Nr   r   r   r   r   r      r   r   z)^([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namestrr   boolreturnc                C  s6   |rt | std| td|  }tt|S )Nzname is invalid: -)_validate_regexmatchr   _canonicalize_regexsublowerr   r   )r   r   valuer   r   r   canonicalize_name.   s   
r&   c                 C  s   t | d uS )N)_normalized_regexr!   )r   r   r   r   is_normalized_name6   s   r(   Tstrip_trailing_zeroversionVersion | strr*   c                C  s   t |r
tt | S | S )a  
    Return a canonical form of a version as a string.

    >>> canonicalize_version('1.0.1')
    '1.0.1'

    Per PEP 625, versions may have multiple canonical forms, differing
    only by trailing zeros.

    >>> canonicalize_version('1.0.0')
    '1'
    >>> canonicalize_version('1.0.0', strip_trailing_zero=False)
    '1.0.0'

    Invalid versions are returned unaltered.

    >>> canonicalize_version('foo bar baz')
    'foo bar baz'
    )r   r   )r+   r*   r   r   r   canonicalize_version:   s   r-   c                C  s0   zt | }W n ty   |  Y S w t||dS )Nr)   )r   r
   r-   )r+   r*   parsedr   r   r   _T   s   r/   filename8tuple[NormalizedName, Version, BuildTag, frozenset[Tag]]c              
   C  s:  |  dstd| | d d } | d}|dvr"td| | d|d }|d }d	|v s<td
|tjd u rCtd| t|}zt|d }W n t	yc } ztd| |d }~ww |dkr|d }t
|}|d u rtd| d| ttt|d|df}	nd}	t|d }
|||	|
fS )Nz.whlz3Invalid wheel filename (extension must be '.whl'): r   )      z0Invalid wheel filename (wrong number of parts):    r   __z^[\w\d._]*$zInvalid project name: r   z*Invalid wheel filename (invalid version): r4   zInvalid build number: z in r   )endswithr   countsplitrer!   UNICODEr&   r   r
   _build_tag_regexr   BuildTagintgroupr	   )r0   dashesparts	name_partr   r+   e
build_partbuild_matchbuildtagsr   r   r   parse_wheel_filename^   sH   


 rI   tuple[NormalizedName, Version]c              
   C  s   |  dr| d td  }n|  dr| d td  }ntd| |d\}}}|s6td| t|}z	t|}W ||fS  tyW } ztd| |d }~ww )Nz.tar.gzz.zipz@Invalid sdist filename (extension must be '.tar.gz' or '.zip'): r   zInvalid sdist filename: z*Invalid sdist filename (invalid version): )r8   lenr   
rpartitionr&   r   r
   )r0   	file_stemrC   sepversion_partr   r+   rD   r   r   r   parse_sdist_filename   s0   


rP   )r   r   r   r   r   r   )r   r   r   r   )r+   r,   r*   r   r   r   )r+   r   r*   r   r   r   )r0   r   r   r1   )r0   r   r   rJ   )&
__future__r   	functoolsr;   typingr   r   r   r   rH   r   r	   r+   r
   r   r   r?   r   r>   r   
ValueErrorr   r   r   compile
IGNORECASEr    r"   r'   r=   r&   r(   singledispatchr-   registerr/   rI   rP   r   r   r   r   <module>   s4   





	+