o
    5‘ð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%   úb/root/parts/websockify/install/lib/python3.10/site-packages/setuptools/_vendor/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.toml)Ú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 normalized)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>   Ú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!   Ú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!   Ú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!   Ú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!   Ú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ÚdistributionsÚdirect_urlsr]   Ú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!   Ú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.
        )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_factory)Ú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   Ú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    

















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