
    #j                    X   d dl mZ d dlZd dlZd dlZd dlmZmZ d dlmZ d dl	m	Z	 d dl
mZmZmZmZmZ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jX                  e-      Z.g dZ/dFdZ0 ed      Z1 ed      Z2 G d de      Z3 ede3      Z4 ejj                  d      Z6dGdZ7dHdZ8dIdZ9dJdZ:dKdZ;dLd Z<	 	 	 	 	 	 	 	 dMd!Z=	 	 	 	 	 	 	 	 	 	 dNd"Z>	 	 	 	 	 	 	 	 	 	 dOd#Z?	 	 	 	 	 	 	 	 	 	 dPd$Z@	 	 	 	 	 	 	 	 dQd%ZA	 	 	 	 	 	 	 	 dRd&ZB	 	 	 	 	 	 	 	 dSd'ZCdTd(ZDdUd)ZEdVd*ZFdWd+ZGdXd,ZH G d- d.eI      ZJ G d/ d0eJ      ZK G d1 d2eJ      ZL G d3 d4eI      ZM ed5d67       G d8 d9             ZN ed5d67       G d: d;             ZO ed5d67       G d< d=             ZP ed5d67       G d> d?             ZQ ed5d67       G d@ dA             ZR ed5d67       G dB dC             ZS ed5d67       G dD dE             ZTy)Y    )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_pathc                     t         S N)__all__     T/var/www/oz-panel.ru/ozpay-pub/venv/lib/python3.12/site-packages/packaging/pylock.py__dir__r3   <   s    Nr1   _T_T2c                      e Zd Zedd       Zy)_FromMappingProtocolc                     y r.   r0   clsds     r2   
_from_dictz_FromMappingProtocol._from_dictE   s    7:r1   Nr;   Mapping[str, Any]returnr    )__name__
__module____qualname__classmethodr<   r0   r1   r2   r7   r7   D   s    : :r1   r7   _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    r2   r,   r,   O   s+    99%T.B.H.H.S)TTr1   c                &    | j                  dd      S )N_-)replace)keys    r2   	_toml_keyrR   T   s    ;;sC  r1   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   )rQ   valuevs      r2   _toml_valuerY   X   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.   )rR   rY   )datarQ   rW   s      r2   _toml_dict_factoryr\   `   s>     C 	#C//  s   ",c                    | j                  |      x}yt        ||      r|t        u rAt        |t              r1t	        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)getrU   intrH   r+   typer@   r;   expected_typerQ   rW   s       r2   _getrh   h   st    s$e]+E4!8#tE{334 5&//03
 	

 Lr1   c                :    t        | ||      x}t        |      |S )zKGet a required value from the dictionary and verify it's the expected type.)rh   _PylockRequiredKeyErrorrf   s       r2   _get_requiredrk   x   s&    a,,5%c**Lr1   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)ra   r_   r`   [])	rh   r   rU   rV   bytesr+   re   r@   	enumerate)r;   expected_item_typerQ   rW   iitems         r2   _get_sequencert      s     a3''0%#u&#tE{3344HI
 	
 U# 4$ 23'"4:#6#6"7 8/889<%q1  Lr1   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.
    Nra   )rh   	Exceptionr+   )r;   rg   target_typerQ   rW   es         r2   _get_asry      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.)ry   rj   )r;   rg   rw   rQ   rW   s        r2   _get_required_asr{      s*     M;<<E%c**Lr1   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.Nrm   rn   ra   )rt   appendrv   r+   len)	r;   rq   target_item_typerQ   rW   resultrs   
typed_itemrx   s	            r2   _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.Nra   )rh   r   r<   rv   r+   )r;   rw   rQ   rW   rx   s        r2   _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.Nrm   rn   ra   )rt   r   r<   r}   rv   r+   r~   )r;   r   rQ   rW   r   rs   r   rx   s           r2   _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   rj   )r;   r   rQ   r   s       r2   !_get_required_sequence_of_objectsr      s)    
 +1.>DDM%c**Mr1   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   )rG   s    r2   _validate_normalized_namer      s*    d##eD83E$FGG$r1   c                $    | s|st        d      y y )Nzpath or url must be provided)r+   )rL   urls     r2   _validate_path_urlr      s    #$BCC 4r1   c                p    | sy d| v r| j                  dd      d   S d| v r| j                  dd      d   S | S )N/r   \)rsplitrK   s    r2   
_path_namer      sI     d{{{3"2&&	{{4#B''r1   c                n    | sy t        |       j                  }t        |j                  dd      d         S )Nr   r   r   )r   rL   r   r   )r   url_paths     r2   	_url_namer     s2    }!!H8??3*2.//r1   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.   )rU   rV   ).0hash_vals     r2   	<genexpr>z#_validate_hashes.<locals>.<genexpr>  s     IXz(C(Is   zHash values must be strings)r+   allvalues)hashess    r2   _validate_hashesr     s6    #$HIIIII#$ABBMr1   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 | Nonerb   rV   messagera   c                   t        |t              rJ|j                  r%|r| d|j                   n|j                  | _        n|| _        |j                  | _        y || _        t	        |      | _        y )N.)rU   r+   rb   r   rV   )selfcauserb   s      r2   __init__zPylockValidationError.__init__  s]     e23}}4;wiq0   ' ==DL"DLu:DLr1   c                h    | j                   r| j                   d| j                   S | j                  S )Nz in )rb   r   r   s    r2   __str__zPylockValidationError.__str__/  s-    <<ll^4'788||r1   )r   zstr | Exceptionrb   r   r?   Noner?   rV   )r@   rA   rB   __doc__rb   __annotations__r   r   r0   r1   r2   r+   r+     s?    <GZL #	&& 	&
 
&$r1   r+   c                        e Zd Zd fdZ xZS )rj   c                (    t         |   d|       y )NzMissing required valuera   )superr   )r   rQ   	__class__s     r2   r   z _PylockRequiredKeyError.__init__6  s    13?r1   )rQ   rV   r?   r   )r@   rA   rB   r   __classcell__)r   s   @r2   rj   rj   5  s    @ @r1   rj   c                      e Zd ZdZy)r*   z7Raised when encountering an unsupported `lock_version`.Nr@   rA   rB   r   r0   r1   r2   r*   r*   :  s    Ar1   r*   c                      e Zd ZdZy)r)   z[Base exception for errors raised by :meth:`Pylock.select`.

    .. versionadded:: 26.1
    Nr   r0   r1   r2   r)   r)   >  s    r1   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&   rV   re   Nr   r   rL   requested_revision	commit_idsubdirectory)r   rL   r   r   c                  t         j                  | d|       t         j                  | d|       t         j                  | d|       t         j                  | d|       t         j                  | d|       t         j                  | d|       y )Nre   r   rL   r   r   r   object__setattr__)r   re   r   rL   r   r   r   s          r2   r   zPackageVcs.__init__N  sr     	4.4,4.4!57IJ4i84>r1   c                    | t        |t        d      t        |t        d      t        |t        d      t        |t        d      t        |t        d      t        |t        d            }t        |j                  |j
                         |S )Nre   r   rL   zrequested-revisionz	commit-idr   )re   r   rL   r   r   r   )rk   rV   rh   r   rL   r   )r:   r;   package_vcss      r2   r<   zPackageVcs._from_dict`  sq    q#v.QU#af%#As,@A#AsK8an5
 	;++[__=r1   )re   rV   r   r   rL   r   r   r   r   rV   r   r   r?   r   r=   )r@   rA   rB   r   r   rL   r   r   r   rC   r<   r0   r1   r2   r&   r&   E  s    
ICD*%)
)N#L*# )-#'? ? 	?
 ? '? ? !? 
?$ 
 
r1   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$   rV   rL   Nbool | Noneeditabler   r   )r   r   c                   t         j                  | d|       t         j                  | d|       t         j                  | d|       y )NrL   r   r   r   )r   rL   r   r   s       r2   r   zPackageDirectory.__init__t  s:     	4.4X64>r1   c           	     r     | t        |t        d      t        |t        d      t        |t        d            S )NrL   r   r   )rL   r   r   )rk   rV   rh   rH   r9   s     r2   r<   zPackageDirectory._from_dict  s3    q#v.!T:.an5
 	
r1   )rL   rV   r   r   r   r   r?   r   r=   )	r@   rA   rB   r   r   r   r   rC   r<   r0   r1   r2   r$   r$   n  sd    
I Hk #L*# !%#'
? 
? 	
?
 !
? 

? 
 
r1   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   rL   
int | Nonesizedatetime | Noneupload_timeMapping[str, str]r   r   )r   rL   r   r   r   c                  t         j                  | d|       t         j                  | d|       t         j                  | d|       t         j                  | d|       t         j                  | d|       t         j                  | d|       y )Nr   rL   r   r   r   r   r   )r   r   rL   r   r   r   r   s          r2   r   zPackageArchive.__init__  sp     	4,4.4.4<4624>r1   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   rL   r   upload-timer   r   )r   rL   r   r   r   r   )
rh   rV   rd   r   r{   r   r   r   rL   r   )r:   r;   package_archives      r2   r<   zPackageArchive._from_dict  su    QU#af%af%Q-8#Aw0@(Kan5
 	?//1D1DEr1   )r   r   rL   r   r   r   r   r   r   r   r   r   r?   r   r=   )r@   rA   rB   r   r   rL   r   r   r   r   rC   r<   r0   r1   r2   r#   r#     s    CD*D*#'K'#L*#
 '+#'? ? 	?
 ? %? "? !? 
?$ 
 
r1   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   rG   r   r   r   rL   r   r   r   r   rG   r   r   rL   r   c                  t         j                  | d|       t         j                  | d|       t         j                  | d|       t         j                  | d|       t         j                  | d|       t         j                  | d|       y NrG   r   r   rL   r   r   r   r   rG   r   r   rL   r   r   s          r2   r   zPackageSdist.__init__  p     	4.4<4,4.4.462r1   c                     | 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   rL   r   r   )rG   r   r   rL   r   r   
rh   rV   r   rd   r{   r   r   r   rL   r   )r:   r;   package_sdists      r2   r<   zPackageSdist._from_dict  u    af%Q-8QU#af%af%#Aw0@(K
 	=--}/@/@Ar1   c                    | j                   xs, t        | j                        xs t        | j                        }|st        d      |S )zGGet the filename of the sdist.

        .. versionadded:: 26.1
        zCannot determine sdist filenamerG   r   rL   r   r   r+   r   filenames     r2   r   zPackageSdist.filename  s=     99L
499 5L4889L'(IJJr1   rG   r   r   r   r   r   rL   r   r   r   r   r   r?   r   r=   r   r@   rA   rB   rG   r   r   r   rL   r   r   rC   r<   propertyr   r0   r1   r2   r%   r%     s    D*#'K'CD*D*
  '+3 3 %	3
 3 3 3 "3 
3$ 
 
  r1   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   rG   r   r   r   rL   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          r2   r   zPackageWheel.__init__  r   r1   c                     | t        |t        d      t        |t        d      t        |t        d      t        |t        d      t        |t        d      t	        |t
        t        d            }t        |j                  |j                         |S r   r   )r:   r;   package_wheels      r2   r<   zPackageWheel._from_dict  r   r1   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     r2   r   zPackageWheel.filename  s=     99L
499 5L4889L'(IJJr1   r   r=   r   r   r0   r1   r2   r'   r'     s    D*#'K'CD*D*
  '+3 3 %	3
 3 3 3 "3 
3$ 
 
  r1   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   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   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 )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                 r2   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.r1   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)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[rn   ra   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{   rV   r   ry   r   r   rt   r   r   r   r&   r$   r#   rh   r%   r   r'   rH   r   r~   r   r   r   r   r+   rp   r   r   rv   rG   r   r   r   rk   )r:   r;   packagedistributionsdirect_urlsrr   wheelrG   r   rN   rx   attestation_identitys               r2   r<   zPackage._from_dictG  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    r2   	is_directzPackage.is_direct  s    JJ-$++..r1   )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?   rH   )r@   rA   rB   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rC   r<   r   r
  r0   r1   r2   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` / /r1   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y)!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_groupsrV   
created_bySequence[Package]packagesr   r   )rT   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  rT   r   r  r  r  r  r  r   r   )
r   r  rT   r   r  r  r  r  r  r   s
             r2   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.r1   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-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{   rV   r   r   r   r   rt   rk   ry   r   r   r"   rh   r   r  r*   _loggerwarning)r:   r;   pylocks      r2   r<   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 r1   c               $    | j                  |      S )zCreate and validate a Pylock instance from a TOML dictionary.

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

        Raises :class:`PylockValidationError` otherwise.N)r  r#  r   s    r2   validatezPylock.validate  s     	t||~&r1   )environmenttagsr  r  prefer_sdist_predicatec             #  x  K   t        ||n	t                     }t        dt        |xs i t	        |xs g       t	        || j
                  xs g n|                  }t        |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 A|j*                  ||j*                  f ^|j,                  %|# ||j"                        r||j,                  f |j.                  ret1         |d |j.                  D              d      }|r||f |j,                  ||j,                  f t        d|j"                  d| d      |j,                  ||j,                  f t2         yw)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]requirementra   zXProvided environment does not satisfy any of the environments specified in the lock file	lock_filez for package z at packages[rn   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     r2   r   z Pylock.select.<locals>.<genexpr>  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   r   containsr)   rV   rT   evaluaterp   r  r   rG   r   r   r   r   r   r   nextNotImplementedError)r   r&  r'  r  r  r(  compatible_tags_selectorenvenv_python_full_version
env_markerselected_packages_by_namepackage_indexr  
best_wheels                 r2   selectzPylock.select  s    V $C$D(*$
  -!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 6	*"M7{{&w{{** "".w0000 ,w..
 )*6*7<<8w}},, 
 ", -%,^^-  
 !:--]].!7==00+''.||&6 7''4o 6?@  *w}},, *)m6	*s   D L:H7L:)r  r   rT   r  r   r   r  r  r  r  r  r  r  rV   r  r  r   r   r?   r   r=   )r?   r>   )r?   r   )r&  zEnvironment | Noner'  zSequence[Tag] | Noner  Collection[str] | Noner  r<  r(  z'Callable[[NormalizedName], bool] | Noner?   zfIterator[tuple[Package, PackageVcs | PackageDirectory | PackageArchive | PackageWheel | PackageSdist]])r@   rA   rB   r   r   rT   r   r  r  r  r   r   rC   r<   r  r#  r%  r;  r0   r1   r2   r(   r(     se   -,0L)0+/O(/.2F+2.2+2+/N(/O%)D
") 15/32626/3 *./ / .	/
 -/ 0/ 0/ -/ / $/ '/ 
/0  , ! !I' +/%))-48JNB* (B* #	B*
 'B* 2B* !HB*	
B*r1   r(   )r?   z	list[str])rL   r   r?   rH   )rQ   rV   r?   rV   )rQ   rV   rW   r	   r?   r	   )r[   zlist[tuple[str, Any]]r?   zdict[str, Any])r;   r>   rg   type[_T]rQ   rV   r?   z	_T | None)r;   r>   rg   r=  rQ   rV   r?   r4   )r;   r>   rq   r=  rQ   rV   r?   zSequence[_T] | None)
r;   r>   rg   r=  rw   Callable[[_T], _T2]rQ   rV   r?   z
_T2 | None)
r;   r>   rg   r=  rw   r>  rQ   rV   r?   r5   )
r;   r>   rq   r=  r   r>  rQ   rV   r?   zlist[_T2] | None)r;   r>   rw   type[_FromMappingProtocolT]rQ   rV   r?   z_FromMappingProtocolT | None)r;   r>   r   r?  rQ   rV   r?   z"list[_FromMappingProtocolT] | None)r;   r>   r   r?  rQ   rV   r?   zSequence[_FromMappingProtocolT])rG   rV   r?   r   )rL   r   r   r   r?   r   )rL   r   r?   r   )r   r   r?   r   )r   r>   r?   r>   )U
__future__r   r!  loggingrecollections.abcr   r   r   r   typingr   r	   r
   r   r   r   urllib.parser   r   markersr   r   r   r   
specifiersr   r'  r   r   utilsr   r   r   r   r   r   r   r   pathlibr   typing_extensionsr    r!   	getLoggerr@   r  r/   r3   r4   r5   r7   rD   compilerI   r,   rR   rY   r\   rh   rk   rt   ry   r{   r   r   r   r   r   r   r   r   r   rv   r+   rj   r*   r)   r&   r$   r#   r%   r'   r"   r(   r0   r1   r2   <module>rM     sC   "   	 - !   +  % ;  4&
'

H
% T]en;8 ;
   7?ST  "rzz"<= U
! .6=@,;;; %; 
	;
 ;&


 %
 
	

 	
  * 
	
 &	;	;'B	;IL	;!	;,GNQ' ,GNQ$ D

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