
    i$                       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jP                  dejR                        Z*ddZ+ddZ,	 	 	 	 	 	 	 	 d dZ-	 	 	 	 	 	 d!dZ.	 	 	 	 	 	 d"dZ/	 	 	 	 	 	 d#dZ0	 	 	 	 	 	 d$dZ1	 	 	 	 	 	 d%dZ2d&dZ3	 	 	 	 	 	 d'dZ4y)(    )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)InstallRequirementc           	     \   |j                         }| j                         }| j                  }|sJ d }d }d }d }d }d }	| j                  rv|j                  rct        |j                  j                  |j                  d |j                  j                  |j                  j                  |j                        }n|j                  rt        t        t        |j                              j                         j                  |      j!                         |j                  j"                  r|j                  j"                  nd |j                        }n@|j$                  rX|j$                  j&                  s
t)               t+        |j                  d |j$                  j&                  |j                        }nt)               |j,                  }|j$                  r|j$                  j&                  s
t)               t/        |j                        }
|
j0                  r8t3        |
j4                  |j                  |j$                  j&                        g}	nAt7        |
j4                  |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)ireqbase_dirdistr,   package_versionpackage_vcspackage_directorypackage_archivepackage_sdistpackage_wheelslinks              M/root/searxng-venv/lib/python3.12/site-packages/pip/_internal/utils/pylock.py(_pylock_package_from_install_requirementrB       sC    !H==?D&&M=OKOMN~~!!$"++//!%%#0#9#9#L#L'00::*77K ## 0]%6%678WY [*XZ %--66 "**33*77! '' --44)++,!%%$1188*77	O &'',,%% --44)++))*D}} !]])--,99@@" !-%))(55<<! &''  #     c                \    t        t        d      dt        fd| D        d             S )Nz1.0pipc              3  6   K   | ]  }t        |        y wN)rB   ).0r7   r8   s     rA   	<genexpr>z3pylock_from_install_requirements.<locals>.<genexpr>{   s        9xHs   c                    | j                   S rG   )r#   )ps    rA   <lambda>z2pylock_from_install_requirements.<locals>.<lambda>   s
    !&& rC   )key)lock_version
created_bypackages)r   r   sorted)install_requirementsr8   s    `rA    pylock_from_install_requirementsrS   t   s6     U^0 !

 
rC   z^(http|https|file)://c                >    t        t        j                  |             S rG   )bool
_SCHEME_REmatch)ss    rA   _is_urlrY      s    
  #$$rC   c                    t        |       r;t        t        |       j                  j	                  d      d         }t        |      S t        |       }t        |      S )N/)rY   r   r	   r   
rpartitionr   )r5   r   s     rA   is_valid_pylock_filenamer^      sR    xHX&++66s;B?@  %% H~%%rC   c                X   |t         j                  j                  |      s]t        |       rt	        | |      S t        t         j                  j                  t         j                  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.
    zFAbsolute paths are not supported in pylock files obtained from a URL: z in )	osr   isabsrY   r   r   joindirnamer   )pylock_path_or_urlr   r   s      rA   _package_dist_urlre      s     ww}}T")*1488"GGLL1C!DdK 
 )*'##'($/A.DF  t$$
rC   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=)re   r   r   r   r   r    r   )rd   r;   dist_urlr   s       rA   package_vcs_requirement_urlro      s     !!3[5E5E{WHaz;+@+@*A
BC#:#sg &//A.DAG  	+":":::JrC   c                    t        | |j                  |j                        }|j                  r(d|v rt	        d|d| d      |d|j                  z   z  }|S )Nri   rj   rk   rl   rm   )re   r   r   r    r   )rd   r=   r   s      rA   package_archive_requirement_urlrq      sw     O00/2E2EC ###:#sg &//A.DAG  	/">">>>JrC   c                <   t        |       r| j                  d      st        d|       t        | |j                  d       }|j                  d      sJ |j                  d      s|dz  }|j                  r%||j                  z  }|j                  d      s|dz  }|S )Nzfile://z:Directory entries are not supported in remote pylock.toml r[   )rY   
startswithr   re   r   endswithr    )rd   r<   r   s      rA   !package_directory_requirement_urlru      s     !"+=+H+H+SH!$&
 	
 .0A0F0F
MC>>)$$$<<s
%% ---||C 3JCJrC   c                D    t        | |j                  |j                        S rG   re   r   r   )rd   r>   s     rA   package_sdist_requirement_urlrx            /1C1C]EVEVWWrC   c                D    t        | |j                  |j                        S rG   rw   )rd   package_wheels     rA   package_wheel_requirement_urlr|      ry   rC   c                    t        |       j                  }|dv r+ddlm} |j	                  |       } ||       |j
                  S t        |       j                  d      S )N)httphttpsfiler   )raise_for_statuszutf-8)encoding)r	   schemepip._internal.network.utilsr   gettextr   	read_text)path_or_urlsessionr   r   resps        rA   _get_pylock_path_or_url_contentr      sY    k"))F**@{{;'yy &&&88rC   c              #    K   	 t        | |      }	 t        j                  t        j                  |            }	 |j                         E d {    y # t        $ r}t        d| d|       |d }~ww xY w# t        $ r}t        d| d|       |d }~ww xY w7 K# t        $ r}t        d| d|       |d }~ww xY 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)rd   r   pylock_contentexclocks        rA   select_from_pylock_path_or_urlr      s     89KWUn =>;;=    ();(>bF
	  "#5"83%@
	 	! :;M:PPRSVRWX
	st   B>A (A6 B BB B>	A3A..A33B>6	B?BBB>B 	B;$B66B;;B>)r7   r   r8   r   returnr
   )rR   zIterable[InstallRequirement]r8   r   r   r   )rX   strr   rU   )r5   r   r   rU   )rd   r   r   
str | Noner   r   r   r   )rd   r   r;   r   r   r   )rd   r   r=   r   r   r   )rd   r   r<   r   r   r   )rd   r   r>   r   r   r   )rd   r   r{   r   r   r   )r   r   r   r   r   r   )rd   r   r   r   r   zfIterator[tuple[Package, PackageVcs | PackageDirectory | PackageArchive | PackageWheel | PackageSdist]])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   rS   compile
IGNORECASErV   rY   r^   re   ro   rq   ru   rx   r|   r   r    rC   rA   <module>r      s   " 	 	 .    *	 	 	 2 6 * . =8@Q
Q(,QQh6BF  RZZ/?
%&#-4><*4.< 0@&XX,8XXXX,8XX9 rC   