a
    b3jb                     @  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 dd	l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Z.edZ/edZ0G dd deZ1ede1dZ2e3dZ4ddd d!d"Z5d#d#d$d%d&Z6d#d'd'd(d)d*Z7d+d,d-d.d/Z8d0d1d#d2d3d4d5Z9d0d1d#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Z?d0dGd#dLdMdNdOZ@d0dGd#dPdMdQdRZAd#dSdTdUdVZBdWdWdXdYdZd[ZCdWdWd d\d]ZDdWdWd^d_d`ZEd0d0dadbdcZFG ddde deeGZHG dfdg dgeHZIG dhdi dieHZJG djdk dkeGZKedldmdnG dodp dpZLedldmdnG dqdr drZMedldmdnG dsdt dtZNedldmdnG dudv dvZOedldmdnG dwdx dxZPedldmdnG dydz dzZQedldmdnG d{d| d|ZRdS )}    )annotationsN)MappingSequence)	dataclass)datetime)TYPE_CHECKINGAnyCallableProtocolTypeVarcast)urlparse   )EnvironmentMarker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PylockUnsupportedVersionErrorPylockValidationErroris_valid_pylock_pathz	list[str]returnc                   C  s   t S N)__all__ r-   r-   m/www/wwwroot/dpstar/app/297b3aabda72fedb274352021c2dd8b5_venv/lib/python3.9/site-packages/packaging/pylock.py__dir__6   s    r/   _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+   r-   clsr5   r-   r-   r.   
_from_dict?   s    z_FromMappingProtocol._from_dictN)__name__
__module____qualname__classmethodr8   r-   r-   r-   r.   r2   >   s   r2   _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)namer?   _PYLOCK_FILE_NAME_REmatchr@   r-   r-   r.   r(   I   s    r(   strkeyr*   c                 C  s   |  ddS )N_-)replace)rG   r-   r-   r.   	_toml_keyN   s    rK   r   )rG   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 r-   )rE   ).0vr-   r-   r.   
<listcomp>V       z_toml_value.<locals>.<listcomp>)
isinstancer   r   r   rE   r   )rG   rL   r-   r-   r.   _toml_valueR   s
    rS   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+   )rK   rS   )rN   rG   rL   r-   r-   r.   
<dictcomp>[   s   z&_toml_dict_factory.<locals>.<dictcomp>r-   )rT   r-   r-   r.   _toml_dict_factoryZ   s    rV   r3   ztype[_T]z	_T | None)r5   expected_typerG   r*   c                 C  sF   |  | }du rdS t||sBt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)getrR   r'   typer9   r5   rW   rG   rL   r-   r-   r.   _getb   s    
r`   c                 C  s    t | || }du rt||S )zKGet a required value from the dictionary and verify it's the expected type.N)r`   _PylockRequiredKeyErrorr_   r-   r-   r.   _get_requiredo   s    rb   zSequence[_T] | None)r5   expected_item_typerG   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.NrX   z (expected Sequence)r[   rY   rZ   [])	r`   r   rR   rE   bytesr'   r^   r9   	enumerate)r5   rc   rG   rL   iitemr-   r-   r.   _get_sequencev   s     
rj   zCallable[[_T], _T2]z
_T2 | None)r5   rW   target_typerG   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 )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.
    Nr[   )r`   	Exceptionr'   )r5   rW   rk   rG   rL   er-   r-   r.   _get_as   s    
rn   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)rn   ra   )r5   rW   rk   rG   rL   r-   r-   r.   _get_required_as   s    ro   zlist[_T2] | None)r5   rc   target_item_typerG   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.Nrd   re   r[   )rj   appendrl   r'   len)	r5   rc   rp   rG   rL   resultri   
typed_itemrm   r-   r-   r.   _get_sequence_as   s    4ru   ztype[_FromMappingProtocolT]z_FromMappingProtocolT | None)r5   rk   rG   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[   )r`   r   r8   rl   r'   )r5   rk   rG   rL   rm   r-   r-   r.   _get_object   s    rv   z"list[_FromMappingProtocolT] | None)r5   rp   rG   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.Nrd   re   r[   )rj   r   r8   rq   rl   r'   rr   )r5   rp   rG   rL   rs   ri   rt   rm   r-   r-   r.   _get_sequence_of_objects   s    
4rw   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)rw   ra   )r5   rp   rG   rs   r-   r-   r.   !_get_required_sequence_of_objects   s    rx   r   )rA   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   )rA   r-   r-   r.   _validate_normalized_name   s    ry   
str | NoneNone)r@   urlr*   c                 C  s   | s|st dd S )Nzpath or url must be provided)r'   )r@   r|   r-   r-   r.   _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   \)rsplitrD   r-   r-   r.   
_path_name   s    r   )r|   r*   c                 C  s"   | sd S t | j}|ddd S )Nr~   r   r   )r   r@   r   )r|   Zurl_pathr-   r-   r.   	_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+   )rR   rE   )rN   Zhash_valr-   r-   r.   	<genexpr>  rQ   z#_validate_hashes.<locals>.<genexpr>zHash values must be strings)r'   allvalues)r   r-   r-   r.   _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.Nrz   r\   rE   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.)rR   r'   r\   r   rE   )selfr   r\   r-   r-   r.   __init__  s    

zPylockValidationError.__init__r)   c                 C  s   | j r| j d| j S | jS )Nz in )r\   r   r   r-   r-   r.   __str__%  s    zPylockValidationError.__str__)r9   r:   r;   __doc__r\   __annotations__r   r   r-   r-   r-   r.   r'     s   
r'   c                      s$   e Zd Zddd fddZ  ZS )ra   rE   r{   rF   c                   s   t  jd|d d S )NzMissing required valuer[   )superr   )r   rG   	__class__r-   r.   r   ,  s    z _PylockRequiredKeyError.__init__)r9   r:   r;   r   __classcell__r-   r-   r   r.   ra   +  s   ra   c                   @  s   e Zd ZdZdS )r&   z7Raised when encountering an unsupported `lock_version`.Nr9   r:   r;   r   r-   r-   r-   r.   r&   0  s   r&   c                   @  s   e Zd ZdZdS )PylockSelectErrorz:Base exception for errors raised by :meth:`Pylock.select`.Nr   r-   r-   r-   r.   r   4  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#   rE   r^   Nrz   r|   r@   requested_revision	commit_idsubdirectory)r|   r@   r   r   r{   )r^   r|   r@   r   r   r   r*   c                C  sX   t | d| t | d| t | d| t | d| t | d| t | d| d S )Nr^   r|   r@   r   r   r   object__setattr__)r   r^   r|   r@   r   r   r   r-   r-   r.   r   A  s    zPackageVcs.__init__r3   r   r4   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 )Nr^   r|   r@   zrequested-revisionz	commit-idr   )r^   r|   r@   r   r   r   )rb   rE   r`   r}   r@   r|   )r7   r5   Zpackage_vcsr-   r-   r.   r8   S  s    





zPackageVcs._from_dict)r9   r:   r;   r   r|   r@   r   r   r   r<   r8   r-   r-   r-   r.   r#   8  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!   rE   r@   Nzbool | Noneeditablerz   r   )r   r   r{   )r@   r   r   r*   c                C  s.   t | d| t | d| t | d| d S )Nr@   r   r   r   )r   r@   r   r   r-   r-   r.   r   g  s    zPackageDirectory.__init__r3   r   r4   c                 C  s&   | t |tdt|tdt|tddS )Nr@   r   r   )r@   r   r   )rb   rE   r`   r?   r6   r-   r-   r.   r8   s  s
    


zPackageDirectory._from_dict)	r9   r:   r;   r   r   r   r   r<   r8   r-   r-   r-   r.   r!   a  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    Nrz   r|   r@   
int | Nonesizedatetime | Noneupload_timeMapping[str, str]r   r   )r|   r@   r   r   r   r{   )r|   r@   r   r   r   r   r*   c                C  sX   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     s    zPackageArchive.__init__r3   r   r4   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|   r@   r   upload-timer   r   )r|   r@   r   r   r   r   )
r`   rE   intr   ro   r   r   r}   r@   r|   )r7   r5   Zpackage_archiver-   r-   r.   r8     s    




zPackageArchive._from_dict)r9   r:   r;   r|   r   r@   r   r   r   r   r<   r8   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
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"   Nrz   rA   r   r   r|   r@   r   r   r   r   rA   r   r|   r@   r   r{   rA   r   r|   r@   r   r   r*   c                C  sX   t | d| t | d| t | d| t | d| t | d| t | d| d S NrA   r   r|   r@   r   r   r   r   rA   r   r|   r@   r   r   r-   r-   r.   r     s    zPackageSdist.__init__r3   r   r4   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 NrA   r   r|   r@   r   r   )rA   r   r|   r@   r   r   
r`   rE   r   r   ro   r   r   r}   r@   r|   )r7   r5   Zpackage_sdistr-   r-   r.   r8     s    




zPackageSdist._from_dictrE   r)   c                 C  s*   | j pt| jpt| j}|s&td|S )zGet the filename of the sdist.zCannot determine sdist filenamerA   r   r@   r   r|   r'   r   filenamer-   r-   r.   r     s    zPackageSdist.filenamer9   r:   r;   rA   r   r   r|   r@   r   r   r<   r8   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
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$   Nrz   rA   r   r   r|   r@   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   r-   r-   r.   r     s    zPackageWheel.__init__r3   r   r4   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   )r7   r5   Zpackage_wheelr-   r-   r.   r8     s    




zPackageWheel._from_dictrE   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   r-   r-   r.   r     s    zPackageWheel.filenamer   r-   r-   r-   r.   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   rA   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archiverz   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{   )rA   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 )NrA   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   rA   r   r   r   r   r   r   r   r   r   r   r   r   r-   r-   r.   r     s    zPackage.__init__r3   r   r4   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pg  }t|jt|j t|j }|dkr|dkrtd|dkr|dkrt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rtd|jd|jd| dd|jr||jkrtd|jdt|jd| ddq|jrz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rtd|jjdt|jd
dz,t|j pg D ]\}}t!|td qW n< ty  }
 z"t|
d| dd|
W Y d }
~
n
d }
~
0 0 |S )NrA   r   requires-pythonr   r   r   r   r   r   r   r   zattestation-identitiesr   )rA   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[re   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[)"ro   rE   ry   rn   r   r   rj   r   r   rv   r#   r!   r    r`   r"   rw   r$   r?   r   rr   r   r   r   r   r'   rg   r   r   rl   rA   r   r   r   rb   )r7   r5   packagedistributionsZdirect_urlsrh   wheelrA   r   rH   rm   Zattestation_identityr-   r-   r.   r8   7  s    
















zPackage._from_dictr?   r)   c                 C  s   | j p
| j S r+   )r   r   r   r-   r-   r.   	is_direct  s    zPackage.is_direct)r9   r:   r;   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r<   r8   r   r   r-   r-   r-   r.   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,ZdS )-r%   z#A class representing a pylock file.r   lock_versionNzSequence[Marker] | NonerM   r   r   zSequence[NormalizedName] | NoneextraszSequence[str] | Nonedependency_groupsdefault_groupsrE   
created_byzSequence[Package]packagesr   r   )rM   r   r   r   r   r   r{   )
r   rM   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   rM   r   r   r   r   r   r   r   r   )
r   r   rM   r   r   r   r   r   r   r   r-   r-   r.   r     s    zPylock.__init__r3   r   r4   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rtdk sn td|j d|jtdkrtd|j |S )Nzlock-versionrM   r   zdependency-groupszdefault-groupsz
created-byr   r   r   )	r   rM   r   r   r   r   r   r   r   12zpylock version z is not supportedz1.0z(pylock minor version %s is not supported)ro   rE   r   ru   r   ry   rj   rb   rn   r   rx   r   r`   r   r   r&   _loggerwarning)r7   r5   Zpylockr-   r-   r.   r8     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.
        )r8   r6   r-   r-   r.   	from_dict  s    zPylock.from_dictr)   c                 C  s   t j| tdS )z1Convert the Pylock instance to a TOML dictionary.)Zdict_factory)dataclassesZasdictrV   r   r-   r-   r.   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   r-   r-   r.   validate  s    zPylock.validate)environmenttagsr   r   zEnvironment | NonezSequence[Tag] | NonezCollection[str] | NonezfIterator[tuple[Package, PackageVcs | PackageDirectory | PackageArchive | PackageWheel | PackageSdist]])r   r   r   r   r*   c                c  sZ  t |p
t }tdt|pi t|p"g t|du r8| jp:g n|d}|rP|d nt d }| jr| j|st	d|dt
| j| jr| jD ] }|jtd|pi dd	r qqt	d
i }	t| jD ]\}
}|jr|jj|dd	sq|jr*|j|s*t	d|dt
|jd|jd|
 d	|j|	v r^t	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r4t|dd |jD d}|r ||fV  n2|jdur||jfV  nt	d|jd|
 dn|jdurN||jfV  ntqvdS )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.

        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`).
        zdict[str, str | frozenset[str]]N)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[re   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   )rN   r   r-   r-   r.   r   p  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   containsr   rE   rM   evaluaterg   r   r   rA   r   r   r   r   r   nextr   NotImplementedError)r   r   r   r   r   Zcompatible_tags_selectorenvZenv_python_full_versionZ
env_markerZselected_packages_by_namepackage_indexr   Z
best_wheelr-   r-   r.   select  s     

	
	
	zPylock.select)r9   r:   r;   r   r   rM   r   r   r   r   r   r   r<   r8   r   r   r   r   r-   r-   r-   r.   r%     s8   
$	r%   )S
__future__r   r   loggingrecollections.abcr   r   r   r   typingr   r   r	   r
   r   r   urllib.parser   markersr   r   r   
specifiersr   r   r   r   utilsr   r   r   r   r   r   r   r   pathlibr   Ztyping_extensionsr   r   	getLoggerr9   r   r,   r/   r0   r1   r2   r=   compilerB   r(   rK   rS   rV   r`   rb   rj   rn   ro   ru   rv   rw   rx   ry   r}   r   r   r   rl   r'   ra   r&   r   r#   r!   r    r"   r$   r   r%   r-   r-   r-   r.   <module>   s~    



(

(
0
0
 
