
    
_d              	       ^   d dl Z d dlmZmZmZmZmZ ddlmZm	Z	 ddl
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 e j(                  d      Z e j(                  d      ZdedefdZdddeeef   dedefdZdedeeeeee   f   fdZdedeeef   fdZy)    N)	FrozenSetNewTypeTupleUnioncast   )Tag	parse_tag)InvalidVersionVersion NormalizedNamec                       e Zd ZdZy)InvalidWheelFilenamezM
    An invalid wheel filename was found, users should refer to PEP 427.
    N__name__
__module____qualname____doc__r       D/usr/lib/python3/dist-packages/setuptools/_vendor/packaging/utils.pyr   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[-_.]+z	(\d+)(.*)namereturnc                 j    t         j                  d|       j                         }t        t        |      S )N-)_canonicalize_regexsublowerr   r   )r   values     r   canonicalize_namer#       s*    ##C.446E&&r   T)strip_trailing_zeroversionr$   c                   t        | t              r	 t        |       }n| }g }|j                  dk7  r|j                  |j                   d       dj                  d |j                  D              }|rt        j                  dd|      }|j                  |       |j                  1|j                  dj                  d |j                  D                     |j                  |j                  d|j                          |j                  |j                  d	|j                          |j                  |j                  d
|j                          dj                  |      S # t        $ r | cY S w xY w)z
    This is very similar to Version.__str__, but has one subtle difference
    with the way it handles the release segment.
    r   !.c              3   2   K   | ]  }t        |        y wNstr.0xs     r   	<genexpr>z'canonicalize_version.<locals>.<genexpr>=   s     >!s1v>   z(\.0)+$ c              3   2   K   | ]  }t        |        y wr*   r+   r-   s     r   r0   z'canonicalize_version.<locals>.<genexpr>E   s     8SV8r1   z.postz.dev+)
isinstancer,   r   r   epochappendjoinreleaserer    prepostdevlocal)r%   r$   parsedpartsrelease_segments        r   canonicalize_versionrB   &   sB    '3	W%F
 E ||q~Q'( hh>v~~>>O&&RA	LL! zzRWW8VZZ889 {{uV[[M*+ zztFJJ<() ||q'(775>G  	N	s   E' 'E54E5filenamec                 j   | 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(  rh|d   }t        j                  |      }|t        d| d|  d      t        t        t        |j                  d            |j                  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   rG   zInvalid build number: z in ''r   )endswithr   countsplitr:   matchUNICODEr#   r   _build_tag_regexr   BuildTagintgroupr
   )
rC   dashesr@   	name_partr   r%   
build_partbuild_matchbuildtagss
             r   parse_wheel_filenamer[   V   s`    V$"A(L
 	
 }H^^C FV">xjI
 	
 NN3
+EaIyBHH^Y

KS"%;H:#FGGY'DeAhG{1X
&,,Z8&(E(1E  XK$5$5a$8 9;;L;LQ;OPQU2YD'5$''r   c                     | 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 )Nz.tar.gzz.zipz@Invalid sdist filename (extension must be '.tar.gz' or '.zip'): r   zInvalid sdist filename: )rL   lenr   
rpartitionr#   r   )rC   	file_stemrV   sepversion_partr   r%   s          r   parse_sdist_filenamerb   z   s    #.I/				6	"^F|,	"z
 	
 $-#7#7#< IsL"%=hZ#HIIY'Dl#G'?r   )r:   typingr   r   r   r   r   rZ   r	   r
   r%   r   r   rS   r,   rR   r   
ValueErrorr   r   compiler   rQ   r#   boolrB   r[   rb   r   r   r   <module>rg      s   
 
 9 9   ,rE#s(O+,)3/: :  !bjj+ 2::l+ 'C 'N ' BF-7C< -:>--`!(!(
>7Hin<=!(H3 51H+I r   