a
    shC                     @  sP  d dl mZ d dlZd dlZd dlmZ d dlmZ d dlmZ d dl	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 d dlmZ e
rd dlmZ edZdddddZdddddZeG dd dZeG dd dZeG dd dZ eG dd dZ!eG d d! d!Z"eG d"d# d#Z#eG d$d% d%Z$dS )&    )annotationsN)Iterable)	dataclass)Path)TYPE_CHECKINGAny)tomli_w)ArchiveInfoDirInfoVcsInfo)Link)InstallRequirement)url_to_path)Selfz^pylock\.([^.]+)\.toml$r   bool)pathreturnc                 C  s   | j dkpttt| j S )Nzpylock.toml)namer   rematchPYLOCK_FILE_NAME_RE)r    r   W/var/www/html/assistant/venv/lib/python3.9/site-packages/pip/_internal/models/pylock.pyis_valid_pylock_file_name   s    r   zlist[tuple[str, Any]]zdict[str, Any])datar   c                 C  s   dd | D S )Nc                 S  s&   i | ]\}}|d ur| dd|qS )N_-)replace).0keyvaluer   r   r   
<dictcomp>       z&_toml_dict_factory.<locals>.<dictcomp>r   )r   r   r   r   _toml_dict_factory   s    r#   c                   @  s6   e Zd ZU ded< ded< ded< ded< ded< dS )	
PackageVcsstrtype
str | Noneurlrequested_revision	commit_idsubdirectoryN__name__
__module____qualname____annotations__r   r   r   r   r$      s
   
r$   c                   @  s&   e Zd ZU ded< ded< ded< dS )PackageDirectoryr%   r   zbool | Noneeditabler'   r+   Nr,   r   r   r   r   r1   )   s   
r1   c                   @  s&   e Zd ZU ded< ded< ded< dS )PackageArchiver'   r(   dict[str, str]hashesr+   Nr,   r   r   r   r   r3   0   s   
r3   c                   @  s&   e Zd ZU ded< ded< ded< dS )PackageSdistr%   r   r'   r(   r4   r5   Nr,   r   r   r   r   r6   :   s   
r6   c                   @  s&   e Zd ZU ded< ded< ded< dS )PackageWheelr%   r   r'   r(   r4   r5   Nr,   r   r   r   r   r7   D   s   
r7   c                   @  st   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< e
ddddddZdS )Packager%   r   Nr'   versionzPackageVcs | NonevcszPackageDirectory | None	directoryzPackageArchive | NonearchivezPackageSdist | Nonesdistzlist[PackageWheel] | Nonewheelsr   r   r   )ireqbase_dirr   c                 C  sb  |  }| }|j}|sJ | |jd}|jrt|jtrbt|jj	|j
|jj|jj|jd|_	nt|jtrttt|j
  | |jjr|jjnd |jd|_n:t|jtr|jjst t|j
|jj|jd|_nt nxt|j|_t|jtrX|jjst t|j
}|jr>t|j |j
|jjdg|_!nt"|j |j
|jjd|_#nt |S )Nr   )r&   r(   r)   r*   r+   )r   r2   r+   )r(   r5   r+   )r   r(   r5   )$resolveget_distdownload_infocanonical_nameZ	is_direct
isinstanceinfor   r$   r:   r(   r)   r*   r+   r
   r1   r   r   relative_toas_posixr2   r;   r	   r5   NotImplementedErrorr3   r<   r%   r9   r   is_wheelr7   filenamer>   r6   r=   )clsr?   r@   distrD   packagelinkr   r   r   from_install_requirement^   sh    






z Package.from_install_requirement)r-   r.   r/   r0   r9   r:   r;   r<   r=   r>   classmethodrQ   r   r   r   r   r8   N   s   
r8   c                   @  s^   e Zd ZU dZded< dZded< ejedZ	ded< dd	d
dZ
eddddddZdS )Pylockz1.0r%   lock_versionpip
created_by)default_factoryzlist[Package]packages)r   c                 C  s   t tj| tdS )N)Zdict_factory)r   dumpsdataclassesZasdictr#   )selfr   r   r   as_toml   s    zPylock.as_tomlzIterable[InstallRequirement]r   r   )install_requirementsr@   r   c                   s$   | t  fdd|D dd ddS )Nc                 3  s   | ]}t | V  qd S N)r8   rQ   )r   r?   r@   r   r   	<genexpr>   s   z3Pylock.from_install_requirements.<locals>.<genexpr>c                 S  s   | j S r^   rA   )pr   r   r   <lambda>   r"   z2Pylock.from_install_requirements.<locals>.<lambda>)r   )rX   )sorted)rM   r]   r@   r   r_   r   from_install_requirements   s    
z Pylock.from_install_requirementsN)r-   r.   r/   rT   r0   rV   rZ   fieldlistrX   r\   rR   rd   r   r   r   r   rS      s   
rS   )%
__future__r   rZ   r   collections.abcr   r   pathlibr   typingr   r   pip._vendorr   pip._internal.models.direct_urlr	   r
   r   pip._internal.models.linkr   Zpip._internal.req.req_installr   pip._internal.utils.urlsr   Ztyping_extensionsr   compiler   r   r#   r$   r1   r3   r6   r7   r8   rS   r   r   r   r   <module>   s<   
				S