
    Ri	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j%        d          Z&d^dZ'd_dZ(d`d Z)dad$Z*dbd*Z+dcd+Z,ddd.Z-ded2Z.dfd3Z/dgd6Z0dhd9Z1did;Z2djd=Z3dkd@Z4dldDZ5dmdFZ6 G dG dHe7          Z8 G dI dJe8          Z9 G dK dLe8          Z: edMdNO           G dP dQ                      Z; edMdNO           G dR dS                      Z< edMdNO           G dT dU                      Z= edMdNO           G dV dW                      Z> edMdNO           G dX dY                      Z? edMdNO           G dZ d[                      Z@ edMdNO           G d\ d]                      ZAdS )n    )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dS )_FromMappingProtocoldMapping[str, Any]returnr   c                    d S N clsr#   s     c/Users/shanyulin/my-agent/.venv/lib/python3.11/site-packages/setuptools/_vendor/packaging/pylock.py
_from_dictz_FromMappingProtocol._from_dict/   s    7:s    Nr#   r$   r%   r   )__name__
__module____qualname__classmethodr,   r(   r-   r+   r"   r"   .   s&        ::: [:::r-   r"   _FromMappingProtocolT)boundz^pylock\.([^.]+)\.toml$pathr   r%   boolc                p    | j         dk    p+t          t                              | j                             S )z4Check if the given path is a valid pylock file path.zpylock.toml)namer6   _PYLOCK_FILE_NAME_REmatch)r5   s    r+   r   r   9   s-    9%T.B.H.H.S.S)T)TTr-   keystrc                .    |                      dd          S )N_-)replace)r;   s    r+   	_toml_keyrA   >   s    ;;sC   r-   valuer	   c                    t          |t          t          t          f          rt	          |          S t          |t
                    r| dk    rd |D             S |S )Nenvironmentsc                ,    g | ]}t          |          S r(   )r<   ).0vs     r+   
<listcomp>z_toml_value.<locals>.<listcomp>F   s    &&&1A&&&r-   )
isinstancer   r   r   r<   r   )r;   rB   s     r+   _toml_valuerJ   B   s\    %'6<899 5zz%"" 'sn'<'<&&&&&&Lr-   datalist[tuple[str, Any]]dict[str, Any]c                    d | D             S )Nc                T    i | ]%\  }}|t          |          t          ||          &S r'   )rA   rJ   )rF   r;   rB   s      r+   
<dictcomp>z&_toml_dict_factory.<locals>.<dictcomp>K   s>       C 	#C//r-   r(   )rK   s    r+   _toml_dict_factoryrQ   J   s#        r-   r#   r$   expected_typetype[_T]	_T | Nonec                    |                      |          x}dS t          ||          s/t          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)getrI   r   typer/   r#   rR   r;   rB   s       r+   _getr^   R   s~    s$te]++ 
#3tE{{3 3 3&/3 3 3
 
 
 	

 Lr-   c                J    t          | ||          x}t          |          |S )zKGet a required value from the dictionary and verify it's the expected type.)r^   _PylockRequiredKeyErrorr]   s       r+   _get_requiredra   _   s,    a,,,5%c***Lr-   expected_item_typeSequence[_T] | Nonec                t   t          | t          |          x}dS t          |t          t          f          r't          dt          |          j         d|          t          |          D ]J\  }}t          ||          s5t          dt          |          j         d|j         d| d| d          K|S )	zMGet a list value from the dictionary and verify it's the expected items type.NrV   z (expected Sequence)rY   rW   rX   [])	r^   r   rI   r<   bytesr   r\   r/   	enumerate)r#   rb   r;   rB   iitems         r+   _get_sequencerk   f   s     a3'''0t%#u&& 
#ItE{{3III
 
 
 	
 U##  4$ 233 	'<4::#6 < </8< < <   	 Lr-   target_typeCallable[[_T], _T2]
_T2 | Nonec                    t          | ||          x}dS 	  ||          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.
    NrY   )r^   	Exceptionr   )r#   rR   rl   r;   rB   es         r+   _get_asrr   |   si     a,,,5t;{5!!! ; ; ;#As333:;s   
" 
A>Ac                L    t          | |||          x}t          |          |S )zfGet a required value from the dict, verify it's the expected type,
    and convert to the target type.)rr   r`   )r#   rR   rl   r;   rB   s        r+   _get_required_asrt      s0     M;<<<E%c***Lr-   target_item_typelist[_T2] | Nonec           	         t          | ||          x}dS g }	 |D ]"} ||          }|                    |           #n7# t          $ r*}t          || dt	          |           d          |d}~ww xY w|S )z>Get list value from dictionary and verify expected items type.Nre   rf   rY   )rk   appendrp   r   len)	r#   rb   ru   r;   rB   resultrj   
typed_itemrq   s	            r+   _get_sequence_asr|      s     q"4c:::CtFO 	& 	&D))$//JMM*%%%%	&  O O O#A#/F/FF/F/F/FGGGQNOMs   %? 
A3	%A..A3type[_FromMappingProtocolT]_FromMappingProtocolT | Nonec                    t          | t          |          x}dS 	 |                    |          S # t          $ r}t	          ||          |d}~ww xY w)zIGet a dictionary value from the dictionary and convert it to a dataclass.NrY   )r^   r   r,   rp   r   )r#   rl   r;   rB   rq   s        r+   _get_objectr      sm     a#&&&/t;%%e,,, ; ; ;#As333:;s   1 
AAA"list[_FromMappingProtocolT] | Nonec           	        t          | t          |          x}dS g }	 |D ],}|                    |          }|                    |           -n7# t          $ r*}t          || dt          |           d          |d}~ww xY w|S )zJGet a list value from the dictionary and convert its items to a dataclass.Nre   rf   rY   )rk   r   r,   rx   rp   r   ry   )r#   ru   r;   rB   rz   rj   r{   rq   s           r+   _get_sequence_of_objectsr      s     q'3///8t*,FO 	& 	&D)44T::JMM*%%%%	&  O O O#A#/F/FF/F/F/FGGGQNOMs   /A 
B%A==BSequence[_FromMappingProtocolT]c                J    t          | ||          x}t          |          |S )zWGet a required list value from the dictionary and convert its items to a
    dataclass.)r   r`   )r#   ru   r;   rz   s       r+   !_get_required_sequence_of_objectsr      s/    
 +1.>DDDM%c***Mr-   r8   r   c                d    t          |           st          d| d          t          |           S )z+Validate that a string is a NormalizedName.zName z is not normalized)r   r   r   )r8   s    r+   _validate_normalized_namer      s;    d## H#$FD$F$F$FGGG$r-   
str | NoneurlNonec                0    | s|st          d          d S d S )Nzpath or url must be provided)r   )r5   r   s     r+   _validate_path_urlr      s:     D D#$BCCCD D D Dr-   hashesc                    | st          d          t          d |                                 D                       st          d          | S )Nz"At least one hash must be providedc              3  @   K   | ]}t          |t                    V  d S r'   )rI   r<   )rF   hash_vals     r+   	<genexpr>z#_validate_hashes.<locals>.<genexpr>   s,      IIXz(C((IIIIIIr-   zHash values must be strings)r   allvalues)r   s    r+   _validate_hashesr      sV     J#$HIIIIIIIIII C#$ABBBMr-   c                  B    e Zd ZU dZdZded<   ded<   ddddZddZdS )r   z2Raised when when input data is not spec-compliant.Nr   rZ   r<   messagerY   causestr | Exceptionr%   r   c                   t          |t                    r7|j        r|r| d|j         n|j        | _        n|| _        |j        | _        d S || _        t	          |          | _        d S )N.)rI   r   rZ   r   r<   )selfr   rZ   s      r+   __init__zPylockValidationError.__init__   sw     e233 
	&} '4;Nw00000   ' =DLLL"DLu::DLLLr-   c                @    | j         r| j         d| j         S | j        S )Nz in )rZ   r   r   s    r+   __str__zPylockValidationError.__str__  s,    < 	9l88888|r-   )r   r   rZ   r   r%   r   )r%   r<   )r/   r0   r1   __doc__rZ   __annotations__r   r   r(   r-   r+   r   r      sm         <<GLLL #	& & & & & &$     r-   r   c                        e Zd Zd fdZ xZS )r`   r;   r<   r%   r   c                N    t                                          d|           d S )NzMissing required valuerY   )superr   )r   r;   	__class__s     r+   r   z _PylockRequiredKeyError.__init__  s'    13?????r-   )r;   r<   r%   r   )r/   r0   r1   r   __classcell__)r   s   @r+   r`   r`     sG        @ @ @ @ @ @ @ @ @ @r-   r`   c                      e Zd ZdZdS )r   z7Raised when encountering an unsupported `lock_version`.N)r/   r0   r1   r   r(   r-   r+   r   r     s        AAA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
dS )r   r<   r\   Nr   r   r5   requested_revision	commit_idsubdirectory)r   r5   r   r   r%   r   c               V   t                               | d|           t                               | d|           t                               | d|           t                               | d|           t                               | d|           t                               | d|           d S )Nr\   r   r5   r   r   r   object__setattr__)r   r\   r   r5   r   r   r   s          r+   r   zPackageVcs.__init__  s     	4...4,,,4...4!57IJJJ4i8884>>>>>r-   r#   r$   r   c                L    | t          |t          d          t          |t          d          t          |t          d          t          |t          d          t          |t          d          t          |t          d                    }t          |j        |j                   |S )Nr\   r   r5   zrequested-revisionz	commit-idr   )r\   r   r5   r   r   r   )ra   r<   r^   r   r5   r   )r*   r#   package_vcss      r+   r,   zPackageVcs._from_dict+  s    cq#v..QU##af%%#As,@AA#AsK88an55
 
 
 	;+[_===r-   )r\   r<   r   r   r5   r   r   r   r   r<   r   r   r%   r   r.   )r/   r0   r1   r   r   r5   r   r   r   r2   r,   r(   r-   r+   r   r     s         IIICD%)))))NNN#L#### )-#'? ? ? ? ? ?$ 
 
 
 [
 
 
r-   r   c                  ^    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dS )r   r<   r5   Nbool | Noneeditabler   r   )r   r   r%   r   c                   t                               | d|           t                               | d|           t                               | d|           d S )Nr5   r   r   r   )r   r5   r   r   s       r+   r   zPackageDirectory.__init__?  sR     	4...4X6664>>>>>r-   r#   r$   r   c           	          | t          |t          d          t          |t          d          t          |t          d                    S )Nr5   r   r   )r5   r   r   )ra   r<   r^   r6   r)   s     r+   r,   zPackageDirectory._from_dictK  sH    sq#v..!T:..an55
 
 
 	
r-   )r5   r<   r   r   r   r   r%   r   r.   )	r/   r0   r1   r   r   r   r   r2   r,   r(   r-   r+   r   r   9  s         III H    #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dS )r   Nr   r   r5   
int | Nonesizedatetime | Noneupload_timeMapping[str, str]r   r   )r   r5   r   r   r   r%   r   c               V   t                               | d|           t                               | d|           t                               | d|           t                               | d|           t                               | d|           t                               | d|           d S )Nr   r5   r   r   r   r   r   )r   r   r5   r   r   r   r   s          r+   r   zPackageArchive.__init__]  s     	4,,,4...4...4<<<462224>>>>>r-   r#   r$   r   c                X    | t          |t          d          t          |t          d          t          |t          d          t          |t          d          t	          |t
          t          d          t          |t          d                    }t          |j        |j	                   |S )Nr   r5   r   upload-timer   r   )r   r5   r   r   r   r   )
r^   r<   intr   rt   r   r   r   r5   r   )r*   r#   package_archives      r+   r,   zPackageArchive._from_dicto  s    #QU##af%%af%%Q-88#Aw0@(KKan55
 
 
 	?/1DEEEr-   )r   r   r5   r   r   r   r   r   r   r   r   r   r%   r   r.   )r/   r0   r1   r   r   r5   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dS )r   Nr   r8   r   r   r   r5   r   r   r   r   r8   r   r   r5   r   r%   r   c               V   t                               | d|           t                               | d|           t                               | d|           t                               | d|           t                               | d|           t                               | d|           d S Nr8   r   r   r5   r   r   r   r   r8   r   r   r5   r   r   s          r+   r   zPackageSdist.__init__       	4...4<<<4,,,4...4...4622222r-   r#   r$   r   c                X    | t          |t          d          t          |t          d          t          |t          d          t          |t          d          t          |t          d          t	          |t
          t          d                    }t          |j        |j	                   |S Nr8   r   r   r5   r   r   )r8   r   r   r5   r   r   
r^   r<   r   r   rt   r   r   r   r5   r   )r*   r#   package_sdists      r+   r,   zPackageSdist._from_dict      af%%Q-88QU##af%%af%%#Aw0@(KK
 
 
 	=-}/@AAAr-   r8   r   r   r   r   r   r5   r   r   r   r   r   r%   r   r.   r/   r0   r1   r8   r   r   r   r5   r   r   r2   r,   r(   r-   r+   r   r   }           D#'K''''CDD
  '+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dS )r   Nr   r8   r   r   r   r5   r   r   r   r   r   r%   r   c               V   t                               | d|           t                               | d|           t                               | d|           t                               | d|           t                               | d|           t                               | d|           d S r   r   r   s          r+   r   zPackageWheel.__init__  r   r-   r#   r$   r   c                X    | 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dS )(r   r   r8   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   r%   r   c                  t                               | d|           t                               | d|           t                               | d|           t                               | d|           t                               | d|           t                               | d|           t                               | d|           t                               | d|           t                               | d	|	           t                               | d
|
           t                               | d|           t                               | d|           t                               | d|           d S )Nr8   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r8   r   r   r   r   r   r   r   r   r   r   r   r   s                 r+   r   zPackage.__init__  sE   $ 	4...4G444462224!2ODDD4>>>4,,,4i8884G4444%0004%000462224!9;QRRR4.....r-   r#   r$   r   c                d    | 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        pg           z   }t#          |j                  t#          |j                  z   t#          |j                  z   }|dk    r|dk    rt1          d          |dk    r|dk    rt1          d          	 t3          |j        pg           D ]\  }}t7          |t          d           n(# t8          $ r}t1          |d| d          |d }~ww xY w|S )Nr8   r   requires-pythonr   r   r   r   r   r   r   r   zattestation-identitiesr   )r8   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[rf   rY   )rt   r<   r   rr   r   r   rk   r   r   r   r   r   r   r^   r   r   r   r6   r   ry   r   r   r   r   r   rh   r   ra   rp   )r*   r#   packagedistributionsdirect_urlsri   attestation_identityrq   s           r+   r,   zPackage._from_dict  s7   #!!S*CVLLAsGY77#AsL:KLL&q'>BB1c6844Az511!!%5{CC>9==q#w''aw77+A|XFF#0G=U#V#Va&))
 
 
 W]++c'.2FB.G.GGW%6 7 77$w:O:OO 	 1q'X   A+"2"2'2  	+4.4", , A A'' 2C@@@@A  	 	 	'9Q999  	 s   2H 
H-H((H-r6   c                     | j         p| j         S r'   )r   r   r   s    r+   	is_directzPackage.is_direct(  s    J-$+..r-   )r8   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%   r6   )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     su        "G"""" F    +/O////7;L;;;;!C!!!!)-I----%)G))))E!%E%%%%,0F0000AEEEEE%)D)))) #' $/3;?!%-1)- %)04EI)-/ / / / / /@ & & & [&P / / / X/ / /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dS )#r   z#A class representing a pylock file.r   lock_versionNSequence[Marker] | NonerD   r   r   Sequence[NormalizedName] | NoneextrasSequence[str] | Nonedependency_groupsdefault_groupsr<   
created_bySequence[Package]packagesr   r   )rD   r   r   r   r   r   r%   r   c       	           t                               | d|           t                               | d|           t                               | d|           t                               | d|           t                               | d|           t                               | d|           t                               | d|           t                               | d|           t                               | d	|	           d S )
Nr   rD   r   r   r   r   r  r  r   r   )
r   r   rD   r   r   r   r   r  r  r   s
             r+   r   zPylock.__init__;  s     	4>>>4>>>4!2ODDD462224!46GHHH4!1>BBB4z:::4X6664.....r-   r#   r$   r   c                    | 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          k    r t                               d|j                   |S )Nzlock-versionrD   r   zdependency-groupszdefault-groupsz
created-byr   r  r   )	r   rD   r   r   r   r  r   r  r   12zpylock version z is not supportedz1.0z(pylock minor version %s is not supported)rt   r<   r   r|   r   r   rk   ra   rr   r   r   r   r^   r   r   r   _loggerwarning)r*   r#   pylocks      r+   r,   zPylock._from_dictS  s9   )!S'>JJ)!S&.II#As,ExPP+As4GHH(C1ABB$Q\::#AsL:KLL6q':NNa&))

 

 

 s||v2AAAAWS\\AAAA/H&"5HHH   //OO:F<O   r-   c               ,    |                      |          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asdictrQ   r   s    r+   to_dictzPylock.to_dicts  s    !$5GHHHHr-   c                T    |                      |                                            dS )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   rD   r   r   r   r   r   r   r   r   r   r  r<   r  r  r   r   r%   r   r.   )r%   r$   )r%   r   )r/   r0   r1   r   r   rD   r   r   r   r   r   r   r2   r,   r  r  r  r(   r-   r+   r   r   -  sD        --,0L0000+/O////.2F2222.22222+/N////OOO%)D)))) 15/32626/3 *./ / / / / /0    [, ! ! ! [!I I I I' ' ' ' ' 'r-   r   )r5   r   r%   r6   )r;   r<   r%   r<   )r;   r<   rB   r	   r%   r	   )rK   rL   r%   rM   )r#   r$   rR   rS   r;   r<   r%   rT   )r#   r$   rR   rS   r;   r<   r%   r   )r#   r$   rb   rS   r;   r<   r%   rc   )
r#   r$   rR   rS   rl   rm   r;   r<   r%   rn   )
r#   r$   rR   rS   rl   rm   r;   r<   r%   r    )
r#   r$   rb   rS   ru   rm   r;   r<   r%   rv   )r#   r$   rl   r}   r;   r<   r%   r~   )r#   r$   ru   r}   r;   r<   r%   r   )r#   r$   ru   r}   r;   r<   r%   r   )r8   r<   r%   r   )r5   r   r   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   compiler9   r   rA   rJ   rQ   r^   ra   rk   rr   rt   r|   r   r   r   r   r   r   rp   r   r`   r   r   r   r   r   r   r   r   r(   r-   r+   <module>r!     s   " " " " " "      				 - - - - - - - - ! ! ! ! ! !                          $ $ $ $ $ $ 5 5 5 5 5 5 5 5       '&&&&&&
'
H
%
%   WT]]genn; ; ; ; ;8 ; ; ;
   7?STTT  "rz"<== U U U U
! ! ! !      
 
 
 
      ,; ; ; ;&
 
 
 
   &	; 	; 	; 	;              D D D D
       I   <@ @ @ @ @3 @ @ @
B B B B B$9 B B B $U###% % % % % % % $#%P $U###
 
 
 
 
 
 
 $#
4 $U###% % % % % % % $#%P $U###% % % % % % % $#%P $U###% % % % % % % $#%P $U###Z/ Z/ Z/ Z/ Z/ Z/ Z/ $#Z/z $U###M' M' M' M' M' M' M' $#M' M' M'r-   