
    d	                    X    d dl mZ d dlZd dlmZ d dlmZ d dlmZ  G d d          ZdS )    )annotationsN)Any)CleoLogicError)CleoValueErrorc                      e Zd ZdZ	 	 	 	 	 	 dddZedd            Zed d            Zedd            Zed!d            Z	d"dZ
d"dZd"dZd"dZd#d$dZddZdS )%Optionz 
    A command line option.
    NTFnamestrshortcut
str | Noneflagboolrequires_valueis_listdescriptiondefault
Any | NonereturnNonec                   |                     d          r
|dd          }|st          d          |Zt          j        d|                    d                    }d |D             }d                    |          }|st          d          || _        || _        || _        || _	        || _
        |pd	| _        d | _        | j
        r| j        rt          d
          |                     |           d S )Nz--   zAn option name cannot be emptyz\|-?-c                    g | ]}||S  r   ).0ss     Y/home/feoh/.local/pipx/venvs/poetry/lib/python3.11/site-packages/cleo/io/inputs/option.py
<listcomp>z#Option.__init__.<locals>.<listcomp>"   s    333q3333    |z"An option shortcut cannot be empty z&A flag option cannot be a list as well)
startswithr   resplitlstripjoin_name	_shortcut_flag_requires_value_is_list_description_defaultr   set_default)	selfr	   r   r   r   r   r   r   	shortcutss	            r   __init__zOption.__init__   s    ??4   	8D 	C !ABBB(//#*>*>??I33I333Ixx	**H K$%IJJJ
!
-'-2= 	KTZ 	K !IJJJ!!!!!r   c                    | j         S Nr'   r/   s    r   r	   zOption.name5   s
    zr   c                    | j         S r3   )r(   r5   s    r   r   zOption.shortcut9   s
    ~r   c                    | j         S r3   )r,   r5   s    r   r   zOption.description=   s      r   c                    | j         S r3   )r-   r5   s    r   r   zOption.defaultA   s
    }r   c                    | j         S r3   r)   r5   s    r   is_flagzOption.is_flagE   s
    zr   c                    | j          S r3   r:   r5   s    r   accepts_valuezOption.accepts_valueH   s    :~r   c                     | j          o| j        S r3   )r)   r*   r5   s    r   r   zOption.requires_valueK   s    :~6$"66r   c                    | j         S r3   )r+   r5   s    r   r   zOption.is_listN   s
    }r   c                    | j         r|t          d          | j        r)|g }n$t          |t                    st          d          | j         rd}|| _        d S )Nz)A flag option cannot have a default valuez0A default value for a list option must be a listF)r)   r   r+   
isinstancelistr-   )r/   r   s     r   r.   zOption.set_defaultQ   st    : 	N'- !LMMM= 	Y.. Y$%WXXX: 	Gr   c                    d| j          dS )NzOption()r4   r5   s    r   __repr__zOption.__repr__`   s    &&&&&r   )NTTFNN)r	   r
   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r
   )r   r   )r   r   )r   r   r3   )r   r   r   r   )__name__
__module____qualname____doc__r1   propertyr	   r   r   r   r;   r=   r   r   r.   rE   r   r   r   r   r      sI          $#"&"#" #" #" #" #"J    X    X ! ! ! X!    X      7 7 7 7            ' ' ' ' ' 'r   r   )	
__future__r   r#   typingr   cleo.exceptionsr   r   r   r   r   r   <module>rN      s    " " " " " " 				       * * * * * * * * * * * *V' V' V' V' V' V' V' V' V' V'r   