
    yIf                        d dl mZ d dl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mZmZmZ d dlmZmZ ddlmZmZ dd	lmZmZmZ dd
lmZ erd dlmZ  G d dee          ZdS )    )annotationsN)ABCabstractmethod)sha256)TYPE_CHECKINGAnyIterableList)CommandEnvList   )ToxEnvToxEnvCreateArgs)PackagePackageToxEnvPathPackage)add_change_dir_conf)
EnvJournalc                  N    e Zd Zd% fdZd& fdZd& fdZd& fdZd'd
Zd(dZd)d* fdZ	e
d+d            Ze
ed+d                        Ze
ed+d                        Zd&dZd,dZd&dZed-d            Ze
d. fd             Zed/d!            Ze
d0d#            Zd&d$Z xZS )1	RunToxEnvcreate_argsr   returnNonec                t    d | _         g | _        t                                          |           d | _        d S N)package_env	_packagessuper__init___package_envs)selfr   	__class__s     F/var/www/piapp/venv/lib/python3.11/site-packages/tox/tox_env/runner.pyr   zRunToxEnv.__init__   s8    15(*%%%EI    c                    dd}| j                             dgt          dd|           | j                             d	t          d
t          g                      t	                                                       | j                             dgt          t                   g d           | j                             dgt          t                   g d           | j                             dgt          t                   g d           t          | j         | j	                   | j                             dgt          dd           | j                             dgt          dd           | j                             dgt          dd           d S )Nvaluestrr   c                ~    t          j        dd|                     dd                              dd                    S )Nz\s+  
)resubreplace)r&   s    r#   ensure_one_linez2RunToxEnv.register_config.<locals>.ensure_one_line   s4    6&#u}}T2'>'>'F'FtS'Q'QRRRr$   descriptionr+   z+description attached to the tox environment)keysof_typedefaultdescpost_processdependszKtox environments that this environment depends on (must be run after those))r3   r5   r4   commands_prez(the commands to be called before testingr2   r3   r4   r5   commandsz%the commands to be called for testingcommands_postz'the commands to be called after testingargs_are_pathsTz=if True rewrite relative posargs paths from cwd to change_dirignore_errorsFzZwhen executing the commands keep going even if a sub-command exits with non-zero exit codeignore_outcomezZif set to true a failing result of this testenv will not make tox fail (instead just warn))r&   r'   r   r'   )conf
add_configr'   r   r   register_configr
   r   r   corebool)r!   r0   r"   s     r#   rA   zRunToxEnv.register_config   s   	S 	S 	S 	S 		>( 	 	
 	
 	
 		^BKK	 	 	
 	
 	
 	!!!	 !M;	 	 	
 	
 	
 		M8	 	 	
 	
 	
 		!"M:	 	 	
 	
 	
 	DIty111	"#P	 	 	
 	
 	
 		!"m	 	 	
 	
 	
 		"#m	 	 	
 	
 	
 	
 	
r$   c                ~    t                                                       |                     d| j                   d S )Nteardown_env)r   	_teardown_call_pkg_envsr?   r!   r"   s    r#   rF   zRunToxEnv._teardownS   s7    NDI66666r$   c                r    t                                                       |                     d           d S )N	interrupt)r   rJ   rG   rH   s    r#   rJ   zRunToxEnv.interruptW   s3    K(((((r$   tuple[str, str] | Nonec                   |                                  r| j        d         dk    }| j                            ddgt          | j        d           | j                            dgt          | j        d          |rdnd d           | j        d         dk    }| j                            d	gd
|r| j        n| j                   | j        d         | j        d	         fS d S )Npackageexternalr   isolated_build_envztox environment used to packager9   	_externalr+   package_tox_env_typez-tox package type used to generate the package)r2   r5   r&   )	_register_package_confr?   rB   r@   r'   _default_package_envadd_constant_external_pkg_tox_env_type_package_tox_env_type)r!   has_external_pkgis_externals      r#   get_package_env_typeszRunToxEnv.get_package_env_types[   s   &&(( 	O#y3zAI  #%9:16	 !    I  #_9]3^DT5\[[Z\^^6	 !    )I.*<KI"",-D9Ddd55$Jd #   
 9]+TY7M-NNNtr$   method_namer'   argsr   c                    | j         D ]H}|                    | j                  5   t          ||          |  d d d            n# 1 swxY w Y   Id S )N)suspend)package_envsdisplay_context_has_display_suspendedgetattr)r!   rZ   r[   r   s       r#   rG   zRunToxEnv._call_pkg_envss   s    , 	9 	9K,,T5P,QQ 9 91[114889 9 9 9 9 9 9 9 9 9 9 9 9 9 9	9 	9s   AA		A		F
transitiverC   c                |    t                                          |           |r|                     d           d S d S )N_clean)r   rd   rG   )r!   rb   r"   s     r#   rd   zRunToxEnv._cleanx   sE    z""" 	*)))))	* 	*r$   c                    dS )Nz.pkg r!   s    r#   rS   zRunToxEnv._default_package_env}   s    vr$   c                    t           r   NotImplementedErrorrg   s    r#   rV   zRunToxEnv._package_tox_env_type   
     "!r$   c                    t           r   ri   rg   s    r#   rU   z$RunToxEnv._external_pkg_tox_env_type   rk   r$   c                    | j         Ft          | j        dd          }|du rt          j        d           d S |                                  d S d S )Nskip_pkg_installFTz(skip building and installing the package)r   ra   optionsloggingwarning
_setup_pkg)r!   rn   s     r#   _setup_with_envzRunToxEnv._setup_with_env   s`    '%,T\;Mu%U%U4'' JKKKKK!!!!! ('r$   c                    | j                             ddgt          dd           | j         d         }|du rdS | j                            dt          dd           | j        d         }| S )	zYIf this returns True package_env and package_tox_env_type configurations must be defined.
no_package	skipsdistFz/is there any packaging involved in this projectr9   Tskip_installzskip installation)rB   r@   rC   r?   )r!   core_no_packagerw   s      r#   rR   z RunToxEnv._register_package_conf   s    	,B	 	 	
 	
 	
 !%	, 7d""5	$	 	 	
 	
 	
 "Y~6r$   c                    |                                  | _        | j        j        s&|                     | j        t
          j        d           |                     | j        | j                   d S )NrM   )	_build_packagesr   ro   package_only_installr   __name___handle_journal_packagejournalrg   s    r#   rr   zRunToxEnv._setup_pkg   s^    --//|( 	IMM$.)*<iHHH$$T\4>BBBBBr$   r   r   packageslist[Package]c                   | sd S g }|D ]}t          |t                    r||j        }|                                rdn|                                rdnd}|j        |d}|dk    r6t          |                                                                          |d<   nt          |
                    |           |r"t          |          dk    r|d         n|| d<   d S d S )	NfiledirzN/A)basenametyper   r   r   
installpkg)
isinstancer   pathis_fileis_dirnamer   
read_bytes	hexdigestrj   appendlen)r   r   installed_metarM   pkgr3   metas          r#   r~   z!RunToxEnv._handle_journal_package   s    	F 		( 		(G';// *l$'KKMMY&&8XSX$'Hg>>f$$%+CNN,<,<%=%=%G%G%I%IDN))!!$'''' 	f9<^9L9LPQ9Q9QN1$5$5WeGL!!!	f 	fr$   dict[str, str]c                    t                      j        }| j        8| j        r1t          j                            d | j        D                       |d<   |S )Nc              3  4   K   | ]}t          |          V  d S r   )r'   ).0is     r#   	<genexpr>z2RunToxEnv.environment_variables.<locals>.<genexpr>   s(      BbBba3q66BbBbBbBbBbBbr$   TOX_PACKAGE)r   environment_variablesr   r   ospathsepjoin)r!   r   r"   s     r#   r   zRunToxEnv.environment_variables   sR     % ='DN'35:??BbBbSWSaBbBbBb3b3b!-0$$r$   c                    t           )z9:returns: a list of packages installed in the environmentri   rg   s    r#   rz   zRunToxEnv._build_packages   rk   r$   Iterable[PackageToxEnv]c              #  x   K   | j         0| j         V  | j                             | j                  E d {V  d S d S r   )r   child_pkg_envsr?   rg   s    r#   r^   zRunToxEnv.package_envs   sW      '""""'66tyAAAAAAAAAAA ('r$   c                D    | j         D ]}|                    |            d S r   )r^   mark_active_run_env)r!   pkg_envs     r#   mark_activezRunToxEnv.mark_active   s5    ( 	. 	.G''----	. 	.r$   )r   r   r   r   )r   r   )r   rK   )rZ   r'   r[   r   r   r   )F)rb   rC   r   r   )r   r'   )r   rC   )r   r   r   r   r   r   )r   r   )r   r   )r   r   )r}   
__module____qualname__r   rA   rF   rJ   rY   rG   rd   propertyrS   r   rV   rU   rs   rR   rr   staticmethodr~   r   rz   r^   r   __classcell__)r"   s   @r#   r   r      sC       J J J J J J6
 6
 6
 6
 6
 6
p7 7 7 7 7 7) ) ) ) ) )   09 9 9 9
* * * * * * *
    X " " " ^ X" " " " ^ X"" " " "       (C C C C f f f \f" % % % % % X% " " " ^" B B B XB
. . . . . . . .r$   r   )
__future__r   rp   r   r-   abcr   r   hashlibr   typingr   r   r	   r
   tox.config.typesr   r   apir   r   rM   r   r   r   utilr   tox.journalr   r   rf   r$   r#   <module>r      s:   " " " " " "  				 				 # # # # # # # #       5 5 5 5 5 5 5 5 5 5 5 5 - - - - - - - - ) ) ) ) ) ) ) ) 8 8 8 8 8 8 8 8 8 8 % % % % % % '&&&&&&@. @. @. @. @. @. @. @. @. @.r$   