
    !<i              	       b   d 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	m
Z
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mZ ddlmZmZ e	rddlmZ  G d de          Ze G d d                      Zdddee e!df         ef         fdZ"de
defdZ#de!de!fdZ$dde!de!de%de!fdZ&dS ) zqShared shell completion infrastructure.

Provides data extraction, type analysis, and text processing utilities.
    N)Enum)Path)TYPE_CHECKINGAnyget_args
get_origin)ITERABLE_TYPES)is_union)ArgumentCollection)CycloptsError)RegisteredCommandgroups_from_app)frozenis_class_and_subclass)Appc                       e Zd ZdZdZdZdZdS )CompletionActionz'Shell-agnostic completion action types.nonefilesdirectoriesN)__name__
__module____qualname____doc__NONEFILESDIRECTORIES     /Users/kimhansen/Desktop/03 Workspace/ceo-agents/chl-effectiveness/mcp-servers/whoop/.venv/lib/python3.11/site-packages/cyclopts/completion/_base.pyr   r      s#        11DEKKKr   r   c                   >    e Zd ZU dZded<   ee         ed<   eed<   dS )CompletionDataz#Completion data for a command path.r   	argumentscommandshelp_formatN)r   r   r   r   __annotations__listr   strr   r   r    r"   r"       sB         --####$%%%%r   r"   appr   return.c                 ^     i ddt           t          df         f fd              S )a:  Recursively extract completion data for app and all subcommands.

    Parameters
    ----------
    app : App
        The Cyclopts application to extract completion data from.

    Returns
    -------
    dict[tuple[str, ...], CompletionData]
        Mapping from command path tuples to their completion data.
    r   command_path.c                    	                      t          |                     \  }}}|d         }n# t          t          t          f$ r}t
          j                            d          r t          j	        d| d| d           j
                            dd	          }t          t                      g |
          | <   Y d}~dS d}~ww xY wt                      }                    |          }
                    |          5  |D ]4}|j        r+|                    d          }	|                    |	           5	 ddd           n# 1 swxY w Y   g }
t%          |          D ]6\  }}|j        r*|D ]'}|j        j        r||
vr|
                    |           (7|j
                            dd	          }t          ||
|
          | <   |
D ]0}|j        D ]&}|                    d          s | |fz              '1dS )z@Recursively extract completion data for command and subcommands.CYCLOPTS_COMPLETION_DEBUGz3Failed to extract completion data for command path z:    )
stacklevelr%   markdown)fallback)r#   r$   r%   NT)parse_docstring-)parse_commandsr'   r   
ValueError	TypeErrorosenvirongetwarningswarn	app_stackresolver"   r   _get_resolution_contextdefault_commandassemble_argument_collectionextendr   showr)   appendnames
startswith)r,   _execution_pathcommand_apper%   r#   apps_for_paramssubappapp_argumentsr$   groupregistered_commandsregistered_commandcmd_name_extractr)   completion_datas                  r    rS   z)extract_completion_data.<locals>._extract8   s   	#&#5#5d<6H6H#I#I A~q(,KKz95 	 	 	z~~9:: MeP\eebceerstttt-//
/SSK,:,..- - -OL) FFFFF	 '((	55nEE]]>** 	4 	4) 4 4) 4$*$G$GX\$G$]$]M$$]3334	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 *9+*F*F 	< 	<&E&z <*= < <&)-2 <7IQY7Y7Y (:;;;!+33MJ3WW(6U]kv(w(w(w%"* 	9 	9.4 9 9**3// 9H\XK78889	9 	9s(   .2 C	A9CC8EEE)r   )tupler(   )r)   rS   rT   s   `@@r    extract_completion_datarV   )   s]     >@O%9 %9uS#X %9 %9 %9 %9 %9 %9 %9 %9N HJJJr   	type_hintc                    t          |           rRt          |           D ]6}|t          d          ur#t          |          }|t          j        k    r|c S 7t          j        S t          |           }t          |t          t                              r9t          |           }|r(t          |          dk    rt          |d                   S |p| }|t          u st          |t                    rt          j        S t          j        S )zGet completion action from type hint.

    Parameters
    ----------
    type_hint : Any
        Type annotation.

    Returns
    -------
    CompletionAction
        Completion action for type.
    N   r   )r
   r   typeget_completion_actionr   r   r   r   rU   r	   lenr   r   )rW   argactionoriginargstarget_types         r    r[   r[   c   s     	 %I&& 	" 	"C$t**$$.s33-222!MMM$$	""F VU>%:%:;; 2	"" 	2CIINN(a111%IKd3KFF%%  r   textc                     t          j        dd|           } t          j        dd|                                           } | S )zClean choice text without shell-specific escaping.

    Parameters
    ----------
    text : str
        Raw choice text.

    Returns
    -------
    str
        Cleaned text (not shell-escaped).
    [\x00-\x1f\x7f] \s+ )resubstrip)rb   s    r    clean_choice_textrk      s<     6$b$//D6&#t$$**,,DKr   r2   P   format
max_lengthc                 $   ddl m} ddlm} |                    | |          } ||          } t          j        dd|           } t          j        dd|                                           } t          |           |k    r| d	|d
z
           dz   } | S )a#  Strip markup and render to plain text for shell completions.

    Converts formatted text (markdown/RST/rich) to plain text suitable for
    shell completion descriptions. Removes control characters, normalizes
    whitespace, and truncates if needed.

    Parameters
    ----------
    text : str
        Text with markup.
    format : str
        Markup format: "markdown", "rst", "rich", or "plaintext".
    max_length : int
        Maximum length before truncation.

    Returns
    -------
    str
        Plain text (not shell-escaped).
    r   )extract_text)
InlineText)rm   rd   re   rf   rg   NrY   u   …)	cyclopts._markuprp   cyclopts.help.inline_textrq   from_formatrh   ri   rj   r\   )rb   rm   rn   rp   rq   inlines         r    strip_markuprv      s    * .-----444444##D#88F<D6$b$//D6&#t$$**,,D
4yy:$j1n$%-Kr   )r2   rl   )'r   r9   rh   r<   enumr   pathlibr   typingr   r   r   r   cyclopts._convertr	   cyclopts.annotationsr
   cyclopts.argumentr   cyclopts.exceptionsr   cyclopts.group_extractorsr   r   cyclopts.utilsr   r   cycloptsr   r   r"   dictrU   r(   rV   r[   rk   intrv   r   r   r    <module>r      s   
 
			 				              ; ; ; ; ; ; ; ; ; ; ; ; , , , , , , ) ) ) ) ) ) 0 0 0 0 0 0 - - - - - - H H H H H H H H 8 8 8 8 8 8 8 8          t              7 74c3h0O+P 7 7 7 7t#!S #!-= #! #! #! #!LC C    $! !s !C !# !s ! ! ! ! ! !r   