
    !<iq                          d Z ddlmZmZmZmZ ddlmZ ddlm	Z	 er ddl
mZmZmZ ddlmZ ddlmZ ddlmZmZmZ  ed	
           G d d                      ZdS )z"Default Rich-based help formatter.    )TYPE_CHECKINGAnyOptionalUnion)define)SILENT)ConsoleConsoleOptionsRenderableType)	HelpPanel)ColumnSpecBuilder)
ColumnSpec	PanelSpec	TableSpecT)kw_onlyc                       e Zd ZU dZdZed         ed<   	 dZed         ed<   	 dZe	e
d         df         dz  ed	<   	 ed
             ZddZdddddeddfdZdddddeddfdZddZdS )DefaultFormatteru  Default help formatter using Rich library with customizable specs.

    Parameters
    ----------
    panel_spec : Optional[PanelSpec]
        Panel specification for the outer box/panel styling.
    table_spec : Optional[TableSpec]
        Table specification for table styling (borders, padding, etc).
    column_specs : Optional[Union[tuple[ColumnSpec, ...], ColumnSpecBuilder]]
        Column specifications or builder function for table columns.

    Notes
    -----
    The relationship between these specs can be visualized as:

    ::

        ╭─ Commands ───────────────────────────────────────────────────────╮  ← panel_spec
        │ serve     Start the development server                           │     (border, title)
        │ --help    Display this message and exit.                         │
        ╰──────────────────────────────────────────────────────────────────╯
         ↑         ↑
         col[0]    col[1]
         (name)    (description)

        ╭─ Parameters ─────────────────────────────────────────────────────╮  ← panel_spec
        │ *  PORT --port        Server port number [required]              │
        │    VERBOSE --verbose  Enable verbose output [default: False]     │
        ╰──────────────────────────────────────────────────────────────────╯
         ↑  ↑                  ↑
         │  col[1]             col[2]
         │  (name/flags)       (description)
         │
         col[0]
         (required marker)

    Where:

    - ``panel_spec`` controls the outer panel appearance (border, title, etc.)
    - ``table_spec`` controls the inner table styling (no visible borders by default)
    - ``column_specs`` defines individual columns (width, style, alignment, etc.)
    Nr   
panel_specr   
table_spec)r   .r   column_specsc                     d } | dd|i|S )a  Create formatter with metadata on separate lines.

        Returns a DefaultFormatter configured to display parameter metadata
        (choices, env vars, defaults) on separate indented lines rather
        than inline with descriptions.

        Parameters
        ----------
        **kwargs
            Additional keyword arguments to pass to DefaultFormatter constructor.

        Returns
        -------
        DefaultFormatter
            Configured formatter instance with newline metadata display.

        Examples
        --------
        >>> from cyclopts import App
        >>> from cyclopts.help import DefaultFormatter
        >>> app = App(help_formatter=DefaultFormatter.with_newline_metadata())
        c                    dd l }ddlm}m}m}m} |                    | j        dz            } | ||          dd|          }	 | |d	          d
d          }
t          d |D                       r||	|
fS |	|
fS )Nr   )AsteriskColumnr   DescriptionRendererNameRenderergffffff?)	max_widthOptioncyan)rendererheaderstyler   T)newline_metadataDescriptionfold)r   r    overflowc              3   $   K   | ]}|j         V  d S )N)required).0xs     /Users/kimhansen/Desktop/03 Workspace/ceo-agents/chl-effectiveness/mcp-servers/whoop/.venv/lib/python3.11/site-packages/cyclopts/help/formatters/default.py	<genexpr>zQDefaultFormatter.with_newline_metadata.<locals>.column_builder.<locals>.<genexpr>v   s$      //!1://////    )	mathcyclopts.help.specsr   r   r   r   ceilwidthany)consoleoptionsentriesr-   r   r   r   r   r   name_columndescription_columns              r*   column_builderz>DefaultFormatter.with_newline_metadata.<locals>.column_builder`   s    KKK            		'-$"677I$*%	:::#	  K ",,,dCCCMdj" " " //w///// I&5GHH!344r,   r    r8   )clskwargsr7   s      r*   with_newline_metadataz&DefaultFormatter.with_newline_metadataG   s.    2	5 	5 	54 s999&999r,   r2   r	   r3   r
   panelr   returnc                 ^    |                      |||          }|                    |           dS )a=  Format and render a single help panel using Rich.

        Parameters
        ----------
        console : ~rich.console.Console
            Console to render to.
        options : ~rich.console.ConsoleOptions
            Console rendering options.
        panel : HelpPanel
            Help panel to render.
        N)_render_panelprint)selfr2   r3   r<   rendereds        r*   __call__zDefaultFormatter.__call__|   s3     %%eWg>>hr,   usagec                 8    |r|                     |           dS dS )a$  Render the usage line.

        Parameters
        ----------
        console : ~rich.console.Console
            Console to render to.
        options : ~rich.console.ConsoleOptions
            Console rendering options.
        usage : Any
            The usage line (Text or str).
        Nr@   )rA   r2   r3   rD   s       r*   render_usagezDefaultFormatter.render_usage   s.      	!MM%     	! 	!r,   descriptionc                 8    |r|                     |           dS dS )a@  Render the description.

        Parameters
        ----------
        console : ~rich.console.Console
            Console to render to.
        options : ~rich.console.ConsoleOptions
            Console rendering options.
        description : Any
            The description (can be various Rich renderables).
        NrF   )rA   r2   r3   rH   s       r*   render_descriptionz#DefaultFormatter.render_description   s.      	'MM+&&&&&	' 	'r,   
help_panelr   c                 b   |j         st          S ddlm} ddlm} ddlm} ddlm}m	}m
}	m}
 |j        }t          ||          r#d|_        |j        r || |d                    }| j        p	 |            }| j        p	 |            }| j        }||j        d	k    r|	}n|
}t)          |          r ||||j                   }|                    ||j                   }|J |j        '|                     |||          |j        
          }n|                     |||                    }|S )zRender a single help panel.r   )Group)NewLine)Text)r   r   get_default_command_columnsget_default_parameter_columns    Ncommand)title)r4   r   rich.consolerM   rN   	rich.textrO   r.   r   r   rP   rQ   rH   
isinstanceendplainr   r   r   formatcallablebuildrU   )rA   rK   r2   r3   	RichGrouprN   rO   r   r   rP   rQ   panel_descriptionr   r   columnstabler<   s                    r*   r?   zDefaultFormatter._render_panel   s   ! 	M333333((((((""""""	
 	
 	
 	
 	
 	
 	
 	
 	
 	
 	
 	
 '2'.. 	M$&! & M$-I.?$L$L! _3		
_3		
 #? I--57G 	Dggw
0BCCG   **<== !,,,#$$YY/@%%H%HPZP`$aaEE$$YY/@%%H%HIIEr,   )r2   r	   r3   r
   r<   r   r=   N)rK   r   r2   r	   r3   r
   r=   r   )__name__
__module____qualname____doc__r   r   __annotations__r   r   r   tupleclassmethodr;   rC   r   rG   rJ   r?   r8   r,   r*   r   r      s$        ) )V )-J%,,,\(,J%,,,[PTL%/02EEFMTTTe2: 2: [2:h       !I !8H !QT !Y] ! ! ! !') '>N ']` 'ei ' ' ' '2 2 2 2 2 2r,   r   N)re   typingr   r   r   r   attrsr   cyclopts.help.silentr   rV   r	   r
   r   cyclopts.helpr   cyclopts.help.protocolsr   r.   r   r   r   r   r8   r,   r*   <module>rn      s   ( ( 6 6 6 6 6 6 6 6 6 6 6 6       ' ' ' ' ' ' EDDDDDDDDDD''''''999999DDDDDDDDDD I I I I I I I I I Ir,   