
    VPib@                       d Z ddlmZ ddlZddlZddlmZ ddlmZ ddl	m
Z
mZmZ ddl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 ddl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' ddl(m)Z) ddl*m+Z+ ddl,m-Z-m.Z.m/Z/m0Z0 ddl1m2Z2m3Z3 ddl4m5Z5 ddl6m7Z7 ddl8m9Z9 ddl:m;Z; ddl<m=Z= ddl>m?Z?m@Z@mAZA  ejB        eC          ZDd1d!ZEeAjF        eAjG        eAjH        gZI ed"d#$          ZJd2d'ZKd3d/ZL G d0 d#e          ZMdS )4zContains the RequirementCommand base class.

This class is in a separate module so the commands that do not always
need PackageFinder capability don't unnecessarily import the
PackageFinder machinery and all its vendored dependencies, etc.
    )annotationsN)partial)Values)AnyCallableTypeVar)BuildEnvironmentInstaller"InprocessBuildEnvironmentInstaller#SubprocessBuildEnvironmentInstaller)
WheelCache)
cmdoptions)make_target_python)IndexGroupCommand)SessionCommandMixin)CommandErrorPreviousBuildDirErrorUnsupportedPythonVersion)LinkCollector)PackageFinder)SelectionPreferences)TargetPython)
PipSession)BuildTracker)RequirementPreparer)install_req_from_editableinstall_req_from_line#install_req_from_parsed_requirementinstall_req_from_req_string)PEP723Exceptionpep723_metadata)parse_dependency_groups)parse_requirements)InstallRequirement)BaseResolver)check_requires_python)TempDirectoryTempDirectoryTypeRegistrytempdir_kindsoptionsr   returnboolc                H    t           j                            d          dk    S )z
    Check if regular constraints should be ignored because
    we are in a isolated build process and build constraints
    feature is enabled but no build constraints were passed.
     _PIP_IN_BUILD_IGNORE_CONSTRAINTS1)osenvirongetr)   s    q/home/jaya/work/projects/VOICE-AGENT/VIET/agent-env/lib/python3.11/site-packages/pip/_internal/cli/req_command.py!should_ignore_regular_constraintsr4   ;   s     :>><==DD    	_CommandTRequirementCommand)boundfunc-Callable[[_CommandT, Values, list[str]], int]c                      ddd fd}|S )zNDecorator for common logic related to managing temporary
    directories.
    registryr'   r*   Nonec                F    t           D ]}|                     |d           d S )NF)KEEPABLE_TEMPDIR_TYPES
set_delete)r<   ts     r3   configure_tempdir_registryz0with_cleanup.<locals>.configure_tempdir_registryV   s4    ' 	* 	*A5))))	* 	*r5   selfr6   r)   r   args	list[str]intc                    | j         J |j        r | j                    	  | ||          S # t          $ r  | j                     w xY wN)tempdir_registryno_cleanr   )rC   r)   rD   rB   r9   s      r3   wrapperzwith_cleanup.<locals>.wrapperZ   s~    $000 	>&&t'<===	4gt,,,$ 	 	 	 '&t'<===	s	   0 A)r<   r'   r*   r=   )rC   r6   r)   r   rD   rE   r*   rF    )r9   rK   rB   s   ` @r3   with_cleanuprM   O   sB    * * * *       Nr5   constraint_filesrE   finderr   sessionr   list[InstallRequirement]c                    g }| D ]E}t          |d|||          D ].}t          ||j        d          }|                    |           /F|S )NT)
constraintrO   r)   rP   Fisolateduser_supplied)r"   r   isolated_modeappend)rN   rO   r)   rP   requirementsfilename
parsed_req
req_to_adds           r3   parse_constraint_filesr]   k   s     L$ , ,,
 
 
 	, 	,J = .#  J
 
++++	, r5   c                       e Zd Zd3 fdZed4d
            Ze	 	 d5d6d            Ze	 	 	 	 	 	 	 d7d8d*            Zd9d-Z	ed:d.            Z
	 	 d;d<d2Z xZS )=r7   rD   r   kwr*   r=   c                     t                      j        |i | | j                            t	          j                               | j                            t	          j                               d S rH   )super__init__cmd_opts
add_optionr   dependency_groupsrJ   )rC   rD   r_   	__class__s      r3   rb   zRequirementCommand.__init__   sc    $%"%%%  !=!?!?@@@  !4!6!677777r5   r)   r   strc                    d| j         v rdS dS )zEDetermines which resolver should be used, based on the given options.zlegacy-resolverlegacy
resolvelib)deprecated_features_enabledr2   s    r3   determine_resolver_variantz-RequirementCommand.determine_resolver_variant   s      CCC8|r5   Nr   temp_build_dirr&   build_trackerr   rP   r   rO   r   use_user_siter+   download_dir
str | None	verbosityrF   r   c	                6   |j         }	|	J d}
|                     |          }|dk    r&d|j        v }|rt                              d           n'd}
d}d|j        v rt                              d           t          |dg           }d	|j        v }d
|j        v r9t          ||||          }t          ||||t          |j	                            }nt          |||          }t          |	|j        ||j        ||j        |||j        ||j        ||||
          S )zQ
        Create a RequirementPreparer instance for the given parameters.
        NFrj   z	fast-depszpip is using lazily downloaded wheels using HTTP range requests to obtain dependency information. This experimental feature is enabled through --use-feature=fast-deps and it is not ready for production.Tz;fast-deps has no effect when used with the legacy resolver.build_constraintszbuild-constraintzinprocess-build-deps)rO   rn   rt   rr   wheel_cache)rt    build_constraint_feature_enabled)	build_dirsrc_dirrp   build_isolationbuild_isolation_installercheck_build_depsrn   rP   progress_barrO   require_hashesro   
lazy_wheelrr   legacy_resolver)pathrl   features_enabledloggerwarninggetattrr]   r
   r   	cache_dirr   r   rx   ry   r{   r|   r}   )clsrm   r)   rn   rP   rO   ro   rp   rr   temp_build_dir_pathr   resolver_variantr~   rt   rv   build_constraint_reqsenv_installers                    r3   make_requirement_preparerz,RequirementCommand.make_requirement_preparer   s    -1"...99'BB|++$(@@J "   #OJg666Q  
 $G-@"EE'":: 	)
 "W%===$:!67G% %! ?+"7#&w'899  MM @"31Q  M #)O%#3&3$5' -"1'!+
 
 
 	
r5   FTto-satisfy-onlypreparerru   WheelCache | Noneignore_installedignore_requires_pythonforce_reinstallupgrade_strategypy_version_infotuple[int, ...] | Noner$   c                b   t          t          |j                  }|                     |          }|dk    r=ddl}|j        j        j        j        	                    ||||||j
        ||||	|
          S ddl}|j        j        j        j        	                    ||||||j
        ||||	|
          S )zF
        Create a Resolver instance for the given parameters.
        )rU   rj   r   N)r   rO   ru   make_install_reqro   ignore_dependenciesr   r   r   r   r   )r   r   rW   rl   ,pip._internal.resolution.resolvelib.resolver	_internal
resolutionrj   resolverResolverr   (pip._internal.resolution.legacy.resolverri   )r   r   rO   r)   ru   ro   r   r   r   r   r   r   r   pips                 r3   make_resolverz RequirementCommand.make_resolver   s    " #'*
 
 
 99'BB |++????=+6?HH!'!1+$+$?!1'= /!1 / I    	8777}'.7@@#-' ' ;-#9+-+ A 
 
 	
r5   rE   rQ   c                   g }t          |          s,t          |j        |||          }|                    |           |D ]T}|                                st          |d|j        dt          |dd                    }|                    |           U|j	        rCt          |j	                  D ].}t          ||j        d          }|                    |           /|j        D ]>}t          |d|j        t          |dd                    }|                    |           ?|j        D ]f}	t          |	|||          D ]P}
t!          |
|j        d|
j        r|
j                            d          nd          }|                    |           Qg|j        rt)          |j                  d	k    rt+          d
          |j        d         }	 t-          |          }n&# t.          $ r}t+          |j                  d}~ww xY w|                    dd          }|rI|j        sBt5          |          }t7          ||j                  st;          d|d|j         d|          |                    dg           D ].}t          ||j        d          }|                    |           /t?          d |D                       rd|_         |s|j        s|j        sy|j	        sr|j        skd| j!        i}|j"        rAt+           dj#        di tI          |d%                    |j"                                      t+           dj#        di |          |S )zS
        Parse command-line arguments into the corresponding requirements.
        NTconfig_settings)
comes_fromrU   rV   r   rT   )rV   rU   r   )rO   r)   rP   )rU   rV   r      z1--requirements-from-script can only be given oncer   zrequires-python )requires_pythonversion_infozScript z requires a different Python: z not in dependenciesc              3  $   K   | ]}|j         V  d S rH   )has_hash_options).0reqs     r3   	<genexpr>z6RequirementCommand.get_requirements.<locals>.<genexpr>  s%      <<s#<<<<<<r5   namezXYou must give at least one requirement to {name} (maybe you meant "pip {name} {links}"?) )linkszHYou must give at least one requirement to {name} (see "pip help {name}")rL   )&r4   r]   constraintsextendstripr   rW   r   rX   re   r!   r   	editablesr   rY   r"   r   r)   r1   requirements_from_scriptslenr   r    r   msgr   r   r%   r   r   
py_versionanyr}   r   
find_linksformatdictjoin)rC   rD   r)   rO   rP   rY   r   r   r\   rZ   r[   scriptscript_metadataexcscript_requires_pythontarget_pythonoptss                    r3   get_requirementsz#RequirementCommand.get_requirements  s    24099 	-0#VWg K ,,, 
	, 
	,C99;; . ." '1BD I I  J 
++++$ 	0.w/HII 0 08$2"&  

 ##J////$ 	, 	,C2" . '1BD I I	  J 
++++  , 	0 	0H0'   0 0
 A$2"& &-"
*../@AAA!	 	 	
 ##J////0 , 	0745599"#VWWW6q9F,"1&"9"9" , , ,"37+++, &5%8%89JB%O%O"% 
g.L 
 27 ; ;,$:!.!>    3X& X X(3X X=SX X  
 '**>2>> 0 08$2"&  

 ##J//// <<|<<<<< 	*%)G" 	 	 #	 (		
 0	 DI&D! "E >>D t388G4F+G+GHHH    #5 ..4= =7;= =  
 s   G   
H*G>>Hc                x    | j         }|                                }|rt                              |           dS dS )zE
        Trace basic information about the provided objects.
        N)search_scopeget_formatted_locationsr   info)rO   r   	locationss      r3   trace_basic_infoz#RequirementCommand.trace_basic_info  sG     * 88::	 	#KK	"""""	# 	#r5   r   TargetPython | Nonebool | Nonec                    t          j        ||          }t          d|j        |j        |j        |          }t          j        ||||j                  S )z
        Create a package finder appropriate to this requirement command.

        :param ignore_requires_python: Whether to ignore incompatible
            "Requires-Python" values in links. Defaults to False.
        r2   T)allow_yankedformat_controlrelease_controlprefer_binaryr   )link_collectorselection_prefsr   uploaded_prior_to)r   creater   r   r   r   r   r   )rC   r)   rP   r   r   r   r   s          r3   _build_package_finderz(RequirementCommand._build_package_finder  sp     '-gwGGG."1#3!/#9
 
 
 #)+'%7	
 
 
 	
r5   )rD   r   r_   r   r*   r=   )r)   r   r*   rg   )Nr   )rm   r&   r)   r   rn   r   rP   r   rO   r   ro   r+   rp   rq   rr   rF   r*   r   )NFTFFr   N)r   r   rO   r   r)   r   ru   r   ro   r+   r   r+   r   r+   r   r+   r   rg   r   r   r*   r$   )
rD   rE   r)   r   rO   r   rP   r   r*   rQ   )rO   r   r*   r=   )NN)
r)   r   rP   r   r   r   r   r   r*   r   )__name__
__module____qualname__rb   staticmethodrl   classmethodr   r   r   r   r   __classcell__)rf   s   @r3   r7   r7      s'       8 8 8 8 8 8    \  $(N
 N
 N
 N
 [N
`  *.#!%', % 1266
 6
 6
 6
 [6
pz z z zx # # # \# .2.2
 
 
 
 
 
 
 
 
r5   )r)   r   r*   r+   )r9   r:   r*   r:   )
rN   rE   rO   r   r)   r   rP   r   r*   rQ   )N__doc__
__future__r   loggingr/   	functoolsr   optparser   typingr   r   r   pip._internal.build_envr	   r
   r   pip._internal.cacher   pip._internal.clir   pip._internal.cli.cmdoptionsr   pip._internal.cli.index_commandr   r   pip._internal.exceptionsr   r   r   pip._internal.index.collectorr   "pip._internal.index.package_finderr   $pip._internal.models.selection_prefsr   "pip._internal.models.target_pythonr   pip._internal.network.sessionr   ,pip._internal.operations.build.build_trackerr    pip._internal.operations.preparer   pip._internal.req.constructorsr   r   r   r   pip._internal.req.pep723r   r    &pip._internal.req.req_dependency_groupr!   pip._internal.req.req_filer"   pip._internal.req.req_installr#   pip._internal.resolution.baser$   pip._internal.utils.packagingr%   pip._internal.utils.temp_dirr&   r'   r(   	getLoggerr   r   r4   	BUILD_ENVEPHEM_WHEEL_CACHE	REQ_BUILDr?   r6   rM   r]   r7   rL   r5   r3   <module>r      s`    # " " " " "  				             ) ) ) ) ) ) ) ) ) )         
 + * * * * * ( ( ( ( ( ( ; ; ; ; ; ; = = = = = = V V V V V V         
 8 7 7 7 7 7 < < < < < < E E E E E E ; ; ; ; ; ; 4 4 4 4 4 4 E E E E E E @ @ @ @ @ @            F E E E E E E E J J J J J J 9 9 9 9 9 9 < < < < < < 6 6 6 6 6 6 ? ? ? ? ? ?          
	8	$	$E E E E #  GK';<<<	   8   2{
 {
 {
 {
 {
* {
 {
 {
 {
 {
r5   