o
    j$                     @  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rt|
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-   Zpackage_versionpackage_vcspackage_directorypackage_archivepackage_sdistZpackage_wheelslink r>   [/var/www/html/Deteccion_Ine/venv/lib/python3.10/site-packages/pip/_internal/utils/pylock.py(_pylock_package_from_install_requirement    s   

r@   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)r@   ).0r   r   r>   r?   	<genexpr>{   s
    
z3pylock_from_install_requirements.<locals>.<genexpr>c                 S  s   | j S rD   )r$   )pr>   r>   r?   <lambda>   s    z2pylock_from_install_requirements.<locals>.<lambda>)key)Zlock_versionZ
created_bypackages)r   r   sorted)rA   r   r>   rF   r?    pylock_from_install_requirementst   s   
rM   z^(http|https|file)://sstrboolc                 C  s   t t| S rD   )rP   
_SCHEME_REmatch)rN   r>   r>   r?   _is_url   s   rS   r6   c                 C  s8   t | rtt| jdd }t|S t| }t|S )N/)rS   r   r   r   
rpartitionr   )r6   r   r>   r>   r?   is_valid_pylock_filename   s
   rW   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 )zCompute 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   isabsrS   r   r   joindirnamer   )rX   r   r   r>   r>   r?   _package_dist_url   s$   
r^   r9   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=)r^   r   r   r   r    r!   r   )rX   r9   Zdist_urlr   r>   r>   r?   package_vcs_requirement_url   s   rf   r;   r
   c                 C  sF   t | |j|j}|jr!d|v rtd|d| d|d|j 7 }|S )Nra   rb   rc   rd   re   )r^   r   r   r!   r   )rX   r;   r   r>   r>   r?   package_archive_requirement_url   s   
rg   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 rT   )rS   
startswithr   r^   r   endswithr!   )rX   r:   r   r>   r>   r?   !package_directory_requirement_url   s   


rj   r<   r   c                 C     t | |j|jS rD   r^   r   r   )rX   r<   r>   r>   r?   package_sdist_requirement_url      rm   package_wheelr   c                 C  rk   rD   rl   )rX   ro   r>   r>   r?   package_wheel_requirement_url   rn   rp   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.utilsrv   gettextr   	read_text)rq   rr   rx   rv   respr>   r>   r?   _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)rX   rr   Zpylock_contentexclockr>   r>   r?   select_from_pylock_path_or_url   s>   	r   )r   r   r   r   r   r	   )rA   rB   r   r   r   r   )rN   rO   r   rP   )r6   rO   r   rP   )rX   rO   r   rY   r   rY   r   rO   )rX   rO   r9   r   r   rO   )rX   rO   r;   r
   r   rO   )rX   rO   r:   r   r   rO   )rX   rO   r<   r   r   rO   )rX   rO   ro   r   r   rO   )rq   rO   rr   r   r   rO   )rX   rO   rr   r   r   r   )5
__future__r   rZ   recollections.abcr   r   pathlibr   typingr   urllib.parser   r   Zpip._vendor.packaging.pylockr	   r
   r   r   r   r   r   r   Zpip._vendor.packaging.versionr   pip._internal.exceptionsr   pip._internal.models.linkr   pip._internal.utils.compatr   pip._internal.utils.urlsr   r   pip._internal.network.sessionr   Zpip._internal.req.req_installr   r@   rM   compile
IGNORECASErQ   rS   rW   r^   rf   rg   rj   rm   rp   r~   r   r>   r>   r>   r?   <module>   s:    (


T








