
    yIf                        d 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 ddlmZ dd	lmZ dd
l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S )z7A tox run environment that handles the Python language.    )annotations)partial)TYPE_CHECKINGSetcanonicalize_name)
StrConvert)HandledError)Skip)
PythonDeps)	RunToxEnv   )Python)ToxEnvCreateArgs)Packagec                       e Zd Zd fdZd fdZedd            Zd fd
Zedd            Zedd            Z	d fdZ
ddZddZ xZS )	PythonRuncreate_argsr   returnNonec                J    t                                          |           d S N)super__init__)selfr   	__class__s     M/var/www/piapp/venv/lib/python3.11/site-packages/tox/tox_env/python/runner.pyr   zPythonRun.__init__   s!    %%%%%    c           	     N    t                                                        j        d         } j                            dt
          t          t
          j        |          t          d|          d           d fd	} j                            d
gdt          |d           d S )N	toxinidirdeps z7Name of the python dependencies as specified by PEP-440)keysof_typefactorydefaultdescvalueboolr   c                    t          j        dd          dk    r+t                                          j        j                  S | S )Nskip_missing_interpretersconfig)getattroptionsr	   to_boolr+   )r(   r   s    r   &skip_missing_interpreters_post_processzIPythonRun.register_config.<locals>.skip_missing_interpreters_post_process&   s?    t|%@(KKxWW!||++DL,RSSSLr   r+   Tz!skip running missing interpreters)r#   r&   r$   post_processr'   )r(   r)   r   r)   )	r   register_configcoreconf
add_configr   r   r%   r)   )r   rootr0   r   s   `  r   r2   zPythonRun.register_config   s    !!!y%	J.55r4((J 	 	
 	
 	
	 	 	 	 	 	
 		-.?4 	 	
 	
 	
 	
 	
r   tuple[str, ...]c                    dS )N)wheelsdisteditablezeditable-legacyskipexternal r   s    r   _package_typeszPythonRun._package_types3   s    RRr   r)   c                   dd                     d | j        D                        d}t                                                      s| j                            dg|d           dS t          | j        dd           | j                            dg|d	           n| j                            d
dgddt                     | j        d
         pt          | j        dd          }|r| j                            dg|d           n(| j                            dt          | j        |           | j        }|dk    rdS dd}| j                            dgt          t                   t                      d|           dS )Nzpackage installation mode - z | c              3     K   | ]}|V  d S r   r>   ).0is     r   	<genexpr>z3PythonRun._register_package_conf.<locals>.<genexpr>9   s"      8X8Xq8X8X8X8X8X8Xr    packager<   Finstall_pkgr=   use_develop
usedevelopzuse develop mode)r#   r'   r&   r$   developr;   )r#   r$   r&   r'   valuesset[str]r   c                    d | D             S )Nc                ,    h | ]}t          |          S r>   r   )rC   vs     r   	<setcomp>zNPythonRun._register_package_conf.<locals>._normalize_extras.<locals>.<setcomp>S   s!    999Q%a((999r   r>   )rL   s    r   _normalize_extrasz;PythonRun._register_package_conf.<locals>._normalize_extrasP   s     :9&9999r   extrasz'extras to install of the target package)r#   r$   r&   r'   r1   T)rL   rM   r   rM   )joinr@   r   _register_package_confr4   add_constantr-   r.   r5   r)   strdefault_pkg_typepkg_typer   set)r   r'   develop_moderY   rR   r   s        r   rU   z PythonRun._register_package_conf7   s   [ejj8X8XDDW8X8X8X.X.X[[[ww--// 	I""I;f===54<55AI""I;jAAAAI  #\2'	 !     9]3^wt|YX]7^7^L l	&&	{D*EEEE	$$)S$J_fj$kkk=v5	: 	: 	: 	:
 		HEE:* 	 	
 	
 	
 tr   rW   c                    dS )Nr:   r>   r?   s    r   rX   zPythonRun.default_pkg_type^   s    wr   c                    | j         d         }|| j        vr1d                    | j                  }d| d| }t          |          |S )NrG   z, zinvalid package config type z requested, must be one of )r4   r@   rT   r
   )r   rY   rL   msgs       r   rY   zPythonRun.pkg_typeb   sY    	),4...YYt233F^^^V\^^Cs###r   c                p    t                                                       |                                  d S r   )r   
_setup_env_install_deps)r   r   s    r   r`   zPythonRun._setup_envk   s1    r   c                b    | j         d         }|                     |t          j        d           d S )Nr!   )r4   _installr   __name__)r   requirements_files     r   ra   zPythonRun._install_depso   s/    (,	&(9');VDDDDDr   list[Package]c                8   | j         }|J |                    | j                  5  	 |                    | j                  }n?# t
          $ r2}|j        d          d|j        d          }t          |          |d }~ww xY w	 d d d            n# 1 swxY w Y   |S )Nr   z for package environment env_name)package_envdisplay_context_has_display_suspendedperform_packagingr4   r   args)r   ri   packages	exceptionr^   s        r   _build_packageszPythonRun._build_packagess   s    &&&&(()DEE 	/ 	//&88CC / / /"*cc[EUV`Eacc3iiY./ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ s4   BAB
A?-A::A??BBB)r   r   r   r   )r   r   )r   r7   )r   r)   )r   rW   )r   rf   )rd   
__module____qualname__r   r2   propertyr@   rU   rX   rY   r`   ra   rp   __classcell__)r   s   @r   r   r      s(       & & & & & &
 
 
 
 
 
0 S S S XS% % % % % %N    X    X     E E E E	 	 	 	 	 	 	 	r   r   N)__doc__
__future__r   	functoolsr   typingr   r   packaging.utilsr   tox.config.loader.str_convertr	   
tox.reportr
   tox.tox_env.errorsr   tox.tox_env.python.pip.req_filer   tox.tox_env.runnerr   apir   tox.tox_env.apir   tox.tox_env.packager   r   r>   r   r   <module>r      s1   = = " " " " " "       % % % % % % % % - - - - - - 4 4 4 4 4 4 # # # # # # # # # # # # 6 6 6 6 6 6 ( ( ( ( ( (       ,000000++++++e e e e e	 e e e e er   