
    wi                       d dl m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j.                  dej0                        Z ej.                  d      Z ej.                  d      ZddddZddZ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       N/var/www/feuerwehr-webapp/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+[a-z0-9]|[a-z0-9]([a-z0-9-](?!--))*[a-z0-9]z	(\d+)(.*)F)validatec                   |r#t         j                  |       st        d|       | j                         j	                  dd      j	                  dd      }d|v r|j	                  dd      }d|v rt        d|      S )Nzname is invalid: _-.z--r   )_validate_regex	fullmatchr   lowerreplacer   )namer   values      r   canonicalize_namer)   *   sz    11$7-dX677 JJL  c*223<E
%-dC( %- %((r   c                0    t         j                  |       d uS )N)_normalized_regexr$   )r'   s    r   is_normalized_namer,   7   s    &&t,D88r   T)strip_trailing_zeroc                   t        | t              r	 t        |       } t        |rt	        |             S |       S # t        $ r t        |       cY S w xY w)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'
    )
isinstancestrr   r   r   )versionr-   s     r   canonicalize_versionr2   ;   sU    , '3	 g&G +>w'LLGLL  	 w<	 s   9 AA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(  rc|d   }t        j                  |      }|t        d| d|       t        d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): r6   zInvalid build number: z in BuildTagr   )endswithr   countsplitrematchUNICODEr)   r   r   _build_tag_regexr   intgroupr
   )filenamedashesparts	name_partr'   r1   e
build_partbuild_matchbuildtagss              r   parse_wheel_filenamerM   Y   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  Z#k&7&7&:";[=N=Nq=Q!RSU2YD'5$''!  "8E
	s   %D1 1	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   )rD   	file_stemrG   sepversion_partr'   r1   rH   s           r   parse_sdist_filenamerT      s    #.I/				6	"^F|,	"|
 	
 $-#7#7#< IsL"%=h\#JKKY'D,' '?  "8E
	s   B 	B.B))B.)r'   r0   r   boolreturnr   )r'   r0   rV   rU   )r1   zVersion | strr-   rU   rV   r0   )rD   r0   rV   z8tuple[NormalizedName, Version, BuildTag, frozenset[Tag]])rD   r0   rV   ztuple[NormalizedName, Version])!
__future__r   r>   typingr   r   r   r   rL   r	   r
   r1   r   r   r   rB   r0   r9   r   
ValueErrorr   r   r   compile
IGNORECASEr#   r+   rA   r)   r,   r2   rM   rT   r   r   r   <module>r\      s   
 # 	 . .   = =rE#s(O+,)3/* : :  "**Er}}UBJJMN 2::l+  6; 
)9
 <@MM48MM<((((=((Vr   