a
    ç´«j ‰  ã                   @  s¬  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 ,e-¡Z.g d¢Z/ddœdd„Z0edƒZ1edƒZ2G dd„ deƒZ3ede3d�Z4e 5d¡Z6ddd œd!d"„Z7d#d#d$œd%d&„Z8d#d'd'd(œd)d*„Z9d+d,d-œd.d/„Z:d0d1d#d2d3œd4d5„Z;d0d1d#dd3œd6d7„Z<d0d1d#d8d9œd:d;„Z=d0d1d<d#d=d>œd?d@„Z>d0d1d<d#dd>œdAdB„Z?d0d1d<d#dCdDœdEdF„Z@d0dGd#dHdIœdJdK„ZAd0dGd#dLdMœdNdO„ZBd0dGd#dPdMœdQdR„ZCd#dSdTœdUdV„ZDdWdWdXdYœdZd[„ZEdWdWd œd\d]„ZFdWdWd^œd_d`„ZGd0d0daœdbdc„ZHG ddde„ deeIƒZJG dfdg„ dgeJƒZKG dhdi„ dieJƒZLG djdk„ dkeIƒZMedldmdn�G dodp„ dpƒƒZNedldmdn�G dqdr„ drƒƒZOedldmdn�G dsdt„ dtƒƒZPedldmdn�G dudv„ dvƒƒZQedldmdn�G dwdx„ dxƒƒZRedldmdn�G dydz„ dzƒƒZSedldmdn�G d{d|„ d|ƒƒZTdS )}é    )ÚannotationsN)ÚMappingÚSequence)Ú	dataclass)Údatetime)ÚTYPE_CHECKINGÚAnyÚCallableÚProtocolÚTypeVarÚcast)ÚunquoteÚurlparseé   )ÚEnvironmentÚMarkerÚ_pep440_python_full_versionÚdefault_environment)ÚSpecifierSet)Úcreate_compatible_tags_selectorÚsys_tags)ÚNormalizedNameÚis_normalized_nameÚparse_sdist_filenameÚparse_wheel_filename)ÚVersion)Ú
CollectionÚIterator)ÚPath)ÚSelf)ÚTag)ÚPackageÚPackageArchiveÚPackageDirectoryÚPackageSdistÚ
PackageVcsÚPackageWheelÚPylockÚPylockSelectErrorÚPylockUnsupportedVersionErrorÚPylockValidationErrorÚis_valid_pylock_pathz	list[str]©Úreturnc                   C  s   t S ©N)Ú__all__© r0   r0   úO/var/www/html/laksyashrimp/venv/lib/python3.9/site-packages/packaging/pylock.pyÚ__dir__<   s    r2   Ú_TÚ_T2c                   @  s    e Zd Zedddœdd„ƒZdS )Ú_FromMappingProtocolúMapping[str, Any]r   ©Údr-   c                 C  s   d S r.   r0   ©Úclsr8   r0   r0   r1   Ú
_from_dictE   s    z_FromMappingProtocol._from_dictN)Ú__name__Ú
__module__Ú__qualname__Úclassmethodr;   r0   r0   r0   r1   r5   D   s   r5   Ú_FromMappingProtocolT)Úboundz^pylock\.([^.]+)\.toml$r   Úbool)Úpathr-   c                 C  s   | j dkptt | j ¡ƒS )z4Check if the given path is a valid pylock file path.zpylock.toml)ÚnamerB   Ú_PYLOCK_FILE_NAME_REÚmatch©rC   r0   r0   r1   r+   O   s    r+   Ústr©Úkeyr-   c                 C  s   |   dd¡S )NÚ_ú-)Úreplace)rJ   r0   r0   r1   Ú	_toml_keyT   s    rN   r   )rJ   Úvaluer-   c                 C  s<   t |tttfƒrt|ƒS t |tƒr8| dkr8dd„ |D ƒS |S )NÚenvironmentsc                 S  s   g | ]}t |ƒ‘qS r0   )rH   )Ú.0Úvr0   r0   r1   Ú
<listcomp>\   ó    z_toml_value.<locals>.<listcomp>)Ú
isinstancer   r   r   rH   r   )rJ   rO   r0   r0   r1   Ú_toml_valueX   s
    rV   zlist[tuple[str, Any]]zdict[str, Any])Údatar-   c                 C  s   dd„ | D ƒS )Nc                 S  s(   i | ] \}}|d urt |ƒt||ƒ“qS r.   )rN   rV   )rQ   rJ   rO   r0   r0   r1   Ú
<dictcomp>a   s   þz&_toml_dict_factory.<locals>.<dictcomp>r0   )rW   r0   r0   r1   Ú_toml_dict_factory`   s    þrY   r6   ztype[_T]z	_T | None)r8   Úexpected_typerJ   r-   c                 C  sX   |   |¡ }du rdS t||ƒr2|tu rTt|tƒrTtdt|ƒj› d|j› d�|d�‚|S )zBGet a value from the dictionary and verify it's the expected type.NúUnexpected type ú (expected ú)©Úcontext)ÚgetrU   ÚintrB   r*   Útyper<   ©r8   rZ   rJ   rO   r0   r0   r1   Ú_geth   s    
þþÿýrd   c                 C  s    t | ||ƒ }du rt|ƒ‚|S )zKGet a required value from the dictionary and verify it's the expected type.N)rd   Ú_PylockRequiredKeyErrorrc   r0   r0   r1   Ú_get_requiredx   s    rf   zSequence[_T] | None)r8   Úexpected_item_typerJ   r-   c                 C  sŽ   t | t|ƒ }du rdS t|ttfƒr@tdt|ƒj› d�|d�‚t|ƒD ]@\}}t||ƒsHtdt|ƒj› d|j› d�|› d|› d�d�‚qH|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   rU   rH   Úbytesr*   rb   r<   Ú	enumerate)r8   rg   rJ   rO   ÚiÚitemr0   r0   r1   Ú_get_sequence   s     þ
ÿýrn   zCallable[[_T], _T2]z
_T2 | None)r8   rZ   Útarget_typerJ   r-   c              
   C  sZ   t | ||ƒ }du rdS z
||ƒW S  tyT } zt||d�|‚W Y d}~n
d}~0 0 dS )z©Get 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   rZ   ro   rJ   rO   Úer0   r0   r1   Ú_get_as•   s    
rr   c                 C  s"   t | |||ƒ }du rt|ƒ‚|S )zfGet a required value from the dict, verify it's the expected type,
    and convert to the target type.N)rr   re   )r8   rZ   ro   rJ   rO   r0   r0   r1   Ú_get_required_as¨   s    rs   zlist[_T2] | None)r8   rg   Útarget_item_typerJ   r-   c           	   
   C  s„   t | ||ƒ }du rdS g }z |D ]}||ƒ}| |¡ q"W nB ty~ } z*t||› dt|ƒ› d�d�|‚W Y d}~n
d}~0 0 |S )z>Get list value from dictionary and verify expected items type.Nrh   ri   r^   )rn   Úappendrp   r*   Úlen)	r8   rg   rt   rJ   rO   Úresultrm   Ú
typed_itemrq   r0   r0   r1   Ú_get_sequence_asµ   s    4ry   ztype[_FromMappingProtocolT]z_FromMappingProtocolT | None)r8   ro   rJ   r-   c              
   C  s\   t | t|ƒ }du rdS z| |¡W S  tyV } zt||d�|‚W Y d}~n
d}~0 0 dS )zIGet a dictionary value from the dictionary and convert it to a dataclass.Nr^   )rd   r   r;   rp   r*   )r8   ro   rJ   rO   rq   r0   r0   r1   Ú_get_objectÈ   s    rz   z"list[_FromMappingProtocolT] | None)r8   rt   rJ   r-   c              
   C  s†   t | t|ƒ }du rdS g }z"|D ]}| |¡}| |¡ q"W nB ty€ } z*t||› dt|ƒ› d�d�|‚W Y d}~n
d}~0 0 |S )zJGet a list value from the dictionary and convert its items to a dataclass.Nrh   ri   r^   )rn   r   r;   ru   rp   r*   rv   )r8   rt   rJ   rO   rw   rm   rx   rq   r0   r0   r1   Ú_get_sequence_of_objectsÔ   s    
4r{   zSequence[_FromMappingProtocolT]c                 C  s    t | ||ƒ }du rt|ƒ‚|S )zWGet a required list value from the dictionary and convert its items to a
    dataclass.N)r{   re   )r8   rt   rJ   rw   r0   r0   r1   Ú!_get_required_sequence_of_objectsä   s    r|   r   )rD   r-   c                 C  s    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   r0   r0   r1   Ú_validate_normalized_nameî   s    r}   ú
str | NoneÚNone)rC   Úurlr-   c                 C  s   | s|st dƒ‚d S )Nzpath or url must be provided)r*   )rC   r€   r0   r0   r1   Ú_validate_path_urlõ   s    r�   c                 C  s@   | sd S d| v r |   dd¡d S d| v r8|   dd¡d S | S d S )Nú/r   éÿÿÿÿú\)ÚrsplitrG   r0   r0   r1   Ú
_path_nameú   s    r†   )r€   r-   c                 C  s&   | sd S t | ƒj}t| dd¡d ƒS )Nr‚   r   rƒ   )r   rC   r   r…   )r€   Zurl_pathr0   r0   r1   Ú	_url_name  s    
r‡   )Úhashesr-   c                 C  s.   | st dƒ‚tdd„ |  ¡ D ƒƒs*t dƒ‚| S )Nz"At least one hash must be providedc                 s  s   | ]}t |tƒV  qd S r.   )rU   rH   )rQ   Zhash_valr0   r0   r1   Ú	<genexpr>  rT   z#_validate_hashes.<locals>.<genexpr>zHash values must be strings)r*   ÚallÚvalues)rˆ   r0   r0   r1   Ú_validate_hashes  s
    rŒ   c                   @  sL   e Zd ZU dZdZded< ded< ddœddd	d
œdd„Zddœdd„ZdS )r*   z2Raised when when input data is not spec-compliant.Nr~   r_   rH   Úmessager^   zstr | Exceptionr   )Úcauser_   r-   c                C  sR   t |tƒr>|jr.|r$|› d|j› �n|j| _n|| _|j| _n|| _t|ƒ| _d S )NÚ.)rU   r*   r_   r�   rH   )ÚselfrŽ   r_   r0   r0   r1   Ú__init__  s    
ÿ
zPylockValidationError.__init__r,   c                 C  s   | j r| j› d| j ›�S | jS )Nz in )r_   r�   ©r�   r0   r0   r1   Ú__str__/  s    zPylockValidationError.__str__)r<   r=   r>   Ú__doc__r_   Ú__annotations__r‘   r“   r0   r0   r0   r1   r*     s   
ür*   c                      s$   e Zd Zdddœ‡ fdd„Z‡  ZS )re   rH   r   rI   c                   s   t ƒ jd|d� d S )NzMissing required valuer^   )Úsuperr‘   )r�   rJ   ©Ú	__class__r0   r1   r‘   6  s    z _PylockRequiredKeyError.__init__)r<   r=   r>   r‘   Ú__classcell__r0   r0   r—   r1   re   5  s   re   c                   @  s   e Zd ZdZdS )r)   z7Raised when encountering an unsupported `lock_version`.N©r<   r=   r>   r”   r0   r0   r0   r1   r)   :  s   r)   c                   @  s   e Zd ZdZdS )r(   z[Base exception for errors raised by :meth:`Pylock.select`.

    .. versionadded:: 26.1
    Nrš   r0   r0   r0   r1   r(   >  s   r(   TF)ÚfrozenÚinitc                	   @  sˆ   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ddddddœdd„Ze	dddœdd„ƒZ
dS )r%   rH   rb   Nr~   r€   rC   Úrequested_revisionÚ	commit_idÚsubdirectory)r€   rC   r�   rŸ   r   )rb   r€   rC   r�   rž   rŸ   r-   c                C  sX   t  | d|¡ t  | d|¡ t  | d|¡ t  | d|¡ t  | d|¡ t  | d|¡ d S )Nrb   r€   rC   r�   rž   rŸ   ©ÚobjectÚ__setattr__)r�   rb   r€   rC   r�   rž   rŸ   r0   r0   r1   r‘   N  s    zPackageVcs.__init__r6   r   r7   c              
   C  sV   | t |tdƒt|tdƒt|tdƒt|tdƒt |tdƒt|tdƒd�}t|j|jƒ |S )Nrb   r€   rC   zrequested-revisionz	commit-idrŸ   )rb   r€   rC   r�   rž   rŸ   )rf   rH   rd   r�   rC   r€   )r:   r8   Zpackage_vcsr0   r0   r1   r;   `  s    





úzPackageVcs._from_dict)r<   r=   r>   r•   r€   rC   r�   rŸ   r‘   r?   r;   r0   r0   r0   r1   r%   E  s   
ør%   c                   @  s^   e Zd ZU ded< dZded< dZded< dddœdddd	d
œdd„Zedddœdd„ƒZdS )r#   rH   rC   Nzbool | NoneÚeditabler~   rŸ   )r£   rŸ   r   )rC   r£   rŸ   r-   c                C  s.   t  | d|¡ t  | d|¡ t  | d|¡ d S )NrC   r£   rŸ   r    )r�   rC   r£   rŸ   r0   r0   r1   r‘   t  s    zPackageDirectory.__init__r6   r   r7   c                 C  s&   | t |tdƒt|tdƒt|tdƒd�S )NrC   r£   rŸ   )rC   r£   rŸ   )rf   rH   rd   rB   r9   r0   r0   r1   r;   €  s
    


ýzPackageDirectory._from_dict)	r<   r=   r>   r•   r£   rŸ   r‘   r?   r;   r0   r0   r0   r1   r#   n  s   
ûr#   c                	   @  sŽ   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ddd	dddœdd„Z	e
dddœdd„ƒZdS )r"   Nr~   r€   rC   ú
int | NoneÚsizeúdatetime | NoneÚupload_timeúMapping[str, str]rˆ   rŸ   )r€   rC   r¥   r§   rŸ   r   )r€   rC   r¥   r§   rˆ   rŸ   r-   c                C  sX   t  | d|¡ t  | d|¡ t  | d|¡ t  | d|¡ t  | d|¡ t  | d|¡ d S )Nr€   rC   r¥   r§   rˆ   rŸ   r    )r�   r€   rC   r¥   r§   rˆ   rŸ   r0   r0   r1   r‘   ’  s    zPackageArchive.__init__r6   r   r7   c              
   C  sX   | t |tdƒt |tdƒt |tdƒt |tdƒt|ttdƒt |tdƒd�}t|j|j	ƒ |S )Nr€   rC   r¥   úupload-timerˆ   rŸ   )r€   rC   r¥   r§   rˆ   rŸ   )
rd   rH   ra   r   rs   r   rŒ   r�   rC   r€   )r:   r8   Zpackage_archiver0   r0   r1   r;   ¤  s    




úzPackageArchive._from_dict)r<   r=   r>   r€   r•   rC   r¥   r§   rŸ   r‘   r?   r;   r0   r0   r0   r1   r"   ‰  s   
ør"   c                	   @  s    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dddd
ddœdd„Z	e
dddœdd„ƒZeddœdd„ƒZdS )r$   Nr~   rD   r¦   r§   r€   rC   r¤   r¥   r¨   rˆ   ©rD   r§   r€   rC   r¥   r   ©rD   r§   r€   rC   r¥   rˆ   r-   c                C  sX   t  | d|¡ t  | d|¡ t  | d|¡ t  | d|¡ t  | d|¡ t  | d|¡ d S ©NrD   r§   r€   rC   r¥   rˆ   r    ©r�   rD   r§   r€   rC   r¥   rˆ   r0   r0   r1   r‘   »  s    zPackageSdist.__init__r6   r   r7   c                 C  sX   | t |tdƒt |tdƒt |tdƒt |tdƒt |tdƒt|ttdƒd�}t|j|j	ƒ |S ©NrD   r©   r€   rC   r¥   rˆ   )rD   r§   r€   rC   r¥   rˆ   ©
rd   rH   r   ra   rs   r   rŒ   r�   rC   r€   )r:   r8   Zpackage_sdistr0   r0   r1   r;   Í  s    




úzPackageSdist._from_dictrH   r,   c                 C  s*   | j pt| jƒpt| jƒ}|s&tdƒ‚|S )zGGet the filename of the sdist.

        .. versionadded:: 26.1
        zCannot determine sdist filename©rD   r†   rC   r‡   r€   r*   ©r�   Úfilenamer0   r0   r1   r²   Ú  s    zPackageSdist.filename©r<   r=   r>   rD   r•   r§   r€   rC   r¥   r‘   r?   r;   Úpropertyr²   r0   r0   r0   r1   r$   ²  s    
ùr$   c                	   @  s    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dddd
ddœdd„Z	e
dddœdd„ƒZeddœdd„ƒZdS )r&   Nr~   rD   r¦   r§   r€   rC   r¤   r¥   r¨   rˆ   rª   r   r«   c                C  sX   t  | d|¡ t  | d|¡ t  | d|¡ t  | d|¡ t  | d|¡ t  | d|¡ d S r¬   r    r­   r0   r0   r1   r‘   ï  s    zPackageWheel.__init__r6   r   r7   c                 C  sX   | t |tdƒt |tdƒt |tdƒt |tdƒt |tdƒt|ttdƒd�}t|j|j	ƒ |S r®   r¯   )r:   r8   Zpackage_wheelr0   r0   r1   r;     s    




úzPackageWheel._from_dictrH   r,   c                 C  s*   | j pt| jƒpt| jƒ}|s&tdƒ‚|S )zGet the filename of the wheel.zCannot determine wheel filenamer°   r±   r0   r0   r1   r²     s    zPackageWheel.filenamer³   r0   r0   r0   r1   r&   æ  s    
ùr&   c                   @  s  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ddd
ddddddd
dddœdd„Zed d!d"œd#d$„ƒZed%d&œd'd(„ƒZdS ))r!   r   rD   NzVersion | NoneÚversionzMarker | NoneÚmarkerúSpecifierSet | NoneÚrequires_pythonz"Sequence[Mapping[str, Any]] | NoneÚdependencieszPackageVcs | NoneÚvcszPackageDirectory | NoneÚ	directoryzPackageArchive | NoneÚarchiver~   ÚindexzPackageSdist | NoneÚsdistzSequence[PackageWheel] | NoneÚwheelsÚattestation_identitiesúMapping[str, Any] | NoneÚtool)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Â   r-   c                C  sº   t  | d|¡ t  | d|¡ t  | d|¡ t  | d|¡ t  | d|¡ t  | d|¡ t  | d|¡ t  | d|¡ t  | d	|	¡ t  | d
|
¡ t  | d|¡ t  | d|¡ t  | d|¡ d S )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Â   r0   r0   r1   r‘   '  s    zPackage.__init__r6   r   r7   c                 C  s  | 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ƒd�}t|jƒt|jp¤g ƒ }t|jƒt|jƒ t|jƒ }|dkrà|dkràtdƒ‚|dkrø|dkrøtdƒ‚t|j�pg ƒD ]Ò\}}zt|jƒ\}}}	}	W nD t�yj }
 z*td|j›�d|› d�d�|
‚W Y d }
~
n
d }
~
0 0 ||jk�rœtd|j›d|j›�d|› d�d�‚|j�r||jk�rtd|j›dt|jƒ›�d|› d�d�‚�q|j�r˜zt|jjƒ\}}W n> t�y6 }
 z$td|jj›�d
d�|
‚W Y d }
~
n
d }
~
0 0 ||jk�rbtd|jj›d|j›�d
d�‚|j�r˜||jk�r˜td|jj›dt|jƒ›�d
d�‚z,t|j �p¦g ƒD ]\}}t!|tdƒ �qªW n< t�y  }
 z"t|
d|› d�d�|
‚W Y d }
~
n
d }
~
0 0 |S )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[ri   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[)"rs   rH   r}   rr   r   r   rn   r   r   rz   r%   r#   r"   rd   r$   r{   r&   rB   r¾   rv   r¿   rº   r»   r¼   r*   rk   r   r²   rp   rD   rµ   r   rÀ   rf   )r:   r8   ÚpackageÚdistributionsZdirect_urlsrl   ÚwheelrD   rµ   rK   rq   Zattestation_identityr0   r0   r1   r;   G  s¬    








óÿÿÿ

þý
ÿ
ý
ÿ
ý
þýÿýÿý
ÿÿþzPackage._from_dictrB   r,   c                 C  s   | j p
| j S r.   )r¾   r¿   r’   r0   r0   r1   Ú	is_direct˜  s    zPackage.is_direct)r<   r=   r>   r•   rµ   r¶   r¸   r¹   rº   r»   r¼   r½   r¾   r¿   rÀ   rÂ   r‘   r?   r;   r´   rÈ   r0   r0   r0   r1   r!     s<   
ñ, Pr!   c                   @  s  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dd	dddddddœ
dd„Zedddœdd„ƒZedddœdd„ƒZdd œd!d"„Zdd œd#d$„Zdddddd%œd&d'd(d(d)d*d+œd,d-„ZdS ).r'   z#A class representing a pylock file.r   Úlock_versionNzSequence[Marker] | NonerP   r·   r¸   zSequence[NormalizedName] | NoneÚextraszSequence[str] | NoneÚdependency_groupsÚdefault_groupsrH   Ú
created_byzSequence[Package]ÚpackagesrÁ   rÂ   )rP   r¸   rÊ   rË   rÌ   rÂ   r   )
rÉ   rP   r¸   rÊ   rË   rÌ   rÍ   rÎ   rÂ   r-   c       	   
      C  s‚   t  | d|¡ t  | d|¡ t  | d|¡ t  | d|¡ t  | d|¡ t  | d|¡ t  | d|¡ t  | d|¡ t  | d	|	¡ d S )
NrÉ   rP   r¸   rÊ   rË   rÌ   rÍ   rÎ   rÂ   r    )
r�   rÉ   rP   r¸   rÊ   rË   rÌ   rÍ   rÎ   rÂ   r0   r0   r1   r‘   «  s    zPylock.__init__r6   r   r7   c                 C  s¼   | 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	ƒd
�	}tdƒ|j  krˆtdƒk sœn td|j› d�ƒ‚|jtdƒkr¸t d|j¡ |S )Nzlock-versionrP   rÊ   zdependency-groupszdefault-groupsz
created-byrÃ   rÎ   rÂ   )	rÉ   rP   rÊ   rË   rÌ   rÍ   r¸   rÎ   rÂ   Ú1Ú2zpylock version z is not supportedz1.0z(pylock minor version %s is not supported)rs   rH   r   ry   r   r}   rn   rf   rr   r   r|   r!   rd   r   rÉ   r)   Ú_loggerÚwarning)r:   r8   Zpylockr0   r0   r1   r;   Ã  s(    




÷ ÿÿzPylock._from_dictc                C  s
   |   |¡S )z¦Create and validate a Pylock instance from a TOML dictionary.

        Raises :class:`PylockValidationError` if the input data is not
        spec-compliant.
        )r;   r9   r0   r0   r1   Ú	from_dictÚ  s    zPylock.from_dictr,   c                 C  s   t j| td�S )z1Convert the Pylock instance to a TOML dictionary.)Údict_factory)ÚdataclassesÚasdictrY   r’   r0   r0   r1   Úto_dictã  s    zPylock.to_dictc                 C  s   |   |  ¡ ¡ dS )zqValidate the Pylock instance against the specification.

        Raises :class:`PylockValidationError` otherwise.N)rÓ   r×   r’   r0   r0   r1   Úvalidateç  s    zPylock.validate)ÚenvironmentÚtagsrÊ   rË   Úprefer_sdist_predicatezEnvironment | NonezSequence[Tag] | NonezCollection[str] | Nonez'Callable[[NormalizedName], bool] | NonezfIterator[tuple[Package, PackageVcs | PackageDirectory | PackageArchive | PackageWheel | PackageSdist]])rÙ   rÚ   rÊ   rË   rÛ   r-   c                c  s˜  t |dur|ntƒ ƒ}tdt|p"i t|p*g ƒt|du r@| jpBg n|ƒd�ƒ}t|rZ|d ntƒ d ƒ}| jr’| j 	|¡s’t
d|›dt| jƒ›�ƒ‚| jrÈ| jD ] }	|	jtd|p°i ƒdd	�rž qÈqžt
d
ƒ‚i }
t| jƒD ]¢\}}|jrö|jj|dd	�söqÖ|j�r6|j 	|¡�s6t
d|›dt|jƒ›d|j›d|› d�	ƒ‚|j|
v �rjt
d|j›d|› d|
|j d › d�ƒ‚||f|
|j< qÖ|
 ¡ D �]\}}|jdu�r¦||jfV  nê|jdu�rÀ||jfV  nÐ|jdu�rÚ||jfV  n¶|jdu�r
|du�r
||jƒ�r
||jfV  n†|j�rrt|dd„ |jD ƒƒdƒ}|�r>||fV  n2|jdu�rX||jfV  nt
d|j›d|› d�ƒ‚n|jdu�rŒ||jfV  nt‚�q‚dS )aR  Select what to install from the lock file.

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

        The *extras* parameter represents the extras to install.

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

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

        This method must be used on valid Pylock instances (i.e. one obtained
        from :meth:`Pylock.from_dict` or if constructed manually, after calling
        :meth:`Pylock.validate`).

        .. versionadded:: 26.1

        .. versionchanged:: 26.3
            Added the *prefer_sdist_predicate* parameter.
        Nzdict[str, str | frozenset[str]])rÊ   rË   Úpython_full_versionzpython_full_version zI in provided environment does not satisfy the Python version requirement zdict[str, str]Úrequirementr^   zXProvided environment does not satisfy any of the environments specified in the lock fileZ	lock_filez for package z at packages[ri   z Multiple packages with the name z are selected at packages[z] and packages[r   c                 s  s    | ]}|t |jƒd  fV  qdS )rƒ   N)r   r²   )rQ   rÇ   r0   r0   r1   r‰   –  s   ÿz Pylock.select.<locals>.<genexpr>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(   rH   rP   Úevaluaterk   rÎ   r¶   rD   r‹   rº   r»   r¼   r¾   r¿   ÚnextÚNotImplementedError)r�   rÙ   rÚ   rÊ   rË   rÛ   Zcompatible_tags_selectorÚenvZenv_python_full_versionZ
env_markerZselected_packages_by_nameZpackage_indexrÅ   Z
best_wheelr0   r0   r1   Úselectí  sÂ    +ÿ

ÿýýþÿ
ýÿþÿ	
ÿÿÿþýýÿ	
ÿþÿÿþýþûÿþÿ	zPylock.select)r<   r=   r>   r”   r•   rP   r¸   rÊ   rË   rÌ   rÂ   r‘   r?   r;   rÓ   r×   rØ   rå   r0   r0   r0   r1   r'   �  s:   
õ$	ù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   Ztyping_extensionsr   r    Ú	getLoggerr<   rÑ   r/   r2   r3   r4   r5   r@   ÚcompilerE   r+   rN   rV   rY   rd   rf   rn   rr   rs   ry   rz   r{   r|   r}   r�   r†   r‡   rŒ   rp   r*   re   r)   r(   r%   r#   r"   r$   r&   r!   r'   r0   r0   r0   r1   Ú<module>   s~    



(

(
3
0
 
