
    k7i.                         S r SSKrSSKJrJrJrJrJrJr  SSK	J
r
  \(       a  SSKJrJr  SSKJrJr  S\S\4S	 jr " S
 S5      rg)z!Markdown documentation formatter.    N)TYPE_CHECKINGAnyOptionalUnionget_args
get_origin)extract_text)ConsoleConsoleOptions)	HelpEntry	HelpPaneltype_objreturnc                    U c  g[        U [        5      (       ae  U nUR                  SS5      R                  SS5      nUR                  SS5      nSU;   a'  XR                  S5      S-   UR	                  S	5       nU$ U$ [        U 5      nUR                  S5      (       a  US
S n[        U 5      nU[        L a  [        U 5      n[        U5      S:X  a5  [        S5      U;   a&  US   [        S5      L a  US   OUS   n[        U5      $ U Vs/ s H  n[        U5      PM     nnSSR                  U5       S	3$ U(       a\  [        U 5      n[        US[        U5      5      nU(       a2  U Vs/ s H  n[        U5      PM     nnU SSR                  U5       S	3$ U$ [        U S5      (       a  U R                  $ UR                  SS5      nU$ s  snf s  snf )a(  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   zUnion[, __name__)
isinstancestrreplaceindexrindex
startswithr   r   r   lentype_format_type_namejoingetattrhasattrr   )	r   type_strinneroriginargsnon_noneargformatted_argsorigin_names	            [/home/james-whalen/.local/lib/python3.13/site-packages/cyclopts/help/formatters/markdown.pyr"   r"      s   ,  (C  ##J3;;D"E##Ir2 ("^^C014xs7KLEL 8}H :&&Ab> !F!t9>d4jD0"&q'T$Z"7tAwT!WH$X..<@ADS+C0DA		.12!44	!fj#f+>@DE/4NE!]!DIIn$=#>a@@ x$$    	2.HO% B Fs   G+Gc                      \ rS rSrSr   SS\S\S\4S jjrSS	 jr	S\4S
 jr
S\S   S\S   SSSS4S jrS\S   S\S   SS4S jrS\S   S\S   SS4S jrS\S   S\S   S\SS4S jrS\S   S\S   S\SS4S jrSrg)MarkdownFormatter[   a  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).
heading_leveltable_styleinclude_hiddenc                 \    Xl         X l        X0l        [        R                  " 5       U l        g )N)r2   r3   r4   ioStringIO_output)selfr2   r3   r4   s       r.   __init__MarkdownFormatter.__init__i   s#     +&,{{}    r   Nc                 8    [         R                  " 5       U l        g)z!Reset the internal output buffer.N)r6   r7   r8   r9   s    r.   resetMarkdownFormatter.resett   s    {{}r<   c                 6    U R                   R                  5       $ )zaGet the accumulated markdown output.

Returns
-------
str
    The markdown documentation string.
)r8   getvaluer>   s    r.   
get_outputMarkdownFormatter.get_outputx   s     ||$$&&r<   consoler
   optionsr   panelr   c                 V   UR                   (       d  gUR                  (       aF  [        UR                  U5      nSU R                  -  nU R                  R                  U SU S35        UR                  (       a;  [        UR                  U5      nU(       a  U R                  R                  U S35        UR                  S:X  a  U R                  UR                   U5        O,UR                  S:X  a  U R                  UR                   U5        U R                  R                  S5        g)a  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	   r2   r8   writedescriptionformat_format_command_panel_format_parameter_panel)r9   rE   rF   rG   
title_textheading	desc_texts          r.   __call__MarkdownFormatter.__call__   s    " }} ;;%ekk7;JD...GLL'!J<t<= $U%6%6@I""i[#56 <<9$&&u}}g>\\[(((@4 r<   rO   r   c                    U H  n/ nUR                   (       a  UR                  UR                   5        UR                  (       a  UR                  UR                  5        U(       d  Mf  US   n[        UR                  U5      nU(       a"  U R
                  R                  SU SU 35        OU R
                  R                  SU S35        U R
                  R                  S5        M     g)zFormat command entries as markdown.

Parameters
----------
entries : list[HelpEntry]
    Command entries to format.
console : Optional[Console]
    Console for text extraction.
r   * ``: z`:rN   N)namesextendshortsr	   rR   r8   rQ   )r9   rO   rE   entryr^   primary_namedescs          r.   rT   'MarkdownFormatter._format_command_panel   s     EE{{U[[)||U\\*u$Qx#E$5$5w?LL&&\N#dV'DELL&&\N"'=>""4(% r<   c                 r   U GH!  n/ nUR                   (       a  UR                  UR                   5        UR                  (       a  UR                  UR                  5        U(       d  Mg  UR                  =(       a    UR                  SL nU(       aW  U Vs/ s H  ofR                  S5      (       a  M  UPM     nnU(       a  US   R                  5       OUS   R                  5       nO[        U5      S:  a  [        S U 5       5      (       a~  U Vs/ s H4  ofR                  S5      (       d  M  UR                  S5      (       a  M2  UPM6     n	nU Vs/ s H  ofR                  S5      (       d  M  UPM     n
nSR                  X-   5      nOSR                  U5      nOUS   nU R                  R                  SU S	35        [        UR                  U5      nU(       a  U R                  R                  U5        S
nUR                  (       a
  U(       d  SnOU(       a  UR                  (       a  Sn/ nUR                  (       a/  SR                  UR                  5      nUR                  SU 35        UR                   (       a/  SR                  UR                   5      nUR                  SU 35        UR                  b  [        UR                  U5      nUR"                  (       a  [%        UR"                  5      S:X  a  SnSnU H@  nUR                  S5      (       a  UnM  UR                  S5      (       d  M5  U(       a  M>  UnMB     UR'                  5       S:X  a  U(       a  UR                  SU 35        ODUR'                  5       S:X  a  U(       a  UR                  SU 35        OUR                  SU 35        U(       a  U R                  R                  S5        U H"  nU R                  R                  SU S35        M$     U R                  R                  S5        GM$     gs  snf s  snf s  snf )zFormat parameter entries as markdown in Typer style.

Parameters
----------
entries : list[HelpEntry]
    Parameter entries to format.
console : Optional[Console]
    Console for text extraction.
N-r   r   c              3   |   #    U  H2  oR                  S 5      =(       a    UR                  S5      (       + v   M4     g7f)rf   --N)r   ).0ns     r.   	<genexpr><MarkdownFormatter._format_parameter_panel.<locals>.<genexpr>   s.     [UZPQ||C0Kd9K5KKUZs   :<rh   r   r\   r]   FTz	choices: zenv: boolz--no-truez	default: falsez  **[required]**z  *[z]*rN   )r^   r_   r`   requireddefaultr   upperr    anyr#   r8   rQ   r	   rR   choicesappendenv_varr!   r"   lower)r9   rO   rE   ra   r^   is_positionalrj   positional_namesname_str
short_opts	long_optsrc   is_requiredmetadatachoices_strenv_strdefault_strpositive_flagnegative_flagnameitems                        r.   rU   )MarkdownFormatter._format_parameter_panel   s9    EE{{U[[)||U\\*u !& H5==D3H 38'R5aS@Q5$'R>N/288:TYZ[T\TbTbTdH 5zA~[UZ[[[5:)kUll3>O!XYXdXdeiXj!UJ)k49(PEq\\$=OEI(P'+yy1G'HH'+yy'7H#(8 ""S
##67 $E$5$5w?LL&&t, $>>-"&K"u~~"&K=="&))EMM":KOOi}$=>=="ii6GOOeG9$56==,".u}}g"FKzz&7

&Cv&M(,(,$)D#w7704!%!6!6'4}48M %* ',,.&8]$OOi,GH(..0G;$OOi,GH !)K=(AB LL&&'9: %DLL&&dV27 % ""4(o  (S *l(Ps*   P*3P*P/0P/P/P41P4usagec                 x    U(       a3  [        X15      nU(       a   U R                  R                  SU S35        ggg)zRender 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	   r8   rQ   )r9   rE   rF   r   
usage_texts        r.   render_usageMarkdownFormatter.render_usage-  s9    " %e5J""U:,i#@A  r<   rR   c                 v    U(       a2  [        X15      nU(       a  U R                  R                  U S35        ggg)zRender the description as markdown.

Parameters
----------
console : Optional[Console]
    Console for text extraction.
options : Optional[ConsoleOptions]
    Console rendering options (unused).
description : Any
    The description content.
rK   Nr   )r9   rE   rF   rR   rX   s        r.   render_description$MarkdownFormatter.render_descriptionC  s7    " $[:I""i[#56  r<   )r8   r2   r4   r3   )r   tableF)r   N)r   
__module____qualname____firstlineno____doc__intr   rm   r:   r?   rC   r   rY   listrT   rU   r   r   r   __static_attributes__ r<   r.   r0   r0   [   s=    "$		%	% 	% 		%%'C '&!)$&! *+&! 	&!
 
&!P)T+-> )R[I\ )ae )>b)tK/@ b)8T]K^ b)cg b)HB)$B *+B 	B
 
B,7)$7 *+7 	7
 
7r<   r0   )r   r6   typingr   r   r   r   r   r   cyclopts._markupr	   rich.consoler
   r   cyclopts.helpr   r   r   r"   r0   r   r<   r.   <module>r      s@    ' 	 L L )42J J JZ|7 |7r<   