
    dJP                       d dl mZ d dlZd dl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 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 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. d dl/m0Z0 e	r$d dl1m2Z2 d dl3m4Z4 d dl5m6Z6 d dl7m8Z8 d d l+m9Z9 d d!l:m;Z;  G d" d#          Z<dS )$    )annotationsN)suppress)TYPE_CHECKING)cast)CompletionsCommand)HelpCommand)ListCommand)ConsoleCommandEvent)ConsoleErrorEvent)COMMAND)ERROR)	TERMINATE)ConsoleTerminateEvent)CleoCommandNotFoundError)	CleoError)CleoLogicError)CleoNamespaceNotFoundError)CleoUserError)Argument)	ArgvInput)
Definition)Option)IO)	Verbosity)StreamOutput)UI)SolutionProviderRepository)Command)EventDispatcher)Input)Output)CommandLoaderc                     e Zd ZdZdVdWd	ZedXd
            ZedXd            ZedXd            ZedXd            Z	edYd            Z
edZd            ZedXd            Zed[d            Zed\d            Zd]dZd^dZd_dZd`dZdadZdbd"Zdcddd&Zded'Zded(Zdcdfd*Zded+Zdgd.Zdhd2Zdid3Zdjd4Zdkd6Zdld8Zdid9Z dmdnd=Z!	 	 	 dodpdDZ"dqdGZ#drdHZ$	 	 	 dodsdIZ%dtdLZ&dudMZ'edYdN            Z(dvdOZ)dmdwdRZ*d[dSZ+dxdTZ,dydUZ-d:S )zApplicationz
    An Application is the container for a collection of commands.

    This class is optimized for a standard CLI environment.

    Usage:
    >>> app = Application('myapp', '1.0 (stable)')
    >>> app.add(Command())
    >>> app.run()
    console namestrversionreturnNonec                   || _         || _        d | _        t          j                    | _        d| _        d| _        i | _        d | _	        d| _
        d | _        d| _        d| _        d| _        d | _        d | _        d | _        d | _        d S )NlistFT)_name_version_display_nameshutilget_terminal_size	_terminal_default_command_single_command	_commands_running_command_want_helps_definition_catch_exceptions
_auto_exit_initialized_ui_event_dispatcher_command_loader_solution_provider_repository)selfr'   r)   s      T/home/feoh/.local/pipx/venvs/poetry/lib/python3.11/site-packages/cleo/application.py__init__zApplication.__init__<   s    
)-133 &$-/04 .2!%!" :>59PT***    c                    | j         S Nr.   rA   s    rB   r'   zApplication.nameS   s
    zrD   c                x    | j         -t          j        dd| j                                                  S | j         S )Nz[\s\-_]+ )r0   resubr.   titlerH   s    rB   display_namezApplication.display_nameW   s6    %6+sDJ77==???!!rD   c                    | j         S rF   r/   rH   s    rB   r)   zApplication.version^   s
    }rD   c                ^    | j         r%| j        rd| j         d| j         dS d| j         dS dS )Nz<b>z</b> (version <c1>z</c1>)z</b>z<b>Console</b> application)r.   r/   rN   rH   s    rB   long_versionzApplication.long_versionb   sO    : 	1} XWT.WW$-WWWW0*0000++rD   r   c                    | j         | j        | _         | j        r| j         }|                    g            |S | j         S rF   )r9   _default_definitionr5   set_arguments)rA   
definitions     rB   rV   zApplication.definitionl   sL    ##7D 	)J$$R(((rD   list[Command]c                T    t                      t                      t                      gS rF   )r   r	   r   rH   s    rB   default_commandszApplication.default_commandsy   s    {}}.@.B.BCCrD   c                    | j         S rF   )rR   rH   s    rB   helpzApplication.help}   s      rD   r   c                P    | j         |                                 | _         | j         S rF   )r=   _get_default_uirH   s    rB   uizApplication.ui   s$    8++--DHxrD   EventDispatcher | Nonec                    | j         S rF   r>   rH   s    rB   event_dispatcherzApplication.event_dispatcher   s    %%rD   rb   r   c                    || _         d S rF   ra   )rA   rb   s     rB   set_event_dispatcherz Application.set_event_dispatcher       !1rD   c                    || _         d S rF   rG   rA   r'   s     rB   set_namezApplication.set_name   s    


rD   rN   c                    || _         d S rF   )r0   )rA   rN   s     rB   set_display_namezApplication.set_display_name   s    )rD   c                    || _         d S rF   rP   )rA   r)   s     rB   set_versionzApplication.set_version   s    rD   r^   c                    || _         d S rF   )r=   )rA   r^   s     rB   set_uizApplication.set_ui   s    rD   command_loaderr"   c                    || _         d S rF   )r?   )rA   ro   s     rB   set_command_loaderzApplication.set_command_loader   s    -rD   T
auto_exitsboolc                    || _         d S rF   r;   )rA   rr   s     rB   rr   zApplication.auto_exits   s    $rD   c                    | j         S rF   ru   rH   s    rB   is_auto_exit_enabledz Application.is_auto_exit_enabled   s
    rD   c                    | j         S rF   r:   rH   s    rB   are_exceptions_caughtz!Application.are_exceptions_caught   s    %%rD   catch_exceptionsc                    || _         d S rF   ry   )rA   r{   s     rB   r{   zApplication.catch_exceptions   re   rD   c                    | j         S rF   )r5   rH   s    rB   is_single_commandzApplication.is_single_command   s    ##rD   solution_provider_repositoryr   c                    || _         d S rF   )r@   )rA   r   s     rB    set_solution_provider_repositoryz,Application.set_solution_provider_repository   s     .J***rD   commandr   Command | Nonec                    |                                   |                    |            |j        s|                                 d S |j        st	          d|j        j         d          || j        |j        <   |j        D ]}|| j        |<   |S )NzThe command "z" cannot have an empty name)	_initset_applicationenabledr'   r   	__class____name__r6   aliases)rA   r   aliass      rB   addzApplication.add   s    

%%% 	##%%%4| 	 W 1 :WWW   (/w|$_ 	, 	,E$+DN5!!rD   c                Z   |                                   |                     |          st          |          || j        vrt          |          | j        |         }| j        rFd| _        t          t          |                     d                    }|                    |           |S |S )NFr[   )	r   hasr   r6   r8   r   r   getset_command)rA   r'   r   help_commands       rB   r   zApplication.get   s    

xx~~ 	1*4000t~%%*4000.& 	 $D(,[$((6:J:J(K(KL$$W---rD   c                    |                                   || j        v rdS | j        sdS t          | j                            |          o,|                     | j                            |                              S )NTF)r   r6   r?   rs   r   r   r   rg   s     rB   r   zApplication.has   sz    

4>!!4# 	5 $$T**Wtxx8L8P8PQU8V8V/W/W
 
 	
rD   	list[str]c                   g }t                      }|                                                                 D ]}|j        s|j        s|                     |j                  D ]1}||v r|                    |           |                    |           2|j        D ]I}|                     |          D ]1}||v r|                    |           |                    |           2J|S rF   )	setallvalueshiddenr'   _extract_all_namespacesappendr   r   )rA   
namespacesseenr   	namespacer   s         rB   get_namespaceszApplication.get_namespaces   s   
uuxxzz((** 	( 	(G~ W\ !99',GG $ $	$$!!),,,####  ( (!%!=!=e!D!D ( (I D(( %%i000HHY''''(( rD   r   c                V    |                                  }||vrt          ||          |S rF   )r   r   )rA   r   all_namespacess      rB   find_namespacezApplication.find_namespace  s4    ,,..N**,YGGGrD   c                   |                                   |                     |          r|                     |          S g }| j        r|| j        j        z  }|d | j                                        D             z  }t          ||          )Nc                &    g | ]\  }}|j         |S  )r   ).0r'   r   s      rB   
<listcomp>z$Application.find.<locals>.<listcomp>  s3     
 
 
"T7GN

 
 
rD   )r   r   r   r?   namesr6   itemsr   )rA   r'   all_commandss      rB   findzApplication.find  s    

88D>> 	"88D>>! 	7D066L 
 
&*n&:&:&<&<
 
 
 	
 't\:::rD   N
str | Nonedict[str, Command]c                   |                                   |d| j                                        }| j        s|S | j        j        D ]3}||vr-|                     |          r|                     |          ||<   4|S i }| j                                        D ]:\  }}||                     ||	                    d          dz             k    r|||<   ;| j        rp| j        j        D ]c}||vr]||                     ||	                    d          dz             k    r-|                     |          r|                     |          ||<   d|S )NrJ      )
r   r6   copyr?   r   r   r   r   extract_namespacecount)rA   r   commandsr'   r   s        rB   r   zApplication.all  s^   

~**,,H'  ,2 4 4x''DHHTNN'%)XXd^^HTNO!^1133 	) 	)MD'D224C19LMMMM!( 	4,2 4 4((!T%;%;D$**S//TUBU%V%VVV W &*XXd^^HTNrD   inputInput | NoneoutputOutput | Noneerror_outputintc                &   	 |                      |||          }|                     |           	 |                     |          }n# t          $ r_ t	          j        t          j        t          j                  }t	          j        |t          j
                                                   d}Y n6t          $ r*}| j        s |                     ||           d}Y d }~nd }~ww xY wn# t          $ r d}Y nw xY w| j        rt          j        |           |S )Nr   r   )	create_io_configure_io_runBrokenPipeErrorosopendevnullO_WRONLYdup2sysstdoutfileno	Exceptionr:   render_errorKeyboardInterruptr;   exit)rA   r   r   r   io	exit_coder   es           rB   runzApplication.run;  s3   	v|<<Br""" IIbMM		"    '"*bk::!2!2!4!4555			   - !!!R(((						 ! 	 	 	III	 ? 	 HYsG   ,C$ A C$ A&C +C$ -	C 6 CC$ C  C$ $C32C3r   r   c           	        |j                             ddgd          r|                    | j                   dS | j        }t                      }|j        D ]M}|j        dk    r+t          ddd|	                    d          j
                  }|                    |           N|                    |j                   t          t                    5  |j                             |           d d d            n# 1 swxY w Y   |                     |          }|j                             ddgd          r6|s-d	}|                    t'          d
d	| j        g                     nd| _        |s}| j        }| j        }|j        }|                    d          s>|                    t          dd|	                    d          j
        |                     |                    |           d | _        |                     |          }|| _        d|v rPt7          |j         t&                    r5|j         j        d d          }|j         j         |                    d|j         j                   |                    d          d         }	d }
tA          |          D ]\  }}||	k    r|dk    r	|||<   |}
 n|
1||
dz   |
dz   tC          |                    d                    dz
  z   = |j         j"        }|j         #                                }|                    t'          |                     |j         $                    |           |j         %                    |           | &                    ||          }d | _        |S )N	--version-VTr   r   )requiredis_listdescription--help-hr[   r%   F)r   r   defaultrJ   r   )'r   has_parameter_option
write_linerR   rV   r   	argumentsr'   r   argumentr   add_argumentset_optionsoptionsr   r   bind_get_command_name	set_inputr   r4   r8   has_argumentr   rU   r7   r   
isinstance_tokensscript_nameinsertsplit	enumeratelenstreamis_interactive
set_streaminteractive_run_command)rA   r   rV   input_definitionr   r'   r   r   argvr   indexiargr   r   r   s                   rB   r   zApplication._run^  s   8((+t)<dCC 	MM$+,,,1_
%<<", 		4 		4H}	))#!  * 3 3I > > J	   ))(3333$$Z%7888 i   	, 	, HMM*+++	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	,
 %%b))8(((D)94@@ 	( (Y	64;P'QRRSSSS#'  	0(DJ",I**955   !!&$.$7$7	$B$B$N $	     $$Y/// $))D// '$;;:bh	::; 8#AAA&Dx#/Arx3444

3*IE#D//  3)##A"DGEE UQY#djjoo2F2F2J%KKLX_F(1133KLL4)))H'''H  ---%%gr22	 $s   C99C= C=c                   | j         |                    |          S 	 |                                 |j                            |j                   n# t          $ r Y nw xY wt          ||          }d }	 | j                             |t                     |
                                r|                    |          }nt          j        }n^# t          $ rQ}t          |||          }| j                             |t                     |j        }|j        }|dk    rd }Y d }~nd }~ww xY wt#          |||          }| j                             |t$                     |||j        S )Nr   )r>   r   merge_application_definitionr   r   rV   r   r
   dispatchr   command_should_runRETURN_CODE_DISABLEDr   r   r   errorr   r   r   )	rA   r   r   command_eventr   r   r   error_eventterminate_events	            rB   r   zApplication._run_command  s}   !);;r??"	00222HMM',---- 	 	 	 D	
 ,GR88	"++M7CCC//11 E#KKOO		/D	 	 	 	+GR;;K"++K???%E#-IA~~	 0YGG''CCCK((s+   3A 
AA5AC 
D'AD""D'c                    |-t                      }|                    t          j                   |t	          t          j                  }|t	          t          j                  }t          |||          S rF   )r   r   r   stdinr   r   stderrr   )rA   r   r   r   s       rB   r   zApplication.create_io  sc     =KKESY'''>!#*--F'
33L%...rD   r   r   c                    ddl m}  ||| j                  }|                                 pt	          |t
                    }|                    |j        |           d S )Nr   )ExceptionTrace)r   )cleo.ui.exception_tracer   r@   
is_verboser   r   renderr   )rA   r   r   r   tracesimples         rB   r   zApplication.render_error  so    ::::::0R
 
 
 ]]__$H
5-(H(HR_f-----rD   c                l   |j                             dd          r|                    d           n0|j                             dd          r|                    d           |j                             ddgd          s6|j         j        ?|j         j        r3|j         j                                        s|                    d           t          t          j	        dd                    }|d	k    r |
                    t          j                   nt|d
k    r |
                    t          j                   nN|dk    r |
                    t          j                   n(|dk    r |
                    t          j                   nd}|j                             ddgd          r"|
                    t          j                   d	}n|j                             dd          r"|
                    t          j                   d}n|j                             dd          r"|
                    t          j                   d}nX|j                             dd          s|j                             dd          r!|
                    t          j                   d
}|d	k    r|                    d           d S d S )N--ansiT	--no-ansiF--no-interaction-nSHELL_VERBOSITYr   r         --quiet-qz-vvvz-vvz-v	--verbose)only_params)r   r   	decorated_interactiver   isattyr   r   r   getenvset_verbosityr   QUIETVERBOSEVERY_VERBOSEDEBUG)rA   r   shell_verbositys      rB   r   zApplication._configure_io  s   8((488 	 LLX**;== 	 LL8((*<d)CTJJ 	"H!) *HO**,, * NN5!!!bi(91==>>b  Y_----!!Y.////!!Y34444!!Y_----O8(()T):DAA 	$Y_--- OOx,,VT:: 
$  111"#..ud;; $  !7888"#..d  $..{.MM$   !2333"#b  NN5!!!!! ! rD   c                L   t          t          ddd          t          dddd| j         d	          t          d
ddd	          t          dddd	          t          dddd	          t          ddd	          t          ddd	          t          dddd	          g          S )Nr   TzThe command to execute.)r   r   r   r   zXDisplay help for the given command. When no command is given display help for the <info>z</info> command.)flagr   r  r  zDo not output any message.r  z	-v|vv|vvvzcIncrease the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug.r   r   z!Display this application version.r  zForce ANSI output.r  zDisable ANSI output.r	  r
  z$Do not ask any interactive question.)r   r   r   r4   rH   s    rB   rT   zApplication._default_definition$  s   ! 9  
 M%)%:M M M	 	 	 t$<X   2	 	 	  C	   xd8LMMM{;QRRR& F	  K+-
 -
 -	
rD   c                   | j         r| j        S d|j        j        v r|j                            d          rg }|j                            d          D ];}|r"|                    |d         dz   |z              &|                    |           <t          |          D ]}|                     |          r|c S |j        j        S )Nr   r  rJ   )	r5   r4   r   r   r   r   reversedr   first_argument)rA   r   
candidatescommand_part	candidates        rB   r   zApplication._get_command_nameU  s     	)((***rx/@/@/K/K*$&J " 1 1) < < 4 4 4%%jns&:\&IJJJJ%%l3333%j11 % %	88I&& %$$$$% x&&rD   limit
int | Nonec                    |                     d          d d         }|d                    |d |                   S d                    |          S NrJ   r  )r   join)rA   r'   r%  partss       rB   r   zApplication.extract_namespaceg  sJ    

3$88E&5&M***xxrD   c                h    ddl m} |                                 }t           ||          g          S )Nr   )ProgressBar)cleo.ui.progress_barr,  r   r   )rA   r,  r   s      rB   r]   zApplication._get_default_uio  s<    444444^^;;r??#$$$rD   c                    |                     d          d d         }g }|D ];}|r"|                    |d         dz   |z              &|                    |           <|S r(  )r   r   )rA   r'   r*  r   parts        rB   r   z#Application._extract_all_namespacesu  sx    

3$ "
 	( 	(D (!!*R.3"6"=>>>>!!$''''rD   c                d    | j         rd S d| _         | j        D ]}|                     |           d S )NT)r<   rY   r   )rA   r   s     rB   r   zApplication._init  sK     	F , 	 	GHHW	 	rD   )r%   r&   )r'   r(   r)   r(   r*   r+   )r*   r(   )r*   r   )r*   rW   )r*   r   )r*   r_   )rb   r   r*   r+   )r'   r(   r*   r+   )rN   r(   r*   r+   )r)   r(   r*   r+   )r^   r   r*   r+   )ro   r"   r*   r+   )T)rr   rs   r*   r+   )r*   rs   )r{   rs   r*   r+   )r   r   r*   r+   )r   r   r*   r   )r'   r(   r*   r   )r'   r(   r*   rs   )r*   r   )r   r(   r*   r(   rF   )r   r   r*   r   )NNN)r   r   r   r   r   r   r*   r   )r   r   r*   r   )r   r   r   r   r*   r   )r   r   r   r   r   r   r*   r   )r   r   r   r   r*   r+   )r   r   r*   r+   )r   r   r*   r   )r'   r(   r%  r&  r*   r(   )r'   r(   r*   r   )r*   r+   ).r   
__module____qualname____doc__rC   propertyr'   rN   r)   rR   rV   rY   r[   r^   rb   rd   rh   rj   rl   rn   rq   rr   rw   rz   r{   r~   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rT   r   r   r]   r   r   r   rD   rB   r$   r$   0   s       	 	U U U U U.    X " " " X"    X , , , X, 
  
  
  X
  D D D XD ! ! ! X!    X & & & X&2 2 2 2   * * * *          . . . .% % % % %   & & & &2 2 2 2 2$ $ $ $J J J J
   ,   ,
 
 
 
   2   ; ; ; ;     B # $&*	! ! ! ! !FT T T Tl') ') ') ')V # $&*	/ / / / /$. . . .*" *" *" *"X .
 .
 .
 X.
`' ' ' '$    % % % %
 
 
 
     rD   r$   )=
__future__r   r   rK   r1   r   
contextlibr   typingr   r   !cleo.commands.completions_commandr   cleo.commands.help_commandr   cleo.commands.list_commandr	   !cleo.events.console_command_eventr
   cleo.events.console_error_eventr   cleo.events.console_eventsr   r   r   #cleo.events.console_terminate_eventr   cleo.exceptionsr   r   r   r   r   cleo.io.inputs.argumentr   cleo.io.inputs.argv_inputr   cleo.io.inputs.definitionr   cleo.io.inputs.optionr   
cleo.io.ior   cleo.io.outputs.outputr   cleo.io.outputs.stream_outputr   
cleo.ui.uir   9crashtest.solution_providers.solution_provider_repositoryr   cleo.commands.commandr   cleo.events.event_dispatcherr   cleo.io.inputs.inputr    r!   cleo.loaders.command_loaderr"   r$   r   rD   rB   <module>rM     s   " " " " " " 				 				  



                         @ @ @ @ @ @ 2 2 2 2 2 2 2 2 2 2 2 2 A A A A A A = = = = = = . . . . . . , , , , , , 0 0 0 0 0 0 E E E E E E 4 4 4 4 4 4 % % % % % % * * * * * * 6 6 6 6 6 6 ) ) ) ) ) ) , , , , , , / / / / / / 0 0 0 0 0 0 ( ( ( ( ( (       , , , , , , 6 6 6 6 6 6        	:      .-----<<<<<<******------999999X	 X	 X	 X	 X	 X	 X	 X	 X	 X	rD   