o
    àejŽ$  ã                   @  sb  d dl m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 d dlmZmZ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 d dlmZ d dlm Z m!Z! e
rld dl"m#Z# d dl$m%Z% dGdd„Z&dHdd„Z'e (dej)¡Z*dId d!„Z+dJd#d$„Z,dKd)d*„Z-dLd-d.„Z.dMd1d2„Z/dNd5d6„Z0dOd9d:„Z1dPd=d>„Z2dQdBdC„Z3dRdEdF„Z4dS )Sé    )ÚannotationsN)ÚIterableÚIterator)ÚPath)ÚTYPE_CHECKING)ÚurljoinÚurlsplit)ÚPackageÚPackageArchiveÚPackageDirectoryÚPackageSdistÚ
PackageVcsÚPackageWheelÚPylockÚis_valid_pylock_path)ÚVersion)ÚInstallationError)ÚLink)Útomllib)Úpath_to_urlÚurl_to_path)Ú
PipSession)ÚInstallRequirementÚireqr   Úbase_dirr   Úreturnr	   c              	   C  sV  |  ¡ }|  ¡ }| j}|sJ ‚d }d }d }d }d }d }	| jrn|jr4t|jj|jd |jj|jj	|j
d�}nk|jrTttt|jƒƒ  ¡  |¡ ¡ |jjrM|jjnd |j
d�}nK|jrk|jjs^tƒ ‚t|jd |jj|j
d�}n4tƒ ‚|j}|jrœ|jjs{tƒ ‚t|jƒ}
|
jr�t|
j|j|jjd�g}	nt|
j|j|jjd�}ntƒ ‚t|j||||||	d�S )N)ÚtypeÚurlÚpathÚrequested_revisionÚ	commit_idÚsubdirectory)r   Úeditabler!   )r   r   Úhashesr!   )Únamer   r#   )r$   ÚversionÚvcsÚ	directoryÚarchiveÚsdistÚwheels)ÚresolveÚget_distÚdownload_infoÚ	is_directÚvcs_infor   r&   r   r   r    r!   Údir_infor   r   r   Úrelative_toÚas_posixr"   Úarchive_infor#   ÚNotImplementedErrorr
   r%   r   Úis_wheelr   Úfilenamer   r	   Úcanonical_name)r   r   Údistr-   Úpackage_versionÚpackage_vcsÚpackage_directoryÚpackage_archiveÚpackage_sdistÚpackage_wheelsÚlink© r@   úZ/var/www/html/choboyeo/PHP/venv/lib/python3.10/site-packages/pip/_internal/utils/pylock.pyÚ(_pylock_package_from_install_requirement    sˆ   ú
ÿôü
ýÿýùrB   Úinstall_requirementsúIterable[InstallRequirement]r   c                   s,   t tdƒdt‡ fdd„| D ƒdd„ d�d�S )	Nz1.0Úpipc                 3  s   � | ]}t |ˆ ƒV  qd S ©N)rB   )Ú.0r   ©r   r@   rA   Ú	<genexpr>{   s
   € ÿ
ÿz3pylock_from_install_requirements.<locals>.<genexpr>c                 S  s   | j S rF   )r$   )Úpr@   r@   rA   Ú<lambda>   s    z2pylock_from_install_requirements.<locals>.<lambda>)Úkey)Úlock_versionÚ
created_byÚpackages)r   r   Úsorted)rC   r   r@   rH   rA   Ú pylock_from_install_requirementst   s   
þûýrQ   z^(http|https|file)://ÚsÚstrÚboolc                 C  s   t t | ¡ƒS rF   )rT   Ú
_SCHEME_REÚmatch)rR   r@   r@   rA   Ú_is_url‡   s   rW   r6   c                 C  s8   t | ƒrtt| ƒj d¡d ƒ}t|ƒS t| ƒ}t|ƒS )Nú/éÿÿÿÿ)rW   r   r   r   Ú
rpartitionr   )r6   r   r@   r@   rA   Úis_valid_pylock_filename‹   s
   ÿr[   Úpylock_path_or_urlr   ú
str | Noner   c                 C  st   |dur2t j |¡s t| ƒrt| |ƒS tt j t j | ¡|¡ƒS t| ƒr.td|›d| ›�ƒ‚t|ƒS |dus8J ‚|S )z¬Compute an url from a Pylock package path and url.

    Give priority to path over url. If path is relative,
    compute an url using the pylock file location as base.
    NzFAbsolute paths are not supported in pylock files obtained from a URL: z in )	Úosr   ÚisabsrW   r   r   ÚjoinÚdirnamer   )r\   r   r   r@   r@   rA   Ú_package_dist_url“   s$   
ÿÿÿÿrb   r:   r   c                 C  s^   t | |j|jƒ}|j› d|› d|j› �}|jr-d|v r&td|›d| ›d�ƒ‚|d|j 7 }|S )Nú+ú@ú#úPackage URL úE cannot contain fragments in combination with subdirectory field (in ú)ú#subdirectory=)rb   r   r   r   r    r!   r   )r\   r:   Údist_urlr   r@   r@   rA   Úpackage_vcs_requirement_url±   s   ÿÿrk   r<   r
   c                 C  sF   t | |j|jƒ}|jr!d|v rtd|›d| ›d�ƒ‚|d|j 7 }|S )Nre   rf   rg   rh   ri   )rb   r   r   r!   r   )r\   r<   r   r@   r@   rA   Úpackage_archive_requirement_urlÀ   s   
ÿÿÿrl   r;   r   c                 C  st   t | ƒr|  d¡std| ›�ƒ‚t| |jd ƒ}| d¡sJ ‚| d¡s'|d7 }|jr8||j7 }| d¡s8|d7 }|S )Nzfile://z:Directory entries are not supported in remote pylock.toml rX   )rW   Ú
startswithr   rb   r   Úendswithr!   )r\   r;   r   r@   r@   rA   Ú!package_directory_requirement_urlÐ   s   ÿÿ


ro   r=   r   c                 C  ó   t | |j|jƒS rF   ©rb   r   r   )r\   r=   r@   r@   rA   Úpackage_sdist_requirement_urlã   ó   rr   Úpackage_wheelr   c                 C  rp   rF   rq   )r\   rt   r@   r@   rA   Úpackage_wheel_requirement_urlé   rs   ru   Úpath_or_urlÚsessionr   c                 C  sF   t | ƒj}|dv rddlm} | | ¡}||ƒ |jS t| ƒjdd�S )N)ÚhttpÚhttpsÚfiler   )Úraise_for_statuszutf-8)Úencoding)r   ÚschemeÚpip._internal.network.utilsr{   ÚgetÚtextr   Ú	read_text)rv   rw   r}   r{   Úrespr@   r@   rA   Ú_get_pylock_path_or_url_contentï   s   

rƒ   úfIterator[tuple[Package, PackageVcs | PackageDirectory | PackageArchive | PackageWheel | PackageSdist]]c              
   c  sÈ   � zt | |ƒ}W n ty } ztd| ›d|› �ƒ|‚d }~ww z
t t |¡¡}W n tyA } ztd| ›d|› �ƒ|‚d }~ww z
| ¡ E d H  W d S  tyc } ztd| ›d|› �ƒ|‚d }~ww )NzError reading pylock file z: zInvalid pylock file z,Cannot select requirements from pylock file )rƒ   Ú	Exceptionr   r   Ú	from_dictr   ÚloadsÚselect)r\   rw   Úpylock_contentÚexcÚlockr@   r@   rA   Úselect_from_pylock_path_or_urlÿ   s>   €	ÿþ€ÿÿþ€ÿÿþ€ÿrŒ   )r   r   r   r   r   r	   )rC   rD   r   r   r   r   )rR   rS   r   rT   )r6   rS   r   rT   )r\   rS   r   r]   r   r]   r   rS   )r\   rS   r:   r   r   rS   )r\   rS   r<   r
   r   rS   )r\   rS   r;   r   r   rS   )r\   rS   r=   r   r   rS   )r\   rS   rt   r   r   rS   )rv   rS   rw   r   r   rS   )r\   rS   rw   r   r   r„   )5Ú
__future__r   r^   ÚreÚcollections.abcr   r   Úpathlibr   Útypingr   Úurllib.parser   r   Úpip._vendor.packaging.pylockr	   r
   r   r   r   r   r   r   Úpip._vendor.packaging.versionr   Úpip._internal.exceptionsr   Úpip._internal.models.linkr   Úpip._internal.utils.compatr   Úpip._internal.utils.urlsr   r   Úpip._internal.network.sessionr   Úpip._internal.req.req_installr   rB   rQ   ÚcompileÚ
IGNORECASErU   rW   r[   rb   rk   rl   ro   rr   ru   rƒ   rŒ   r@   r@   r@   rA   Ú<module>   s:    (


T








