
    yIf>                       d 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mZmZmZmZ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lmZ  G d d          Z G d de          ZdZ ddZ! G d dee          Z"dS )z*A tox environment that can build packages.    )annotations)ABCabstractmethod)Path)RLock)
MethodType)TYPE_CHECKINGAnyCallable	GeneratorIteratorcast)FileLock   )ToxEnvToxEnvCreateArgs)Config)EnvConfigSet)	RunToxEnvc                      e Zd ZdZdS )Packagezpackage.N)__name__
__module____qualname____doc__     G/var/www/piapp/venv/lib/python3.11/site-packages/tox/tox_env/package.pyr   r      s        NNNr   r   c                  (     e Zd Zd fdZd	dZ xZS )
PathPackagepathr   returnNonec                V    t                                                       || _        d S N)super__init__r!   )selfr!   	__class__s     r   r'   zPathPackage.__init__   s$    			r   strc                *    t          | j                  S r%   )r*   r!   )r(   s    r   __str__zPathPackage.__str__   s    49~~r   )r!   r   r"   r#   )r"   r*   )r   r   r   r'   r,   __classcell__r)   s   @r   r    r       sQ                    r   r    Fthread_lockr   	file_lockFileLock | NonemethCallable[..., Any]r"   c                     d fd}|S )Nargsr
   kwargsr"   c                 D   5  d}j         du r                                 d}	  | i ||r't          t                                                     cd d d            S # |r(t          t                                                     w w xY w# 1 swxY w Y   d S )NFT)	is_lockedacquirer   r   release)r5   r6   
file_locksr0   r2   r/   s      r   _funcz_lock_method.<locals>._func'   s	    		8 		8J$)<)E)E!!###!
8tT,V,, 89--55777		8 		8 		8 		8 		8 		8 		8 		8  89--5577778		8 		8 		8 		8 		8 		8 		8 		8 		8 		8s'   $BA&)B&,BBBB)r5   r
   r6   r
   r"   r
   r   )r/   r0   r2   r<   s   ``` r   _lock_methodr=   &   s4    
8 
8 
8 
8 
8 
8 
8 
8 Lr   c                       e Zd Zd fdZdd	Zd  fd
Zd! fdZed"d            Zd#dZ	d$dZ
d%dZed&d            Z xZS )'PackageToxEnvcreate_argsr   r"   r#   c                    t                      | _        d | _        t                                          |           t                      | _        d S r%   )r   _thread_lock
_file_lockr&   r'   set_envs)r(   r@   r)   s     r   r'   zPackageToxEnv.__init__7   s=    !GG+/%%%"uu


r   namer*   r
   c                    t                               | |          }t          |t                    rt	          | j        | j        |          }|S r%   )object__getattribute__
isinstancer   r=   rB   rC   )r(   rF   objs      r   rI   zPackageToxEnv.__getattribute__=   sE    %%dD11c:&& 	Ht0$/3GGC
r   c           	        t                                                       | j        d         dz  }t          |          | _        |j                            dd           | j                            ddgt          t          t          | j        d                   d	           | j                            ddgt          t          t          | j        d                   d	           d S )
Nenv_dirz	file.lockT)parentsexist_okpackage_rootsetupdirtox_rootzaindicates where the packaging root file exists (historically setup.py file or pyproject.toml now))keysof_typedefaultdesc)r&   register_configconfr   rC   parentmkdircore
add_configr   r   )r(   file_lock_pathr)   s     r   rW   zPackageToxEnv.register_configD   s    !!!#y3kA">22##D4#@@@	 *-ty455t	 	 	
 	
 	
 		 *-ty899t	 	 	
 	
 	
 	
 	
r   rX   r   value
str | Noneboolc                d    | j         j        du o!t                                          ||          S )NF)optionsno_recreate_pkgr&   _recreate_default)r(   rX   r^   r)   s      r   rd   zPackageToxEnv._recreate_defaultV   s.    |+u4_9R9RSWY^9_9__r   for_envr   list[Package]c                    t           r%   NotImplementedError)r(   re   s     r   perform_packagingzPackageToxEnv.perform_packagingY       !!r   run_envr   /Generator[tuple[str, str], PackageToxEnv, None]c              #     K   dE d {V  d S )Nr   r   r(   rl   s     r   register_run_envzPackageToxEnv.register_run_env]   s      r   c                N    | j                             |j        j                   d S r%   )rE   addrX   rF   ro   s     r   mark_active_run_envz!PackageToxEnv.mark_active_run_env`   s!    
w|()))))r   c                    | j                             |j                   t          | j                   dk    r|                                  d S d S )Nr   )rE   removerF   len	_teardown)r(   rX   s     r   teardown_envzPackageToxEnv.teardown_envc   sK    
$)$$$tz??aNN  r   run_confIterator[PackageToxEnv]c                    t           r%   rh   )r(   ry   s     r   child_pkg_envszPackageToxEnv.child_pkg_envsh   rk   r   )r@   r   r"   r#   )rF   r*   r"   r
   )r"   r#   )rX   r   r^   r_   r"   r`   )re   r   r"   rf   )rl   r   r"   rm   )rl   r   r"   r#   )rX   r   r"   r#   )ry   r   r"   rz   )r   r   r   r'   rI   rW   rd   r   rj   rp   rs   rx   r|   r-   r.   s   @r   r?   r?   6   s       % % % % % %   
 
 
 
 
 
$` ` ` ` ` ` " " " ^"   * * * *   
 " " " ^" " " " "r   r?   N)r/   r   r0   r1   r2   r3   r"   r3   )#r   
__future__r   abcr   r   pathlibr   	threadingr   typesr   typingr	   r
   r   r   r   r   filelockr   apir   r   tox.config.mainr   tox.config.setsr   runnerr   r   r    lockedr=   r?   r   r   r   <module>r      s   0 0 " " " " " " # # # # # # # #                   J J J J J J J J J J J J J J J J       ) ) ) ) ) ) ) ) "&&&&&&,,,,,,!!!!!!           '    
    4" 4" 4" 4" 4"FC 4" 4" 4" 4" 4"r   