
    !<i.                         d Z ddlZddlmZmZmZmZmZmZ ddl	m
Z
 erddlmZmZ ddlmZmZ dedefd	Z G d
 d          ZdS )z!Markdown documentation formatter.    N)TYPE_CHECKINGAnyOptionalUnionget_args
get_origin)extract_text)ConsoleConsoleOptions)	HelpEntry	HelpPaneltype_objreturnc                    | dS t          | t                    r}| }|                    dd                              dd          }|                    dd          }d|v r5||                    d          dz   |                    d	                   }|S |S t          |           }|                    d          r
|d
d         }t          |           }|t          u rt          |           }t          |          dk    rGt          d          |v r6|d         t          d          u r|d         n|d         }t          |          S d |D             }dd                    |           d	S |rXt          |           }t          |dt          |                    }|r'd |D             }| dd                    |           d	S |S t          | d          r| j        S |                    dd          }|S )al  Format a type object into a readable string.

    Parameters
    ----------
    type_obj : Any
        Type object to format.

    Returns
    -------
    str
        Formatted type name.

    Examples
    --------
    >>> _format_type_name(str)
    'str'
    >>> _format_type_name(Optional[int])
    'int'
    >>> _format_type_name(list[str])
    'list[str]'
    N z<class 'z'>ztyping.z	Optional[[   ]      r   c                 ,    g | ]}t          |          S  _format_type_name.0args     /Users/kimhansen/Desktop/03 Workspace/ceo-agents/chl-effectiveness/mcp-servers/whoop/.venv/lib/python3.11/site-packages/cyclopts/help/formatters/markdown.py
<listcomp>z%_format_type_name.<locals>.<listcomp>F   s!    AAAS+C00AAA    zUnion[, __name__c                 ,    g | ]}t          |          S r   r   r   s     r   r    z%_format_type_name.<locals>.<listcomp>M   s!    EEE/44EEEr!   )
isinstancestrreplaceindexrindex
startswithr   r   r   lentyper   joingetattrhasattrr#   )r   type_strinneroriginargsnon_noneformatted_argsorigin_names           r   r   r      s(   , r (C   ##J33;;D"EE##Ir22 (""X^^C0014xs7K7KKLEL 8}}H :&& "AbD> !!F!!t99>>d4jjD00"&q'T$ZZ"7"7tAwwT!WH$X...AADAAA4		.114444	 !!fj#f++>> 	AEEEEEN!@@DIIn$=$=@@@@ x$$ !   	2..HOr!   c                   *   e Zd ZdZ	 	 	 ddededefdZddZd	efdZ	de
d         de
d         ddd	d
fdZded         de
d         d	d
fdZded         de
d         d	d
fdZde
d         de
d         ded	d
fdZde
d         de
d         ded	d
fdZd
S )MarkdownFormattera  Markdown documentation formatter.

    Parameters
    ----------
    heading_level : int
        Starting heading level for panels (default: 2).
        E.g., 2 produces "## Commands", 3 produces "### Commands".
    table_style : str
        Style for parameter/command tables: "table" or "list" (default: "table").
    include_hidden : bool
        Include hidden commands/parameters in documentation (default: False).
    r   tableFheading_leveltable_styleinclude_hiddenc                 `    || _         || _        || _        t          j                    | _        d S )N)r:   r;   r<   ioStringIO_output)selfr:   r;   r<   s       r   __init__zMarkdownFormatter.__init__i   s-     +&,{}}r!   r   Nc                 6    t          j                    | _        dS )z!Reset the internal output buffer.N)r>   r?   r@   rA   s    r   resetzMarkdownFormatter.resett   s    {}}r!   c                 4    | j                                         S )zGet the accumulated markdown output.

        Returns
        -------
        str
            The markdown documentation string.
        )r@   getvaluerD   s    r   
get_outputzMarkdownFormatter.get_outputx   s     |$$&&&r!   consoler
   optionsr   panelr   c                    |j         sdS |j        r?t          |j        |          }d| j        z  }| j                            | d| d           |j        r4t          |j        |          }|r| j                            | d           |j        dk    r|                     |j         |           n&|j        dk    r| 	                    |j         |           | j                            d           dS )ag  Format and render a help panel as markdown.

        Parameters
        ----------
        console : Optional[Console]
            Console for rendering (used for extracting plain text).
        options : Optional[ConsoleOptions]
            Console rendering options (unused for markdown).
        panel : HelpPanel
            Help panel to render.
        N# 

command	parameter
)
entriestitler	   r:   r@   writedescriptionformat_format_command_panel_format_parameter_panel)rA   rI   rJ   rK   
title_textheading	desc_texts          r   __call__zMarkdownFormatter.__call__   s   " } 	F ; 	>%ek7;;JD..GL'<<J<<<===  	7$U%6@@I 7""i#5#5#5666 <9$$&&u}g>>>>\[((((@@@4     r!   rS   r   c                    |D ]}g }|j         r|                    |j                    |j        r|                    |j                   |rx|d         }t          |j        |          }|r!| j                            d| d|            n| j                            d| d           | j                            d           dS )zFormat command entries as markdown.

        Parameters
        ----------
        entries : list[HelpEntry]
            Command entries to format.
        console : Optional[Console]
            Console for text extraction.
        r   * ``: z`:rR   N)namesextendshortsr	   rV   r@   rU   )rA   rS   rI   entryra   primary_namedescs          r   rX   z'MarkdownFormatter._format_command_panel   s      	) 	)EE{ *U[)))| +U\*** 
)$Qx#E$5w?? ?L&&'D\'D'Dd'D'DEEEEL&&'=\'='='=>>>""4(((%	) 	)r!   c                    |D ]B}g }|j         r|                    |j                    |j        r|                    |j                   |r|j        o|j        du }|rCd |D             }|r|d                                         n|d                                         }n{t          |          dk    r`t          d |D                       r1d |D             }d |D             }	d                    ||	z             }nd                    |          }n|d         }| j	        
                    d	| d
           t          |j        |          }
|
r| j	        
                    |
           d}|j        r|sd}n|r	|j        rd}g }|j        r2d                    |j                  }|                    d|            |j        r2d                    |j                  }|                    d|            |j        t          |j        |          }|j        rt#          |j                  dk    rd}d}|D ]3}|                    d          r|}|                    d          r|s|}4|                                dk    r|r|                    d|            nK|                                dk    r|r|                    d|            n|                    d|            |r| j	        
                    d           |D ] }| j	        
                    d| d           !| j	        
                    d           DdS )zFormat parameter entries as markdown in Typer style.

        Parameters
        ----------
        entries : list[HelpEntry]
            Parameter entries to format.
        console : Optional[Console]
            Console for text extraction.
        Nc                 <    g | ]}|                     d           |S )-r*   r   ns     r   r    z=MarkdownFormatter._format_parameter_panel.<locals>.<listcomp>   s)    'R'R'RaS@Q@Q'R'R'R'Rr!   r   r   c              3   l   K   | ]/}|                     d           o|                     d           V  0dS )ri   --Nrj   rk   s     r   	<genexpr>z<MarkdownFormatter._format_parameter_panel.<locals>.<genexpr>   sC      [[PQq||C00Kd9K9K5K[[[[[[r!   c                 f    g | ].}|                     d           |                     d          ,|/S )ri   rn   rj   rk   s     r   r    z=MarkdownFormatter._format_parameter_panel.<locals>.<listcomp>   s>    )k)k)kall3>O>O)kXYXdXdeiXjXj)k!)k)k)kr!   c                 <    g | ]}|                     d           |S )rn   rj   rk   s     r   r    z=MarkdownFormatter._format_parameter_panel.<locals>.<listcomp>   s)    (P(P(PqQ\\$=O=O(P(P(P(Pr!   r"   r_   r`   FTz	choices: zenv: boolz--no-rn   truez	default: falsez  **[required]**z  *[z]*rR   )ra   rb   rc   requireddefaultupperr+   anyr-   r@   rU   r	   rV   choicesappendenv_varr,   r   r*   lower)rA   rS   rI   rd   ra   is_positionalpositional_namesname_str
short_opts	long_optsrf   is_requiredmetadatachoices_strenv_strdefault_strpositive_flagnegative_flagnameitems                       r   rY   z)MarkdownFormatter._format_parameter_panel   s     W	) W	)EE{ *U[)))| +U\*** O) !& H5=D3H  ,'R'R5'R'R'R$>Nd/288:::TYZ[T\TbTbTdTdHH 5zzA~~[[UZ[[[[[ 8)k)kU)k)k)kJ(P(PE(P(P(PI'+yyi1G'H'HHH'+yy'7'7HH#(8 ""#6#6#6#6777 $E$5w?? -L&&t,,, $> '- '"&KK" 'u~ '"&K= ?"&))EM":":KOO$=$=$=>>>= 7"ii66GOO$5G$5$5666=,".u}g"F"FKz C&7
&C&Cv&M&M(,(,$) 9 9D#w77 904!%!6!6 9'4 !948M&,,..&88]8$OO,G,G,GHHHH(..00G;;;$OO,G,G,GHHH !(AK(A(ABBB  ;L&&'9::: % 8 8DL&&d7777""4(((oW	) W	)r!   usagec                 r    |r2t          ||          }|r"| j                            d| d           dS dS dS )a2  Render the usage line as markdown.

        Parameters
        ----------
        console : Optional[Console]
            Console for text extraction.
        options : Optional[ConsoleOptions]
            Console rendering options (unused).
        usage : Any
            The usage line content.
        z```
z
```

Nr	   r@   rU   )rA   rI   rJ   r   
usage_texts        r   render_usagezMarkdownFormatter.render_usage-  se    "  	B%eW55J B""#@:#@#@#@AAAAA	B 	BB Br!   rV   c                 p    |r1t          ||          }|r!| j                            | d           dS dS dS )a:  Render the description as markdown.

        Parameters
        ----------
        console : Optional[Console]
            Console for text extraction.
        options : Optional[ConsoleOptions]
            Console rendering options (unused).
        description : Any
            The description content.
        rO   Nr   )rA   rI   rJ   rV   r\   s        r   render_descriptionz$MarkdownFormatter.render_descriptionC  s\    "  	7$['::I 7""i#5#5#566666	7 	77 7r!   )r   r9   F)r   N)r#   
__module____qualname____doc__intr&   rr   rB   rE   rH   r   r]   listrX   rY   r   r   r   r   r!   r   r8   r8   [   s         "$		% 	%	% 	% 		% 	% 	% 	%% % % %'C ' ' ' '&!)$&! *+&! 	&!
 
&! &! &! &!P)T+-> )R[I\ )ae ) ) ) )>b)tK/@ b)8T]K^ b)cg b) b) b) b)HB)$B *+B 	B
 
B B B B,7)$7 *+7 	7
 
7 7 7 7 7 7r!   r8   )r   r>   typingr   r   r   r   r   r   cyclopts._markupr	   rich.consoler
   r   cyclopts.helpr   r   r&   r   r8   r   r!   r   <module>r      s    ' ' 				 L L L L L L L L L L L L L L L L ) ) ) ) ) ) 34444444422222222J J J J J JZ|7 |7 |7 |7 |7 |7 |7 |7 |7 |7r!   