o
    Éó·i	X  ã                   @  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 ddlmZ dd	lmZ dd
lmZmZ ddlmZ er\d dlmZ d dlmZ e e¡Zg d¢Z edƒZ!edƒZ"G dd„ deƒZ#ede#d�Z$e %d¡Z&dndd„Z'dodd„Z(dpd"d#„Z)dqd'd(„Z*drd.d/„Z+dsd0d1„Z,dtd4d5„Z-dud9d:„Z.dvd;d<„Z/dwd?d@„Z0dxdCdD„Z1dydFdG„Z2dzdIdJ„Z3d{dMdN„Z4d|dRdS„Z5d}dUdV„Z6G dWdX„ dXe7ƒZ8G dYdZ„ dZe8ƒZ9G d[d\„ d\e8ƒZ:ed]d^d_�G d`da„ daƒƒZ;ed]d^d_�G dbdc„ dcƒƒZ<ed]d^d_�G ddde„ deƒƒZ=ed]d^d_�G dfdg„ dgƒƒZ>ed]d^d_�G dhdi„ diƒƒZ?ed]d^d_�G djdk„ dkƒƒZ@ed]d^d_�G dldm„ dmƒƒZAdS )~é    )ÚannotationsN)ÚMappingÚSequence)Ú	dataclass)Údatetime)ÚTYPE_CHECKINGÚAnyÚCallableÚProtocolÚTypeVaré   )ÚMarker)ÚSpecifierSet)ÚNormalizedNameÚis_normalized_name)ÚVersion)ÚPath)ÚSelf)
ÚPackageÚPackageArchiveÚPackageDirectoryÚPackageSdistÚ
PackageVcsÚPackageWheelÚPylockÚPylockUnsupportedVersionErrorÚPylockValidationErrorÚis_valid_pylock_pathÚ_TÚ_T2c                   @  s   e Zd Zeddd„ƒZdS )	Ú_FromMappingProtocolÚdúMapping[str, Any]Úreturnr   c                 C  s   d S ©N© ©Úclsr!   r%   r%   úVC:\Users\psant\Downloads\PAF backend\school\venv\Lib\site-packages\packaging/pylock.pyÚ
_from_dict/   s   z_FromMappingProtocol._from_dictN©r!   r"   r#   r   )Ú__name__Ú
__module__Ú__qualname__Úclassmethodr)   r%   r%   r%   r(   r    .   s    r    Ú_FromMappingProtocolT)Úboundz^pylock\.([^.]+)\.toml$Úpathr   r#   Úboolc                 C  s   | j dkptt | j ¡ƒS )z4Check if the given path is a valid pylock file path.zpylock.tomlN)Únamer2   Ú_PYLOCK_FILE_NAME_REÚmatch)r1   r%   r%   r(   r   9   s   r   ÚkeyÚstrc                 C  s   |   dd¡S )NÚ_ú-)Úreplace)r6   r%   r%   r(   Ú	_toml_key>   s   r;   Úvaluer   c                 C  s<   t |tttfƒrt|ƒS t |tƒr| dkrdd„ |D ƒS |S )NÚenvironmentsc                 S  s   g | ]}t |ƒ‘qS r%   )r7   )Ú.0Úvr%   r%   r(   Ú
<listcomp>F   s    z_toml_value.<locals>.<listcomp>)Ú
isinstancer   r   r   r7   r   )r6   r<   r%   r%   r(   Ú_toml_valueB   s
   rB   Údataúlist[tuple[str, Any]]údict[str, Any]c                 C  s   dd„ | D ƒS )Nc                 S  s(   i | ]\}}|d urt |ƒt||ƒ“qS r$   )r;   rB   )r>   r6   r<   r%   r%   r(   Ú
<dictcomp>K   s    ýÿz&_toml_dict_factory.<locals>.<dictcomp>r%   )rC   r%   r%   r(   Ú_toml_dict_factoryJ   s   þrG   r!   r"   Úexpected_typeútype[_T]ú	_T | Nonec                 C  sF   |   |¡ }du rdS t||ƒs!t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)ÚgetrA   r   Útyper+   ©r!   rH   r6   r<   r%   r%   r(   Ú_getR   s   
ÿýrS   c                 C  ó    t | ||ƒ }du rt|ƒ‚|S )zKGet a required value from the dictionary and verify it's the expected type.N)rS   Ú_PylockRequiredKeyErrorrR   r%   r%   r(   Ú_get_required_   s   rV   Úexpected_item_typeúSequence[_T] | Nonec                 C  sŽ   t | t|ƒ }du rdS t|ttfƒr tdt|ƒj› d�|d�‚t|ƒD ] \}}t||ƒsDtdt|ƒj› d|j› d�|› d|› d�d�‚q$|S )	zMGet a list value from the dictionary and verify it's the expected items type.NrK   z (expected Sequence)rN   rL   rM   ú[ú])	rS   r   rA   r7   Úbytesr   rQ   r+   Ú	enumerate)r!   rW   r6   r<   ÚiÚitemr%   r%   r(   Ú_get_sequencef   s"   þ
ÿýÿr_   Útarget_typeúCallable[[_T], _T2]ú
_T2 | Nonec              
   C  sJ   t | ||ƒ }du rdS z||ƒW S  ty$ } zt||d�|‚d}~ww )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.
    NrN   )rS   Ú	Exceptionr   )r!   rH   r`   r6   r<   Úer%   r%   r(   Ú_get_as|   s   
€ÿre   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)re   rU   )r!   rH   r`   r6   r<   r%   r%   r(   Ú_get_required_as�   s   rf   Útarget_item_typeúlist[_T2] | Nonec           	   
   C  sv   t | ||ƒ }du rdS g }z|D ]}||ƒ}| |¡ qW |S  ty: } zt||› dt|ƒ› d�d�|‚d}~ww )z>Get list value from dictionary and verify expected items type.NrY   rZ   rN   )r_   Úappendrc   r   Úlen)	r!   rW   rg   r6   r<   Úresultr^   Ú
typed_itemrd   r%   r%   r(   Ú_get_sequence_asœ   s   þþ€ÿrm   útype[_FromMappingProtocolT]ú_FromMappingProtocolT | Nonec              
   C  sL   t | t|ƒ }du rdS z| |¡W S  ty% } zt||d�|‚d}~ww )zIGet a dictionary value from the dictionary and convert it to a dataclass.NrN   )rS   r   r)   rc   r   )r!   r`   r6   r<   rd   r%   r%   r(   Ú_get_object¯   s   €ÿrp   ú"list[_FromMappingProtocolT] | Nonec              
   C  sx   t | t|ƒ }du rdS g }z|D ]}| |¡}| |¡ qW |S  ty; } zt||› dt|ƒ› d�d�|‚d}~ww )zJGet a list value from the dictionary and convert its items to a dataclass.NrY   rZ   rN   )r_   r   r)   ri   rc   r   rj   )r!   rg   r6   r<   rk   r^   rl   rd   r%   r%   r(   Ú_get_sequence_of_objects»   s   
þþ€ÿrr   úSequence[_FromMappingProtocolT]c                 C  rT   )zWGet a required list value from the dictionary and convert its items to a
    dataclass.N)rr   rU   )r!   rg   r6   rk   r%   r%   r(   Ú!_get_required_sequence_of_objectsË   s   rt   r3   r   c                 C  s    t | ƒstd| ›d�ƒ‚t| ƒS )z+Validate that a string is a NormalizedName.zName z is not normalizedN)r   r   r   )r3   r%   r%   r(   Ú_validate_normalized_nameÕ   s   ru   ú
str | NoneÚurlÚNonec                 C  s   | s|s
t dƒ‚d S d S )Nzpath or url must be provided)r   )r1   rw   r%   r%   r(   Ú_validate_path_urlÜ   s   ÿry   Úhashesc                 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$   )rA   r7   )r>   Zhash_valr%   r%   r(   Ú	<genexpr>ä   s   € z#_validate_hashes.<locals>.<genexpr>zHash values must be strings)r   ÚallÚvalues)rz   r%   r%   r(   Ú_validate_hashesá   s
   r~   c                   @  s@   e Zd ZU dZdZded< ded< ddœddd„Zddd„ZdS )r   z2Raised when when input data is not spec-compliant.Nrv   rO   r7   ÚmessagerN   Úcauseústr | Exceptionr#   rx   c                C  sT   t |tƒr |jr|r|› d|j› �n|j| _n|| _|j| _d S || _t|ƒ| _d S )NÚ.)rA   r   rO   r   r7   )Úselfr€   rO   r%   r%   r(   Ú__init__ï   s   
ÿzPylockValidationError.__init__c                 C  s   | j r| j› d| j ›�S | jS )Nz in )rO   r   ©rƒ   r%   r%   r(   Ú__str__  s   zPylockValidationError.__str__)r€   r�   rO   rv   r#   rx   )r#   r7   )r+   r,   r-   Ú__doc__rO   Ú__annotations__r„   r†   r%   r%   r%   r(   r   é   s   
 ür   c                      s   e Zd Zd‡ fdd„Z‡  ZS )rU   r6   r7   r#   rx   c                   s   t ƒ jd|d� d S )NzMissing required valuerN   )Úsuperr„   )rƒ   r6   ©Ú	__class__r%   r(   r„     s   z _PylockRequiredKeyError.__init__)r6   r7   r#   rx   )r+   r,   r-   r„   Ú__classcell__r%   r%   rŠ   r(   rU     s    rU   c                   @  s   e Zd ZdZdS )r   z7Raised when encountering an unsupported `lock_version`.N)r+   r,   r-   r‡   r%   r%   r%   r(   r     s    r   TF)ÚfrozenÚinitc                   @  sr   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„Ze	ddd„ƒZ
dS )r   r7   rQ   Nrv   rw   r1   Úrequested_revisionÚ	commit_idÚsubdirectory)rw   r1   r�   r‘   r#   rx   c                C  óX   t  | d|¡ t  | d|¡ t  | d|¡ t  | d|¡ t  | d|¡ t  | d|¡ d S )NrQ   rw   r1   r�   r�   r‘   ©ÚobjectÚ__setattr__)rƒ   rQ   rw   r1   r�   r�   r‘   r%   r%   r(   r„     ó   zPackageVcs.__init__r!   r"   r   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 )NrQ   rw   r1   zrequested-revisionz	commit-idr‘   )rQ   rw   r1   r�   r�   r‘   )rV   r7   rS   ry   r1   rw   )r'   r!   Zpackage_vcsr%   r%   r(   r)   +  s   





úzPackageVcs._from_dict)rQ   r7   rw   rv   r1   rv   r�   rv   r�   r7   r‘   rv   r#   rx   r*   )r+   r,   r-   rˆ   rw   r1   r�   r‘   r„   r.   r)   r%   r%   r%   r(   r     s   
 ør   c                   @  sN   e Zd ZU ded< dZded< dZded< dddœddd„Zeddd„ƒZdS )r   r7   r1   Núbool | NoneÚeditablerv   r‘   )r˜   r‘   r#   rx   c                C  s.   t  | d|¡ t  | d|¡ t  | d|¡ d S )Nr1   r˜   r‘   r“   )rƒ   r1   r˜   r‘   r%   r%   r(   r„   ?  s   zPackageDirectory.__init__r!   r"   r   c                 C  s&   | t |tdƒt|tdƒt|tdƒd�S )Nr1   r˜   r‘   )r1   r˜   r‘   )rV   r7   rS   r2   r&   r%   r%   r(   r)   K  s
   


ýzPackageDirectory._from_dict)r1   r7   r˜   r—   r‘   rv   r#   rx   r*   )	r+   r,   r-   rˆ   r˜   r‘   r„   r.   r)   r%   r%   r%   r(   r   9  s   
 ûr   c                   @  sx   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„Z	e
ddd„ƒZdS )r   Nrv   rw   r1   ú
int | NoneÚsizeúdatetime | NoneÚupload_timeúMapping[str, str]rz   r‘   )rw   r1   rš   rœ   r‘   r#   rx   c                C  r’   )Nrw   r1   rš   rœ   rz   r‘   r“   )rƒ   rw   r1   rš   rœ   rz   r‘   r%   r%   r(   r„   ]  r–   zPackageArchive.__init__r!   r"   r   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 )Nrw   r1   rš   úupload-timerz   r‘   )rw   r1   rš   rœ   rz   r‘   )
rS   r7   Úintr   rf   r   r~   ry   r1   rw   )r'   r!   Zpackage_archiver%   r%   r(   r)   o  s   




úzPackageArchive._from_dict)rw   rv   r1   rv   rš   r™   rœ   r›   rz   r�   r‘   rv   r#   rx   r*   )r+   r,   r-   rw   rˆ   r1   rš   rœ   r‘   r„   r.   r)   r%   r%   r%   r(   r   T  s   
 ør   c                   @  óx   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„Z	e
ddd„ƒZdS )r   Nrv   r3   r›   rœ   rw   r1   r™   rš   r�   rz   ©r3   rœ   rw   r1   rš   r#   rx   c                C  r’   ©Nr3   rœ   rw   r1   rš   rz   r“   ©rƒ   r3   rœ   rw   r1   rš   rz   r%   r%   r(   r„   †  r–   zPackageSdist.__init__r!   r"   r   c                 C  óX   | t |tdƒt |tdƒt |tdƒt |tdƒt |tdƒt|ttdƒd�}t|j|j	ƒ |S ©Nr3   rž   rw   r1   rš   rz   )r3   rœ   rw   r1   rš   rz   ©
rS   r7   r   rŸ   rf   r   r~   ry   r1   rw   )r'   r!   Zpackage_sdistr%   r%   r(   r)   ˜  ó   




úzPackageSdist._from_dict©r3   rv   rœ   r›   rw   rv   r1   rv   rš   r™   rz   r�   r#   rx   r*   ©r+   r,   r-   r3   rˆ   rœ   rw   r1   rš   r„   r.   r)   r%   r%   r%   r(   r   }  ó   
 ùr   c                   @  r    )r   Nrv   r3   r›   rœ   rw   r1   r™   rš   r�   rz   r¡   r#   rx   c                C  r’   r¢   r“   r£   r%   r%   r(   r„   ¯  r–   zPackageWheel.__init__r!   r"   r   c                 C  r¤   r¥   r¦   )r'   r!   Zpackage_wheelr%   r%   r(   r)   Á  r§   zPackageWheel._from_dictr¨   r*   r©   r%   r%   r%   r(   r   ¦  rª   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„Zed)d#d$„ƒZed*d&d'„ƒZdS )+r   r   r3   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Úarchiverv   ÚindexúPackageSdist | NoneÚsdistúSequence[PackageWheel] | NoneÚwheelsÚattestation_identitiesúMapping[str, Any] | NoneÚtool)r¬   r®   r°   r²   r´   r¶   r¸   r¹   r»   r½   r¾   rÀ   r#   rx   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 )Nr3   r¬   r®   r°   r²   r´   r¶   r¸   r¹   r»   r½   r¾   rÀ   r“   )rƒ   r3   r¬   r®   r°   r²   r´   r¶   r¸   r¹   r»   r½   r¾   rÀ   r%   r%   r(   r„   ß  s   zPackage.__init__r!   r"   r   c                 C  sR  | 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pRg ƒ }t|jƒt|jƒ t|jƒ }|dkrp|dkrptdƒ‚|dkr||dkr|tdƒ‚zt|jp‚g ƒD ]
\}}t|tdƒ q„W |S  ty¨ } zt|d|› d�d�|‚d }~ww )Nr3   r¬   úrequires-pythonr²   r®   r´   r¶   r¸   r¹   r»   r½   zattestation-identitiesrÀ   )r3   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 setÚkindzattestation-identities[rZ   rN   )rf   r7   ru   re   r   r   r_   r   r   rp   r   r   r   rS   r   rr   r   r2   r»   rj   r½   r´   r¶   r¸   r   r\   r¾   rV   rc   )r'   r!   ÚpackageÚdistributionsZdirect_urlsr]   Zattestation_identityrd   r%   r%   r(   r)   ÿ  sR   








óÿÿÿÿýüÿþ€ÿzPackage._from_dictr2   c                 C  s   | j p| j S r$   )r»   r½   r…   r%   r%   r(   Ú	is_direct(  ó   zPackage.is_direct)r3   r   r¬   r«   r®   r­   r°   r¯   r²   r±   r´   r³   r¶   rµ   r¸   r·   r¹   rv   r»   rº   r½   r¼   r¾   r±   rÀ   r¿   r#   rx   r*   )r#   r2   )r+   r,   r-   rˆ   r¬   r®   r°   r²   r´   r¶   r¸   r¹   r»   r½   r¾   rÀ   r„   r.   r)   ÚpropertyrÅ   r%   r%   r%   r(   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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„Zed%dd„ƒZed%dd„ƒZd&d d!„Zd'd"d#„ZdS )(r   z#A class representing a pylock file.r   Úlock_versionNúSequence[Marker] | Noner=   r¯   r°   úSequence[NormalizedName] | NoneÚextrasúSequence[str] | NoneÚdependency_groupsÚdefault_groupsr7   Ú
created_byúSequence[Package]Úpackagesr¿   rÀ   )r=   r°   rË   rÍ   rÎ   rÀ   r#   rx   c       	   
      C  s‚   t  | d|¡ t  | d|¡ t  | d|¡ t  | d|¡ t  | d|¡ t  | d|¡ t  | d|¡ t  | d|¡ t  | d	|	¡ d S )
NrÈ   r=   r°   rË   rÍ   rÎ   rÏ   rÑ   rÀ   r“   )
rƒ   rÈ   r=   r°   rË   rÍ   rÎ   rÏ   rÑ   rÀ   r%   r%   r(   r„   ;  s   zPylock.__init__r!   r"   r   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rDtdƒk sNn td|j› d�ƒ‚|jtdƒkr\t d|j¡ |S )Nzlock-versionr=   rË   zdependency-groupszdefault-groupsz
created-byrÁ   rÑ   rÀ   )	rÈ   r=   rË   rÍ   rÎ   rÏ   r°   rÑ   rÀ   Ú1Ú2zpylock version z is not supportedz1.0z(pylock minor version %s is not supported)rf   r7   r   rm   r   ru   r_   rV   re   r   rt   r   rS   r   rÈ   r   Ú_loggerÚwarning)r'   r!   Zpylockr%   r%   r(   r)   S  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.
        N)r)   r&   r%   r%   r(   Ú	from_dictj  s   
zPylock.from_dictc                 C  s   t j| td�S )z1Convert the Pylock instance to a TOML dictionary.)Údict_factoryN)ÚdataclassesÚasdictrG   r…   r%   r%   r(   Úto_dicts  rÆ   zPylock.to_dictc                 C  s   |   |  ¡ ¡ dS )zqValidate the Pylock instance against the specification.

        Raises :class:`PylockValidationError` otherwise.N)rÖ   rÚ   r…   r%   r%   r(   Úvalidatew  s   zPylock.validate)rÈ   r   r=   rÉ   r°   r¯   rË   rÊ   rÍ   rÌ   rÎ   rÌ   rÏ   r7   rÑ   rÐ   rÀ   r¿   r#   rx   r*   )r#   r"   )r#   rx   )r+   r,   r-   r‡   rˆ   r=   r°   rË   rÍ   rÎ   rÀ   r„   r.   r)   rÖ   rÚ   rÛ   r%   r%   r%   r(   r   -  s0   
 õ
r   )r1   r   r#   r2   )r6   r7   r#   r7   )r6   r7   r<   r   r#   r   )rC   rD   r#   rE   )r!   r"   rH   rI   r6   r7   r#   rJ   )r!   r"   rH   rI   r6   r7   r#   r   )r!   r"   rW   rI   r6   r7   r#   rX   )
r!   r"   rH   rI   r`   ra   r6   r7   r#   rb   )
r!   r"   rH   rI   r`   ra   r6   r7   r#   r   )
r!   r"   rW   rI   rg   ra   r6   r7   r#   rh   )r!   r"   r`   rn   r6   r7   r#   ro   )r!   r"   rg   rn   r6   r7   r#   rq   )r!   r"   rg   rn   r6   r7   r#   rs   )r3   r7   r#   r   )r1   rv   rw   rv   r#   rx   )rz   r"   r#   r"   )BÚ
__future__r   rØ   ÚloggingÚreÚcollections.abcr   r   r   r   Útypingr   r   r	   r
   r   Úmarkersr   Ú
specifiersr   Úutilsr   r   r¬   r   Úpathlibr   Ztyping_extensionsr   Ú	getLoggerr+   rÔ   Ú__all__r   r   r    r/   Úcompiler4   r   r;   rB   rG   rS   rV   r_   re   rf   rm   rp   rr   rt   ru   ry   r~   rc   r   rU   r   r   r   r   r   r   r   r   r%   r%   r%   r(   Ú<module>   sn    




















(

(
(
(
]