
    Dg              	          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 G d de          Z e j        de j                  Z e j        d          Z e j        d          Z e j        d          Zdddededef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 dS )!    N)	FrozenSetNewTypeTupleUnioncast   )Tag	parse_tag)InvalidVersionVersion 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       D/var/www/sysmax/venv/lib/python3.11/site-packages/packaging/utils.pyr   r                 r   r   c                       e Zd ZdZdS )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dS )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)validatenamer   returnc                    |r,t                               |           st          d|           t                              d|                                           }t          t          |          S )Nzname is invalid: -)_validate_regexmatchr   _canonicalize_regexsublowerr   r   )r   r   values      r   canonicalize_namer(   +   sg     8--d33 86d66777##C..4466E&&&r   c                 :    t                               |           d uS N)_normalized_regexr#   )r   s    r   is_normalized_namer,   3   s    ""4((44r   T)strip_trailing_zeroversionr-   c                   t          | t                    r#	 t          |           }n# t          $ r | cY S w xY w| }g }|j        dk    r|                    |j         d           d                    d |j        D                       }|rt          j	        dd|          }|                    |           |j
        7|                    d                    d |j
        D                                  |j        |                    d	|j                    |j        |                    d
|j                    |j        |                    d|j                    d                    |          S )z
    This is very similar to Version.__str__, but has one subtle difference
    with the way it handles the release segment.
    r   !.c              3   4   K   | ]}t          |          V  d S r*   str.0xs     r   	<genexpr>z'canonicalize_version.<locals>.<genexpr>N   s(      >>!s1vv>>>>>>r   z(\.0)+$ Nc              3   4   K   | ]}t          |          V  d S r*   r3   r5   s     r   r8   z'canonicalize_version.<locals>.<genexpr>V   s(      88SVV888888r   z.postz.dev+)
isinstancer4   r   r   epochappendjoinreleaserer%   prepostdevlocal)r.   r-   parsedpartsrelease_segments        r   canonicalize_versionrI   7   s    '3 	W%%FF 	 	 	NNN	 E |q'''((( hh>>v~>>>>>O B&RAA	LL!!! zRWW88VZ88888999 {*V[**+++ z(FJ(())) |'''(((775>>s   ' 66filenamec                 N   |                      d          st          d|            | d d         } |                     d          }|dvrt          d|            |                     d|dz
            }|d         }d	|v s t	          j        d
|t          j                  t          d|            t          |          }	 t          |d                   }n%# t          $ r}t          d|            |d }~ww xY w|dk    r|d         }t                              |          }|t          d| 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): rN   zInvalid build number: z in ''r   )endswithr   countsplitrA   r#   UNICODEr(   r   r   _build_tag_regexr   BuildTagintgroupr
   )rJ   dashesrG   	name_partr   r.   e
build_partbuild_matchbuildtagss              r   parse_wheel_filenamerb   g   s    V$$ 
"L(LL
 
 	
 }H^^C  FV"IxII
 
 	
 NN3
++EaIyBH^Y
KKS"#FH#F#FGGGY''D%(##   "CCC
 
	
 {{1X
&,,Z88&EEE(EEE   XK$5$5a$8$8 9 9;;L;LQ;O;OPQQU2YD'5$''s   C 
C<$C77C<c                    |                      d          r| d t          d                    }n@|                      d          r| d t          d                    }nt          d|            |                    d          \  }}}|st          d|            t	          |          }	 t          |          }n%# t          $ r}t          d|            |d }~ww xY w||fS )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): )rS   lenr   
rpartitionr(   r   r   )rJ   	file_stemr\   sepversion_partr   r.   r]   s           r   parse_sdist_filenameri      s,   ## 
.I./					6	"	" 
^F|^,		" 
 
 	
 $-#7#7#<#< IsL J"#Hh#H#HIIIY''D,''   "CCC
 
	
 '?s   ,B< <
CCC)!rA   typingr   r   r   r   r   ra   r	   r
   r.   r   r   rY   r4   rX   r   
ValueErrorr   r   r   compile
IGNORECASEr"   r$   r+   rW   boolr(   r,   rI   rb   ri   r   r   r   <module>ro      sx  
 
			 9 9 9 9 9 9 9 9 9 9 9 9 9 9                 , , , , , , , ,rE#s(O+,)3//    *       :       :    "*0"-  !bj++ BJQRR 2:l++  6; ' ' 'C 'd '~ ' ' ' '5S 5T 5 5 5 5
 BF- - -7C< -:>-- - - -`((((
>7Hin<=(( (( (( ((V3 51H+I      r   