
    3i?                    ~   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	 d dl
mZ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! 	 	 	 d	 	 	 	 	 	 	 	 	 ddZ"	 	 	 d	 	 	 	 	 	 	 	 	 ddZ#	 	 	 	 d	 	 	 	 	 	 	 	 	 ddZ$d d!dZ%d"dZ&	 	 	 	 	 	 	 	 d#dZ'd$dZ(d%dZ)ddgZ*y)&    )annotationsN)partial)TYPE_CHECKING)make_app_data)VirtualEnvConfigParserVirtualEnvOptions)LEVELSsetup_report)Session)manual_upgrade)__version__   )ActivationSelector)CreatorSelector)get_discover)SeederSelector)MutableMapping)ComponentBuilderc                    |t         j                  n|}t        | |||      }|5  |j                          ddd       |S # 1 sw Y   |S xY w)a  Create a virtual environment given some command line interface arguments.

    :param args: the command line arguments
    :param options: passing in a ``VirtualEnvOptions`` object allows return of the parsed options
    :param setup_logging: ``True`` if setup logging handlers, ``False`` to use handlers already registered
    :param env: environment variables to use

    :returns: the session object of the creation (its structure for now is experimental and might change on short
        notice)

    N)osenvironsession_via_clirun)argsoptionssetup_loggingenv
of_sessions        J/var/www/opsc/venv/lib/python3.12/site-packages/virtualenv/run/__init__.pycli_runr       sL    " "**C wsCJ	 s   A  A
c                2   |t         j                  n|}t        | ||      \  }}|j                  |       |j                  j
                  _        t        fd|D              \  }}}t        j                  j                  |j                  |||      S )as  Create a virtualenv session (same as cli_run, but this does not perform the creation). Use this if you just want to query what the virtual environment would look like, but not actually create it.

    :param args: the command line arguments
    :param options: passing in a ``VirtualEnvOptions`` object allows return of the parsed options
    :param setup_logging: ``True`` if setup logging handlers, ``False`` to use handlers already registered
    :param env: environment variables to use

    :returns: the session object of the creation (its structure for now is experimental and might change on short
        notice)

    c              3  @   K   | ]  }|j                          y wN)create).0er   s     r   	<genexpr>z"session_via_cli.<locals>.<genexpr>G   s"      ( 	
(s   )r   r   build_parser
parse_args_interpreterversion_info
py_versiontupler   	verbosityapp_data)	r   r   r   r   parserelementscreatorseeder
activatorss	    `       r   r   r   2   s    " "**C#D'=#FFH%G,,99G"' (( #GVZ      c                   t        ||t        j                  n|      }t        |       |j	                  ddddd       t        || |       t        | ||      }t        |       t        ||       }|j                  x|_
        }|d| }t        |      t        ||      t        ||      t        ||      g}|j                  |       \  }}	|D ]  }
|
j!                  |        |j#                          ||fS )Nz--with-tracebackwith_traceback
store_trueFz>on failure also display the stacktrace internals of virtualenv)destactiondefaulthelpzfailed to find interpreter for )r   r   r   add_version_flagadd_argument_do_report_setupload_app_datahandle_extra_commandsr   interpreterr*   RuntimeErrorr   r   r   parse_known_argshandle_selected_arg_parseenable_help)r   r   r   r   r0   discoverrB   msgr1   _elements              r   r(   r(   U   s    $G3;RZZCPFV
M   VT=1D&'2G'"FD)H(0(<(<<F+/z:3V,{F+;/(H
 ((.JGQ 3))'23
8r5   c                    t        |       d   S )z0Used to provide a parser for the doc generation.r   )r(   )r   s    r   build_parser_onlyrL   y   s    a  r5   c                r    | j                   r+t        | j                  | j                        }t	        |      y r#   )upgrade_embed_wheelsr   r/   r   
SystemExit)r   results     r   rA   rA   ~   s1    ## 0 0'++>   $r5   c           
        |j                  ddd       |j                  | |      \  }}|j                  ddt        t        |j                  |j
                        t        d |j                  |j
                        	       |j                  d
dd       |j                  ddd       |j                  | |      \  }}|j                  r|j                  j                          |S )Nz--read-only-app-datar8   zMuse app data folder in read-only mode (write operations will fail with error))r:   r<   )	namespacez
--app-dataz-a data folder used as cache by the virtualenv)	read_onlyr   )r<   typer;   z--reset-app-dataz start with empty app data folderz--upgrade-embed-wheelsz.trigger a manual update of the embedded wheels)	r>   rD   r   r   read_only_app_datar   reset_app_datar/   reset)r   r0   r   rI   s       r   r@   r@      s     \  
 (((AJGQ <]g.H.HgkkZdg.H.HgkkZ	   /  
  =  
 (((AJGQ Nr5   c                ^    dd l }| j                  dddt         d|j                   d       y )Nr   z	--versionversionz	%(prog)s z from zIdisplay the version of the virtualenv package and its location, then exit)r:   rY   r<   )
virtualenvr>   r   __file__)r0   rZ   s     r   r=   r=      s8    
K=z/B/B.CDX	  r5   c           	        dj                  d t        t        j                               D              }d}| j	                  d|j                  t        j                  t        d         |            }|j                         }|j                  ddd	d
dd       |j                  ddd	ddd       rt        fddD              ry | j                        \  }}|rt        |j                         y y )Nz, c              3  V   K   | ]!  \  }}t        j                  |       d |  # yw)=N)logginggetLevelName)r%   clines      r   r'   z#_do_report_setup.<locals>.<genexpr>   s+     d'!TW11$78!=ds   ')z6verbosity = verbose - quiet, default {}, mapping => {}r.      )titledescriptionz-vz	--verbosecountverbosezincrease verbosity   )r:   r9   r<   r;   z-qz--quietquietzdecrease verbosityr   c              3  &   K   | ]  }|v  
 y wr#    )r%   ir   s     r   r'   z#_do_report_setup.<locals>.<genexpr>   s     8!AI8s   )z-hz--help)joinsortedr	   itemsadd_argument_groupformatr_   r`   add_mutually_exclusive_groupr>   anyrD   r
   r.   )	r0   r   r   	level_maprH   verbosity_groupr.   optionrI   s	    `       r   r?   r?      s    		dVTZT`T`TbMcddI
BC//JJw33F1I>	J 0 O  <<>I4W9Sgqrs47Ocmno8'788''-IFAV%%& r5   r    r   )NTN)
r   z	list[str]r   VirtualEnvOptions | Noner   boolr   MutableMapping[str, str] | Nonereturnr   )NNTN)
r   list[str] | Noner   rw   r   rx   r   ry   rz   z5tuple[VirtualEnvConfigParser, list[ComponentBuilder]]r#   )r   r{   rz   r   )r   r   rz   None)r   r{   r0   r   r   rw   rz   r   )r0   r   rz   r|   )r0   r   r   r{   r   rx   rz   r|   )+
__future__r   r_   r   	functoolsr   typingr   virtualenv.app_datar   virtualenv.config.cli.parserr   r   virtualenv.reportr	   r
   virtualenv.run.sessionr   &virtualenv.seed.wheels.periodic_updater   virtualenv.versionr   plugin.activatorsr   plugin.creatorsr   plugin.discoveryr   plugin.seedersr   collections.abcr   plugin.baser   r    r   r(   rL   rA   r@   r=   r?   __all__rk   r5   r   <module>r      sC   "  	    - R 2 * A * 1 , * *.-
 )-+/	
%  
)	
 4 )-+/	 
 %    
)	 
  H "(,+/	!
!%! ! 
)	!
 ;!H!
!
$:E]B'& r5   