
    i$                    j   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
rd dl"m#Z# d dl$m%Z% d;dZ&d<dZ' ej(        dej)                  Z*d=dZ+d>d Z,d?d%Z-d@d(Z.dAd+Z/dBd.Z0dCd1Z1dDd4Z2dEd8Z3dFd:Z4dS )G    )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           	     Z   |                                 }|                                 }| j        }|sJ d }d }d }d }d }d }	| j        r*|j        r?t          |j        j        |j        d |j        j        |j        j	        |j
                  }n|j        rt          t          t          |j                                                                                 |                                          |j        j        r|j        j        nd |j
                  }n|j        rB|j        j        st)                      t+          |j        d |j        j        |j
                  }nt)                      |j        }|j        r|j        j        st)                      t/          |j                  }
|
j        r(t3          |
j        |j        |j        j                  g}	n5t7          |
j        |j        |j        j                  }nt)                      t9          |j        ||||||	          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links              a/home/ubuntu/.hermes/hermes-agent/venv/lib/python3.11/site-packages/pip/_internal/utils/pylock.py(_pylock_package_from_install_requirementrC       sh    !!H==??D&M=OKOMN~ ;(! #	($"+/!%#0#9#L'0:*7  KK # 	( 0]%67788WYY [**XZZ %-6M*33*7! ! ! ' 	( -4 ,)+++,!%$18*7	  OO &''',% 	( -4 ,)+++)**D}  !])-,9@  " !-%)(5<! ! ! &''' #       install_requirementsIterable[InstallRequirement]r   c                z    t          t          d          dt          fd| D             d                     S )Nz1.0pipc              3  8   K   | ]}t          |          V  d S N)rC   ).0r   r   s     rB   	<genexpr>z3pylock_from_install_requirements.<locals>.<genexpr>{   sA         9xHH     rD   c                    | j         S rJ   )r&   )ps    rB   <lambda>z2pylock_from_install_requirements.<locals>.<lambda>   s    !& rD   )key)lock_version
created_bypackages)r   r   sorted)rE   r   s    `rB    pylock_from_install_requirementsrU   t   sh     U^^   0   ! 
 
 

 
 
 
rD   z^(http|https|file)://sstrboolc                P    t          t                              |                     S rJ   )rX   
_SCHEME_REmatch)rV   s    rB   _is_urlr\      s    
  ##$$$rD   r8   c                    t          |           r;t          t          |           j                            d          d                   }nt          |           }t          |          S )N/)r\   r   r	   r    
rpartitionr   )r8   r    s     rB   is_valid_pylock_filenamera      sX    x HX&&+66s;;B?@@H~~%%%rD   pylock_path_or_urlr    
str | Noner   c                   |t           j                            |          sit          |           rt	          | |          S t          t           j                            t           j                            |           |                    S t          |           rt          d|d|           t          |          S |J |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    isabsr\   r   r   joindirnamer   )rb   r    r   s      rB   _package_dist_urlri      s     w}}T"" 	%)** 14888"GLL1C!D!DdKK  
 )** 'F#'F F/AF F   t$$$
rD   r<   r   c                    t          | |j        |j                  }|j         d| d|j         }|j        r'd|v rt          d|d| d          |d|j        z   z  }|S )N+@#Package URL E cannot contain fragments in combination with subdirectory field (in )#subdirectory=)ri   r    r   r   r"   r#   r   )rb   r<   dist_urlr   s       rB   package_vcs_requirement_urlrs      s     !!3[5E{WWH
B
B
B
B;+@
B
BC ;#::#Gs G G/AG G G   	+":::JrD   r>   r   c                    t          | |j        |j                  }|j        r'd|v rt	          d|d| d          |d|j        z   z  }|S )Nrm   rn   ro   rp   rq   )ri   r    r   r#   r   )rb   r>   r   s      rB   package_archive_requirement_urlru      s     O0/2E C # ?#::#Gs G G/AG G G   	/">>>JrD   r=   r   c                V   t          |           r'|                     d          st          d|           t          | |j        d           }|                    d          sJ |                    d          s|dz  }|j        r$||j        z  }|                    d          s|dz  }|S )Nzfile://z:Directory entries are not supported in remote pylock.toml r^   )r\   
startswithr   ri   r    endswithr#   )rb   r=   r   s      rB   !package_directory_requirement_urlry      s     !"" 
+=+H+H+S+S 
&!& &
 
 	
 .0A0F
M
MC>>)$$$$$<< s
%  --||C   	3JCJrD   r?   r   c                8    t          | |j        |j                  S rJ   ri   r    r   )rb   r?   s     rB   package_sdist_requirement_urlr|           /1C]EVWWWrD   package_wheelr   c                8    t          | |j        |j                  S rJ   r{   )rb   r~   s     rB   package_wheel_requirement_urlr      r}   rD   path_or_urlsessionr   c                    t          |           j        }|dv r-ddlm} |                    |           } ||           |j        S t          |                               d          S )N)httphttpsfiler   )raise_for_statuszutf-8)encoding)r	   schemepip._internal.network.utilsr   gettextr   	read_text)r   r   r   r   resps        rB   _get_pylock_path_or_url_contentr      s{    k"")F***@@@@@@{{;''y &&&888rD   fIterator[tuple[Package, PackageVcs | PackageDirectory | PackageArchive | PackageWheel | PackageSdist]]c              #    K   	 t          | |          }n(# t          $ r}t          d| d|           |d }~ww xY w	 t          j        t          j        |                    }n(# t          $ r}t          d| d|           |d }~ww xY w	 |                                E d {V  d S # t          $ r}t          d| d|           |d }~ww xY 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)rb   r   pylock_contentexclocks        rB   select_from_pylock_path_or_urlr      sB     89KWUU   F);FFFF
 
	
n = =>>   @#5@@3@@
 
	
;;==            X;MXXSVXX
 
	s?    
:5:&A% %
B
/BB
B* *
C4C

C)r   r   r   r   r   r
   )rE   rF   r   r   r   r   )rV   rW   r   rX   )r8   rW   r   rX   )rb   rW   r    rc   r   rc   r   rW   )rb   rW   r<   r   r   rW   )rb   rW   r>   r   r   rW   )rb   rW   r=   r   r   rW   )rb   rW   r?   r   r   rW   )rb   rW   r~   r   r   rW   )r   rW   r   r   r   rW   )rb   rW   r   r   r   r   )5
__future__r   re   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   rC   rU   compile
IGNORECASErZ   r\   ra   ri   rs   ru   ry   r|   r   r   r    rD   rB   <module>r      s   " " " " " " 				 				 . . . . . . . .                   * * * * * * * *	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 2 1 1 1 1 1 6 6 6 6 6 6 * * * * * * . . . . . . = = = = = = = = A888888@@@@@@Q Q Q Qh     RZ/??
% % % %& & & &   <          &X X X XX X X X9 9 9 9      rD   