
    yIf.                    "   d Z 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 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 ddlm Z  ddl!m"Z" erddl#m$Z$ ddl%m&Z& ed$d            Z'd%dZ(d&dZ)d'd#Z*dS )(zNThis package handles provisioning an appropriate tox version per requirements.    )annotationsN)PackageNotFoundErrordistribution)Path)TYPE_CHECKINGListcast)Requirement)canonicalize_name)Version)MemoryLoader)StdinSource)impl)HandledError)Skip)
PythonDeps)	PythonRun)ArgumentParser)Stateparserr   returnNonec                    |                      dddddd           |                      dd	d
d           |                      ddddd           d S )Nz--no-provisionFT?REQ_JSONzddo not perform provision, but fail and if a path was provided write provision metadata as JSON to it)defaultconstnargsmetavarhelpz--no-recreate-provisionno_recreate_provisionz<if recreate is set do not recreate provision tox environment
store_true)destr    actionz-rz
--recreaterecreatezrecreate the tox environments)add_argument)r   s    A/var/www/piapp/venv/lib/python3.11/site-packages/tox/provision.pytox_add_optionr(      s    
s     !$K	     ,          stater   
int | boolc           
          j         j                            ddgt          d d            j         j                            dt          dd           d' fd} j         j                            dt
          t                   g d|           ddlm} |	                     j         j                     j         j        d         }t          |          }d                    d |D                       }t          g dt          d                    d |D                        j         j        d                   dg j         j        j        o j         j        j                   } j         j        d         } j         j        |                             |            j                            t+          |          |           |sdS d| } j         j        j        }	|	rdt.          j         d| }
t3          |	t                    r|
d|	 z  }
t	          t5          d |D                                                     d          }t9          |          d k    r|d!         nd d" |D             d#}t;          |	                              t?          j         |d$%                     tC          |
          tE          j#        d&t.          j        |           tI          |           S )(Nmin_version
minversionz.Define the minimal tox version required to run)keysof_typer   descprovision_tox_envz.toxz8Name of the virtual environment used to provision a tox.reqslist[Requirement]r   c                    j         j        d         }|                     t          d|rd| nd                      | S )Nr-   toxz>= )confcoreappendr
   )r3   r-   r*   s     r'   add_tox_requires_min_versionz/provision.<locals>.add_tox_requires_min_versionG   sL    $z}=K QK&O&8;&8&8&8R Q QRRSSSr)   requires)r/   r0   r   r1   post_processr   )MANAGERz, c              3  8   K   | ]\  }}| |dnd| d V  d S )Nr7   z () ).0pvs      r'   	<genexpr>zprovision.<locals>.<genexpr>[   sA      PP1;22	Q			;;PPPPPPr)   skip
c              3  4   K   | ]}t          |          V  d S )Nstr)rB   rs     r'   rE   zprovision.<locals>.<genexpr>`   s(      !;!;Q#a&&!;!;!;!;!;!;r)   tox_root)root*)basepackagedepspass_envr%   Fzis missing [requires (has)]: z(provisioning explicitly disabled within z, but z and wrote to c              3  :   K   | ]}|j         d k    |j        V  dS )r6   N)name	specifierrB   is     r'   rE   zprovision.<locals>.<genexpr>r   s*      "T"T1AFeOO1;OOOO"T"Tr)   =      c                ,    g | ]}t          |          S rA   rI   rV   s     r'   
<listcomp>zprovision.<locals>.<listcomp>u   s    666SVV666r)   )r.   r<      )indentz5will run in automatically provisioned tox, host %s %s)r3   r4   r   r4   )%r8   r9   
add_configr   rJ   r   r
   tox.plugin.managerr>   tox_add_core_config_get_missingjoinr   r   optionsr%   r!   memory_seed_loadersr:   envs_mark_provisionboolno_provisionsys
executable
isinstancenextsplitlenr   
write_textjsondumpsr   loggingwarningrun_provision)r*   r;   r>   r<   missingrQ   loaderr2   miss_msgri   msgr-   requires_dicts   `            r'   	provisionr{   7   s   	JO\*=     
JO G	         
 
JO[!G1     +*****
777"'*/*"=H8$$G99PPPPPPPD		!;!;(!;!;!;;;%*/R\B]^^^#,]UZ5G5]1]  F #Z_-@A	J"#45<<VDDD	JtG}}.?@@@ u5t55H$z1>L 
 YYYxYYlC(( 	O2L222Cd"T"T"T"T"TTTUU[[\_``K03K0@0@A0E0Ek!nn466X666 M ))$*]1*M*M*MNNN3OKS^]efff*E222r)   r<   r4   $list[tuple[Requirement, str | None]]c                $   g }| D ]}t          |j                  }	 t          |          }|j                            |j        d          s|                    ||j        f           d# t          $ r |                    |d f           Y w xY w|S )NT)prereleases)r   rT   r   rU   containsversionr:   r   )r<   rv   rP   package_namedists        r'   rb   rb   ~   s    46G 8 8(66	8--D $--dl-MM 86777	 $ 	, 	, 	,NNGT?+++++	,
 Ns   A))!BBrT   rJ   intc                .   t          t          |j        |                    }|                                }t	          j        d|           	 |                                 n5# t          $ r(}d|j        d          d| }t          |          |d }~ww xY wt          |          ddg}|                    |j                   |                    |t          j                    ddt!          j                    	          }t          t$          |j                  S )
NzCwill run in a automatically provisioned python environment under %sz!cannot provision tox environment env_namez	 because z-mr6   Tr{   )cmdstdinshowrun_idcwd)r	   r   rf   
env_pythonrs   infosetupr   r8   r   rJ   extendargsexecuter   	user_onlyr   r   r   	exit_code)rT   r*   tox_envr   	exceptionry   r   outcomes           r'   ru   ru      s   iD)9::G##%%JLVXbccc/ / / /`',z2J``U^``3Y./ :e4DKK
oo$k.C.E.EDYdjnjrjtjtouuGW&'''s   A   
B*#BB)r   r   r   r   )r*   r   r   r+   )r<   r4   r   r|   )rT   rJ   r*   r   r   r   )+__doc__
__future__r   rq   rs   rj   importlib.metadatar   r   pathlibr   typingr   r   r	   packaging.requirementsr
   packaging.utilsr   packaging.versionr   tox.config.loader.memoryr   tox.execute.apir   
tox.pluginr   
tox.reportr   tox.tox_env.errorsr   tox.tox_env.python.pip.req_filer   tox.tox_env.python.runnerr   argparser   tox.session.stater   r(   r{   rb   ru   rA   r)   r'   <module>r      s   T T " " " " " "   



 A A A A A A A A       , , , , , , , , , , . . . . . . - - - - - - % % % % % % 1 1 1 1 1 1 ' ' ' ' ' '       # # # # # # # # # # # # 6 6 6 6 6 6 / / / / / / (''''''''''''    0D3 D3 D3 D3N   ( ( ( ( ( (r)   