
    ib                    |   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mZ d dlmZ dd	lmZmZmZ dd
lmZ ddlmZmZ ddlmZmZmZm Z  ddl!m"Z" erd dlm#Z#m$Z$ d dl%m&Z& d dl'm(Z( ddlm)Z)  ej*        e+          Z,g dZ-dhdZ. ed          Z/ ed          Z0 G d de          Z1 ede1          Z2 ej3        d          Z4did Z5djd#Z6dkd&Z7dld*Z8dmd0Z9dnd1Z:dod4Z;dpd8Z<dqd9Z=drd<Z>dsd?Z?dtdAZ@dudCZAdvdFZBdwdJZCdxdKZDdydLZEdzdNZF G dO dPeG          ZH G dQ dReH          ZI G dS dTeH          ZJ G dU dVeG          ZK edWdXY           G dZ d[                      ZL edWdXY           G d\ d]                      ZM edWdXY           G d^ d_                      ZN edWdXY           G d` da                      ZO edWdXY           G db dc                      ZP edWdXY           G dd de                      ZQ edWdXY           G df dg                      ZRdS ){    )annotationsN)MappingSequence)	dataclass)datetime)TYPE_CHECKINGAnyCallableProtocolTypeVarcast)urlparse   )EnvironmentMarkerdefault_environment)SpecifierSet)create_compatible_tags_selectorsys_tags)NormalizedNameis_normalized_nameparse_sdist_filenameparse_wheel_filename)Version)
CollectionIterator)Path)Self)Tag)
PackagePackageArchivePackageDirectoryPackageSdist
PackageVcsPackageWheelPylockPylockUnsupportedVersionErrorPylockValidationErroris_valid_pylock_pathreturn	list[str]c                     t           S N)__all__     W/home/ubuntu/.hermes/hermes-agent/venv/lib/python3.11/site-packages/packaging/pylock.py__dir__r2   6   s    Nr0   _T_T2c                  &    e Zd Zedd            ZdS )_FromMappingProtocoldMapping[str, Any]r*   r   c                    d S r-   r/   clsr7   s     r1   
_from_dictz_FromMappingProtocol._from_dict?   s    7:sr0   Nr7   r8   r*   r   )__name__
__module____qualname__classmethodr<   r/   r0   r1   r6   r6   >   s&        ::: [:::r0   r6   _FromMappingProtocolT)boundz^pylock\.([^.]+)\.toml$pathr   boolc                p    | j         dk    p+t          t                              | j                             S )z4Check if the given path is a valid pylock file path.zpylock.toml)namerE   _PYLOCK_FILE_NAME_REmatchrD   s    r1   r)   r)   I   s-    9%T.B.H.H.S.S)T)TTr0   keystrc                .    |                      dd          S )N_-)replace)rK   s    r1   	_toml_keyrQ   N   s    ;;sC   r0   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/   )rL   ).0vs     r1   
<listcomp>z_toml_value.<locals>.<listcomp>V   s    &&&1A&&&r0   )
isinstancer   r   r   rL   r   )rK   rR   s     r1   _toml_valuerZ   R   s\    %'6<899 5zz%"" 'sn'<'<&&&&&&Lr0   datalist[tuple[str, Any]]dict[str, Any]c                    d | D             S )Nc                T    i | ]%\  }}|t          |          t          ||          &S r-   )rQ   rZ   )rV   rK   rR   s      r1   
<dictcomp>z&_toml_dict_factory.<locals>.<dictcomp>[   s>       C 	#C//r0   r/   )r[   s    r1   _toml_dict_factoryra   Z   s#        r0   r7   r8   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)getrY   r(   typer>   r7   rb   rK   rR   s       r1   _getrn   b   s~    s$te]++ 
#3tE{{3 3 3&/3 3 3
 
 
 	

 Lr0   c                J    t          | ||          x}t          |          |S )zKGet a required value from the dictionary and verify it's the expected type.)rn   _PylockRequiredKeyErrorrm   s       r1   _get_requiredrq   o   s,    a,,,5%c***Lr0   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.Nrf   z (expected Sequence)ri   rg   rh   [])	rn   r   rY   rL   bytesr(   rl   r>   	enumerate)r7   rr   rK   rR   iitems         r1   _get_sequencer{   v   s     a3'''0t%#u&& 
#ItE{{3III
 
 
 	
 U##  4$ 233 	'<4::#6 < </8< < <   	 Lr0   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.
    Nri   )rn   	Exceptionr(   )r7   rb   r|   rK   rR   es         r1   _get_asr      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.)r   rp   )r7   rb   r|   rK   rR   s        r1   _get_required_asr      s0     M;<<<E%c***Lr0   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.Nru   rv   ri   )r{   appendr   r(   len)	r7   rr   r   rK   rR   resultrz   
typed_itemr   s	            r1   _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.Nri   )rn   r   r<   r   r(   )r7   r|   rK   rR   r   s        r1   _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.Nru   rv   ri   )r{   r   r<   r   r   r(   r   )r7   r   rK   rR   r   rz   r   r   s           r1   _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   rp   )r7   r   rK   r   s       r1   !_get_required_sequence_of_objectsr      s/    
 +1.>DDDM%c***Mr0   rG   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   )rG   s    r1   _validate_normalized_namer      s;    d## H#$FD$F$F$FGGG$r0   
str | NoneurlNonec                0    | s|st          d          d S d S )Nzpath or url must be provided)r(   )rD   r   s     r1   _validate_path_urlr      s:     D D#$BCCCD D D Dr0   c                    | sd S d| v r|                      dd          d         S d| v r|                      dd          d         S | S )N/r   \)rsplitrJ   s    r1   
_path_namer      sZ     t d{{{{3""2&&	{{4##B''r0   c                j    | sd S t          |           j        }|                    dd          d         S )Nr   r   r   )r   rD   r   )r   url_paths     r1   	_url_namer      s6     t}}!H??3""2&&r0   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-   )rY   rL   )rV   hash_vals     r1   	<genexpr>z#_validate_hashes.<locals>.<genexpr>  s,      IIXz(C((IIIIIIr0   zHash values must be strings)r(   allvalues)r   s    r1   _validate_hashesr     sV     J#$HIIIIIIIIII C#$ABBBMr0   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   rj   rL   messageri   causestr | Exceptionr*   r   c                   t          |t                    r7|j        r|r| d|j         n|j        | _        n|| _        |j        | _        d S || _        t	          |          | _        d S )N.)rY   r(   rj   r   rL   )selfr   rj   s      r1   __init__zPylockValidationError.__init__  sw     e233 
	&} '4;Nw00000   ' =DLLL"DLu::DLLLr0   c                @    | j         r| j         d| j         S | j        S )Nz in )rj   r   r   s    r1   __str__zPylockValidationError.__str__%  s,    < 	9l88888|r0   )r   r   rj   r   r*   r   r*   rL   )r>   r?   r@   __doc__rj   __annotations__r   r   r/   r0   r1   r(   r(     sm         <<GLLL #	& & & & & &$     r0   r(   c                        e Zd Zd fdZ xZS )rp   rK   rL   r*   r   c                N    t                                          d|           d S )NzMissing required valueri   )superr   )r   rK   	__class__s     r1   r   z _PylockRequiredKeyError.__init__,  s'    13?????r0   )rK   rL   r*   r   )r>   r?   r@   r   __classcell__)r   s   @r1   rp   rp   +  sG        @ @ @ @ @ @ @ @ @ @r0   rp   c                      e Zd ZdZdS )r'   z7Raised when encountering an unsupported `lock_version`.Nr>   r?   r@   r   r/   r0   r1   r'   r'   0  s        AAAAr0   r'   c                      e Zd ZdZdS )PylockSelectErrorz:Base exception for errors raised by :meth:`Pylock.select`.Nr   r/   r0   r1   r   r   4  s        DDDDr0   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$   rL   rl   Nr   r   rD   requested_revision	commit_idsubdirectory)r   rD   r   r   r*   r   c               V   t                               | d|           t                               | d|           t                               | d|           t                               | d|           t                               | d|           t                               | d|           d S )Nrl   r   rD   r   r   r   object__setattr__)r   rl   r   rD   r   r   r   s          r1   r   zPackageVcs.__init__A  s     	4...4,,,4...4!57IJJJ4i8884>>>>>r0   r7   r8   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 )Nrl   r   rD   zrequested-revisionz	commit-idr   )rl   r   rD   r   r   r   )rq   rL   rn   r   rD   r   )r;   r7   package_vcss      r1   r<   zPackageVcs._from_dictS  s    cq#v..QU##af%%#As,@AA#AsK88an55
 
 
 	;+[_===r0   )rl   rL   r   r   rD   r   r   r   r   rL   r   r   r*   r   r=   )r>   r?   r@   r   r   rD   r   r   r   rA   r<   r/   r0   r1   r$   r$   8  s         IIICD%)))))NNN#L#### )-#'? ? ? ? ? ?$ 
 
 
 [
 
 
r0   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"   rL   rD   Nbool | Noneeditabler   r   )r   r   r*   r   c                   t                               | d|           t                               | d|           t                               | d|           d S )NrD   r   r   r   )r   rD   r   r   s       r1   r   zPackageDirectory.__init__g  sR     	4...4X6664>>>>>r0   r7   r8   r   c           	          | t          |t          d          t          |t          d          t          |t          d                    S )NrD   r   r   )rD   r   r   )rq   rL   rn   rE   r:   s     r1   r<   zPackageDirectory._from_dicts  sH    sq#v..!T:..an55
 
 
 	
r0   )rD   rL   r   r   r   r   r*   r   r=   )	r>   r?   r@   r   r   r   r   rA   r<   r/   r0   r1   r"   r"   a  s         III H    #L#### !%#'
? 
? 
? 
? 
? 
? 
 
 
 [
 
 
r0   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   rD   
int | Nonesizedatetime | Noneupload_timeMapping[str, str]r   r   )r   rD   r   r   r   r*   r   c               V   t                               | d|           t                               | d|           t                               | d|           t                               | d|           t                               | d|           t                               | d|           d S )Nr   rD   r   r   r   r   r   )r   r   rD   r   r   r   r   s          r1   r   zPackageArchive.__init__  s     	4,,,4...4...4<<<462224>>>>>r0   r7   r8   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   rD   r   upload-timer   r   )r   rD   r   r   r   r   )
rn   rL   intr   r   r   r   r   rD   r   )r;   r7   package_archives      r1   r<   zPackageArchive._from_dict  s    #QU##af%%af%%Q-88#Aw0@(KKan55
 
 
 	?/1DEEEr0   )r   r   rD   r   r   r   r   r   r   r   r   r   r*   r   r=   )r>   r?   r@   r   r   rD   r   r   r   r   rA   r<   r/   r0   r1   r!   r!   |  s         CDD#'K''''#L####
 '+#'? ? ? ? ? ?$ 
 
 
 [
 
 
r0   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edd            ZdS )r#   Nr   rG   r   r   r   rD   r   r   r   r   rG   r   r   rD   r   r*   r   c               V   t                               | d|           t                               | d|           t                               | d|           t                               | d|           t                               | d|           t                               | d|           d S NrG   r   r   rD   r   r   r   r   rG   r   r   rD   r   r   s          r1   r   zPackageSdist.__init__       	4...4<<<4,,,4...4...4622222r0   r7   r8   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 NrG   r   r   rD   r   r   )rG   r   r   rD   r   r   
rn   rL   r   r   r   r   r   r   rD   r   )r;   r7   package_sdists      r1   r<   zPackageSdist._from_dict      af%%Q-88QU##af%%af%%#Aw0@(KK
 
 
 	=-}/@AAAr0   rL   c                    | j         p't          | j                  pt          | j                  }|st          d          |S )zGet the filename of the sdist.zCannot determine sdist filenamerG   r   rD   r   r   r(   r   filenames     r1   r   zPackageSdist.filename  F     9L
49 5 5L489L9L 	K'(IJJJr0   rG   r   r   r   r   r   rD   r   r   r   r   r   r*   r   r=   r   r>   r?   r@   rG   r   r   r   rD   r   r   rA   r<   propertyr   r/   r0   r1   r#   r#              D#'K''''CDD
  '+3 3 3 3 3 3$ 
 
 
 [
    X  r0   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edd            ZdS )r%   Nr   rG   r   r   r   rD   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          r1   r   zPackageWheel.__init__  r   r0   r7   r8   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;   r7   package_wheels      r1   r<   zPackageWheel._from_dict  r   r0   rL   c                    | j         p't          | j                  pt          | j                  }|st          d          |S )zGet the filename of the wheel.zCannot determine wheel filenamer   r   s     r1   r   zPackageWheel.filename  r   r0   r   r=   r   r   r/   r0   r1   r%   r%     r   r0   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   rG   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 )NrG   r   r   r  r  r  r  r	  r
  r  r  r  r  r   )r   rG   r   r   r  r  r  r  r	  r
  r  r  r  r  s                 r1   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.....r0   r7   r8   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        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 ]\  }}	 t5          |j                  \  }}}	}	n0# t8          $ r#}
t1          d|j        d| d          |
d }
~
ww xY w||j        k    r%t1          d|j        d|j        d| d          |j        r=||j        k    r2t1          d|j        dt          |j                  d| d          |j        r	 t?          |j        j                  \  }}n1# t8          $ r$}
t1          d|j        j        d
          |
d }
~
ww xY w||j        k    r&t1          d|j        j        d|j        d
          |j        r>||j        k    r3t1          d|j        j        dt          |j                  d
          	 t3          |j         pg           D ]\  }}tC          |t          d           n(# t8          $ r}
t1          |
d| d          |
d }
~
ww xY w|S )NrG   r   requires-pythonr  r   r  r  r	  r
  r  r  zattestation-identitiesr  )rG   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 setzInvalid wheel filename zwheels[rv   ri   zName in z% is not consistent with package name zVersion in z( is not consistent with package version zInvalid sdist filename kindzattestation-identities[)"r   rL   r   r   r   r   r{   r   r   r   r$   r"   r!   rn   r#   r   r%   rE   r  r   r  r  r  r	  r(   rx   r   r   r   rG   r   r   r  rq   )r;   r7   packagedistributionsdirect_urlsry   wheelrG   r   rN   r   attestation_identitys               r1   r<   zPackage._from_dict7  s   #!!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   "'."6B77 	 	HAu(<U^(L(L%w11   +@en@@*aNNN   
 w|##+5u~ 5 5$+L5 5*aNNN   
  7go#=#=+@%. @ @'*7?';';@ @*aNNN   
 = 	 4W]5K L Lgg   +Hgm.DHH#   
 w|##+5w}5 5 5$+L5 5#   
  7go#=#=+@'-"8 @ @'*7?';';@ @#   
	+4.4", , A A'' 2C@@@@A  	 	 	'9Q999  	 sH   0H


H7H22H77K 
LK==L<2N/ /
O9OOrE   c                     | j         p| j         S r-   )r  r  r   s    r1   	is_directzPackage.is_direct  s    J-$+..r0   )rG   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*   rE   )r>   r?   r@   r   r   r   r  r  r  r  r	  r
  r  r  r  r  r   rA   r<   r   r  r/   r0   r1   r    r      sy        "G"""" F    +/O////7;L;;;;!C!!!!)-I----%)G))))E!%E%%%%,0F0000AEEEEE%)D)))) #' $/3;?!%-1)- %)04EI)-/ / / / / /@ N N N [N` / / / X/ / /r0   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ddddd+d&ZdS ),r&   z#A class representing a pylock file.r   lock_versionNSequence[Marker] | NonerT   r   r  Sequence[NormalizedName] | NoneextrasSequence[str] | Nonedependency_groupsdefault_groupsrL   
created_bySequence[Package]packagesr  r  )rT   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  rT   r  r!  r#  r$  r%  r'  r  r   )
r   r  rT   r  r!  r#  r$  r%  r'  r  s
             r1   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.....r0   r7   r8   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-versionrT   r!  zdependency-groupszdefault-groupsz
created-byr  r'  r  )	r  rT   r!  r#  r$  r%  r  r'  r  12zpylock version z is not supportedz1.0z(pylock minor version %s is not supported)r   rL   r   r   r   r   r{   rq   r   r   r   r    rn   r   r  r'   _loggerwarning)r;   r7   pylocks      r1   r<   zPylock._from_dict  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   r0   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     r1   	from_dictzPylock.from_dict  s     ~~a   r0   c                8    t          j        | t                    S )z1Convert the Pylock instance to a TOML dictionary.)dict_factory)dataclassesasdictra   r   s    r1   to_dictzPylock.to_dict  s    !$5GHHHHr0   c                T    |                      |                                            dS )zqValidate the Pylock instance against the specification.

        Raises :class:`PylockValidationError` otherwise.N)r0  r5  r   s    r1   validatezPylock.validate  s$     	t||~~&&&&&r0   )environmenttagsr!  r#  r8  Environment | Noner9  Sequence[Tag] | NoneCollection[str] | NonefIterator[tuple[Package, PackageVcs | PackageDirectory | PackageArchive | PackageWheel | PackageSdist]]c             #    K   t          |pt                                }t          dt          |pi t	          |pg           t	          |	| j        pg n|                              }|r|d         nt                      d         }| j        rA| j                            |          s't          d|dt          | j                            | j        rB| j        D ]+}|                    t          d|pi           d	          r n,t          d
          i }	t          | j                  D ]\  }
}|j        r|j                            |d	          s)|j        rM|j                            |          s3t          d|dt          |j                  d|j        d|
 d	          |j        |	v r/t          d|j        d|
 d|	|j                 d          d          |
|f|	|j        <   |	                                D ]\  }
}|j        ||j        fV  |j        ||j        fV  +|j        ||j        fV  >|j        r_t-           |d |j        D                       d          }|r||fV  v|j        ||j        fV  t          d|j        d|
 d          |j        ||j        fV  t0          dS )a  Select what to install from the lock file.

        The *environment* and *tags* parameters represent the environment being
        selected for. If unspecified, ``packaging.markers.default_environment()`` and
        ``packaging.tags.sys_tags()`` are used.

        The *extras* parameter represents the extras to install.

        The *dependency_groups* parameter represents the groups to install. If
        unspecified, the default groups are used.

        This method must be used on valid Pylock instances (i.e. one obtained
        from :meth:`Pylock.from_dict` or if constructed manually, after calling
        :meth:`Pylock.validate`).
        zdict[str, str | frozenset[str]]N)r!  r#  python_full_versionzpython_full_version zI in provided environment does not satisfy the Python version requirement zdict[str, str]requirementri   zXProvided environment does not satisfy any of the environments specified in the lock file	lock_filez for package z at packages[rv   z Multiple packages with the name z are selected at packages[z] and packages[r   c              3  N   K   | ] }|t          |j                  d          fV  !dS )r   N)r   r   )rV   r  s     r1   r   z Pylock.select.<locals>.<genexpr>p  sK       - -!  4U^ D DR HI- - - - - -r0   z6No wheel found matching the provided tags for package z'], and no sdist available as a fallback)r   r   r   dict	frozensetr$  r   r  containsr   rL   rT   evaluaterx   r'  r   rG   r   r  r  r	  r  nextr  NotImplementedError)r   r8  r9  r!  r#  compatible_tags_selectorenvenv_python_full_version
env_markerselected_packages_by_namepackage_indexr  
best_wheels                r1   selectzPylock.select  sv     @ $C4CU8::#V#V  -!r 2.."+(0 (.B*# #  
 
 >K-..$&&'<= 	   	(<(E(E#)
 )
 	 $='> = ="4#788= =    
	"/ 	 	
&&);+<"==} '    E
 (>   EG!&/&>&> !	O !	O"M7 ~ gn&=&=c;&=&W&W  & w/F/O/O'0 0  (E+B E E#&w'>#?#?E E |E E 5BE E E   |888'Nw| N N,9N N 9', G JN N N   8Eg6N%gl33 '@&F&F&H&H -	* -	*"M7{&w{***** ".w000000 ,w.....  *
 ",, - -%,^- - -    
  
!:-----].!7=00000+@'.|@ @'4@ @ @   *w},,,,, *)[-	* -	*r0   )r  r   rT   r  r  r   r!  r   r#  r"  r$  r"  r%  rL   r'  r&  r  r  r*   r   r=   )r*   r8   )r*   r   )
r8  r:  r9  r;  r!  r<  r#  r<  r*   r=  )r>   r?   r@   r   r   rT   r  r!  r#  r$  r  r   rA   r<   r0  r5  r7  rP  r/   r0   r1   r&   r&     sx        --,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' ' ' ' +/%))-48l* l* l* l* l* l* l* l*r0   r&   )r*   r+   )rD   r   r*   rE   )rK   rL   r*   rL   )rK   rL   rR   r	   r*   r	   )r[   r\   r*   r]   )r7   r8   rb   rc   rK   rL   r*   rd   )r7   r8   rb   rc   rK   rL   r*   r3   )r7   r8   rr   rc   rK   rL   r*   rs   )
r7   r8   rb   rc   r|   r}   rK   rL   r*   r~   )
r7   r8   rb   rc   r|   r}   rK   rL   r*   r4   )
r7   r8   rr   rc   r   r}   rK   rL   r*   r   )r7   r8   r|   r   rK   rL   r*   r   )r7   r8   r   r   rK   rL   r*   r   )r7   r8   r   r   rK   rL   r*   r   )rG   rL   r*   r   )rD   r   r   r   r*   r   )rD   r   r*   r   )r   r   r*   r   )r   r8   r*   r8   )S
__future__r   r3  loggingrecollections.abcr   r   r   r   typingr   r	   r
   r   r   r   urllib.parser   markersr   r   r   
specifiersr   r9  r   r   utilsr   r   r   r   r   r   r   r   pathlibr   typing_extensionsr   r   	getLoggerr>   r,  r.   r2   r3   r4   r6   rB   compilerH   r)   rQ   rZ   ra   rn   rq   r{   r   r   r   r   r   r   r   r   r   r   r   r   r(   rp   r'   r   r$   r"   r!   r#   r%   r    r&   r/   r0   r1   <module>r^     s   " " " " " "      				 - - - - - - - - ! ! ! ! ! !                      " ! ! ! ! ! = = = = = = = = = = $ $ $ $ $ $ ; ; ; ; ; ; ; ;                  44444444&&&&&&
'
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E E E E E	 E E E $U###% % % % % % % $#%P $U###
 
 
 
 
 
 
 $#
4 $U###% % % % % % % $#%P $U###- - - - - - - $#-` $U###- - - - - - - $#-` $U###B/ B/ B/ B/ B/ B/ B/ $#B/J $U###{* {* {* {* {* {* {* $#{* {* {*r0   