
    Kib                    P   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jT                  e+      Z,g dZ-dFdZ. ed      Z/ ed      Z0 G d de      Z1 ede1      Z2 ejf                  d      Z4dGdZ5dHdZ6dIdZ7dJdZ8dKdZ9dLd Z:	 	 	 	 	 	 	 	 dMd!Z;	 	 	 	 	 	 	 	 	 	 dNd"Z<	 	 	 	 	 	 	 	 	 	 dOd#Z=	 	 	 	 	 	 	 	 	 	 dPd$Z>	 	 	 	 	 	 	 	 dQd%Z?	 	 	 	 	 	 	 	 dRd&Z@	 	 	 	 	 	 	 	 dSd'ZAdTd(ZBdUd)ZCdVd*ZDdWd+ZEdXd,ZF G d- d.eG      ZH G d/ d0eH      ZI G d1 d2eH      ZJ G d3 d4eG      ZK ed5d67       G d8 d9             ZL ed5d67       G d: d;             ZM ed5d67       G d< d=             ZN ed5d67       G d> d?             ZO ed5d67       G d@ dA             ZP ed5d67       G dB dC             ZQ ed5d67       G dD dE             ZRy)Y    )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_pathc                     t         S N)__all__     \/home/jay/workspace/scripts/.codegraph-venv/lib/python3.12/site-packages/packaging/pylock.py__dir__r0   6   s    Nr.   _T_T2c                      e Zd Zedd       Zy)_FromMappingProtocolc                     y r+   r-   clsds     r/   
_from_dictz_FromMappingProtocol._from_dict?   s    7:r.   Nr8   Mapping[str, Any]returnr   )__name__
__module____qualname__classmethodr9   r-   r.   r/   r4   r4   >   s    : :r.   r4   _FromMappingProtocolT)boundz^pylock\.([^.]+)\.toml$c                t    | j                   dk(  xs( t        t        j                  | j                               S )z4Check if the given path is a valid pylock file path.zpylock.toml)namebool_PYLOCK_FILE_NAME_REmatchpaths    r/   r)   r)   I   s+    99%T.B.H.H.S)TTr.   c                &    | j                  dd      S )N_-)replace)keys    r/   	_toml_keyrO   N   s    ;;sC  r.   c                    t        |t        t        t        f      rt	        |      S t        |t
              r| dk(  r|D cg c]  }t	        |       c}S |S c c}w )Nenvironments)
isinstancer   r   r   strr   )rN   valuevs      r/   _toml_valuerV   R   sM    %'6<895z%"sn'< %&1A&&L 's    Ac           	     d    | D ci c]  \  }}|t        |      t        ||       c}}S c c}}w r+   )rO   rV   )datarN   rT   s      r/   _toml_dict_factoryrY   Z   s>     C 	#C//  s   ",c                    | j                  |      x}yt        ||      s1t        dt        |      j                   d|j                   d|      |S )zBGet a value from the dictionary and verify it's the expected type.NUnexpected type  (expected )context)getrR   r(   typer=   r8   expected_typerN   rT   s       r/   _getrd   b   sc    s$e]+#tE{334 5&//03
 	

 Lr.   c                :    t        | ||      x}t        |      |S )zKGet a required value from the dictionary and verify it's the expected type.)rd   _PylockRequiredKeyErrorrb   s       r/   _get_requiredrg   o   s&    a,,5%c**Lr.   c                N   t        | t        |      x}yt        |t        t        f      r$t        dt        |      j                   d|      t        |      D ]H  \  }}t        ||      rt        dt        |      j                   d|j                   d| d| d       |S )	zMGet a list value from the dictionary and verify it's the expected items type.Nr[   z (expected Sequence)r^   r\   r]   [])	rd   r   rR   rS   bytesr(   ra   r=   	enumerate)r8   expected_item_typerN   rT   iitems         r/   _get_sequencerp   v   s     a3''0%#u&#tE{3344HI
 	
 U# 4$ 23'"4:#6#6"7 8/889<%q1  Lr.   c                r    t        | ||      x}y	  ||      S # t        $ r}t        ||      |d}~ww xY w)zGet a value from the dictionary, verify it's the expected type,
    and convert to the target type.

    This assumes the target_type constructor accepts the value.
    Nr^   )rd   	Exceptionr(   )r8   rc   target_typerN   rT   es         r/   _get_asru      sJ     a,,5;5!! ;#As3:;s    	616c                <    t        | |||      x}t        |      |S )zfGet a required value from the dict, verify it's the expected type,
    and convert to the target type.)ru   rf   )r8   rc   rs   rN   rT   s        r/   _get_required_asrw      s*     M;<<E%c**Lr.   c           	         t        | ||      x}yg }	 |D ]  } ||      }|j                  |        	 |S # t        $ r"}t        || dt	        |       d      |d}~ww xY w)z>Get list value from dictionary and verify expected items type.Nri   rj   r^   )rp   appendrr   r(   len)	r8   rm   target_item_typerN   rT   resultro   
typed_itemrt   s	            r/   _get_sequence_asr~      s     q"4c::CFO 	&D)$/JMM*%	&
 M  O#A#aF}A/FGQNOs    7 	A" AA"c                    t        | t        |      x}y	 |j                  |      S # t        $ r}t	        ||      |d}~ww xY w)zIGet a dictionary value from the dictionary and convert it to a dataclass.Nr^   )rd   r   r9   rr   r(   )r8   rs   rN   rT   rt   s        r/   _get_objectr      sP     a#&&/;%%e,, ;#As3:;s   ' 	A>Ac           	         t        | t        |      x}yg }	 |D ]$  }|j                  |      }|j                  |       & 	 |S # t        $ r"}t        || dt        |       d      |d}~ww xY w)zJGet a list value from the dictionary and convert its items to a dataclass.Nri   rj   r^   )rp   r   r9   ry   rr   r(   rz   )r8   r{   rN   rT   r|   ro   r}   rt   s           r/   _get_sequence_of_objectsr      s     q'3//8*,FO 	&D)44T:JMM*%	&
 M  O#A#aF}A/FGQNOs   )A 	A/A**A/c                :    t        | ||      x}t        |      |S )zWGet a required list value from the dictionary and convert its items to a
    dataclass.)r   rf   )r8   r{   rN   r|   s       r/   !_get_required_sequence_of_objectsr      s)    
 +1.>DDM%c**Mr.   c                L    t        |       st        d| d      t        |       S )z+Validate that a string is a NormalizedName.zName z is not normalized)r   r(   r   )rD   s    r/   _validate_normalized_namer      s*    d##eD83E$FGG$r.   c                $    | s|st        d      y y )Nzpath or url must be provided)r(   )rI   urls     r/   _validate_path_urlr      s    #$BCC 4r.   c                p    | sy d| v r| j                  dd      d   S d| v r| j                  dd      d   S | S )N/r   \)rsplitrH   s    r/   
_path_namer      sI     d{{{3"2&&	{{4#B''r.   c                \    | sy t        |       j                  }|j                  dd      d   S )Nr   r   r   )r   rI   r   )r   url_paths     r/   	_url_namer      s-    }!!H??3"2&&r.   c                v    | st        d      t        d | j                         D              st        d      | S )Nz"At least one hash must be providedc              3  <   K   | ]  }t        |t                y wr+   )rR   rS   ).0hash_vals     r/   	<genexpr>z#_validate_hashes.<locals>.<genexpr>  s     IXz(C(Is   zHash values must be strings)r(   allvalues)hashess    r/   _validate_hashesr     s6    #$HIIIII#$ABBMr.   c                  J    e Zd ZU dZdZded<   ded<   dd	 	 	 	 	 d
dZdd	Zy)r(   z2Raised when when input data is not spec-compliant.N
str | Noner_   rS   messager^   c                   t        |t              rJ|j                  r%|r| d|j                   n|j                  | _        n|| _        |j                  | _        y || _        t	        |      | _        y )N.)rR   r(   r_   r   rS   )selfcauser_   s      r/   __init__zPylockValidationError.__init__  s]     e23}}4;wiq0   ' ==DL"DLu:DLr.   c                h    | j                   r| j                   d| j                   S | j                  S )Nz in )r_   r   r   s    r/   __str__zPylockValidationError.__str__%  s-    <<ll^4'788||r.   )r   zstr | Exceptionr_   r   r<   Noner<   rS   )r=   r>   r?   __doc__r_   __annotations__r   r   r-   r.   r/   r(   r(     s?    <GZL #	&& 	&
 
&$r.   r(   c                        e Zd Zd fdZ xZS )rf   c                (    t         |   d|       y )NzMissing required valuer^   )superr   )r   rN   	__class__s     r/   r   z _PylockRequiredKeyError.__init__,  s    13?r.   )rN   rS   r<   r   )r=   r>   r?   r   __classcell__)r   s   @r/   rf   rf   +  s    @ @r.   rf   c                      e Zd ZdZy)r'   z7Raised when encountering an unsupported `lock_version`.Nr=   r>   r?   r   r-   r.   r/   r'   r'   0  s    Ar.   r'   c                      e Zd ZdZy)PylockSelectErrorz:Base exception for errors raised by :meth:`Pylock.select`.Nr   r-   r.   r/   r   r   4  s    Dr.   r   TF)frozeninitc                      e Zd ZU ded<   dZded<   dZded<   dZded<   ded<   dZded	<   ddddd
	 	 	 	 	 	 	 	 	 	 	 	 	 ddZe	dd       Z
y)r$   rS   ra   Nr   r   rI   requested_revision	commit_idsubdirectory)r   rI   r   r   c                  t         j                  | d|       t         j                  | d|       t         j                  | d|       t         j                  | d|       t         j                  | d|       t         j                  | d|       y )Nra   r   rI   r   r   r   object__setattr__)r   ra   r   rI   r   r   r   s          r/   r   zPackageVcs.__init__A  sr     	4.4,4.4!57IJ4i84>r.   c                    | t        |t        d      t        |t        d      t        |t        d      t        |t        d      t        |t        d      t        |t        d            }t        |j                  |j
                         |S )Nra   r   rI   zrequested-revisionz	commit-idr   )ra   r   rI   r   r   r   )rg   rS   rd   r   rI   r   )r7   r8   package_vcss      r/   r9   zPackageVcs._from_dictS  sq    q#v.QU#af%#As,@A#AsK8an5
 	;++[__=r.   )ra   rS   r   r   rI   r   r   r   r   rS   r   r   r<   r   r:   )r=   r>   r?   r   r   rI   r   r   r   r@   r9   r-   r.   r/   r$   r$   8  s    
ICD*%)
)N#L*# )-#'? ? 	?
 ? '? ? !? 
?$ 
 
r.   r$   c                  d    e Zd ZU ded<   dZded<   dZded<   ddd	 	 	 	 	 	 	 dd	Zedd
       Zy)r"   rS   rI   Nbool | Noneeditabler   r   )r   r   c                   t         j                  | d|       t         j                  | d|       t         j                  | d|       y )NrI   r   r   r   )r   rI   r   r   s       r/   r   zPackageDirectory.__init__g  s:     	4.4X64>r.   c           	     r     | t        |t        d      t        |t        d      t        |t        d            S )NrI   r   r   )rI   r   r   )rg   rS   rd   rE   r6   s     r/   r9   zPackageDirectory._from_dicts  s3    q#v.!T:.an5
 	
r.   )rI   rS   r   r   r   r   r<   r   r:   )	r=   r>   r?   r   r   r   r   r@   r9   r-   r.   r/   r"   r"   a  sd    
I Hk #L*# !%#'
? 
? 	
?
 !
? 

? 
 
r.   r"   c                      e Zd ZU dZded<   dZded<   dZded<   dZded<   d	ed
<   dZded<   dddddd	 	 	 	 	 	 	 	 	 	 	 	 	 ddZ	e
dd       Zy)r!   Nr   r   rI   
int | Nonesizedatetime | Noneupload_timeMapping[str, str]r   r   )r   rI   r   r   r   c                  t         j                  | d|       t         j                  | d|       t         j                  | d|       t         j                  | d|       t         j                  | d|       t         j                  | d|       y )Nr   rI   r   r   r   r   r   )r   r   rI   r   r   r   r   s          r/   r   zPackageArchive.__init__  sp     	4,4.4.4<4624>r.   c                     | t        |t        d      t        |t        d      t        |t        d      t        |t        d      t	        |t
        t        d      t        |t        d            }t        |j                  |j                         |S )Nr   rI   r   upload-timer   r   )r   rI   r   r   r   r   )
rd   rS   intr   rw   r   r   r   rI   r   )r7   r8   package_archives      r/   r9   zPackageArchive._from_dict  su    QU#af%af%Q-8#Aw0@(Kan5
 	?//1D1DEr.   )r   r   rI   r   r   r   r   r   r   r   r   r   r<   r   r:   )r=   r>   r?   r   r   rI   r   r   r   r   r@   r9   r-   r.   r/   r!   r!   |  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edd       Zy)r#   Nr   rD   r   r   r   rI   r   r   r   r   rD   r   r   rI   r   c                  t         j                  | d|       t         j                  | d|       t         j                  | d|       t         j                  | d|       t         j                  | d|       t         j                  | d|       y NrD   r   r   rI   r   r   r   r   rD   r   r   rI   r   r   s          r/   r   zPackageSdist.__init__  p     	4.4<4,4.4.462r.   c                     | t        |t        d      t        |t        d      t        |t        d      t        |t        d      t        |t        d      t	        |t
        t        d            }t        |j                  |j                         |S NrD   r   r   rI   r   r   )rD   r   r   rI   r   r   
rd   rS   r   r   rw   r   r   r   rI   r   )r7   r8   package_sdists      r/   r9   zPackageSdist._from_dict  u    af%Q-8QU#af%af%#Aw0@(K
 	=--}/@/@Ar.   c                    | j                   xs, t        | j                        xs t        | j                        }|st        d      |S )zGet the filename of the sdist.zCannot determine sdist filenamerD   r   rI   r   r   r(   r   filenames     r/   r   zPackageSdist.filename  =     99L
499 5L4889L'(IJJr.   rD   r   r   r   r   r   rI   r   r   r   r   r   r<   r   r:   r   r=   r>   r?   rD   r   r   r   rI   r   r   r@   r9   propertyr   r-   r.   r/   r#   r#         D*#'K'CD*D*
  '+3 3 %	3
 3 3 3 "3 
3$ 
 
  r.   r#   c                      e Zd ZU dZded<   dZded<   dZded<   dZded<   dZded	<   d
ed<   dddddd	 	 	 	 	 	 	 	 	 	 	 	 	 ddZ	e
dd       Zedd       Zy)r%   Nr   rD   r   r   r   rI   r   r   r   r   r   c                  t         j                  | d|       t         j                  | d|       t         j                  | d|       t         j                  | d|       t         j                  | d|       t         j                  | d|       y r   r   r   s          r/   r   zPackageWheel.__init__  r   r.   c                     | t        |t        d      t        |t        d      t        |t        d      t        |t        d      t        |t        d      t	        |t
        t        d            }t        |j                  |j                         |S r   r   )r7   r8   package_wheels      r/   r9   zPackageWheel._from_dict  r   r.   c                    | j                   xs, t        | j                        xs t        | j                        }|st        d      |S )zGet the filename of the wheel.zCannot determine wheel filenamer   r   s     r/   r   zPackageWheel.filename  r   r.   r   r:   r   r   r-   r.   r/   r%   r%     r   r.   r%   c                  >   e Zd ZU ded<   dZded<   dZded<   dZded	<   dZd
ed<   dZded<   dZ	ded<   dZ
ded<   dZded<   dZded<   dZded<   dZd
ed<   dZded<   ddddddddddddd	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 ddZed d       Zed!d       Zy)"r    r   rD   NVersion | NoneversionMarker | NonemarkerSpecifierSet | Nonerequires_python"Sequence[Mapping[str, Any]] | NonedependenciesPackageVcs | NonevcsPackageDirectory | None	directoryPackageArchive | Nonearchiver   indexPackageSdist | NonesdistSequence[PackageWheel] | Nonewheelsattestation_identitiesMapping[str, Any] | Nonetool)r   r   r   r   r   r   r   r   r   r   r   r   c               Z   t         j                  | d|       t         j                  | d|       t         j                  | d|       t         j                  | d|       t         j                  | d|       t         j                  | d|       t         j                  | d|       t         j                  | d|       t         j                  | d	|	       t         j                  | d
|
       t         j                  | d|       t         j                  | d|       t         j                  | d|       y )NrD   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   rD   r   r   r   r   r   r   r   r   r   r   r   r   s                 r/   r   zPackage.__init__  s    $ 	4.4G44624!2OD4>4,4i84G44%04%04624!9;QR4.r.   c                    | t        |t        t        d      t        |t        t        d      t        |t        t
        d      t        |t        d      t        |t        t        d      t        |t        d      t        |t        d      t        |t        d      t        |t        d	      t        |t        d
      t        |t         d      t        |t        d      t        |t        d            }t#        |j$                        t'        |j(                  xs g       z   }t#        |j*                        t#        |j,                        z   t#        |j.                        z   }|dkD  r|dkD  rt1        d      |dk(  r|dk7  rt1        d      t3        |j(                  xs g       D ]  \  }}	 t5        |j6                        \  }}}	}	||j:                  k7  r+t1        d|j6                  d|j:                  d| d      |j<                  sh||j<                  k7  sxt1        d|j6                  dt        |j<                        d| d       |j$                  r	 t?        |j$                  j6                        \  }}||j:                  k7  r1t1        d|j$                  j6                  d|j:                  d
      |j<                  rI||j<                  k7  r:t1        d|j$                  j6                  dt        |j<                        d
      	 t3        |j@                  xs g       D ]  \  }}tC        |t        d        	 |S # t8        $ r$}
t1        d|j6                  d| d      |
d }
~
ww xY w# t8        $ r*}
t1        d|j$                  j6                  d
      |
d }
~
ww xY w# t8        $ r}
t1        |
d d      |
d }
~
ww xY w)NrD   r   requires-pythonr   r   r   r   r   r   r   r   zattestation-identitiesr   )rD   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[rj   r^   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[)"rw   rS   r   ru   r   r   rp   r   r   r   r$   r"   r!   rd   r#   r   r%   rE   r   rz   r   r   r   r   r(   rl   r   r   rr   rD   r   r   r   rg   )r7   r8   packagedistributionsdirect_urlsrn   wheelrD   r   rK   rt   attestation_identitys               r/   r9   zPackage._from_dict7  s   !!S*CVLAsGY7#AsL:KL&q'>B1c684Az51!!%5{C>9=q#w'aw7+A|XF#0G=U#Va&)
 W]]+c'..2FB.GGW%6%6 77$w:OO 	 1q'X  A+"2'2  "'.."6B7 	HAu(<U^^(L%w1 w||#+u~~0 1$$+LL#35%aSN 
 7goo#=+!%..!3 4''*7??';&>@%aSN 	( == 4W]]5K5K Lg w||#+w}}558 9$$+LL#35# 
 7goo#=+!'--"8"8!; <''*7??';&>@# 
	+4..4", A'' 2C@A ]  +-enn-?@%aSN (  +-gmm.D.D-GH# ,  	'4QCq9	sH   'M"M7 2N- 	M4M//M47	N* %N%%N*-	O6OOc                8    | j                   xs | j                   S r+   )r   r   r   s    r/   	is_directzPackage.is_direct  s    JJ-$++..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   r   r   r<   r   r:   )r<   rE   )r=   r>   r?   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r@   r9   r   r
  r-   r.   r/   r    r      sn   
"G^" FM +/O(/7;L4;!C	!)-I&-%)G")E:!%E%,0F)0AE>E%)D
") #' $/3;?!%-1)- %)04EI)-/ /  	/
 / -/ 9/ / +/ '/ / #/ ./ !C/ '/  
!/@ N N` / /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dddd	 	 	 	 	 	 	 	 	 d dZy)!r&   z#A class representing a pylock file.r   lock_versionNSequence[Marker] | NonerQ   r   r   Sequence[NormalizedName] | NoneextrasSequence[str] | Nonedependency_groupsdefault_groupsrS   
created_bySequence[Package]packagesr   r   )rQ   r   r  r  r  r   c       	           t         j                  | d|       t         j                  | d|       t         j                  | d|       t         j                  | d|       t         j                  | d|       t         j                  | d|       t         j                  | d|       t         j                  | d|       t         j                  | d	|	       y )
Nr  rQ   r   r  r  r  r  r  r   r   )
r   r  rQ   r   r  r  r  r  r  r   s
             r/   r   zPylock.__init__  s     	4>4>4!2OD4624!46GH4!1>B4z:4X64.r.   c                R    | t        |t        t        d      t        |t        t        d      t        |t        t
        d      t        |t        d      t        |t        d      t        |t        d      t        |t        t        d      t        |t        d      t        |t        d	      
	      }t        d      |j                  cxk  rt        d      k  sn t        d|j                   d      |j                  t        d      kD  r t         j#                  d|j                         |S )Nzlock-versionrQ   r  zdependency-groupszdefault-groupsz
created-byr  r  r   )	r  rQ   r  r  r  r  r   r  r   12zpylock version z is not supportedz1.0z(pylock minor version %s is not supported)rw   rS   r   r~   r   r   rp   rg   ru   r   r   r    rd   r   r  r'   _loggerwarning)r7   r8   pylocks      r/   r9   zPylock._from_dict  s    )!S'>J)!S&.I#As,ExP+As4GH(C1AB$Q\:#AsL:KL6q':Na&)

 s|v22AWS\A/!&"5"5!66GH  /OO:F<O<O r.   c               $    | j                  |      S )zCreate and validate a Pylock instance from a TOML dictionary.

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

        Raises :class:`PylockValidationError` otherwise.N)r  r#  r   s    r/   validatezPylock.validate  s     	t||~&r.   )environmenttagsr  r  c             #     K   t        |xs
 t                     }t        dt        |xs i t	        |xs g       t	        || j
                  xs g n|                  }|r|d   nt               d   }| j                  r?| j                  j                  |      s$t        d|dt        | j                              | j                  r?| j                  D ]%  }|j                  t        d|xs i       d	      s% n t        d
      i }	t        | j                        D ]  \  }
}|j                  r|j                  j                  |d	      s0|j                  rP|j                  j                  |      s5t        d|dt        |j                        d|j                   d|
 d	      |j                   |	v r/t        d|j                   d|
 d|	|j                      d    d      |
|f|	|j                   <    |	j#                         D ]  \  }
}|j$                  ||j$                  f #|j&                  ||j&                  f @|j(                  ||j(                  f ]|j*                  ret-         |d |j*                  D              d      }|r||f |j.                  ||j.                  f t        d|j                   d|
 d      |j.                  ||j.                  f t0         yw)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]requirementr^   zXProvided environment does not satisfy any of the environments specified in the lock file	lock_filez for package z at packages[rj   z Multiple packages with the name z are selected at packages[z] and packages[r   c              3  P   K   | ]  }|t        |j                        d    f   yw)r   N)r   r   )r   r  s     r/   r   z Pylock.select.<locals>.<genexpr>p  s,      -!  4U^^ DR HI-s   $&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   rS   rQ   evaluaterl   r  r   rD   r   r   r   r   r   nextr   NotImplementedError)r   r&  r'  r  r  compatible_tags_selectorenvenv_python_full_version
env_markerselected_packages_by_namepackage_indexr  
best_wheels                r/   selectzPylock.select  s    @ $C4CU8:#V  -!r 2."+(0 ((.B*#
  -.$&'<= 	  (<(<(E(E#)
 $&'>&A B"4#7#78;=  "// 	
&&);+<"=} '  		 (>  EG!&/&> !	O"M7 ~~gnn&=&=c;&=&W &&w/F/F/O/O'0 (*+B*E F##&w'>'>#?"B-||&mM?!E  ||88'6w||6F G,,9? ;  9',, G JK1N  8Eg6N%gll3C!	OH '@&F&F&H -	*"M7{{&w{{** "".w0000 ,w.. 
 ", -%,^^-  
 !:--]].!7==00+''.||&6 7''4o 6?@  *w}},, *)[-	*s   C7K>:HK>)r  r   rQ   r  r   r   r  r  r  r  r  r  r  rS   r  r  r   r   r<   r   r:   )r<   r;   )r<   r   )
r&  zEnvironment | Noner'  zSequence[Tag] | Noner  Collection[str] | Noner  r;  r<   zfIterator[tuple[Package, PackageVcs | PackageDirectory | PackageArchive | PackageWheel | PackageSdist]])r=   r>   r?   r   r   rQ   r   r  r  r  r   r   r@   r9   r  r#  r%  r:  r-   r.   r/   r&   r&     sV   -,0L)0+/O(/.2F+2.2+2+/N(/O%)D
") 15/32626/3 *./ / .	/
 -/ 0/ 0/ -/ / $/ '/ 
/0  , ! !I' +/%))-48l* (l* #	l*
 'l* 2l*	
l*r.   r&   )r<   z	list[str])rI   r   r<   rE   )rN   rS   r<   rS   )rN   rS   rT   r	   r<   r	   )rX   zlist[tuple[str, Any]]r<   zdict[str, Any])r8   r;   rc   type[_T]rN   rS   r<   z	_T | None)r8   r;   rc   r<  rN   rS   r<   r1   )r8   r;   rm   r<  rN   rS   r<   zSequence[_T] | None)
r8   r;   rc   r<  rs   Callable[[_T], _T2]rN   rS   r<   z
_T2 | None)
r8   r;   rc   r<  rs   r=  rN   rS   r<   r2   )
r8   r;   rm   r<  r{   r=  rN   rS   r<   zlist[_T2] | None)r8   r;   rs   type[_FromMappingProtocolT]rN   rS   r<   z_FromMappingProtocolT | None)r8   r;   r{   r>  rN   rS   r<   z"list[_FromMappingProtocolT] | None)r8   r;   r{   r>  rN   rS   r<   zSequence[_FromMappingProtocolT])rD   rS   r<   r   )rI   r   r   r   r<   r   )rI   r   r<   r   )r   r   r<   r   )r   r;   r<   r;   )S
__future__r   r!  loggingrecollections.abcr   r   r   r   typingr   r	   r
   r   r   r   urllib.parser   markersr   r   r   
specifiersr   r'  r   r   utilsr   r   r   r   r   r   r   r   pathlibr   typing_extensionsr   r   	getLoggerr=   r  r,   r0   r1   r2   r4   rA   compilerF   r)   rO   rV   rY   rd   rg   rp   ru   rw   r~   r   r   r   r   r   r   r   r   rr   r(   rf   r'   r   r$   r"   r!   r#   r%   r    r&   r-   r.   r/   <module>rL     s?   "   	 - !   " = = $ ;  4&
'

H
% T]en;8 ;
   7?ST  "rzz"<= U
!
.6=@,;;; %; 
	;
 ;&


 %
 
	

 	
  * 
	
 &	;	;'B	;IL	;!	;,GNQ' ,GNQ$ D

'I <@3 @
B$9 BE	 E $U#% % $%P $U#
 
 $
4 $U#% % $%P $U#- - $-` $U#- - $-` $U#B/ B/ $B/J $U#{* {* ${*r.   