o
    i                     @   s   d Z ddlmZ ddlmZ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Zd	ed
efddZdddZdddZejddddeeeddf deeeddf deeeddf d
dfddZdS )z>Hidden completion helper command for dynamic shell completion.    )Path)TYPE_CHECKING	Annotated)app)load_app_from_script)	Parameter)App<   	help_textreturnc                 C   sH   ddl m} z|| d}|jpdW S  ty#   t| dd  Y S w )zExtract first line of help text as a short description.

    Parameters
    ----------
    help_text : str
        Full help text to extract from.

    Returns
    -------
    str
        First line of help text, or empty string if parsing fails.
    r   )docstring_parse	plaintext 
)cyclopts.help.helpr   short_description	Exceptionstrsplit)r
   r   parsed r   \/var/www/html/karishye-ai-python/venv/lib/python3.10/site-packages/cyclopts/cli/_complete.py_extract_short_description   s   
r   app_objr   Nc                 C   s   ddl m} || D ]4\}}|D ]-}|jjr=|jD ]#}|ds<d}|jjr,t|jj}|r8t| d|  qt| qqq
dS )zPrint completions for subcommands of the given app.

    Parameters
    ----------
    app_obj : App
        Application object to extract subcommands from.
    r   )groups_from_app-r   :N)	cyclopts.group_extractorsr   r   shownames
startswithhelpr   print)r   r   _registered_commandsregistered_commandname
short_descr   r   r   _print_subcommand_completions&   s   

r(   c                 C   s   | j sdS zA| jdd}|D ]5}| sC|jrC|jD ](}|drB|jjp&d}|dd dt	 }|r>t
| d|  qt
| qqW dS  tyP   Y dS w )	zPrint completions for options of the given app's default command.

    Parameters
    ----------
    app_obj : App
        Application object to extract options from.
    NT)parse_docstringr   r   r   r   r   )default_commandassemble_argument_collectionis_positional_onlyr   r   r    	parameterr!   r   MAX_DESCRIPTION_LENGTHr"   r   )r   	argumentsargumentr&   descr   r   r   _print_option_completions?   s$   


r2   	_completeF)r&   r   
subcommandT)allow_leading_hyphenscriptwordsc                 G   s   | dkrdS zt |\}}W n ttttfy   Y dS w |r#t|ng }|r1t|dkr;|d s;t| t| dS z|	|\}}}|d }t| t| W dS  t
y\   Y dS w )a  Internal completion helper (hidden from users).

    This command is called by the shell completion system to dynamically
    generate completions for the 'run' command by loading the target script
    and extracting its available commands and options.

    Parameters
    ----------
    subcommand : str
        The cyclopts subcommand being completed (e.g., "run").
    script : Path
        Python script path to load for completion extraction.
    words : str
        Current command line words for context-aware completion.
    runN   r   )r   ImportErrorSyntaxErrorAttributeErrorFileNotFoundErrorlistlenr(   r2   parse_commandsr   )r4   r6   r7   r   r#   
words_listexecution_pathcurrent_appr   r   r   completeZ   s&   rE   )r   r   r   N)__doc__pathlibr   typingr   r   cyclopts.clir   cyclopts.loaderr   cyclopts.parameterr   cycloptsr   r.   r   r   r(   r2   commandrE   r   r   r   r   <module>   s,    

