
    !<i_              
          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 er4d dlmZ d dl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 d dlm Z   G d d          Z! G d d          Z" G d d          Z#e G d d                      Z$ e$ e#            dddd          Z% e$ e!            ddd          Z& e$ e"            ddd !          Z'd"d#d$d%d&e(d'         d(e)e$d)f         fd*Z*d"d#d$d%d&e(d'         d(e)e$d)f         fd+Z+e G d, d-                      Z,e G d. d/                      Z-dS )0    N)Iterable)
attrgetter)TYPE_CHECKINGLiteralOptionalUnionevolve)frozen)Box)ConsoleConsoleOptionsRenderableType)PaddingDimensionsPanel)	StyleTypeTable)	HelpEntry)Rendererc                   .    e Zd ZdZd
dedz  fdZdd	ZdS )NameRendererzRenderer for parameter/command names with optional text wrapping.

    Parameters
    ----------
    max_width : int | None
        Maximum width for wrapping. If None, no wrapping is applied.
    N	max_widthc                     || _         dS )zInitialize the renderer with formatting options.

        Parameters
        ----------
        max_width : int | None
            Maximum width for wrapping. If None, no wrapping is applied.
        Nr   )selfr   s     /Users/kimhansen/Desktop/03 Workspace/ceo-agents/chl-effectiveness/mcp-servers/whoop/.venv/lib/python3.11/site-packages/cyclopts/help/specs.py__init__zNameRenderer.__init__    s     #    entryr   returnr   c                 (   |j         rd                    |j                   nd}|j        rd                    |j                  nd}|r|r	|dz   |z   }n|p|}| j        |S t	          j        || j        ddd          }d                    |          S )	a&  Render the names column with optional text wrapping.

        Parameters
        ----------
        entry : HelpEntry
            The table entry to render.

        Returns
        -------
        ~rich.console.RenderableType
            Combined names and shorts, optionally wrapped.
          Nz  F   )subsequent_indentbreak_on_hyphenstabsize
)namesjoinshortsr   textwrapwrap)r   r!   	names_str
shorts_strtextwrappeds         r   __call__zNameRenderer.__call__*   s     .3[@CHHU[)))b	/4|CSXXel+++
 	+ 	+s?Z/DD*
D>!K-N""
 
 
 yy!!!r    Nr!   r   r"   r   )__name__
__module____qualname____doc__intr   r4    r    r   r   r      sV         # ##* # # # # "  "  "  "  "  "r    r   c                   (    e Zd ZdZddefdZdd	Zd
S )DescriptionRenderera  Renderer for descriptions with configurable metadata formatting.

    Parameters
    ----------
    newline_metadata : bool
        If True, display metadata (choices, env vars, defaults) on separate lines.
        If False (default), display metadata inline with the description.
    Fnewline_metadatac                     || _         dS )zInitialize the renderer with formatting options.

        Parameters
        ----------
        newline_metadata : bool
            If True, display metadata on separate lines instead of inline.
        N)r?   )r   r?   s     r   r   zDescriptionRenderer.__init__W   s     !1r    r!   r   r"   r   c                    ddl m} ddlm} |j        }| | |                      }nXt          ||          sHt          |j        d          r ||          }n'ddl m}  | |t          |                              }g }|j        r=d	                    |j                  }|
                     |d| dd	                     |j        r=d	                    |j                  }|
                     |d
| dd	                     |j        (|
                     |d|j         dd	                     |j        r|
                     |dd                     | j        r\|rZddlm} ddl m} g }	|j        r|	
                    |j                   |D ]}
|	
                    |
           |	r ||	 n	 |            S |D ]}
|
                    |
           |S )a  Render parameter description with metadata annotations.

        Enriches the base description with choices, environment variables,
        default values, and required status.

        Parameters
        ----------
        entry : HelpEntry
            The table entry to render.

        Returns
        -------
        ~rich.console.RenderableType
            Description with appended metadata.
        r   )Text)
InlineTextN__rich_console__z, z
[choices: ]dimz
[env var: z
[default: z
[required]zdim red)Group)	rich.textrB   cyclopts.help.inline_textrC   description
isinstancehasattrstrchoicesr,   appendenv_vardefaultrequiredr?   rich.consolerG   primary_renderable)r   r!   rB   rC   rJ   metadata_itemschoices_strenv_vars_str	RichGrouprenderablesitems              r   r4   zDescriptionRenderer.__call__a   s     	#"""""888888'$*TTVV,,KKK44 		Au(*<== A(j55 +*****(jc+.>.>)?)?@@ = 	M))EM22K!!$$'C['C'C'CU"K"KLLL= 	N99U]33L!!$$'D\'D'D'De"L"LMMM=$!!$$'EU]'E'E'Eu"M"MNNN> 	B!!$$}i"@"@AAA   	^ 	777777&&&&&& K - C"";#ABBB ' ) )""4(((( /:E99k**ttvvE ' ) )""4((((r    N)Fr6   )r7   r8   r9   r:   boolr   r4   r<   r    r   r>   r>   M   sX         1 1 1 1 1 1K K K K K Kr    r>   c                       e Zd ZdZddZdS )	AsteriskRendererzRenderer for required parameter asterisk indicator.

    A simple renderer that displays an asterisk (*) for required parameters.
    r!   r   r"   r   c                     |j         rdndS )a,  Render an asterisk for required parameters.

        Parameters
        ----------
        entry : HelpEntry
            The table entry to render.

        Returns
        -------
        ~rich.console.RenderableType
            An asterisk if the entry is required, empty string otherwise.
        *r%   rR   )r   r!   s     r   r4   zAsteriskRenderer.__call__   s     n,ss",r    Nr6   )r7   r8   r9   r:   r4   r<   r    r   r]   r]      s2         
- - - - - -r    r]   c                      e Zd ZU dZeedf         ed<   	 dZeed<   	 dZeed<   	 dZ	e
d         ed	<   	 dZe
d         ed
<   	 dZe
d         ed<   	 dZed         ed<   	 dZed         ed<   	 dZed         ed<   	 dZedz  ed<   	 dZedz  ed<   	 dZedz  ed<   	 dZedz  ed<   	 dZeed<   	 dZedz  ed<   	 d"d Zd! ZdS )#
ColumnSpeca  Specification for a single column in a help table.

    Used by :class:`~cyclopts.help.formatters.default.DefaultFormatter` to define
    how individual columns are rendered in help tables. Each column can have its
    own renderer, styling, and layout properties.

    See Also
    --------
    ~cyclopts.help.formatters.default.DefaultFormatter : The formatter that uses these specs.
    ~cyclopts.help.specs.TableSpec : Specification for the entire table.
    ~cyclopts.help.specs.PanelSpec : Specification for the outer panel.
    r   rendererr%   headerfooterNr   header_stylefooter_stylestyleleft)rQ   ri   centerrightfulljustifytop)rn   middlebottomverticalellipsis)foldcroprr   ignoreoverflowwidth	min_widthr   ratioFno_wrap	highlightr!   r   r"   r   c                     t          | j        t                    r t          | j                  |          }n,t	          | j                  r|                     |          }nd}|dn|S )zRender the cell content based on the renderer type.

        If renderer is a string, retrieves that attribute from the entry.
        If renderer is callable, calls it with the entry.
        Nr%   )rK   rc   rM   r   callable)r   r!   values      r   _render_cellzColumnSpec._render_cellL  sk     dmS)) 	-Jt}--e44EEdm$$ 	MM%((EEE]rr-r    c                     t          | fi |S r5   r	   r   kwargss     r   copyzColumnSpec.copyZ      d%%f%%%r    r6   )r7   r8   r9   r:   r   rM   __annotations__rd   re   rf   r   rg   rh   rm   r   rq   rv   rw   r;   rx   r   ry   rz   r[   r{   r   r   r<   r    r   rb   rb      s          CO$$$$* FC
 FC
 +/L(;'...
 +/L(;'...
 $(E8K '''
 FLGWABKKK
 49Hg/0888
 ?IHg:;HHH
 E3:
 !IsTz   
 !IsTz   
 E3:
 GT
 "Itd{!!!
. . . .& & & & &r    rb   r%   ri      zred bold)rc   rd   rm   rw   rh   Optioncyan)rc   rd   rm   rh   Descriptionrs   )rc   rd   rm   rv   consoler   optionsr   entriesr   r"   .c                     t          j        | j        dz            }t          t	          |          ddd|          }|t
          fS )a  Get default column specifications for command display.

    Parameters
    ----------
    console : ~rich.console.Console
        Rich console for width calculations.
    options : ~rich.console.ConsoleOptions
        Console rendering options.
    entries : list[HelpEntry]
        Command entries to display.

    Returns
    -------
    tuple[ColumnSpec, ...]
        Column specifications for command table.
    ffffff?r   Commandri   r   rc   rd   rm   rh   r   )mathceilrw   rb   r   DescriptionColumn)r   r   r   r   command_columns        r   get_default_command_columnsr   q  sZ    & 	'-$.//I	222  N 	 r    c                     t          j        | j        dz            }t          t	          |          ddd|          }t          d |D                       rt          |t          fS |t          fS )a  Get default column specifications for parameter display.

    Parameters
    ----------
    console : ~rich.console.Console
        Rich console for width calculations.
    options : ~rich.console.ConsoleOptions
        Console rendering options.
    entries : list[HelpEntry]
        Parameter entries to display.

    Returns
    -------
    tuple[ColumnSpec, ...]
        Column specifications for parameter table.
    r   r   r   ri   r   r   c              3   $   K   | ]}|j         V  d S r5   r`   ).0xs     r   	<genexpr>z0get_default_parameter_columns.<locals>.<genexpr>  s$      
'
'!1:
'
'
'
'
'
'r    )r   r   rw   rb   r   anyAsteriskColumnr   )r   r   r   r   name_columns        r   get_default_parameter_columnsr     s    & 	'-$.//I	222  K 
'
'w
'
'
''' 


 	
 
 	
r    c                      e Zd ZU dZdZedz  ed<   	 dZedz  ed<   	 dZe	d         ed<   	 dZ
e	d         ed<   	 dZe	d         ed<   	 dZe	d         ed	<   	 dZe	d
         ed<   	 dZeed<   	 dZeed<   	 dZeed<   	 dZeed<   	 dZeed<   	 dZeed<   	 dZded<   	 dZeed<   	 dZedz  ed<   	 dZedz  ed<   	 dZedz  ed<   	 deedf         ded         dd fd!Zd" ZdS )#	TableSpeca$  Specification for table layout and styling.

    Used by :class:`~cyclopts.help.formatters.default.DefaultFormatter` to control
    the appearance of tables that display commands and parameters. This spec defines
    table-wide properties like borders, headers, and padding.

    See Also
    --------
    ~cyclopts.help.formatters.default.DefaultFormatter : The formatter that uses these specs.
    ~cyclopts.help.specs.ColumnSpec : Specification for individual columns.
    ~cyclopts.help.specs.PanelSpec : Specification for the outer panel.
    Ntitlecaptionr   rh   border_stylerf   rg   r   boxFshow_headershow_footer
show_linesT	show_edgeexpandpad_edge)r      r   r   r   paddingcollapse_paddingrw   rx   safe_boxcolumns.r   r   r"   r   c                    | j         }|rt          d |D                       rd}i d| j        d| j        d| j        d| j        d| j        d| j        d	| j        d
|d| j	        d| j
        d| j        d| j        d| j        d| j        d| j        d| j        d| j        d| j        i}|                    |           ddlm}  |di |}|D ]q}|j        |j        |j        |j        |j        |j        |j        |j        |j        |j        |j        |j        |j        d}	|j        
|j        |	d<    |j        di |	 r|D ]fd|D             }
 |j         |
  |S )a  Construct and populate a rich.Table.

        Parameters
        ----------
        columns : tuple[ColumnSpec, ...]
            Column specifications defining the table structure.
        entries : Iterable[HelpEntry]
            Table entries to populate the table with.
        **overrides
            Per-render overrides for table settings.

        Returns
        -------
        Table
            A populated Rich Table.
        c              3   &   K   | ]}|j          V  d S r5   )rd   )r   cols     r   r   z"TableSpec.build.<locals>.<genexpr>Q  s&      AA#3:~AAAAAAr    Fr   r   rh   r   rf   rg   r   r   r   r   r   r   r   r   r   rw   rx   r   r   r   )rd   re   rf   rg   rh   rm   rq   rv   rw   rx   r   ry   rz   Nr{   c                 :    g | ]}|                               S r<   )r   )r   r   es     r   
<listcomp>z#TableSpec.build.<locals>.<listcomp>  s'    <<<SS%%a((<<<r    r<   )!r   allr   r   rh   r   rf   rg   r   r   r   r   r   r   r   r   rw   rx   r   update
rich.tabler   rd   re   rm   rq   rv   r   ry   rz   r{   
add_columnadd_row)r   r   r   	overridesr   optsr   tablecolumncol_optscellsr   s              @r   buildzTableSpec.build8  sM   0 & 	 3AAAAAAA 	 K
TZ
t|
 TZ
 D-	

 D-
 D-
 48
 ;
 4+
 $/
 
 dk
 
 t|
  5
  TZ!
" #
$ %
 
( 	I$$$$$$  	) 	)F - - & 3 & 3!>"O"O#-#-!> H +(.(8%E((x((((  	" 	"A<<<<G<<<EEM5!!!r    c                     t          | fi |S r5   r	   r   s     r   r   zTableSpec.copy  r   r    ) r7   r8   r9   r:   r   rM   r   r   rh   r   r   rf   rg   r   r   r[   r   r   r   r   r   r   r   rw   r;   rx   r   tuplerb   r   r   r   r<   r    r   r   r     sA          E3:
 GS4Z
 $(E8K '''
 +/L(;'...
 +/L(;'...
 +/L(;'...
  C%
 K
 K
 J
 It
 FD
 Hd
 $0G ///
 #d"""
 E3:
 !IsTz   
 !HdTk   
Pz3'P +&P
 
P P P Pd& & & & &r    r   c                   X   e Zd ZU dZdZed         ed<   	 dZed         ed<   	 dZe	d         ed<   	 d	Z
e	d         ed
<   	 dZed         ed<   	 dZed         ed<   	 dZed         ed<   	 dZded<   	 dZeed<   	 dZedz  ed<   	 dZedz  ed<   	 dZedz  ed<   	 dZeed<   	 d dZd ZdS )!	PanelSpeca"  Specification for panel (outer box) styling.

    Used by :class:`~cyclopts.help.formatters.default.DefaultFormatter` to control
    the appearance of the outer panel that wraps help sections. This spec defines
    the panel's border, title, subtitle, and overall styling.

    See Also
    --------
    ~cyclopts.help.formatters.default.DefaultFormatter : The formatter that uses these specs.
    ~cyclopts.help.specs.TableSpec : Specification for the inner table.
    ~cyclopts.help.specs.ColumnSpec : Specification for individual columns.
    Nr   r   subtitleri   )ri   rj   rk   title_alignrj   subtitle_alignnoner   rh   r   r   r   )r   r   r   r   Tr   rw   heightr   Fr{   
renderabler"   r   c                 0   | j         }|ddlm} |}| j        | j        | j        | j        || j        | j        | j	        | j
        | j        | j        d}| j        
| j        |d<   | j        
| j        |d<   |                    |           ddlm}  ||fi |S )zKCreate a Panel around `renderable`. Use kwargs to override spec per render.Nr   )ROUNDED)r   r   rh   r   r   r   r   rw   r   r   r{   r   r   r   )r   rich.boxr   r   r   rh   r   r   r   rw   r   r   r{   r   r   r   
rich.panelr   )r   r   r   r   r   r   r   s          r   r   zPanelSpec.build  s     h;((((((C  +"1Z -|kZk
 
 :! JDM=$#}DI$$$$$$uZ((4(((r    c                     t          | fi |S r5   r	   r   s     r   r   zPanelSpec.copy  r   r    )r   r   r"   r   )r7   r8   r9   r:   r   r   r   r   r   r   r   rh   r   r   r   r   r[   rw   r;   r   r   r{   r   r   r<   r    r   r   r     s          )-E8$%,,,
 ,0Hh'(///
 7=K23<<<
 :BNG56AAA
 $*E8K )))
 +1L(;'000
  C% $*G )))
 FD
 E3:
 FC$J
 !HdTk   
 It
) ) ) )B& & & & &r    r   ).r   r.   collections.abcr   operatorr   typingr   r   r   r   attrsr
   cyclopts.utilsr   r   r   rS   r   r   r   rich.paddingr   r   r   
rich.styler   r   r   cyclopts.helpr   cyclopts.help.protocolsr   r   r>   r]   rb   r   
NameColumnr   listr   r   r   r   r   r<   r    r   <module>r      sr     $ $ $ $ $ $       : : : : : : : : : : : :       ! ! ! ! ! ! 	1DDDDDDDDDD......      $$$$$$      ''''''0000003" 3" 3" 3" 3" 3" 3" 3"l_ _ _ _ _ _ _ _D- - - - - - - -, U& U& U& U& U& U& U& U&r 

   Z\^^
	  
 J(;(;(=(=m]cntuuu !1<@<M
:s?   D&
&
!1&
<@<M&

:s?&
 &
 &
 &
R N& N& N& N& N& N& N& N&b @& @& @& @& @& @& @& @& @& @&r    