o
    ©„j2(  ã                   @  sf  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mZ d d
lmZ d dlmZ d dl m!Z!m"Z" e
rnd 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„Z0dNd5d6„Z1dOd9d:„Z2dPd=d>„Z3dQdBdC„Z4dRdEdF„Z5dS )Sé    )ÚannotationsN)ÚIterableÚIterator)ÚPath)ÚTYPE_CHECKING)ÚurljoinÚurlsplit)ÚPackageÚPackageArchiveÚPackageDirectoryÚPackageSdistÚ
PackageVcsÚPackageWheelÚPylockÚis_valid_pylock_path)ÚVersion)ÚDiagnosticPipErrorÚ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© rA   úX/var/www/html/django_cbt/venv/lib/python3.10/site-packages/pip/_internal/utils/pylock.pyÚ(_pylock_package_from_install_requirement    sˆ   ú
ÿôü
ýÿýùrC   Ú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)rC   )Ú.0r   ©r   rA   rB   Ú	<genexpr>{   s
   € ÿ
ÿz3pylock_from_install_requirements.<locals>.<genexpr>c                 S  s   | j S rG   )r%   )ÚprA   rA   rB   Ú<lambda>   s    z2pylock_from_install_requirements.<locals>.<lambda>)Úkey)Úlock_versionÚ
created_byÚpackages)r   r   Úsorted)rD   r   rA   rI   rB   Ú pylock_from_install_requirementst   s   
þûýrR   z^(http|https|file)://ÚsÚstrÚboolc                 C  s   t t | ¡ƒS rG   )rU   Ú
_SCHEME_REÚmatch)rS   rA   rA   rB   Ú_is_url‡   s   rX   r7   c                 C  s8   t | ƒrtt| ƒj d¡d ƒ}t|ƒS t| ƒ}t|ƒS )Nú/éÿÿÿÿ)rX   r   r   r   Ú
rpartitionr   )r7   r   rA   rA   rB   Úis_valid_pylock_filename‹   s
   ÿr\   Úpylock_path_or_urlr   ú
str | Noner   c                 C  s´   |durRt j |¡s@t| ƒr3t| |ƒ}t| ƒ}t|ƒ}|j|jf|j|jfkr1td|›d| ›�ƒ‚|S t	t j 
t j | ¡|¡ƒS t| ƒrNtd|›d| ›�ƒ‚t	|ƒS |dusXJ ‚|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.
    NzPath zC in pylock file obtained from a URL resolves outside its location: zFAbsolute paths are not supported in pylock files obtained from a URL: z in )Úosr   ÚisabsrX   r   r   ÚschemeÚnetlocr   r   ÚjoinÚdirname)r]   r   r   Údist_urlÚbaseÚtargetrA   rA   rB   Ú_package_dist_url“   s6   
ÿÿÿÿÿÿrh   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=)rh   r   r   r   r!   r"   r   )r]   r;   re   r   rA   rA   rB   Úpackage_vcs_requirement_url½   s   ÿÿrp   r=   r
   c                 C  sF   t | |j|jƒ}|jr!d|v rtd|›d| ›d�ƒ‚|d|j 7 }|S )Nrk   rl   rm   rn   ro   )rh   r   r   r"   r   )r]   r=   r   rA   rA   rB   Úpackage_archive_requirement_urlÌ   s   
ÿÿÿrq   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 rY   )rX   Ú
startswithr   rh   r   Úendswithr"   )r]   r<   r   rA   rA   rB   Ú!package_directory_requirement_urlÜ   s   ÿÿ


rt   r>   r   c                 C  ó   t | |j|jƒS rG   ©rh   r   r   )r]   r>   rA   rA   rB   Úpackage_sdist_requirement_urlï   ó   rw   Úpackage_wheelr   c                 C  ru   rG   rv   )r]   ry   rA   rA   rB   Úpackage_wheel_requirement_urlõ   rx   rz   Ú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   ra   Úpip._internal.network.utilsr€   ÚgetÚtextr   Ú	read_text)r{   r|   ra   r€   ÚresprA   rA   rB   Ú_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   ‚  ty& } ztd| ›d|› �ƒ|‚d }~ww z
t t |¡¡}W n tyH } ztd| ›d|› �ƒ|‚d }~ww z
| ¡ E d H  W d S  tyj } 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‡   r   Ú	Exceptionr   r   Ú	from_dictr   ÚloadsÚselect)r]   r|   Úpylock_contentÚexcÚlockrA   rA   rB   Úselect_from_pylock_path_or_url  sB   €	ÿþ€ÿÿþ€ÿÿþ€ÿr�   )r   r   r   r   r   r	   )rD   rE   r   r   r   r   )rS   rT   r   rU   )r7   rT   r   rU   )r]   rT   r   r^   r   r^   r   rT   )r]   rT   r;   r   r   rT   )r]   rT   r=   r
   r   rT   )r]   rT   r<   r   r   rT   )r]   rT   r>   r   r   rT   )r]   rT   ry   r   r   rT   )r{   rT   r|   r   r   rT   )r]   rT   r|   r   r   rˆ   )6Ú
__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   r   Úpip._internal.models.linkr   Úpip._internal.utils.compatr   Úpip._internal.utils.urlsr   r   Úpip._internal.network.sessionr   Úpip._internal.req.req_installr   rC   rR   ÚcompileÚ
IGNORECASErV   rX   r\   rh   rp   rq   rt   rw   rz   r‡   r�   rA   rA   rA   rB   Ú<module>   s:    (


T



*




