
    yIf0+                    
   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mZ d dlmZ d dl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mZmZ d dlm Z  e	rd dl!m"Z" d dl#m$Z$  G d dee                   Z%dZ&dS )    )annotationsN)defaultdict)Path)TYPE_CHECKINGAnyCallableSequence)Requirement)Command)StdinSource)FailRecreate)	Installer)Python)EditableLegacyPackageEditablePackageSdistPackageWheelPackage)
PythonDeps)Config)PathPackagec                       e Zd ZdZd.d/ fd	Zd0d
Zd1dZd2dZd3dZd4dZ	d5dZ
ed6d            Zed6d            Zd7d Zed8d%            Zd9d'Zd:d*Zd;d-Z xZS )<PipzVPip is a python installer that can install packages as defined by PEP-508 and PEP-517.Ttox_envr   with_list_depsboolreturnNonec                X    || _         t                                          |           d S N)_with_list_depssuper__init__)selfr   r   	__class__s      V/var/www/piapp/venv/lib/python3.11/site-packages/tox/tox_env/python/pip/pip_install.pyr#   zPip.__init__   s)    -!!!!!    c                   | j         j                            dgt          dd           | j         j                            dgt          | j        | j        d           | j         j                            dgt          dd	           | j         j                            d
gt          dd           | j        r:| j         j                            dgt          t	          g d          d           d S d S )Npip_preFzdinstall the latest available pre-release (alpha/beta/rc) of dependencies without a specified version)keysof_typedefaultdescinstall_commandz command used to install packages)r*   r+   r,   post_processr-   constrain_package_depsz7If true, apply constraints during install_package_deps.use_frozen_constraintszWUse the exact versions of installed deps as constraints, otherwise use the listed deps.list_dependencies_command)python-mpipfreezez--allz'command used to list installed packages)_envconf
add_configr   r   default_install_commandpost_process_install_commandr!   r$   s    r&   _register_configzPip._register_config   s0   	!!w	 	" 	
 	
 	
 		!!#$0:3 	" 	
 	
 	
 		!!*+J	 	" 	
 	
 	
 		!!*+j	 	" 	
 	
 	
  	IN%%12 J J JKK>	 &     	 	r'   r8   r   env_name
str | Noner   c           	         | j         j        j        j        dk    rdnd}t	          d|ddddd	g          }|                     |          S )
N   z-Ez-Ir3   r4   r5   install{opts}
{packages})r7   base_pythonversion_infomajorr   r;   )r$   r8   r>   isolated_flagcmds        r&   r:   zPip.default_install_commandA   sR     $	 5 B HA M MSWxeYR^_``00555r'   rI   c                    |j         }| j        j        d         }	 |                    d          }|rd||<   n=|                    |           n'# t
          $ r |r|                    d           Y nw xY w|S )Nr)   rC   z--pre)argsr7   r8   indexpop
ValueErrorappend)r$   rI   r.   r)   opts_ats        r&   r;   z Pip.post_process_install_commandF   s    (	y1		-%++H55G
  -+2((##G,,,,  	0 	0 	0 0&&w///	0 
s   A !A21A2	list[str]c                    | j         j        d         }| j                             |j        t          j        dd          }|                                 |j                                        S )Nr2   r6   F)rI   stdinrun_idshow)	r7   r8   executerK   r   OFFassert_successout
splitlines)r$   rI   results      r&   	installedzPip.installedU   sZ    y~&AB""sx{x^c"ddz$$&&&r'   	argumentsr   sectionstrr+   c                   t          |t                    r|                     |||           d S t          |t                    r|                     |||           d S t          j        d|           t          d          )Npip cannot install %r   )
isinstancer   _install_requirement_filer	   _install_list_of_depsloggingwarning
SystemExit)r$   r]   r^   r+   s       r&   rB   zPip.install[   s    i,, 	 **9gwGGGGG	8,, 	 &&y'7CCCCCO3Y???Q--r'   r   c                :    t          | j        j                  dz  S )Nzconstraints.txt)r   r7   env_dirr<   s    r&   constraints_filezPip.constraints_filed   s    DI%&&):::r'   c                @    t          | j        j        d                   S )Nr0   r   r7   r8   r<   s    r&   r0   zPip.constrain_package_depsg       DIN#;<===r'   c                @    t          | j        j        d                   S )Nr1   rm   r<   s    r&   r1   zPip.use_frozen_constraintsk   rn   r'   r   c                T   	 |                                 \  }}n'# t          $ r}| d}t          |          |d }~ww xY wg }g }	|D ].}
|
                    d          r|	n|                    |
           /| j        | j        d}|||	|d}| j        j        	                    |||          5 \  }}|s[|| 
                    d||d         d            | 
                    d|	|d	         t          j        t          d
d                                t          |d                   t          |          z
  }|r'dd                    |           }t!          |          |                    d          }||k    rd| d| }t!          |          |j        }|rs|                     ||           | j        rV| j        sOdd|fd|	D             z   }|                                                     d                    |                     d d d            d S # 1 swxY w Y   d S )Nz for tox env py within deps-c )r0   r1   )optionsrequirementsconstraintsconstraint_optionszinstall flag(s)rr   c                    | S r     )is    r&   <lambda>z/Pip._install_requirement_file.<locals>.<lambda>   s    ef r'   zconstraint(s)rt      rs   zrequirements removed:  ru   z constraint options changed: old=z new=textr_   prefixr   c                ^    |                      |          r| t          |          d          S | S r    )
startswithlenr|   r}   s     r&   remove_prefixz4Pip._install_requirement_file.<locals>.remove_prefix   s0    #v66 ;'+CKKMM': :#'Kr'   c                *    g | ]} |d           S )rq   r   rw   ).0cr   s     r&   
<listcomp>z1Pip._install_requirement_file.<locals>.<listcomp>   s;     C C CDEMMq???C C Cr'   
)r|   r_   r}   r_   r   r_   )unrollrN   r   r   rO   r0   r1   r7   cachecompare_recreate_if_diffoperator
itemgetterslicesetjoinr   getas_root_args_execute_installerrk   
write_text)r$   r]   r^   r+   new_optionsnew_reqs	exceptionmsgnew_requirementsnew_constraintsreqru   neweqoldmissing_requirementold_constraint_optionsrK   combined_constraintsr   s                      @r&   rd   zPip._install_requirement_fileo   s.   	+$-$4$4$6$6!K 	+ 	+ 	+;;;Cs))*	+ ')%' 	Y 	YC #u 5 5K__;KSSTWXXXX&*&A&*&A
 

 #,*"4	
 
 Y_$$S'7;; 	\yC \?**+<k3y>[f[fggg**'#m:LhNabghikobpbpNqNq   +.c..A*B*BSIYEZEZ*Z'* ,Vsxx@S7T7TVV&smm+-0WW5I-J-J*-1CCCrAWrr^prr&smm+ - \++D':::2 
\4;V 
\( ( ( (
 0@ C C C CIXC C C 0, --//::499EY;Z;Z[[[9	\ 	\ 	\ 	\ 	\ 	\ 	\ 	\ 	\ 	\ 	\ 	\ 	\ 	\ 	\ 	\ 	\ 	\s#    
?:?.E"HH!$H!new_optsold_optsfmtCallable[[str], str]c                   ||k    rd S t          |          t          |          z
  }|r1dd                    t          fd|D                                  nd}t          |          t          |          z
  }|r1dd                    t          fd|D                                  nd}d|  | | }t          |          )Nz	 removed , c              3  .   K   | ]} |          V  d S r    rw   r   rx   r   s     r&   	<genexpr>z(Pip._recreate_if_diff.<locals>.<genexpr>   s+      .L.L!ss1vv.L.L.L.L.L.Lr'    z added c              3  .   K   | ]} |          V  d S r    rw   r   s     r&   r   z(Pip._recreate_if_diff.<locals>.<genexpr>   s+      *F*Fa33q66*F*F*F*F*F*Fr'   zchanged )r   r   sortedr   )	r+   r   r   r   removed_optsremoved
added_optsaddedr   s	      `     r&   r   zPip._recreate_if_diff   s    xF8}}s8}}4S_gOdii.L.L.L.L|.L.L.L(L(LMMOOOeg]]S]]2
MW_I$))F*F*F*F*F:*F*F*F$F$FGGIII]_22'2522smmr'   kSequence[Requirement | WheelPackage | SdistPackage | EditableLegacyPackage | EditablePackage | PathPackage]c                2   t          t                    }|D ]K}t          |t                    r)|d                             t          |                     At          |t          t          t          f          rX|d         	                    d |j
        D                        |d                             t          |j                             t          |t                    rY|d         	                    d |j
        D                        |d                             t          |j                             )t          j        d|           t          d          |d         s|d         r| dn|}|                                D ]}|                                 | j        j                            |d         ||          5 \  }}	|st+          t-          |	pg           t-          |d                   z
            }
|
r1d	d
                    d |
D                        }t1          |          t+          t-          |d                   t-          |	pg           z
            }|r|                     ||           d d d            n# 1 swxY w Y   ddg}|d         r|                     ||d         z   |           |d         rG|d         D ]&}|	                    dt          |          f           '|                     ||           d S d S )Nr   c              3  4   K   | ]}t          |          V  d S r    r_   r   rx   s     r&   r   z,Pip._install_list_of_deps.<locals>.<genexpr>   (      $>$>SVV$>$>$>$>$>$>r'   pkgc              3  4   K   | ]}t          |          V  d S r    r   r   s     r&   r   z,Pip._install_list_of_deps.<locals>.<genexpr>   r   r'   dev_pkgra   rb   _depszdependencies removed: r   c              3  4   K   | ]}t          |          V  d S r    r   r   s     r&   r   z,Pip._install_list_of_deps.<locals>.<genexpr>   s(      <R<RSVV<R<R<R<R<R<Rr'   z--force-reinstallz	--no-depsz-e)r   listrc   r
   rO   r_   r   r   r   extenddepspathr   rf   rg   rh   valuessortr7   r   r   r   r   r   r   r   )r$   r]   r^   r+   groupsargreq_of_typevaluer   r   missr   new_depsinstall_argsentrys                  r&   re   zPip._install_list_of_deps   s`    (34'8'8 	$ 	$C#{++ 
$u$$SXX....C,o!NOO $u$$$>$>SX$>$>$>>>>u$$S]]3333C!677 $u$$$>$>SX$>$>$>>>>y!((SX7777 7=== mm#+1%=ZF9<MZ''''SZ]]__ 	 	EJJLLLLY_$$VE]G[II 	CYbRU Cc#)nns6%=/A/AABB (T499<R<RT<R<R<R3R3RTTC"3--'!#fUm"4"4s39"~~"EFF C++HkBBB	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C ,[9%= 	K##L6%=$@'JJJ) 	;	* 8 8##T3u::$67777##L':::::	; 	;s   B9JJJr   Sequence[Any]c                   |dk    r8| j         r1|                                 }|                                r	g |d| }|                     |          }| j                            |t          j        d|           }|                                 |dk    r\| j         rW| j	        rR|                                 
                    d                    |                                                      d S d S d S d S )Npackage_depsz-cinstall_)rS   rT   r   r   )r0   rk   existsbuild_install_cmdr7   rV   r   rW   rX   r1   r   r   r\   )r$   r   r+   rk   rI   outcomes         r&   r   zPip._execute_installer   s   n$$)D$#4466&&(( 8776$4667$$T**)##C{G[RYG[G[#\\   f!<A\!!##..tyy9I9I/J/JKKKKK r'   rK   Sequence[str]c                B   	 | j         j        d         }n'# t          $ r}d|}t          |          |d }~ww xY w|j        }	 |                    d          }n# t          $ r t          |          }Y nw xY w|d |         t          |          z   ||dz   d          z   S )Nr.   z)unable to determine pip install command: rD   rb   )r7   r8   rN   r   rK   rL   r   r   )r$   rK   rI   excr   r.   rP   s          r&   r   zPip.build_install_cmd   s    	%9>*;<CC 	% 	% 	%EcEECs))$	% (	+%++L99GG 	+ 	+ 	+/**GGG	+xx(4::5RS8VVVs"    
949A A65A6)T)r   r   r   r   r   r   )r   r   )r8   r   r>   r?   r   r   )rI   r   r   r   )r   rQ   )r]   r   r^   r_   r+   r_   r   r   )r   r   )r   r   )r]   r   r^   r_   r+   r_   r   r   )
r+   r_   r   rQ   r   rQ   r   r   r   r   )r]   r   r^   r_   r+   r_   r   r   )r   r   r+   r_   r   r   )rK   r   r   rQ   )__name__
__module____qualname____doc__r#   r=   r:   r;   r\   rB   rk   propertyr0   r1   rd   staticmethodr   re   r   r   __classcell__)r%   s   @r&   r   r      s       ``" " " " " " "       D6 6 6 6
   ' ' ' '       ; ; ; ; > > > X> > > > X>1\ 1\ 1\ 1\f    \'; '; '; ';RL L L LW W W W W W W Wr'   r   )r   )'
__future__r   rf   r   collectionsr   pathlibr   typingr   r   r   r	   packaging.requirementsr
   tox.config.typesr   tox.execute.requestr   tox.tox_env.errorsr   r   tox.tox_env.installerr   tox.tox_env.python.apir   tox.tox_env.python.packager   r   r   r   tox.tox_env.python.pip.req_filer   tox.config.mainr   tox.tox_env.packager   r   __all__rw   r'   r&   <module>r      s   " " " " " "   # # # # # #       9 9 9 9 9 9 9 9 9 9 9 9 . . . . . . $ $ $ $ $ $ + + + + + + - - - - - - - - + + + + + + ) ) ) ) ) ) i i i i i i i i i i i i 6 6 6 6 6 6 0&&&&&&//////WW WW WW WW WW)F
 WW WW WWt r'   