o
    hC                     @  sD  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
rRd dlmZ edZd'ddZ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$pathr   returnboolc                 C  s   | j dkpttt| j S )Nzpylock.toml)namer   rematchPYLOCK_FILE_NAME_RE)r    r   N/var/www/html/venv/lib/python3.10/site-packages/pip/_internal/models/pylock.pyis_valid_pylock_file_name   s   r   datalist[tuple[str, Any]]dict[str, Any]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>   s   & 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                   @  &   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   r3   )   s   
 r3   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   r5   0   s   
 r5   c                   @  r2   )PackageSdistr&   r   r(   r)   r6   r7   Nr-   r   r   r   r   r8   :      
 r8   c                   @  r2   )PackageWheelr&   r   r(   r)   r6   r7   Nr-   r   r   r   r   r:   D   r9   r:   c                   @  sl   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ZdS )Packager&   r   Nr(   versionzPackageVcs | NonevcszPackageDirectory | None	directoryzPackageArchive | NonearchivezPackageSdist | Nonesdistzlist[PackageWheel] | Nonewheelsireqr   base_dirr   r   r   c                 C  s`  |  }| }|j}|sJ | |jd}|jrut|jtr2t|jj	|j
|jj|jj|jd|_	|S t|jtrWttt|j
  | |jjrN|jjnd |jd|_|S t|jtrr|jjsdt t|j
|jj|jd|_|S t t|j|_t|jtr|jjst t|j
}|jrt|j |j
|jjdg|_!|S t"|j |j
|jjd|_#|S t )Nr   )r'   r)   r*   r+   r,   )r   r4   r,   )r)   r7   r,   )r   r)   r7   )$resolveget_distdownload_infocanonical_name	is_direct
isinstanceinfor   r%   r=   r)   r*   r+   r,   r
   r3   r   r   relative_toas_posixr4   r>   r	   r7   NotImplementedErrorr5   r?   r&   r<   r   is_wheelr:   filenamerA   r8   r@   )clsrB   rC   distrG   packagelinkr   r   r   from_install_requirement^   sr   8
0
z Package.from_install_requirement)rB   r   rC   r   r   r   )r.   r/   r0   r1   r<   r=   r>   r?   r@   rA   classmethodrU   r   r   r   r   r;   N   s   
 r;   c                   @  sR   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Z
edddZdS )Pylockz1.0r&   lock_versionpip
created_by)default_factoryzlist[Package]packagesr   c                 C  s   t tj| tdS )N)dict_factory)r   dumpsdataclassesasdictr$   )selfr   r   r   as_toml   s   zPylock.as_tomlinstall_requirementsIterable[InstallRequirement]rC   r   r   c                   s$   | t  fdd|D dd ddS )Nc                 3  s    | ]	}t | V  qd S N)r;   rU   )r    rB   rC   r   r   	<genexpr>   s
    

z3Pylock.from_install_requirements.<locals>.<genexpr>c                 S  s   | j S re   rD   )pr   r   r   <lambda>   s    z2Pylock.from_install_requirements.<locals>.<lambda>)r!   )r\   )sorted)rQ   rc   rC   r   rf   r   from_install_requirements   s   
z Pylock.from_install_requirementsN)r   r&   )rc   rd   rC   r   r   r   )r.   r/   r0   rX   r1   rZ   r_   fieldlistr\   rb   rV   rk   r   r   r   r   rW      s   
 
rW   )r   r   r   r   )r   r   r   r   )%
__future__r   r_   r   collections.abcr   r   pathlibr   typingr   r   pip._vendorr   pip._internal.models.direct_urlr	   r
   r   pip._internal.models.linkr   pip._internal.req.req_installr   pip._internal.utils.urlsr   typing_extensionsr   compiler   r   r$   r%   r3   r5   r8   r:   r;   rW   r   r   r   r   <module>   s>    


				S