
    5>qj2(                       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
rd dl#m$Z$ d dl%m&Z& 	 	 	 	 	 	 ddZ'	 	 	 	 	 	 ddZ( ejR                  dejT                        Z+ddZ,ddZ-	 	 	 	 	 	 	 	 d dZ.	 	 	 	 	 	 d!dZ/	 	 	 	 	 	 d"dZ0	 	 	 	 	 	 d#dZ1	 	 	 	 	 	 d$dZ2	 	 	 	 	 	 d%dZ3d&dZ4	 	 	 	 	 	 d'dZ5y)(    )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)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              Y/opt/rentech/trading_bot/.venv/lib/python3.12/site-packages/pip/_internal/utils/pylock.py(_pylock_package_from_install_requirementrC       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)rC   ).0r8   r9   s     rB   	<genexpr>z3pylock_from_install_requirements.<locals>.<genexpr>{   s        9xHs   c                    | j                   S rH   )r$   )ps    rB   <lambda>z2pylock_from_install_requirements.<locals>.<lambda>   s
    !&& rD   )key)lock_version
created_bypackages)r   r   sorted)install_requirementsr9   s    `rB    pylock_from_install_requirementsrT   t   s6     U^0 !

 
rD   z^(http|https|file)://c                >    t        t        j                  |             S rH   )bool
_SCHEME_REmatch)ss    rB   _is_urlrZ      s    
  #$$rD   c                    t        |       r;t        t        |       j                  j	                  d      d         }t        |      S t        |       }t        |      S )N/)rZ   r   r	   r   
rpartitionr   )r6   r   s     rB   is_valid_pylock_filenamer_      sR    xHX&++66s;B?@  %% H~%%rD   c                   |t         j                  j                  |      st        |       rft	        | |      }t        |       }t        |      }|j                  |j                  f|j                  |j                  fk7  rt        d|d|       |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.
    z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   isabsrZ   r   r	   schemenetlocr   r   joindirname)pylock_path_or_urlr   r   dist_urlbasetargets         rB   _package_dist_urlrk      s    ww}}T")*"#5t<
   23!(+MM6==1dkk4;;5OO+x (::L9OQ   "GGLL1C!DdK 
 )*'##'($/A.DF  t$$
rD   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=)rk   r   r   r   r    r!   r   )rg   r<   rh   r   s       rB   package_vcs_requirement_urlrt      s     !!3[5E5E{WHaz;+@+@*A
BC#:#sg &//A.DAG  	+":":::JrD   c                    t        | |j                  |j                        }|j                  r(d|v rt	        d|d| d      |d|j                  z   z  }|S )Nro   rp   rq   rr   rs   )rk   r   r   r!   r   )rg   r>   r   s      rB   package_archive_requirement_urlrv      sw     O00/2E2EC ###:#sg &//A.DAG  	/">">>>JrD   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\   )rZ   
startswithr   rk   r   endswithr!   )rg   r=   r   s      rB   !package_directory_requirement_urlrz      s     !"+=+H+H+SH!$&
 	
 .0A0F0F
MC>>)$$$<<s
%% ---||C 3JCJrD   c                D    t        | |j                  |j                        S rH   rk   r   r   )rg   r?   s     rB   package_sdist_requirement_urlr}            /1C1C]EVEVWWrD   c                D    t        | |j                  |j                        S rH   r|   )rg   package_wheels     rB   package_wheel_requirement_urlr      r~   rD   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	   rc   pip._internal.network.utilsr   gettextr   	read_text)path_or_urlsessionrc   r   resps        rB   _get_pylock_path_or_url_contentr      sY    k"))F**@{{;'yy &&&88rD   c              #    K   	 t        | |      }	 t	        j
                  t        j                  |            }	 |j                         E d {    y # t        $ r  t        $ r}t        d| d|       |d }~ww xY w# t        $ r}t        d| d|       |d }~ww xY w7 T# 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   r   	Exceptionr   r   	from_dictr   loadsselect)rg   r   pylock_contentexclocks        rB   select_from_pylock_path_or_urlr     s     89KWUn => ;;=  #   ();(>bF
	  "#5"83%@
	 	! :;M:PPRSVRWX
	st   CA (A? B$ B"B$ CA<%A77A<<C?	BBBC"B$ $	C-B??CC)r8   r   r9   r   returnr
   )rS   zIterable[InstallRequirement]r9   r   r   r   )rY   strr   rV   )r6   r   r   rV   )rg   r   r   
str | Noner   r   r   r   )rg   r   r<   r   r   r   )rg   r   r>   r   r   r   )rg   r   r=   r   r   r   )rg   r   r?   r   r   r   )rg   r   r   r   r   r   )r   r   r   r   r   r   )rg   r   r   r   r   zfIterator[tuple[Package, PackageVcs | PackageDirectory | PackageArchive | PackageWheel | PackageSdist]])6
__future__r   ra   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   rT   compile
IGNORECASErW   rZ   r_   rk   rt   rv   rz   r}   r   r   r    rD   rB   <module>r      s   " 	 	 .    *	 	 	 2 J * . =8@Q
Q(,QQh6BF  RZZ/?
%&''#-'4>''T*4.< 0@&XX,8XXXX,8XX9     rD   