
    d                        d dl m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
 erd dlmZ  G d	 d
          ZdS )    )annotationsN)TYPE_CHECKING)Any)Sequence)CleoLogicError)Option)Argumentc                  &   e Zd ZdZd/d0dZed1d	            Zed2d            Zed2d            Zed3d            Z	ed4d            Z
ed3d            Zd5dZd6dZd6dZd7dZd8dZd9dZd:d Zd:d!Zd;d$Zd<d&Zd=d'Zd>d)Zd?d*Zd@d+ZdAdBd.ZdS )C
DefinitionzN
    A Definition represents a set of command line arguments and options.
    N
definition"Sequence[Argument | Option] | NonereturnNonec                    i | _         d| _        d| _        d| _        i | _        i | _        |g }|                     |           d S Nr   F)
_arguments_required_count_has_a_list_argument_has_optional_options
_shortcutsset_definition)selfr   s     ]/home/feoh/.local/pipx/venvs/poetry/lib/python3.11/site-packages/cleo/io/inputs/definition.py__init__zDefinition.__init__   sT    /1 $)!"+-*,JJ'''''    list[Argument]c                N    t          | j                                                  S N)listr   valuesr   s    r   	argumentszDefinition.arguments#   s    DO**,,---r   intc                P    | j         rt          j        S t          | j                  S r   )r   sysmaxsizelenr   r"   s    r   argument_countzDefinition.argument_count'   s%    $ 	;4?###r   c                    | j         S r   )r   r"   s    r   required_argument_countz"Definition.required_argument_count.   s    ##r   dict[str, Any]c                `    i }| j                                         D ]}|j        ||j        <   |S r   )r   r!   defaultname)r   r!   arguments      r   argument_defaultszDefinition.argument_defaults2   s;    ..00 	5 	5H$,$4F8=!!r   list[Option]c                N    t          | j                                                  S r   )r    r   r!   r"   s    r   optionszDefinition.options;   s    DM((**+++r   c                `    i }| j                                         D ]}|j        ||j        <   |S r   )r   r!   r.   r/   )r   r!   options      r   option_defaultszDefinition.option_defaults?   s:    m**,, 	1 	1F"(.F6;r   Sequence[Argument | Option]c                    g }g }|D ]B}t          |t                    r|                    |           -|                    |           C|                     |           |                     |           d S r   )
isinstancer   appendset_argumentsset_options)r   r   r#   r4   items        r   r   zDefinition.set_definitionG   s    	 	' 	'D$'' 't$$$$  &&&&9%%%!!!!!r   r#   c                h    i | _         d| _        d| _        d| _        |                     |           d S r   )r   r   r   r   add_arguments)r   r#   s     r   r<   zDefinition.set_argumentsT   s;     $)!"9%%%%%r   c                :    |D ]}|                      |           d S r   )add_argument)r   r#   r0   s      r   r@   zDefinition.add_arguments[   s2    ! 	( 	(Hh''''	( 	(r   r0   r	   c                ~   |j         | j        v rt          d|j          d          | j        rt          d          |                                r| j        rt          d          |                                rd| _        |                                r| xj        dz  c_        nd| _        || j        |j         <   d S )NzAn argument with name "" already existsz,Cannot add an argument after a list argumentz4Cannot add a required argument after an optional oneT   )r/   r   r   r   is_requiredr   is_listr   )r   r0   s     r   rB   zDefinition.add_argument_   s    =DO++ I(-III   $ 	Q !OPPP!! 	Yd&8 	Y !WXXX 	-(,D%!! 	&  A%   !%D)1&&&r   r/   	str | intc                    |                      |          st          d| d          t          |t                    r.t	          | j                                                  }||         S | j        |         S )NzThe "z" argument does not exist)has_argument
ValueErrorr:   r$   r    r   r!   r   r/   r#   s      r   r0   zDefinition.argumentu   sw      && 	FDTDDDEEEdC   	#T_335566IT?"t$$r   boolc                    t          |t                    r't          | j                                                  }n| j        }	 ||          n# t
          t          f$ r Y dS w xY wdS )NFT)r:   r$   r    r   r!   KeyError
IndexErrorrL   s      r   rJ   zDefinition.has_argument   sv    dC   	(T_335566III	dOOO*% 	 	 	55	 ts   A A#"A#r4   c                L    i | _         i | _        |                     |           d S r   )r   r   add_options)r   r4   s     r   r=   zDefinition.set_options   s*    !!!!!r   c                :    |D ]}|                      |           d S r   )
add_option)r   r4   r6   s      r   rR   zDefinition.add_options   s0     	$ 	$FOOF####	$ 	$r   r6   r   c                   |j         | j        v r.|| j        |j                  k    rt          d|j          d          |j        rO|j                            d          D ]4}|| j        v r)|j         | j        |         k    rt          d| d          5|| j        |j         <   |j        r,|j                            d          D ]}|j         | j        |<   d S d S )NzAn option named "rD   |zAn option with shortcut ")r/   r   r   shortcutsplitr   )r   r6   rW   s      r   rT   zDefinition.add_option   s	   ;$-''FdmFK6P,P,P !RV[!R!R!RSSS? 	"O11#66  //tx'@@@(NHNNN   &,fk"? 	8"O11#66 8 8,2K))	8 	88 8r   strc                l    |                      |          st          d| d          | j        |         S )NzThe option "--" option does not exist)
has_optionrK   r   r   r/   s     r   r6   zDefinition.option   s>    t$$ 	MKdKKKLLL}T""r   c                    || j         v S r   )r   r]   s     r   r\   zDefinition.has_option   s    t}$$r   rW   c                    || j         v S r   )r   r   rW   s     r   has_shortcutzDefinition.has_shortcut   s    4?**r   c                B    | j         |                     |                   S r   )r   shortcut_to_namer`   s     r   option_for_shortcutzDefinition.option_for_shortcut   s    }T228<<==r   c                T    || j         vrt          d| d          | j         |         S )NzThe "-r[   )r   rK   r`   s     r   rc   zDefinition.shortcut_to_name   s6    4?**GhGGGHHHx((r   Fshortc           	        g }|r| j         r|                    d           n|s| j                                         D ]}d}|                                rO|                                r|j                                        nd|j                                         d}d| }d}|j        rd|j         d}|                    d| d|j         | d           |r| j        r|                    d	           d}| j                                        D ]Y}d
|j         d}	|	                                r|	dz  }	|
                                s
d|	z   }	|dz  }|                    |	           Zd                    |          |z   S )Nz	[options] [] -rV   z--z[--]<>z...)r   r;   r!   accepts_valuerequires_valuer/   upperrW   r   rG   rF   join)
r   rf   elementsr6   value	formattedrW   tailr0   elements
             r   synopsiszDefinition.synopsis   s    	GT] 	GOOK(((( 	G-..00 G G'')) , "00228))+++7!2!2!4!4777 
 ,	OOE? 656?555H EH E E EU E E EFFFF 	$ 	$OOF###..00 		% 		%H*(-***G!! !5 '')) -OOG$$$$xx!!D((r   r   )r   r   r   r   )r   r   )r   r$   )r   r,   )r   r2   )r   r8   r   r   )r#   r   r   r   )r0   r	   r   r   )r/   rH   r   r	   )r/   rH   r   rM   )r4   r2   r   r   )r6   r   r   r   )r/   rY   r   r   )r/   rY   r   rM   )rW   rY   r   rM   )rW   rY   r   r   )rW   rY   r   rY   )F)rf   rM   r   rY   )__name__
__module____qualname____doc__r   propertyr#   r)   r+   r1   r4   r7   r   r<   r@   rB   r0   rJ   r=   rR   rT   r6   r\   ra   rd   rc   rx    r   r   r   r      s(        ( ( ( ( ( . . . X. $ $ $ X$ $ $ $ X$    X , , , X,    X" " " "& & & &( ( ( (2 2 2 2,% % % %   " " " "
$ $ $ $8 8 8 8(# # # #% % % %+ + + +> > > >) ) ) )%) %) %) %) %) %) %)r   r   )
__future__r   r&   typingr   r   r   cleo.exceptionsr   cleo.io.inputs.optionr   cleo.io.inputs.argumentr	   r   r~   r   r   <module>r      s    " " " " " " 



                         * * * * * * ( ( ( ( ( (  1000000S) S) S) S) S) S) S) S) S) S)r   