o
    [h4                     @   s\  d dl Z d dl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 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dZdedefddZde	eeef  deeef f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 )!    N)	dataclass)Path)AnyDictIterableListOptionalTuple)tomli_w)Self)ArchiveInfoDirInfoVcsInfo)Link)InstallRequirement)url_to_pathz^pylock\.([^.]+)\.toml$pathreturnc                 C   s   | j dkpttt| j S )Nzpylock.toml)nameboolrematchPYLOCK_FILE_NAME_RE)r    r   /home/ubuntu/experiments/live_experiments/Pythonexperiments/Otree/venv/lib/python3.10/site-packages/pip/_internal/models/pylock.pyis_valid_pylock_file_name   s   r   datac                 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                   @   sB   e Zd ZU eed< ee ed< ee ed< eed< ee ed< dS )
PackageVcstypeurlrequested_revision	commit_idsubdirectoryN)__name__
__module____qualname__str__annotations__r   r   r   r   r   r%      s   
 r%   c                   @   s.   e Zd ZU eed< ee ed< ee ed< dS )PackageDirectoryr   editabler*   N)r+   r,   r-   r.   r/   r   r   r   r   r   r   r0   $   s   
 r0   c                   @   s6   e Zd ZU ee ed< eeef ed< ee ed< dS )PackageArchiver'   hashesr*   N)r+   r,   r-   r   r.   r/   r   r   r   r   r   r2   +   s   
 r2   c                   @   2   e Zd ZU eed< ee ed< eeef ed< dS )PackageSdistr   r'   r3   Nr+   r,   r-   r.   r/   r   r   r   r   r   r   r5   5      
 r5   c                   @   r4   )PackageWheelr   r'   r3   Nr6   r   r   r   r   r8   ?   r7   r8   c                   @   s   e Zd ZU eed< dZee ed< dZee ed< dZ	ee
 ed< dZee ed< dZee ed< dZeee  ed< ed	ed
edefddZdS )Packager   Nversionvcs	directoryarchivesdistwheelsireqbase_dirr   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   r1   r*   )r'   r3   r*   )r   r'   r3   )$resolveget_distdownload_infocanonical_name	is_direct
isinstanceinfor   r%   r;   r'   r(   r)   r*   r   r0   r   r   relative_toas_posixr1   r<   r   r3   NotImplementedErrorr2   r=   r.   r:   r   is_wheelr8   filenamer?   r5   r>   )clsr@   rA   distrE   packagelinkr   r   r   from_install_requirementY   sr   8
0
z Package.from_install_requirement)r+   r,   r-   r.   r/   r:   r   r;   r%   r<   r0   r=   r2   r>   r5   r?   r   r8   classmethodr   r   r   rS   r   r   r   r   r9   I   s   
 r9   c                   @   sj   e Zd ZU dZeed< dZeed< eje	dZ
ee ed< defdd	Zed
ee dedefddZdS )Pylockz1.0lock_versionpip
created_by)default_factory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_requirementsrA   c                    s$   | t  fdd|D dd ddS )Nc                 3   s    | ]	}t | V  qd S N)r9   rS   )r    r@   rA   r   r   	<genexpr>   s
    

z3Pylock.from_install_requirements.<locals>.<genexpr>c                 S   s   | j S rb   rB   )pr   r   r   <lambda>   s    z2Pylock.from_install_requirements.<locals>.<lambda>)r!   )rZ   )sorted)rO   ra   rA   r   rc   r   from_install_requirements   s   
z Pylock.from_install_requirementsN)r+   r,   r-   rV   r.   r/   rX   r]   fieldlistrZ   r   r9   r`   rT   r   r   r   r   rh   r   r   r   r   rU      s   
 rU   )'r]   r   r   pathlibr   typingr   r   r   r   r   r	   pip._vendorr
   Zpip._vendor.typing_extensionsr   pip._internal.models.direct_urlr   r   r   pip._internal.models.linkr   Zpip._internal.req.req_installr   pip._internal.utils.urlsr   compiler   r   r   r.   r$   r%   r0   r2   r5   r8   r9   rU   r   r   r   r   <module>   s8     
&				S