
    "h                       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
e      Z G d de      Z G d de      Z ej0                  dej2                        Z ej0                  d      Z ej0                  d      Z ej0                  d      ZddddZddZej@                  dd	 	 	 	 	 dd       Z!e!jD                  ddd d       Z#	 	 	 	 d!dZ$d"dZ%y)#    )annotationsN)NewTypeTupleUnioncast   )Tag	parse_tag)InvalidVersionVersion_TrimmedRelease NormalizedNamec                      e Zd ZdZy)InvalidNamezW
    An invalid distribution name; users should refer to the packaging user guide.
    N__name__
__module____qualname____doc__r       Q/var/www/html/Resume-Scraper/venv/lib/python3.12/site-packages/packaging/utils.pyr   r          r   r   c                      e Zd ZdZy)InvalidWheelFilenamezM
    An invalid wheel filename was found, users should refer to PEP 427.
    Nr   r   r   r   r   r      r   r   r   c                      e Zd ZdZy)InvalidSdistFilenamez^
    An invalid sdist filename was found, users should refer to the packaging user guide.
    Nr   r   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)validatec                   |r#t         j                  |       st        d|       t        j	                  d|       j                         }t        t        |      S )Nzname is invalid: -)_validate_regexmatchr   _canonicalize_regexsublowerr   r   )namer   values      r   canonicalize_namer(   .   sM    --d3-dX677##C.446E&&r   c                0    t         j                  |       d uS )N)_normalized_regexr"   )r&   s    r   is_normalized_namer+   6   s    ""4(44r   Tstrip_trailing_zeroc               L    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'
    )strr   )versionr-   s     r   canonicalize_versionr1   :   s#    . 0Cs7|,QQQQr   c               V    	 t        |       }t        ||      S # t        $ r | cY S w xY w)Nr,   )r   r   r1   )r0   r-   parseds      r   _r4   T   s7    !  <OPP  s    ((c                   | j                  d      st        d|       | d d } | j                  d      }|dvrt        d|       | j                  d|dz
        }|d   }d	|v s%t	        j
                  d
|t        j                        t        d|       t        |      }	 t        |d         }|dk(  rg|d   }t        j                  |      }|t        d| d|       t        t        t        |j                  d            |j                  d      f      }	nd}	t        |d         }
|||	|
fS # t        $ r}t        d|       |d }~ww xY w)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): r8   zInvalid build number: z in r   )endswithr   countsplitrer"   UNICODEr(   r   r   _build_tag_regexr   BuildTagintgroupr
   )filenamedashesparts	name_partr&   r0   e
build_partbuild_matchbuildtagss              r   parse_wheel_filenamerN   ^   s    V$"A(N
 	
 }H^^C FV">xlK
 	
 NN3
+EaIyBHH^Y

KS"%;H<#HIIY'D%(# {1X
&,,Z8&(DE  XK$5$5a$8 9;;L;LQ;OPQU2YD'5$''!  "8E
	s   %D5 5	E>EEc                b   | j                  d      r| d t        d        }n/| j                  d      r| d t        d        }nt        d|       |j                  d      \  }}}|st        d|       t	        |      }	 t        |      }||fS # t        $ r}t        d|       |d }~ww xY 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): )r<   lenr   
rpartitionr(   r   r   )rE   	file_stemrH   sepversion_partr&   r0   rI   s           r   parse_sdist_filenamerU      s    #.I/				6	"^F|,	"|
 	
 $-#7#7#< IsL"%=h\#JKKY'D,' '?  "8E
	s   B 	B.B))B.)r&   r/   r   boolreturnr   )r&   r/   rW   rV   )r0   zVersion | strr-   rV   rW   r/   )r0   r/   r-   rV   rW   r/   )rE   r/   rW   z8tuple[NormalizedName, Version, BuildTag, frozenset[Tag]])rE   r/   rW   ztuple[NormalizedName, Version])&
__future__r   	functoolsr?   typingr   r   r   r   rM   r	   r
   r0   r   r   r   rC   r/   rB   r   
ValueErrorr   r   r   compile
IGNORECASEr!   r#   r*   rA   r(   r+   singledispatchr1   registerr4   rN   rU   r   r   r   <module>r`      s?  
 #  	 . .   = =rE#s(O+,)3/* : :  "**0"-- !bjj+ BJJQR 2::l+  6; '5 ;?RR48RR R2 37 Q Q((((=((Vr   