
    ցj                    X   S SK Jr  S SKrS SKrS SKrS SKJrJr  S SKJr  S SK	J	r	  S SK
JrJrJrJrJrJr  S SKJrJr  SS	KJrJrJrJr  SS
KJr  SSKJrJr  SSKJrJ r J!r!J"r"  SSK#J$r$  \(       a  S SKJ%r%J&r&  S SK'J(r(  S SK)J*r*  SSKJ+r+  \RX                  " \-5      r./ SQr/SFS jr0\" S5      r1\" S5      r2 " S S\5      r3\" S\3S9r4\Rj                  " S5      r6SGS jr7SHS jr8SIS jr9SJS jr:SKS jr;SLS  jr<        SMS! jr=          SNS" jr>          SOS# jr?          SPS$ jr@        SQS% jrA        SRS& jrB        SSS' jrCSTS( jrDSUS) jrESVS* jrFSWS+ jrGSXS, jrH " S- S.\I5      rJ " S/ S0\J5      rK " S1 S2\J5      rL " S3 S4\I5      rM\" S5S6S79 " S8 S95      5       rN\" S5S6S79 " S: S;5      5       rO\" S5S6S79 " S< S=5      5       rP\" S5S6S79 " S> S?5      5       rQ\" S5S6S79 " S@ SA5      5       rR\" S5S6S79 " SB SC5      5       rS\" S5S6S79 " SD SE5      5       rTg)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                     [         $ N)__all__     J/mnt/workspace/venv-train/lib/python3.13/site-packages/packaging/pylock.py__dir__r3   <   s    Nr1   _T_T2c                  (    \ rS rSr\SS j5       rSrg)_FromMappingProtocolD   c                    g r.   r0   clsds     r2   
_from_dict_FromMappingProtocol._from_dictE   s    7:r1   r0   Nr<   Mapping[str, Any]returnr    )__name__
__module____qualname____firstlineno__classmethodr=   __static_attributes__r0   r1   r2   r7   r7   D   s    : :r1   r7   _FromMappingProtocolT)boundz^pylock\.([^.]+)\.toml$c                ~    U R                   S:H  =(       d(    [        [        R                  U R                   5      5      $ )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                &    U R                  SS5      $ )N_-)replace)keys    r2   	_toml_keyrV   T   s    ;;sC  r1   c                    [        U[        [        [        45      (       a  [	        U5      $ [        U[
        5      (       a"  U S:X  a  U Vs/ s H  n[	        U5      PM     sn$ U$ s  snf )Nenvironments)
isinstancer   r   r   strr   )rU   valuevs      r2   _toml_valuer]   X   sW    %'6<8995z%""sn'< %&1A&&L 's   A%c           	     l    U  VVs0 s H  u  pUc  M
  [        U5      [        X5      _M!     snn$ s  snnf r.   )rV   r]   )datarU   r[   s      r2   _toml_dict_factoryr`   `   s>     JC 	0	#C//  s   	00c                    U R                  U5      =nc  g[        X15      (       a  U[        L aC  [        U[        5      (       a.  [	        S[        U5      R                   SUR                   S3US9eU$ )zBGet a value from the dictionary and verify it's the expected type.NUnexpected type  (expected )context)getrY   intrL   r+   typerB   r<   expected_typerU   r[   s       r2   _getrl   h   sx    s$e++E4!8!8#tE{334 5&//03
 	

 Lr1   c                :    [        XU5      =nc  [        U5      eU$ )zKGet a required value from the dictionary and verify it's the expected type.)rl   _PylockRequiredKeyErrorrj   s       r2   _get_requiredro   x   s$    a,,5%c**Lr1   c                X   [        U [        U5      =nc  g[        U[        [        45      (       a!  [        S[        U5      R                   S3US9e[        U5       HI  u  pE[        XQ5      (       a  M  [        S[        U5      R                   SUR                   S3U SU S3S9e   U$ )	zMGet a list value from the dictionary and verify it's the expected items type.Nrb   z (expected Sequence)re   rc   rd   [])	rl   r   rY   rZ   bytesr+   ri   rB   	enumerate)r<   expected_item_typerU   r[   iitems         r2   _get_sequencerx      s     a3''0%#u&&#tE{3344HI
 	
 U#$33'"4:#6#6"7 8/889<%q1  $ Lr1   c                l    [        XU5      =nc  g U" U5      $ ! [         a  n[        XSS9UeSnAff = f)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.
Nre   )rl   	Exceptionr+   )r<   rk   target_typerU   r[   es         r2   _get_asr}      sF     a,,5;5!! ;#A3:;s    
3
.3c                :    [        XX#5      =nc  [        U5      eU$ )zbGet a required value from the dict, verify it's the expected type,
and convert to the target type.)r}   rn   )r<   rk   r{   rU   r[   s        r2   _get_required_asr      s&     ;<<E%c**Lr1   c           	         [        XU5      =nc  g/ n U H  nU" U5      nUR                  U5        M     U$ ! [         a  n[        X S[	        U5       S3S9UeSnAff = f)z>Get list value from dictionary and verify expected items type.Nrq   rr   re   )rx   appendrz   r+   len)	r<   ru   target_item_typerU   r[   resultrw   
typed_itemr|   s	            r2   _get_sequence_asr      s}     qc::CFOD)$/JMM*% 
 M  O#AaF}A/FGQNOs   "8 
A AA c                    [        U [        U5      =nc  g UR                  U5      $ ! [         a  n[	        XBS9UeSnAff = f)zIGet a dictionary value from the dictionary and convert it to a dataclass.Nre   )rl   r   r=   rz   r+   )r<   r{   rU   r[   r|   s        r2   _get_objectr      sN     a#&&/;%%e,, ;#A3:;s   ( 
A
<Ac           	         [        U [        U5      =nc  g/ n U H%  nUR                  U5      nUR                  U5        M'     U$ ! [         a  n[        Xr S[        U5       S3S9UeSnAff = f)zJGet a list value from the dictionary and convert its items to a dataclass.Nrq   rr   re   )rx   r   r=   r   rz   r+   r   )r<   r   rU   r[   r   rw   r   r|   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                :    [        XU5      =nc  [        U5      eU$ )zSGet a required list value from the dictionary and convert its items to a
dataclass.)r   rn   )r<   r   rU   r   s       r2   !_get_required_sequence_of_objectsr      s&    
 +1DDM%c**Mr1   c                X    [        U 5      (       d  [        SU < S35      e[        U 5      $ )z+Validate that a string is a NormalizedName.zName z is not normalized)r   r+   r   )rK   s    r2   _validate_normalized_namer      s-    d###eD83E$FGG$r1   c                8    U (       d  U(       d  [        S5      eg g )Nzpath or url must be provided)r+   )rP   urls     r2   _validate_path_urlr      s    #$BCC 4r1   c                    U (       d  g SU ;   a  U R                  SS5      S   $ SU ;   a  U R                  SS5      S   $ U $ )N/r   \)rsplitrO   s    r2   
_path_namer      sI     d{{{3"2&&	{{4#B''r1   c                x    U (       d  g [        U 5      R                  n[        UR                  SS5      S   5      $ )Nr   r   r   )r   rP   r   r   )r   url_paths     r2   	_url_namer     s2    }!!H8??3*2.//r1   c                    U (       d  [        S5      e[        S U R                  5        5       5      (       d  [        S5      eU $ )Nz"At least one hash must be providedc              3  B   #    U  H  n[        U[        5      v   M     g 7fr.   )rY   rZ   ).0hash_vals     r2   	<genexpr>#_validate_hashes.<locals>.<genexpr>  s     IXz(C((s   zHash values must be strings)r+   allvalues)hashess    r2   _validate_hashesr     s9    #$HIIIIII#$ABBMr1   c                  X    \ rS rSr% SrSrS\S'   S\S'   SS.     SS	 jjrSS
 jrSr	g)r+   i  z2Raised when when input data is not spec-compliant.N
str | Nonerf   rZ   messagere   c                   [        U[        5      (       aS  UR                  (       a*  U(       a  U SUR                   3OUR                  U l        OX l        UR                  U l        g X l        [	        U5      U l        g )N.)rY   r+   rf   r   rZ   )selfcauserf   s      r2   __init__PylockValidationError.__init__  s\     e233}}4;wiq0   ' ==DL"Lu:DLr1   c                t    U R                   (       a  U R                   SU R                   < 3$ U R                  $ )Nz in rf   r   r   s    r2   __str__PylockValidationError.__str__/  s-    <<ll^4'788||r1   r   )r   zstr | Exceptionrf   r   rA   NonerA   rZ   )
rB   rC   rD   rE   __doc__rf   __annotations__r   r   rG   r0   r1   r2   r+   r+     s?    <GZL #	&& 	&
 
&$r1   r+   c                  ,   ^  \ rS rSrSU 4S jjrSrU =r$ )rn   i5  c                "   > [         TU ]  SUS9  g )NzMissing required valuere   )superr   )r   rU   	__class__s     r2   r    _PylockRequiredKeyError.__init__6  s    13?r1   r0   )rU   rZ   rA   r   )rB   rC   rD   rE   r   rG   __classcell__)r   s   @r2   rn   rn   5  s    @ @r1   rn   c                      \ rS rSrSrSrg)r*   i:  z7Raised when encountering an unsupported `lock_version`.r0   NrB   rC   rD   rE   r   rG   r0   r1   r2   r*   r*   :  s    Ar1   r*   c                      \ rS rSrSrSrg)r)   i>  zSBase exception for errors raised by :meth:`Pylock.select`.

.. versionadded:: 26.1
r0   Nr   r0   r1   r2   r)   r)   >  s    r1   r)   TF)frozeninitc                      \ rS rSr% S\S'   SrS\S'   SrS\S'   SrS\S'   S\S	'   SrS\S
'   SSSSS.             SS jjr	\
SS j5       rSrg)r&   iE  rZ   ri   Nr   r   rP   requested_revision	commit_idsubdirectory)r   rP   r   r   c                  [         R                  U SU5        [         R                  U SU5        [         R                  U SU5        [         R                  U SU5        [         R                  U SU5        [         R                  U SU5        g )Nri   r   rP   r   r   r   object__setattr__)r   ri   r   rP   r   r   r   s          r2   r   PackageVcs.__init__N  sr     	4.4,4.4!57IJ4i84>r1   c                   U " [        U[        S5      [        U[        S5      [        U[        S5      [        U[        S5      [        U[        S5      [        U[        S5      S9n[        UR                  UR
                  5        U$ )Nri   r   rP   zrequested-revisionz	commit-idr   )ri   r   rP   r   r   r   )ro   rZ   rl   r   rP   r   )r;   r<   package_vcss      r2   r=   PackageVcs._from_dict`  sq    q#v.QU#af%#As,@A#AsK8an5
 	;++[__=r1   r0   )ri   rZ   r   r   rP   r   r   r   r   rZ   r   r   rA   r   r?   )rB   rC   rD   rE   r   r   rP   r   r   r   rF   r=   rG   r0   r1   r2   r&   r&   E  s    
ICD*%)
)N#L*# )-#'? ? 	?
 ? '? ? !? 
?$ 
 
r1   r&   c                  r    \ rS rSr% S\S'   SrS\S'   SrS\S'   SSS	.       SS
 jjr\SS j5       r	Sr
g)r$   in  rZ   rP   Nbool | Noneeditabler   r   )r   r   c                   [         R                  U SU5        [         R                  U SU5        [         R                  U SU5        g )NrP   r   r   r   )r   rP   r   r   s       r2   r   PackageDirectory.__init__t  s:     	4.4X64>r1   c           	     l    U " [        U[        S5      [        U[        S5      [        U[        S5      S9$ )NrP   r   r   )rP   r   r   )ro   rZ   rl   rL   r:   s     r2   r=   PackageDirectory._from_dict  s3    q#v.!T:.an5
 	
r1   r0   )rP   rZ   r   r   r   r   rA   r   r?   )rB   rC   rD   rE   r   r   r   r   rF   r=   rG   r0   r1   r2   r$   r$   n  sd    
I Hk #L*# !%#'
? 
? 	
?
 !
? 

? 
 
r1   r$   c                      \ rS rSr% SrS\S'   SrS\S'   SrS\S'   SrS\S	'   S
\S'   Sr	S\S'   SSSSSS.             SS jjr
\SS j5       rSrg)r#   i  Nr   r   rP   
int | Nonesizedatetime | Noneupload_timeMapping[str, str]r   r   )r   rP   r   r   r   c                  [         R                  U SU5        [         R                  U SU5        [         R                  U SU5        [         R                  U SU5        [         R                  U SU5        [         R                  U SU5        g )Nr   rP   r   r   r   r   r   )r   r   rP   r   r   r   r   s          r2   r   PackageArchive.__init__  sp     	4,4.4.4<4624>r1   c                   U " [        U[        S5      [        U[        S5      [        U[        S5      [        U[        S5      [	        U[
        [        S5      [        U[        S5      S9n[        UR                  UR                  5        U$ )Nr   rP   r   upload-timer   r   )r   rP   r   r   r   r   )
rl   rZ   rh   r   r   r   r   r   rP   r   )r;   r<   package_archives      r2   r=   PackageArchive._from_dict  su    QU#af%af%Q-8#Aw0@(Kan5
 	?//1D1DEr1   r0   )r   r   rP   r   r   r   r   r   r   r   r   r   rA   r   r?   )rB   rC   rD   rE   r   r   rP   r   r   r   r   rF   r=   rG   r0   r1   r2   r#   r#     s    CD*D*#'K'#L*#
 '+#'? ? 	?
 ? %? "? !? 
?$ 
 
r1   r#   c                      \ rS rSr% SrS\S'   SrS\S'   SrS\S'   SrS\S'   Sr	S	\S
'   S\S'   SSSSSS.             SS jjr
\SS j5       r\SS j5       rSrg)r%   i  Nr   rK   r   r   r   rP   r   r   r   r   rK   r   r   rP   r   c                  [         R                  U SU5        [         R                  U SU5        [         R                  U SU5        [         R                  U SU5        [         R                  U SU5        [         R                  U SU5        g NrK   r   r   rP   r   r   r   r   rK   r   r   rP   r   r   s          r2   r   PackageSdist.__init__  p     	4.4<4,4.4.462r1   c                   U " [        U[        S5      [        U[        S5      [        U[        S5      [        U[        S5      [        U[        S5      [	        U[
        [        S5      S9n[        UR                  UR                  5        U$ NrK   r   r   rP   r   r   )rK   r   r   rP   r   r   
rl   rZ   r   rh   r   r   r   r   rP   r   )r;   r<   package_sdists      r2   r=   PackageSdist._from_dict  u    af%Q-8QU#af%af%#Aw0@(K
 	=--}/@/@Ar1   c                    U R                   =(       d1    [        U R                  5      =(       d    [        U R                  5      nU(       d  [        S5      eU$ )z7Get the filename of the sdist.

.. versionadded:: 26.1
zCannot determine sdist filenamerK   r   rP   r   r   r+   r   filenames     r2   r   PackageSdist.filename  s=     99L
499 5L4889L'(IJJr1   r0   rK   r   r   r   r   r   rP   r   r   r   r   r   rA   r   r?   r   rB   rC   rD   rE   rK   r   r   r   rP   r   r   rF   r=   propertyr   rG   r0   r1   r2   r%   r%     s    D*#'K'CD*D*
  '+3 3 %	3
 3 3 3 "3 
3$ 
 
  r1   r%   c                      \ rS rSr% SrS\S'   SrS\S'   SrS\S'   SrS\S'   Sr	S	\S
'   S\S'   SSSSSS.             SS jjr
\SS j5       r\SS j5       rSrg)r'   i  Nr   rK   r   r   r   rP   r   r   r   r   r   c                  [         R                  U SU5        [         R                  U SU5        [         R                  U SU5        [         R                  U SU5        [         R                  U SU5        [         R                  U SU5        g r   r   r   s          r2   r   PackageWheel.__init__  r   r1   c                   U " [        U[        S5      [        U[        S5      [        U[        S5      [        U[        S5      [        U[        S5      [	        U[
        [        S5      S9n[        UR                  UR                  5        U$ r   r   )r;   r<   package_wheels      r2   r=   PackageWheel._from_dict  r   r1   c                    U R                   =(       d1    [        U R                  5      =(       d    [        U R                  5      nU(       d  [        S5      eU$ )zGet the filename of the wheel.zCannot determine wheel filenamer   r   s     r2   r   PackageWheel.filename  s=     99L
499 5L4889L'(IJJr1   r0   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                  N   \ rS rSr% S\S'   SrS\S'   SrS\S'   SrS	\S
'   SrS\S'   Sr	S\S'   Sr
S\S'   SrS\S'   SrS\S'   SrS\S'   SrS\S'   SrS\S'   SrS\S'   SSSSSSSSSSSSS.                           S!S jjr\S"S j5       r\S#S j5       rS rg)$r"   i  r   rK   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   [         R                  U SU5        [         R                  U SU5        [         R                  U SU5        [         R                  U SU5        [         R                  U SU5        [         R                  U SU5        [         R                  U SU5        [         R                  U SU5        [         R                  U S	U	5        [         R                  U S
U
5        [         R                  U SU5        [         R                  U SU5        [         R                  U SU5        g )NrK   r   r  r  r  r  r
  r  r  r  r  r  r  r   )r   rK   r   r  r  r  r  r
  r  r  r  r  r  r  s                 r2   r   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                   U " [        U[        [        S5      [        U[        [        S5      [        U[        [
        S5      [        U[        S5      [        U[        [        S5      [        U[        S5      [        U[        S5      [        U[        S5      [        U[        S	5      [        U[        S
5      [        U[         S5      [        U[        S5      [        U[        S5      S9n[#        UR$                  5      ['        UR(                  =(       d    / 5      -   n[#        UR*                  5      [#        UR,                  5      -   [#        UR.                  5      -   nUS:  a  US:  a  [1        S5      eUS:X  a  US:w  a  [1        S5      e[3        UR(                  =(       d    / 5       H  u  pV [5        UR6                  5      u  px  n	XrR:                  :w  a*  [1        SUR6                  < SUR:                  < 3SU S3S9eUR<                  (       d  Mk  XR<                  :w  d  M|  [1        SUR6                  < S[        UR<                  5      < 3SU S3S9e   UR$                  (       a   [?        UR$                  R6                  5      u  pxXrR:                  :w  a0  [1        SUR$                  R6                  < SUR:                  < 3S
S9eUR<                  (       aH  XR<                  :w  a9  [1        SUR$                  R6                  < S[        UR<                  5      < 3S
S9e [3        UR@                  =(       d    / 5       H  u  p[[C        U[        S5        M     U$ ! [8         a"  n
[1        SUR6                  < 3SU S3S9U
eS n
A
ff = f! [8         a(  n
[1        SUR$                  R6                  < 3S
S9U
eS n
A
ff = f! [8         a  n
[1        U
SW S3S9U
eS n
A
ff = f)NrK   r   requires-pythonr  r  r  r
  r  r  r  r  zattestation-identitiesr  )rK   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[rr   re   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   rZ   r   r}   r   r   rx   r   r   r   r&   r$   r#   rl   r%   r   r'   rL   r  r   r  r  r
  r  r+   rt   r   r   rz   rK   r   r   r  ro   )r;   r<   packagedistributionsdirect_urlsrv   wheelrK   r   rR   r|   attestation_identitys               r2   r=   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7HA(<U^^(L%1 ||#+u~~0 1$$+LL#35%aSN 
 7oo#=+!%..!3 4''*7??';&>@%aSN  8( == 4W]]5K5K L ||#+w}}558 9$$+LL#35# 
 7oo#=+!'--"8"8!; <''*7??';&>@# 
	+4..4",' 2C@, ]  +-enn-?@%aSN (  +-gmm.D.D-GH# ,  	'4QCq9	sH   1M".!N (8O "
N,N		N
O#N>>O
O$OO$c                J    U R                   =(       d    U R                  (       + $ r.   )r  r  r   s    r2   	is_directPackage.is_direct  s    JJ-$++..r1   r0   )rK   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  rA   r   r?   )rA   rL   )rB   rC   rD   rE   r   r   r  r  r  r  r
  r  r  r  r  r  r  r   rF   r=   r   r!  rG   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                  :   \ rS rSr% SrS\S'   SrS\S'   SrS\S	'   SrS
\S'   Sr	S\S'   Sr
S\S'   S\S'   S\S'   SrS\S'   SSSSSSS.                   SS jjr\SS j5       r\SS j5       rS S jrS!S jrSSSSSS.           S"S jjrSrg)#r(   i  z#A class representing a pylock file.r   lock_versionNSequence[Marker] | NonerX   r  r  Sequence[NormalizedName] | NoneextrasSequence[str] | Nonedependency_groupsdefault_groupsrZ   
created_bySequence[Package]packagesr  r  )rX   r  r'  r)  r*  r  c       	           [         R                  U SU5        [         R                  U SU5        [         R                  U SU5        [         R                  U SU5        [         R                  U SU5        [         R                  U SU5        [         R                  U SU5        [         R                  U SU5        [         R                  U S	U	5        g )
Nr$  rX   r  r'  r)  r*  r+  r-  r  r   )
r   r$  rX   r  r'  r)  r*  r+  r-  r  s
             r2   r   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   U " [        U[        [        S5      [        U[        [        S5      [        U[        [
        S5      [        U[        S5      [        U[        S5      [        U[        S5      [        U[        [        S5      [        U[        S5      [        U[        S	5      S
9	n[        S5      UR                  s=::  a  [        S5      :  d  O  [        SUR                   S35      eUR                  [        S5      :  a   [         R#                  SUR                  5        U$ )Nzlock-versionrX   r'  zdependency-groupszdefault-groupsz
created-byr  r-  r  )	r$  rX   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   rZ   r   r   r   r   rx   ro   r}   r   r   r"   rl   r   r$  r*   _loggerwarning)r;   r<   pylocks      r2   r=   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               $    U R                  U5      $ )zCreate and validate a Pylock instance from a TOML dictionary.

Raises :class:`PylockValidationError` if the input data is not
spec-compliant.
)r=   r:   s     r2   	from_dictPylock.from_dict  s     ~~a  r1   c                4    [         R                  " U [        S9$ )z1Convert the Pylock instance to a TOML dictionary.)dict_factory)dataclassesasdictr`   r   s    r2   to_dictPylock.to_dict  s    !!$5GHHr1   c                B    U R                  U R                  5       5        g)ziValidate the Pylock instance against the specification.

Raises :class:`PylockValidationError` otherwise.N)r8  r>  r   s    r2   validatePylock.validate  s     	t||~&r1   )environmenttagsr'  r)  prefer_sdist_predicatec             #  ,  #    [        Ub  UO	[        5       5      n[        S[        U=(       d    0 [	        U=(       d    / 5      [	        Uc  U R
                  =(       d    / OU5      S95      n[        U(       a  US   O[        5       S   5      nU R                  (       aF  U R                  R                  U5      (       d&  [        SU< S[        U R                  5      < 35      eU R                  (       aH  U R                   H-  n	U	R                  [        SU=(       d    0 5      SS	9(       d  M-    O   [        S
5      e0 n
[        U R                  5       H  u  pUR                   (       a!  UR                   R                  USS	9(       d  M7  UR                  (       aX  UR                  R                  U5      (       d8  [        SU< S[        UR                  5      < SUR"                  < SU S3	5      eUR"                  U
;   a/  [        SUR"                  < SU SXR"                     S    S35      eX4XR"                  '   M     U
R%                  5        GH7  u  pUR&                  b  XR&                  4v   M$  UR(                  b  XR(                  4v   MB  UR*                  b  XR*                  4v   M`  UR,                  b+  Ub(  U" UR"                  5      (       a  XR,                  4v   M  UR.                  (       al  [1        U" S UR.                   5       5      S5      nU(       a  X4v   M  UR,                  b  XR,                  4v   M  [        SUR"                  < SU S35      eUR,                  b  XR,                  4v   GM4  [2        e   g7f)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.

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]requirementre   zXProvided environment does not satisfy any of the environments specified in the lock file	lock_filez for package z at packages[rr   z Multiple packages with the name z are selected at packages[z] and packages[r   c              3  V   #    U  H  nU[        UR                  5      S    4v   M!     g7f)r   N)r   r   )r   r  s     r2   r    Pylock.select.<locals>.<genexpr>  s+      -%3E  4U^^ DR HI%3s   ')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)   rZ   rX   evaluatert   r-  r  rK   r   r  r
  r  r  r  nextNotImplementedError)r   rC  rD  r'  r)  rE  compatible_tags_selectorenvenv_python_full_version
env_markerselected_packages_by_namepackage_indexr  
best_wheels                 r2   selectPylock.select  s    V $C$D(*$
  -!r 2."+(0 ((.B*#
 #> -.$&'<=#
 (<(<(E(E#)
 )
 $&'>&A B"4#7#78;=  "//
&&);+<"=} '   	 0 (>  EG!&/&>"M ~~gnn&=&=c;&=&W &&w/F/F/O/O'0 0 (*+B*E F##&w'>'>#?"B-||&mM?!E  ||88'6w||6F G,,9? ;  9,, G JK1N  8E6N%ll3C '?H '@&F&F&H"M{{&{{** "".0000 ,..
 )*6*7<<88}},, 
 ", -%,^^-  
 !--]].!==00+''.||&6 7''4o 6?@  *}},, *)m 'Is   D)N/I%Nr0   )r$  r   rX   r%  r  r  r'  r&  r)  r(  r*  r(  r+  rZ   r-  r,  r  r  rA   r   r?   )rA   r@   )rA   r   )rC  zEnvironment | NonerD  zSequence[Tag] | Noner'  Collection[str] | Noner)  r[  rE  z'Callable[[NormalizedName], bool] | NonerA   zfIterator[tuple[Package, PackageVcs | PackageDirectory | PackageArchive | PackageWheel | PackageSdist]])rB   rC   rD   rE   r   r   rX   r  r'  r)  r*  r  r   rF   r=   r8  r>  rA  rY  rG   r0   r1   r2   r(   r(     sk   -,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* B*r1   r(   )rA   z	list[str])rP   r   rA   rL   )rU   rZ   rA   rZ   )rU   rZ   r[   r	   rA   r	   )r_   zlist[tuple[str, Any]]rA   zdict[str, Any])r<   r@   rk   type[_T]rU   rZ   rA   z	_T | None)r<   r@   rk   r\  rU   rZ   rA   r4   )r<   r@   ru   r\  rU   rZ   rA   zSequence[_T] | None)
r<   r@   rk   r\  r{   Callable[[_T], _T2]rU   rZ   rA   z
_T2 | None)
r<   r@   rk   r\  r{   r]  rU   rZ   rA   r5   )
r<   r@   ru   r\  r   r]  rU   rZ   rA   zlist[_T2] | None)r<   r@   r{   type[_FromMappingProtocolT]rU   rZ   rA   z_FromMappingProtocolT | None)r<   r@   r   r^  rU   rZ   rA   z"list[_FromMappingProtocolT] | None)r<   r@   r   r^  rU   rZ   rA   zSequence[_FromMappingProtocolT])rK   rZ   rA   r   )rP   r   r   r   rA   r   )rP   r   rA   r   )r   r   rA   r   )r   r@   rA   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   rD  r   r   utilsr   r   r   r   r   r   r   r   pathlibr   typing_extensionsr    r!   	getLoggerrB   r3  r/   r3   r4   r5   r7   rH   compilerM   r,   rV   r]   r`   rl   ro   rx   r}   r   r   r   r   r   r   r   r   r   r   rz   r+   rn   r*   r)   r&   r$   r#   r%   r'   r"   r(   r0   r1   r2   <module>rl     s?   "   	 - !   +  % ;  4&


H
% T]en;8 ;
   7?ST  zz"<= 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   