
    j                       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mZ dd	lmZ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Z0 ed          Z1 ed          Z2 G d de          Z3 ede3          Z4 ej5        d          Z6did Z7djd#Z8dkd&Z9dld*Z:dmd0Z;dnd1Z<dod4Z=dpd8Z>dqd9Z?drd<Z@dsd?ZAdtdAZBdudCZCdvdFZDdwdJZEdxdKZFdydLZGdzdNZH G dO dPeI          ZJ G dQ dReJ          ZK G dS dTeJ          ZL G dU dVeI          ZM edWdXY           G dZ d[                      ZN edWdXY           G d\ d]                      ZO edWdXY           G d^ d_                      ZP edWdXY           G d` da                      ZQ edWdXY           G db dc                      ZR edWdXY           G dd de                      ZS edWdXY           G df dg                      ZTdS ){    )annotationsN)MappingSequence)	dataclass)datetime)TYPE_CHECKINGAnyCallableProtocolTypeVarcast)unquoteurlparse   )EnvironmentMarker_pep440_python_full_version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PylockSelectErrorPylockUnsupportedVersionErrorPylockValidationErroris_valid_pylock_pathreturn	list[str]c                     t           S N)__all__     O/var/www/html/python-test/venv/lib/python3.11/site-packages/packaging/pylock.py__dir__r5   <   s    Nr3   _T_T2c                  &    e Zd Zedd            ZdS )_FromMappingProtocoldMapping[str, Any]r-   r    c                    d S r0   r2   clsr:   s     r4   
_from_dictz_FromMappingProtocol._from_dictE   s    7:sr3   Nr:   r;   r-   r    )__name__
__module____qualname__classmethodr?   r2   r3   r4   r9   r9   D   s&        ::: [:::r3   r9   _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)namerH   _PYLOCK_FILE_NAME_REmatchrG   s    r4   r,   r,   O   s-    9%T.B.H.H.S.S)T)TTr3   keystrc                .    |                      dd          S )N_-)replace)rN   s    r4   	_toml_keyrT   T   s    ;;sC   r3   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 r2   )rO   ).0vs     r4   
<listcomp>z_toml_value.<locals>.<listcomp>\   s    &&&1A&&&r3   )
isinstancer   r   r   rO   r   )rN   rU   s     r4   _toml_valuer]   X   s\    %'6<899 5zz%"" 'sn'<'<&&&&&&Lr3   datalist[tuple[str, Any]]dict[str, Any]c                    d | D             S )Nc                T    i | ]%\  }}|t          |          t          ||          &S r0   )rT   r]   )rY   rN   rU   s      r4   
<dictcomp>z&_toml_dict_factory.<locals>.<dictcomp>a   s>       C 	#C//r3   r2   )r^   s    r4   _toml_dict_factoryrd   `   s#        r3   r:   r;   expected_typetype[_T]	_T | Nonec                    |                      |          x}dS t          ||          r|t          u rDt          |t                    r/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)getr\   intrH   r+   typerA   r:   re   rN   rU   s       r4   _getrr   h   s    s$te]++ 
E4!8!8#3tE{{3 3 3&/3 3 3
 
 
 	

 Lr3   c                J    t          | ||          x}t          |          |S )zKGet a required value from the dictionary and verify it's the expected type.)rr   _PylockRequiredKeyErrorrq   s       r4   _get_requiredru   x   s,    a,,,5%c***Lr3   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.Nri   z (expected Sequence)rl   rj   rk   [])	rr   r   r\   rO   bytesr+   rp   rA   	enumerate)r:   rv   rN   rU   iitems         r4   _get_sequencer      s     a3'''0t%#u&& 
#ItE{{3III
 
 
 	
 U##  4$ 233 	'<4::#6 < </8< < <   	 Lr3   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.
    Nrl   )rr   	Exceptionr+   )r:   re   r   rN   rU   es         r4   _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   rt   )r:   re   r   rN   rU   s        r4   _get_required_asr      s0     M;<<<E%c***Lr3   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.Nry   rz   rl   )r   appendr   r+   len)	r:   rv   r   rN   rU   resultr~   
typed_itemr   s	            r4   _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.Nrl   )rr   r   r?   r   r+   )r:   r   rN   rU   r   s        r4   _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.Nry   rz   rl   )r   r   r?   r   r   r+   r   )r:   r   rN   rU   r   r~   r   r   s           r4   _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   rt   )r:   r   rN   r   s       r4   !_get_required_sequence_of_objectsr      s/    
 +1.>DDDM%c***Mr3   rJ   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   )rJ   s    r4   _validate_normalized_namer      s;    d## H#$FD$F$F$FGGG$r3   
str | NoneurlNonec                0    | s|st          d          d S d S )Nzpath or url must be provided)r+   )rG   r   s     r4   _validate_path_urlr      s:     D D#$BCCCD D D Dr3   c                    | sd S d| v r|                      dd          d         S d| v r|                      dd          d         S | S )N/r   \)rsplitrM   s    r4   
_path_namer      sZ     t d{{{{3""2&&	{{4##B''r3   c                    | sd S t          |           j        }t          |                    dd          d                   S )Nr   r   r   )r   rG   r   r   )r   url_paths     r4   	_url_namer     s>     t}}!H8??3**2.///r3   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 r0   )r\   rO   )rY   hash_vals     r4   	<genexpr>z#_validate_hashes.<locals>.<genexpr>  s,      IIXz(C((IIIIIIr3   zHash values must be strings)r+   allvalues)r   s    r4   _validate_hashesr     sV     J#$HIIIIIIIIII C#$ABBBMr3   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   rm   rO   messagerl   causestr | Exceptionr-   r   c                   t          |t                    r7|j        r|r| d|j         n|j        | _        n|| _        |j        | _        d S || _        t	          |          | _        d S )N.)r\   r+   rm   r   rO   )selfr   rm   s      r4   __init__zPylockValidationError.__init__  sw     e233 
	&} '4;Nw00000   ' =DLLL"DLu::DLLLr3   c                @    | j         r| j         d| j         S | j        S )Nz in )rm   r   r   s    r4   __str__zPylockValidationError.__str__/  s,    < 	9l88888|r3   )r   r   rm   r   r-   r   r-   rO   )rA   rB   rC   __doc__rm   __annotations__r   r   r2   r3   r4   r+   r+     sm         <<GLLL #	& & & & & &$     r3   r+   c                        e Zd Zd fdZ xZS )rt   rN   rO   r-   r   c                N    t                                          d|           d S )NzMissing required valuerl   )superr   )r   rN   	__class__s     r4   r   z _PylockRequiredKeyError.__init__6  s'    13?????r3   )rN   rO   r-   r   )rA   rB   rC   r   __classcell__)r   s   @r4   rt   rt   5  sG        @ @ @ @ @ @ @ @ @ @r3   rt   c                      e Zd ZdZdS )r*   z7Raised when encountering an unsupported `lock_version`.NrA   rB   rC   r   r2   r3   r4   r*   r*   :  s        AAAAr3   r*   c                      e Zd ZdZdS )r)   z[Base exception for errors raised by :meth:`Pylock.select`.

    .. versionadded:: 26.1
    Nr   r2   r3   r4   r)   r)   >  s           r3   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&   rO   rp   Nr   r   rG   requested_revision	commit_idsubdirectory)r   rG   r   r   r-   r   c               V   t                               | d|           t                               | d|           t                               | d|           t                               | d|           t                               | d|           t                               | d|           d S )Nrp   r   rG   r   r   r   object__setattr__)r   rp   r   rG   r   r   r   s          r4   r   zPackageVcs.__init__N  s     	4...4,,,4...4!57IJJJ4i8884>>>>>r3   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 )Nrp   r   rG   zrequested-revisionz	commit-idr   )rp   r   rG   r   r   r   )ru   rO   rr   r   rG   r   )r>   r:   package_vcss      r4   r?   zPackageVcs._from_dict`  s    cq#v..QU##af%%#As,@AA#AsK88an55
 
 
 	;+[_===r3   )rp   rO   r   r   rG   r   r   r   r   rO   r   r   r-   r   r@   )rA   rB   rC   r   r   rG   r   r   r   rD   r?   r2   r3   r4   r&   r&   E  s         IIICD%)))))NNN#L#### )-#'? ? ? ? ? ?$ 
 
 
 [
 
 
r3   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$   rO   rG   Nbool | Noneeditabler   r   )r   r   r-   r   c                   t                               | d|           t                               | d|           t                               | d|           d S )NrG   r   r   r   )r   rG   r   r   s       r4   r   zPackageDirectory.__init__t  sR     	4...4X6664>>>>>r3   r:   r;   r    c           	          | t          |t          d          t          |t          d          t          |t          d                    S )NrG   r   r   )rG   r   r   )ru   rO   rr   rH   r=   s     r4   r?   zPackageDirectory._from_dict  sH    sq#v..!T:..an55
 
 
 	
r3   )rG   rO   r   r   r   r   r-   r   r@   )	rA   rB   rC   r   r   r   r   rD   r?   r2   r3   r4   r$   r$   n  s         III H    #L#### !%#'
? 
? 
? 
? 
? 
? 
 
 
 [
 
 
r3   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   rG   
int | Nonesizedatetime | Noneupload_timeMapping[str, str]r   r   )r   rG   r   r   r   r-   r   c               V   t                               | d|           t                               | d|           t                               | d|           t                               | d|           t                               | d|           t                               | d|           d S )Nr   rG   r   r   r   r   r   )r   r   rG   r   r   r   r   s          r4   r   zPackageArchive.__init__  s     	4,,,4...4...4<<<462224>>>>>r3   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   rG   r   upload-timer   r   )r   rG   r   r   r   r   )
rr   rO   ro   r   r   r   r   r   rG   r   )r>   r:   package_archives      r4   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r3   )r   r   rG   r   r   r   r   r   r   r   r   r   r-   r   r@   )rA   rB   rC   r   r   rG   r   r   r   r   rD   r?   r2   r3   r4   r#   r#     s         CDD#'K''''#L####
 '+#'? ? ? ? ? ?$ 
 
 
 [
 
 
r3   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   rJ   r   r   r   rG   r   r   r   r   rJ   r   r   rG   r   r-   r   c               V   t                               | d|           t                               | d|           t                               | d|           t                               | d|           t                               | d|           t                               | d|           d S NrJ   r   r   rG   r   r   r   r   rJ   r   r   rG   r   r   s          r4   r   zPackageSdist.__init__       	4...4<<<4,,,4...4...4622222r3   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 NrJ   r   r   rG   r   r   )rJ   r   r   rG   r   r   
rr   rO   r   ro   r   r   r   r   rG   r   )r>   r:   package_sdists      r4   r?   zPackageSdist._from_dict      af%%Q-88QU##af%%af%%#Aw0@(KK
 
 
 	=-}/@AAAr3   rO   c                    | j         p't          | j                  pt          | j                  }|st          d          |S )zGGet the filename of the sdist.

        .. versionadded:: 26.1
        zCannot determine sdist filenamerJ   r   rG   r   r   r+   r   filenames     r4   r   zPackageSdist.filename  sF     9L
49 5 5L489L9L 	K'(IJJJr3   rJ   r   r   r   r   r   rG   r   r   r   r   r   r-   r   r@   r   rA   rB   rC   rJ   r   r   r   rG   r   r   rD   r?   propertyr   r2   r3   r4   r%   r%     s         D#'K''''CDD
  '+3 3 3 3 3 3$ 
 
 
 [
    X  r3   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   rJ   r   r   r   rG   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          r4   r   zPackageWheel.__init__  r   r3   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      r4   r?   zPackageWheel._from_dict  r   r3   rO   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     r4   r   zPackageWheel.filename  sF     9L
49 5 5L489L9L 	K'(IJJJr3   r   r@   r   r   r2   r3   r4   r'   r'     s         D#'K''''CDD
  '+3 3 3 3 3 3$ 
 
 
 [
    X  r3   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   rJ   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 )NrJ   r   r   r  r  r  r  r	  r
  r  r  r  r  r   )r   rJ   r   r   r  r  r  r  r	  r
  r  r  r  r  s                 r4   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.....r3   r:   r;   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 )NrJ   r   requires-pythonr  r   r  r  r	  r
  r  r  zattestation-identitiesr  )rJ   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[rz   rl   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   rO   r   r   r   r   r   r   r   r   r&   r$   r#   rr   r%   r   r'   rH   r  r   r  r  r  r	  r+   r|   r   r   r   rJ   r   r   r  ru   )r>   r:   packagedistributionsdirect_urlsr}   wheelrJ   r   rQ   r   attestation_identitys               r4   r?   zPackage._from_dictG  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rH   c                     | j         p| j         S r0   )r  r  r   s    r4   	is_directzPackage.is_direct  s    J-$+..r3   )rJ   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-   rH   )rA   rB   rC   r   r   r   r  r  r  r  r	  r
  r  r  r  r  r   rD   r?   r   r  r2   r3   r4   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/ / /r3   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-d(ZdS ).r(   z#A class representing a pylock file.r   lock_versionNSequence[Marker] | NonerW   r   r  Sequence[NormalizedName] | NoneextrasSequence[str] | Nonedependency_groupsdefault_groupsrO   
created_bySequence[Package]packagesr  r  )rW   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  rW   r  r!  r#  r$  r%  r'  r  r   )
r   r  rW   r  r!  r#  r$  r%  r'  r  s
             r4   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.....r3   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-versionrW   r!  zdependency-groupszdefault-groupsz
created-byr  r'  r  )	r  rW   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   rO   r   r   r   r   r   ru   r   r   r   r"   rr   r   r  r*   _loggerwarning)r>   r:   pylocks      r4   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   r3   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     r4   	from_dictzPylock.from_dict  s     ~~a   r3   c                8    t          j        | t                    S )z1Convert the Pylock instance to a TOML dictionary.)dict_factory)dataclassesasdictrd   r   s    r4   to_dictzPylock.to_dict  s    !$5GHHHHr3   c                T    |                      |                                            dS )zqValidate the Pylock instance against the specification.

        Raises :class:`PylockValidationError` otherwise.N)r0  r5  r   s    r4   validatezPylock.validate  s$     	t||~~&&&&&r3   )environmenttagsr!  r#  prefer_sdist_predicater8  Environment | Noner9  Sequence[Tag] | NoneCollection[str] | Noner:  'Callable[[NormalizedName], bool] | NonefIterator[tuple[Package, PackageVcs | PackageDirectory | PackageArchive | PackageWheel | PackageSdist]]c             #    K   t          ||nt                                }t          dt          |pi t	          |pg           t	          |	| j        pg n|                              }t          |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        | ||j                  r||j        fV  c|j        r_t1           |d |j        D                       d          }|r||fV  |j        ||j        fV  t          d|j        d| d          |j        ||j        fV  t2          dS )aR  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.

        The *prefer_sdist_predicate* parameter is called for packages with a source
        distribution. If it returns ``True``, the source distribution is selected
        before attempting wheel compatibility. If no source distribution is
        available, wheel selection proceeds as usual without calling the predicate.

        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`).

        .. versionadded:: 26.1

        .. versionchanged:: 26.3
            Added the *prefer_sdist_predicate* parameter.
        Nzdict[str, str | frozenset[str]])r!  r#  python_full_versionzpython_full_version zI in provided environment does not satisfy the Python version requirement zdict[str, str]requirementrl   zXProvided environment does not satisfy any of the environments specified in the lock file	lock_filez for package z at packages[rz   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   )rY   r  s     r4   r   z Pylock.select.<locals>.<genexpr>  sK       - -!  4U^ D DR HI- - - - - -r3   z6No wheel found matching the provided tags for package z'], and no sdist available as a fallback)r   r   r   dict	frozensetr$  r   r   r  containsr)   rO   rW   evaluater|   r'  r   rJ   r   r  r  r	  r  r  nextNotImplementedError)r   r8  r9  r!  r#  r:  compatible_tags_selectorenvenv_python_full_version
env_markerselected_packages_by_namepackage_indexr  
best_wheels                 r4   selectzPylock.select  s     V $C$DD(**$
 $
  -!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 6	* 6	*"M7{&w{***** ".w000000 ,w.....
 )*6**7<88 7 w},,,,,  *
 ",, - -%,^- - -    
  
!:-----].!7=00000+@'.|@ @'4@ @ @   *w},,,,, *)m6	* 6	*r3   )r  r   rW   r  r  r   r!  r   r#  r"  r$  r"  r%  rO   r'  r&  r  r  r-   r   r@   )r-   r;   )r-   r   )r8  r;  r9  r<  r!  r=  r#  r=  r:  r>  r-   r?  )rA   rB   rC   r   r   rW   r  r!  r#  r$  r  r   rD   r?   r0  r5  r7  rR  r2   r3   r4   r(   r(     s{        --,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' ' ' ' +/%))-48JNB* B* B* B* B* B* B* B*r3   r(   )r-   r.   )rG   r   r-   rH   )rN   rO   r-   rO   )rN   rO   rU   r	   r-   r	   )r^   r_   r-   r`   )r:   r;   re   rf   rN   rO   r-   rg   )r:   r;   re   rf   rN   rO   r-   r6   )r:   r;   rv   rf   rN   rO   r-   rw   )
r:   r;   re   rf   r   r   rN   rO   r-   r   )
r:   r;   re   rf   r   r   rN   rO   r-   r7   )
r:   r;   rv   rf   r   r   rN   rO   r-   r   )r:   r;   r   r   rN   rO   r-   r   )r:   r;   r   r   rN   rO   r-   r   )r:   r;   r   r   rN   rO   r-   r   )rJ   rO   r-   r   )rG   r   r   r   r-   r   )rG   r   r-   r   )r   r   r-   r   )r   r;   r-   r;   )U
__future__r   r3  loggingrecollections.abcr   r   r   r   typingr   r	   r
   r   r   r   urllib.parser   r   markersr   r   r   r   
specifiersr   r9  r   r   utilsr   r   r   r   r   r   r   r   pathlibr   typing_extensionsr    r!   	getLoggerrA   r,  r1   r5   r6   r7   r9   rE   compilerK   r,   rT   r]   rd   rr   ru   r   r   r   r   r   r   r   r   r   r   r   r   r   r+   rt   r*   r)   r&   r$   r#   r%   r'   r"   r(   r2   r3   r4   <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

 
 
 
0 0 0 0       I   <@ @ @ @ @3 @ @ @
B B B B B$9 B B B    	    $U###% % % % % % % $#%P $U###
 
 
 
 
 
 
 $#
4 $U###% % % % % % % $#%P $U###0 0 0 0 0 0 0 $#0f $U###- - - - - - - $#-` $U###B/ B/ B/ B/ B/ B/ B/ $#B/J $U###Q* Q* Q* Q* Q* Q* Q* $#Q* Q* Q*r3   