
    wi	X                       d dl mZ d dlZd dlZd dlZd dlmZmZ d dlmZ d dl	m	Z	 d dl
mZmZmZmZmZ ddlmZ dd	lmZ dd
lmZmZ ddlmZ erd dlmZ d dlmZ  ej:                  e      Zg dZ  ed      Z! ed      Z" G d de      Z# ede#      Z$ ejJ                  d      Z&d=dZ'd>dZ(d?dZ)d@dZ*dAdZ+dBdZ,	 	 	 	 	 	 	 	 dCdZ-	 	 	 	 	 	 	 	 	 	 dDdZ.	 	 	 	 	 	 	 	 	 	 dEdZ/	 	 	 	 	 	 	 	 	 	 dFdZ0	 	 	 	 	 	 	 	 dGd Z1	 	 	 	 	 	 	 	 dHd!Z2	 	 	 	 	 	 	 	 dId"Z3dJd#Z4dKd$Z5dLd%Z6 G d& d'e7      Z8 G d( d)e8      Z9 G d* d+e8      Z: ed,d-.       G d/ d0             Z; ed,d-.       G d1 d2             Z< ed,d-.       G d3 d4             Z= ed,d-.       G d5 d6             Z> ed,d-.       G d7 d8             Z? ed,d-.       G d9 d:             Z@ ed,d-.       G d; d<             ZAy)M    )annotationsN)MappingSequence)	dataclass)datetime)TYPE_CHECKINGAnyCallableProtocolTypeVar   )Marker)SpecifierSet)NormalizedNameis_normalized_name)Version)Path)Self)
PackagePackageArchivePackageDirectoryPackageSdist
PackageVcsPackageWheelPylockPylockUnsupportedVersionErrorPylockValidationErroris_valid_pylock_path_T_T2c                      e Zd Zedd       Zy)_FromMappingProtocolc                     y N clsds     O/var/www/feuerwehr-webapp/venv/lib/python3.12/site-packages/packaging/pylock.py
_from_dictz_FromMappingProtocol._from_dict/   s    7:    Nr(   Mapping[str, Any]returnr   )__name__
__module____qualname__classmethodr*   r%   r+   r)   r"   r"   .   s    : :r+   r"   _FromMappingProtocolT)boundz^pylock\.([^.]+)\.toml$c                t    | j                   dk(  xs( t        t        j                  | j                               S )z4Check if the given path is a valid pylock file path.zpylock.toml)namebool_PYLOCK_FILE_NAME_REmatch)paths    r)   r   r   9   s+    99%T.B.H.H.S)TTr+   c                &    | j                  dd      S )N_-)replace)keys    r)   	_toml_keyr@   >   s    ;;sC  r+   c                    t        |t        t        t        f      rt	        |      S t        |t
              r| dk(  r|D cg c]  }t	        |       c}S |S c c}w )Nenvironments)
isinstancer   r   r   strr   )r?   valuevs      r)   _toml_valuerG   B   sM    %'6<895z%"sn'< %&1A&&L 's    Ac           	     d    | D ci c]  \  }}|t        |      t        ||       c}}S c c}}w r$   )r@   rG   )datar?   rE   s      r)   _toml_dict_factoryrJ   J   s>     C 	#C//  s   ",c                    | j                  |      x}yt        ||      s1t        dt        |      j                   d|j                   d|      |S )zBGet a value from the dictionary and verify it's the expected type.NUnexpected type  (expected )context)getrC   r   typer/   r(   expected_typer?   rE   s       r)   _getrU   R   sc    s$e]+#tE{334 5&//03
 	

 Lr+   c                :    t        | ||      x}t        |      |S )zKGet a required value from the dictionary and verify it's the expected type.)rU   _PylockRequiredKeyErrorrS   s       r)   _get_requiredrX   _   s&    a,,5%c**Lr+   c                N   t        | t        |      x}yt        |t        t        f      r$t        dt        |      j                   d|      t        |      D ]H  \  }}t        ||      rt        dt        |      j                   d|j                   d| d| d       |S )	zMGet a list value from the dictionary and verify it's the expected items type.NrL   z (expected Sequence)rO   rM   rN   [])	rU   r   rC   rD   bytesr   rR   r/   	enumerate)r(   expected_item_typer?   rE   iitems         r)   _get_sequencera   f   s     a3''0%#u&#tE{3344HI
 	
 U# 4$ 23'"4:#6#6"7 8/889<%q1  Lr+   c                r    t        | ||      x}y	  ||      S # t        $ r}t        ||      |d}~ww xY w)zGet a value from the dictionary, verify it's the expected type,
    and convert to the target type.

    This assumes the target_type constructor accepts the value.
    NrO   )rU   	Exceptionr   )r(   rT   target_typer?   rE   es         r)   _get_asrf   |   sJ     a,,5;5!! ;#As3:;s    	616c                <    t        | |||      x}t        |      |S )zfGet a required value from the dict, verify it's the expected type,
    and convert to the target type.)rf   rW   )r(   rT   rd   r?   rE   s        r)   _get_required_asrh      s*     M;<<E%c**Lr+   c           	         t        | ||      x}yg }	 |D ]  } ||      }|j                  |        	 |S # t        $ r"}t        || dt	        |       d      |d}~ww xY w)z>Get list value from dictionary and verify expected items type.NrZ   r[   rO   )ra   appendrc   r   len)	r(   r^   target_item_typer?   rE   resultr`   
typed_itemre   s	            r)   _get_sequence_asro      s     q"4c::CFO 	&D)$/JMM*%	&
 M  O#A#aF}A/FGQNOs    7 	A" AA"c                    t        | t        |      x}y	 |j                  |      S # t        $ r}t	        ||      |d}~ww xY w)zIGet a dictionary value from the dictionary and convert it to a dataclass.NrO   )rU   r   r*   rc   r   )r(   rd   r?   rE   re   s        r)   _get_objectrq      sP     a#&&/;%%e,, ;#As3:;s   ' 	A>Ac           	         t        | t        |      x}yg }	 |D ]$  }|j                  |      }|j                  |       & 	 |S # t        $ r"}t        || dt        |       d      |d}~ww xY w)zJGet a list value from the dictionary and convert its items to a dataclass.NrZ   r[   rO   )ra   r   r*   rj   rc   r   rk   )r(   rl   r?   rE   rm   r`   rn   re   s           r)   _get_sequence_of_objectsrs      s     q'3//8*,FO 	&D)44T:JMM*%	&
 M  O#A#aF}A/FGQNOs   )A 	A/A**A/c                :    t        | ||      x}t        |      |S )zWGet a required list value from the dictionary and convert its items to a
    dataclass.)rs   rW   )r(   rl   r?   rm   s       r)   !_get_required_sequence_of_objectsru      s)    
 +1.>DDM%c**Mr+   c                L    t        |       st        d| d      t        |       S )z+Validate that a string is a NormalizedName.zName z is not normalized)r   r   r   )r6   s    r)   _validate_normalized_namerw      s*    d##eD83E$FGG$r+   c                $    | s|st        d      y y )Nzpath or url must be provided)r   )r:   urls     r)   _validate_path_urlrz      s    #$BCC 4r+   c                v    | st        d      t        d | j                         D              st        d      | S )Nz"At least one hash must be providedc              3  <   K   | ]  }t        |t                y wr$   )rC   rD   ).0hash_vals     r)   	<genexpr>z#_validate_hashes.<locals>.<genexpr>   s     IXz(C(Is   zHash values must be strings)r   allvalues)hashess    r)   _validate_hashesr      s6    #$HIIIII#$ABBMr+   c                  J    e Zd ZU dZdZded<   ded<   dd	 	 	 	 	 d
dZdd	Zy)r   z2Raised when when input data is not spec-compliant.N
str | NonerP   rD   messagerO   c                   t        |t              rJ|j                  r%|r| d|j                   n|j                  | _        n|| _        |j                  | _        y || _        t	        |      | _        y )N.)rC   r   rP   r   rD   )selfcauserP   s      r)   __init__zPylockValidationError.__init__   s]     e23}}4;wiq0   ' ==DL"DLu:DLr+   c                h    | j                   r| j                   d| j                   S | j                  S )Nz in )rP   r   r   s    r)   __str__zPylockValidationError.__str__  s-    <<ll^4'788||r+   )r   zstr | ExceptionrP   r   r.   None)r.   rD   )r/   r0   r1   __doc__rP   __annotations__r   r   r%   r+   r)   r   r      s?    <GZL #	&& 	&
 
&$r+   r   c                        e Zd Zd fdZ xZS )rW   c                (    t         |   d|       y )NzMissing required valuerO   )superr   )r   r?   	__class__s     r)   r   z _PylockRequiredKeyError.__init__  s    13?r+   )r?   rD   r.   r   )r/   r0   r1   r   __classcell__)r   s   @r)   rW   rW     s    @ @r+   rW   c                      e Zd ZdZy)r   z7Raised when encountering an unsupported `lock_version`.N)r/   r0   r1   r   r%   r+   r)   r   r     s    Ar+   r   TF)frozeninitc                      e Zd ZU ded<   dZded<   dZded<   dZded<   ded<   dZded	<   ddddd
	 	 	 	 	 	 	 	 	 	 	 	 	 ddZe	dd       Z
y)r   rD   rR   Nr   ry   r:   requested_revision	commit_idsubdirectory)ry   r:   r   r   c                  t         j                  | d|       t         j                  | d|       t         j                  | d|       t         j                  | d|       t         j                  | d|       t         j                  | d|       y )NrR   ry   r:   r   r   r   object__setattr__)r   rR   ry   r:   r   r   r   s          r)   r   zPackageVcs.__init__  sr     	4.4,4.4!57IJ4i84>r+   c                    | t        |t        d      t        |t        d      t        |t        d      t        |t        d      t        |t        d      t        |t        d            }t        |j                  |j
                         |S )NrR   ry   r:   zrequested-revisionz	commit-idr   )rR   ry   r:   r   r   r   )rX   rD   rU   rz   r:   ry   )r'   r(   package_vcss      r)   r*   zPackageVcs._from_dict+  sq    q#v.QU#af%#As,@A#AsK8an5
 	;++[__=r+   )rR   rD   ry   r   r:   r   r   r   r   rD   r   r   r.   r   r,   )r/   r0   r1   r   ry   r:   r   r   r   r2   r*   r%   r+   r)   r   r     s    
ICD*%)
)N#L*# )-#'? ? 	?
 ? '? ? !? 
?$ 
 
r+   r   c                  d    e Zd ZU ded<   dZded<   dZded<   ddd	 	 	 	 	 	 	 dd	Zedd
       Zy)r   rD   r:   Nbool | Noneeditabler   r   )r   r   c                   t         j                  | d|       t         j                  | d|       t         j                  | d|       y )Nr:   r   r   r   )r   r:   r   r   s       r)   r   zPackageDirectory.__init__?  s:     	4.4X64>r+   c           	     r     | t        |t        d      t        |t        d      t        |t        d            S )Nr:   r   r   )r:   r   r   )rX   rD   rU   r7   r&   s     r)   r*   zPackageDirectory._from_dictK  s3    q#v.!T:.an5
 	
r+   )r:   rD   r   r   r   r   r.   r   r,   )	r/   r0   r1   r   r   r   r   r2   r*   r%   r+   r)   r   r   9  sd    
I Hk #L*# !%#'
? 
? 	
?
 !
? 

? 
 
r+   r   c                      e Zd ZU dZded<   dZded<   dZded<   dZded<   d	ed
<   dZded<   dddddd	 	 	 	 	 	 	 	 	 	 	 	 	 ddZ	e
dd       Zy)r   Nr   ry   r:   
int | Nonesizedatetime | Noneupload_timeMapping[str, str]r   r   )ry   r:   r   r   r   c                  t         j                  | d|       t         j                  | d|       t         j                  | d|       t         j                  | d|       t         j                  | d|       t         j                  | d|       y )Nry   r:   r   r   r   r   r   )r   ry   r:   r   r   r   r   s          r)   r   zPackageArchive.__init__]  sp     	4,4.4.4<4624>r+   c                     | t        |t        d      t        |t        d      t        |t        d      t        |t        d      t	        |t
        t        d      t        |t        d            }t        |j                  |j                         |S )Nry   r:   r   upload-timer   r   )ry   r:   r   r   r   r   )
rU   rD   intr   rh   r   r   rz   r:   ry   )r'   r(   package_archives      r)   r*   zPackageArchive._from_dicto  su    QU#af%af%Q-8#Aw0@(Kan5
 	?//1D1DEr+   )ry   r   r:   r   r   r   r   r   r   r   r   r   r.   r   r,   )r/   r0   r1   ry   r   r:   r   r   r   r   r2   r*   r%   r+   r)   r   r   T  s    CD*D*#'K'#L*#
 '+#'? ? 	?
 ? %? "? !? 
?$ 
 
r+   r   c                      e Zd ZU dZded<   dZded<   dZded<   dZded<   dZded	<   d
ed<   dddddd	 	 	 	 	 	 	 	 	 	 	 	 	 ddZ	e
dd       Zy)r   Nr   r6   r   r   ry   r:   r   r   r   r   r6   r   ry   r:   r   c                  t         j                  | d|       t         j                  | d|       t         j                  | d|       t         j                  | d|       t         j                  | d|       t         j                  | d|       y Nr6   r   ry   r:   r   r   r   r   r6   r   ry   r:   r   r   s          r)   r   zPackageSdist.__init__  p     	4.4<4,4.4.462r+   c                     | t        |t        d      t        |t        d      t        |t        d      t        |t        d      t        |t        d      t	        |t
        t        d            }t        |j                  |j                         |S Nr6   r   ry   r:   r   r   )r6   r   ry   r:   r   r   
rU   rD   r   r   rh   r   r   rz   r:   ry   )r'   r(   package_sdists      r)   r*   zPackageSdist._from_dict  u    af%Q-8QU#af%af%#Aw0@(K
 	=--}/@/@Ar+   r6   r   r   r   ry   r   r:   r   r   r   r   r   r.   r   r,   r/   r0   r1   r6   r   r   ry   r:   r   r   r2   r*   r%   r+   r)   r   r   }      D*#'K'CD*D*
  '+3 3 %	3
 3 3 3 "3 
3$ 
 
r+   r   c                      e Zd ZU dZded<   dZded<   dZded<   dZded<   dZded	<   d
ed<   dddddd	 	 	 	 	 	 	 	 	 	 	 	 	 ddZ	e
dd       Zy)r   Nr   r6   r   r   ry   r:   r   r   r   r   r   c                  t         j                  | d|       t         j                  | d|       t         j                  | d|       t         j                  | d|       t         j                  | d|       t         j                  | d|       y r   r   r   s          r)   r   zPackageWheel.__init__  r   r+   c                     | t        |t        d      t        |t        d      t        |t        d      t        |t        d      t        |t        d      t	        |t
        t        d            }t        |j                  |j                         |S r   r   )r'   r(   package_wheels      r)   r*   zPackageWheel._from_dict  r   r+   r   r,   r   r%   r+   r)   r   r     r   r+   r   c                  >   e Zd ZU ded<   dZded<   dZded<   dZded	<   dZd
ed<   dZded<   dZ	ded<   dZ
ded<   dZded<   dZded<   dZded<   dZd
ed<   dZded<   ddddddddddddd	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 ddZed d       Zed!d       Zy)"r   r   r6   NVersion | NoneversionMarker | NonemarkerSpecifierSet | Nonerequires_python"Sequence[Mapping[str, Any]] | NonedependenciesPackageVcs | NonevcsPackageDirectory | None	directoryPackageArchive | Nonearchiver   indexPackageSdist | NonesdistSequence[PackageWheel] | Nonewheelsattestation_identitiesMapping[str, Any] | Nonetool)r   r   r   r   r   r   r   r   r   r   r   r   c               Z   t         j                  | d|       t         j                  | d|       t         j                  | d|       t         j                  | d|       t         j                  | d|       t         j                  | d|       t         j                  | d|       t         j                  | d|       t         j                  | d	|	       t         j                  | d
|
       t         j                  | d|       t         j                  | d|       t         j                  | d|       y )Nr6   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r6   r   r   r   r   r   r   r   r   r   r   r   r   s                 r)   r   zPackage.__init__  s    $ 	4.4G44624!2OD4>4,4i84G44%04%04624!9;QR4.r+   c                    | t        |t        t        d      t        |t        t        d      t        |t        t
        d      t        |t        d      t        |t        t        d      t        |t        d      t        |t        d      t        |t        d      t        |t        d	      t        |t        d
      t        |t         d      t        |t        d      t        |t        d            }t#        |j$                        t'        |j(                  xs g       z   }t#        |j*                        t#        |j,                        z   t#        |j.                        z   }|dkD  r|dkD  rt1        d      |dk(  r|dk7  rt1        d      	 t3        |j4                  xs g       D ]  \  }}t7        |t        d        	 |S # t8        $ r}t1        |d d      |d }~ww xY w)Nr6   r   requires-pythonr   r   r   r   r   r   r   r   zattestation-identitiesr   )r6   r   r   r   r   r   r   r   r   r   r   r   r   r   zFNone of vcs, directory, archive must be set if sdist or wheels are setr   zRExactly one of vcs, directory, archive must be set if sdist and wheels are not setkindzattestation-identities[r[   rO   )rh   rD   rw   rf   r   r   ra   r   r   rq   r   r   r   rU   r   rs   r   r7   r   rk   r   r   r   r   r   r]   r   rX   rc   )r'   r(   packagedistributionsdirect_urlsr_   attestation_identityre   s           r)   r*   zPackage._from_dict  s   !!S*CVLAsGY7#AsL:KL&q'>B1c684Az51!!%5{C>9=q#w'aw7+A|XF#0G=U#Va&)
 W]]+c'..2FB.GGW%6%6 77$w:OO 	 1q'X  A+"2'2 	+4..4", A'' 2C@A 	  	'4QCq9	s   2F= =	GGGc                8    | j                   xs | j                   S r$   )r   r   r   s    r)   	is_directzPackage.is_direct(  s    JJ-$++..r+   )r6   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r.   r   r,   )r.   r7   )r/   r0   r1   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r2   r*   propertyr   r%   r+   r)   r   r     sl   
"G^" FM +/O(/7;L4;!C	!)-I&-%)G")E:!%E%,0F)0AE>E%)D
") #' $/3;?!%-1)- %)04EI)-/ /  	/
 / -/ 9/ / +/ '/ / #/ ./ !C/ '/  
!/@ & &P / /r+   r   c                      e Zd ZU dZded<   dZded<   dZded<   dZd	ed
<   dZded<   dZ	ded<   ded<   ded<   dZ
ded<   ddddddd	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 ddZedd       Zedd       ZddZddZy)r   z#A class representing a pylock file.r   lock_versionNSequence[Marker] | NonerB   r   r   Sequence[NormalizedName] | NoneextrasSequence[str] | Nonedependency_groupsdefault_groupsrD   
created_bySequence[Package]packagesr   r   )rB   r   r   r   r   r   c       	           t         j                  | d|       t         j                  | d|       t         j                  | d|       t         j                  | d|       t         j                  | d|       t         j                  | d|       t         j                  | d|       t         j                  | d|       t         j                  | d	|	       y )
Nr   rB   r   r   r   r   r   r   r   r   )
r   r   rB   r   r   r   r   r   r   r   s
             r)   r   zPylock.__init__;  s     	4>4>4!2OD4624!46GH4!1>B4z:4X64.r+   c                R    | t        |t        t        d      t        |t        t        d      t        |t        t
        d      t        |t        d      t        |t        d      t        |t        d      t        |t        t        d      t        |t        d      t        |t        d	      
	      }t        d      |j                  cxk  rt        d      k  sn t        d|j                   d      |j                  t        d      kD  r t         j#                  d|j                         |S )Nzlock-versionrB   r   zdependency-groupszdefault-groupsz
created-byr   r   r   )	r   rB   r   r   r   r   r   r   r   12zpylock version z is not supportedz1.0z(pylock minor version %s is not supported)rh   rD   r   ro   r   rw   ra   rX   rf   r   ru   r   rU   r   r   r   _loggerwarning)r'   r(   pylocks      r)   r*   zPylock._from_dictS  s    )!S'>J)!S&.I#As,ExP+As4GH(C1AB$Q\:#AsL:KL6q':Na&)

 s|v22AWS\A/!&"5"5!66GH  /OO:F<O<O r+   c               $    | j                  |      S )zCreate and validate a Pylock instance from a TOML dictionary.

        Raises :class:`PylockValidationError` if the input data is not
        spec-compliant.
        )r*   r&   s     r)   	from_dictzPylock.from_dictj  s     ~~a  r+   c                8    t        j                  | t              S )z1Convert the Pylock instance to a TOML dictionary.)dict_factory)dataclassesasdictrJ   r   s    r)   to_dictzPylock.to_dicts  s    !!$5GHHr+   c                B    | j                  | j                                y)zqValidate the Pylock instance against the specification.

        Raises :class:`PylockValidationError` otherwise.N)r   r   r   s    r)   validatezPylock.validatew  s     	t||~&r+   )r   r   rB   r   r   r   r   r   r   r   r   r   r   rD   r   r   r   r   r.   r   r,   )r.   r-   )r.   r   )r/   r0   r1   r   r   rB   r   r   r   r   r   r   r2   r*   r   r   r  r%   r+   r)   r   r   -  s   -,0L)0+/O(/.2F+2.2+2+/N(/O%)D
") 15/32626/3 *./ / .	/
 -/ 0/ 0/ -/ / $/ '/ 
/0  , ! !I'r+   r   )r:   r   r.   r7   )r?   rD   r.   rD   )r?   rD   rE   r	   r.   r	   )rI   zlist[tuple[str, Any]]r.   zdict[str, Any])r(   r-   rT   type[_T]r?   rD   r.   z	_T | None)r(   r-   rT   r  r?   rD   r.   r   )r(   r-   r^   r  r?   rD   r.   zSequence[_T] | None)
r(   r-   rT   r  rd   Callable[[_T], _T2]r?   rD   r.   z
_T2 | None)
r(   r-   rT   r  rd   r  r?   rD   r.   r    )
r(   r-   r^   r  rl   r  r?   rD   r.   zlist[_T2] | None)r(   r-   rd   type[_FromMappingProtocolT]r?   rD   r.   z_FromMappingProtocolT | None)r(   r-   rl   r  r?   rD   r.   z"list[_FromMappingProtocolT] | None)r(   r-   rl   r  r?   rD   r.   zSequence[_FromMappingProtocolT])r6   rD   r.   r   )r:   r   ry   r   r.   r   )r   r-   r.   r-   )B
__future__r   r   loggingrecollections.abcr   r   r   r   typingr   r	   r
   r   r   markersr   
specifiersr   utilsr   r   r   r   pathlibr   typing_extensionsr   	getLoggerr/   r   __all__r   r    r"   r3   compiler8   r   r@   rG   rJ   rU   rX   ra   rf   rh   ro   rq   rs   ru   rw   rz   r   rc   r   rW   r   r   r   r   r   r   r   r   r%   r+   r)   <module>r     s
   "   	 - !    $ 5 &
'

H
% T]en;8 ;
   7?ST  "rzz"<= U
!
.6=@,;;; %; 
	;
 ;&


 %
 
	

 	
  * 
	
 &	;	;'B	;IL	;!	;,GNQ' ,GNQ$ D
I <@3 @
B$9 B $U#% % $%P $U#
 
 $
4 $U#% % $%P $U#% % $%P $U#% % $%P $U#Z/ Z/ $Z/z $U#M' M' $M'r+   