o
    )ri	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%   O/home/air/biblejyuku/back/venv/lib/python3.10/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.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 )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.
    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pg D ]
\}}t|td qW |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 )zCreate 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    

















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