
    !<i8                     h   d dl Z d dlZd dlmZmZ d dlmZ d dlmZ d dl	m
Z
 d dlmZmZ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!m"Z"m#Z# erd dl$m%Z% d dl&m'Z' d dlm(Z(  ed          de)de)fd            Z*d Z+ e!d           G d d                      Z,e G d d                      Z-d Z.ddd e/e0e0f         fd!Z1ddd e/e0e0f         fd"Z2d#d$d%ee)         fd&Z3d'ee)         d e)fd(Z4d#d$de)d eez  fd)Z5d*d+ddde)d e-fd,Z6d-ede)d e0e,         fd.Z7dS )/    N)IterableSequence)Enum)	lru_cache)Path)TYPE_CHECKINGAnyLiteral)
convertersdefineevolvefield)resolve_annotated)_get_root_module_name)Group)
InlineText)SILENT
SilentRich)
SortHelperfrozenis_class_and_subclassresolve_callables)RenderableType)ArgumentCollection)App   )maxsizedocformatc                 ,   ddl }t          j        |           }|                    dd          }|d                             dd          }t          |          dk    r|}n|dz   |d         z   }|                    |          }|j        r	|j        sJ |S )zUAddon to :func:`docstring_parser.parse` that supports multi-line `short_description`.r   Nz

   
 )	docstring_parserinspectcleandocsplitreplacelenparselong_descriptionshort_description)r   r   r$   cleaned_doc%short_description_and_maybe_remaindershortress          /Users/kimhansen/Desktop/03 Workspace/ceo-agents/chl-effectiveness/mcp-servers/whoop/.venv/lib/python3.11/site-packages/cyclopts/help/help.pydocstring_parser2      s     "3''K,7,=,=fa,H,H)
 2!4<<T3GGE
011Q66fn'LQ'OO

 
 
-
-C #<s'<<<<J    c                  "    ddl m}   |             S )Nr   Text)	rich.textr6   r5   s    r1   _text_factoryr8   6   s    466Mr3   T)kw_onlyc                      e Zd ZU dZdZeedf         ed<   	 dZeedf         ed<   	 dZ	e
ed<   	 dZeed	<   	 dZe
ed
<   	 dZe
dz  ed<   	 dZeedf         dz  ed<   	 dZeedf         dz  ed<   	 dZedz  ed<   	 d ZdS )	HelpEntryz$Container for help table entry data. .namesshortsNdescriptionFrequiredsort_keytypechoicesenv_vardefaultc                     t          | fi |S Nr   selfkwargss     r1   copyzHelpEntry.copy^       d%%f%%%r3   )__name__
__module____qualname____doc__r=   tuplestr__annotations__r>   r?   r	   r@   boolrA   rB   rC   rD   rE   rL   r<   r3   r1   r;   r;   <   s        ..E5c?: FE#s(O   0K
 Hd5Hc2D#*+&*GU38_t#***/&*GU38_t#***AGS4ZU& & & & &r3   r;   c                       e Zd ZU dZed         ed<   	 ded<   	  ed ej        e	                    Z
eed	<   	  ee          Zee         ed
<   	 d Zd Zd ZdS )	HelpPanelz*Data container for help panel information.)command	parameterr   r   titleN)factory)rE   	converterr?   entriesc                     t          | fi |S rG   rH   rI   s     r1   rL   zHelpPanel.copyx   rM   r3   c                     t                      g }}| j        D ]>}|j        |j        f}||vr*|                    |           |                    |           ?|| _        d S rG   )setr]   r=   r>   addappend)rJ   seenoutitemhashables        r1   _remove_duplicateszHelpPanel._remove_duplicates{   si    EE2cL 	! 	!D
DK0Ht##"""

4   r3   c                     | j         sdS | j        dk    r6t          j        d | j         D                       }d |D             | _         dS t          )zSort entries in-place.NrX   c                     g | ]U}t          |j        |j        r |j        d                              d          nd|j        r|j        d          ndf|          VS )r   -F )r   rA   r=   
startswith).0entrys     r1   
<listcomp>z#HelpPanel._sort.<locals>.<listcomp>   sz     
 
 
  >CkTEKN55c:::u.3kAEKNNr  
 
 
r3   c                     g | ]	}|j         
S r<   )value)rm   xs     r1   ro   z#HelpPanel._sort.<locals>.<listcomp>   s    @@@AG@@@r3   )r]   r   r   sortNotImplementedError)rJ   sorted_sort_helpers     r1   _sortzHelpPanel._sort   ss    | 	F;)##!+
 
 "&
 
 
" " A@-?@@@DLLL%%r3   )rN   rO   rP   rQ   r
   rT   r   r   default_if_noner8   r?   r	   listr]   r;   rL   rg   rv   r<   r3   r1   rW   rW   b   s         44*++++@u,*,]CCC  K   
  %uT222GT)_222B& & &  & & & & &r3   rW   c                 X    |                      d           o|                      d          S )Nz--rj   )rl   )ss    r1   	_is_shortr{      s(    ||D!!!7all3&7&77r3   argument_collectionr   returnc                    g g }}| D ]w}|j         s
|j        j        |j        j        fv r|                    |           9|j        j        r2|j        r|                    |           b|                    |           x||fS )a  Categorize keyword arguments by requirement status for usage string formatting.

    Parameters
    ----------
    argument_collection : ArgumentCollection
        Collection of arguments to categorize.

    Returns
    -------
    tuple[list, list]
        (required_keyword, optional_keyword) where:
        - required_keyword: Required keyword-only parameters
        - optional_keyword: Optional keyword-only parameters and VAR_KEYWORD
    )show
field_infokindVAR_KEYWORDrb   is_keyword_onlyr@   r|   r@   optionalarguments       r1   _categorize_keyword_argumentsr      s     RhH' 
* 
*} 	#(;(G'IIIOOH%%%% 0 	*  *)))))))Xr3   c                 B   g g }}| D ]}|j         s
|j        j        |j        j        k    r3|j        r|                    |           A|                    |           W|j        j        r2|j        r|                    |           |                    |           ||fS )a  Categorize positional arguments by requirement status for usage string formatting.

    Parameters
    ----------
    argument_collection : ArgumentCollection
        Collection of arguments to categorize.

    Returns
    -------
    tuple[list, list]
        (required_positional, optional_positional) where:
        - required_positional: Required positional and VAR_POSITIONAL parameters
        - optional_positional: Optional positional and VAR_POSITIONAL parameters
    )r   r   r   VAR_POSITIONALr@   rb   is_positionalr   s       r1    _categorize_positional_argumentsr      s     RhH' * *} 	#x':'III  *)))))))) . 	*  *)))))))Xr3   appr   command_chainc                 4    ddl m} ddlm} g }|                    d           |sI j        rB j        s;t          t          j	        d                   j
        }|dk    rt                      }|}n j
        d         }|                    |           |                    |           |D ]
} |          t           fd j        D                       r|                    d            j        r                     d	          }t!          |          \  }	}
t#          |          \  }}|	D ]E}|j
        } ||j                                                  }|                    | d
|            F|
r|                    d           |D ]}|j        j        |j        j        k    rE|j
                            d                                          }|                    | d           a|j
                            d                                          }|                    |           |rFt          d |D                       }|r|                    d           n|                    d            |d
                    |          dz   d          S )Nr   r5   )get_hint_namezUsage:z__main__.pyc              3   2   K   | ]}|         j         V  d S rG   r   )rm   rr   r   s     r1   	<genexpr>zformat_usage.<locals>.<genexpr>   s)      
9
913q6;
9
9
9
9
9
9r3   COMMANDF)parse_docstringr#   z	[OPTIONS]rj   z...c              3   J   K   | ]}|j         j        |j         j        k    V  d S rG   )r   r   r   )rm   args     r1   r   zformat_usage.<locals>.<genexpr>  sB       % %IL#s~'DD% % % % % %r3   z	[ARGS...]z[ARGS]r"   bold)style)r7   r6   cyclopts.annotationsr   rb   default_command_namer   sysargvnamer   extendany_registered_commandsassemble_argument_collectionr   r   hintupperr   r   r   lstripjoin)r   r   r6   r   usager   app_namerX   r|   required_keyword_paramsoptional_keyword_paramsrequired_positional_argsoptional_positional_argsr   
param_name	type_namearg_namehas_var_positionals   `                 r1   format_usager      s    222222E	LL  S0  CHQK  %=  (**D8A;	LL	LL   'l

9
9
9
9 8
9
9
999  Y
 '!>>u>UU;XYl;m;m8!8=]^q=r=r: ":/ 	6 	6H!J%hm44::<<ILLJ44445555" 	&LL%%%0 	' 	'H"'8+>+MMM#=//44::<<---....#=//44::<<X&&&&# 	'!$ % %Ph% % % " " " '[))))X&&&4$&f5555r3   stringsc                     | sdS | d         g}| dd         D ]K}|d                              d          r|                    |           3|                    d|z              Ld                    |          S )zJJoins strings with a space, unless the previous string ended in a newline.rk   r   r!   Nr"   r#   )endswithrb   r   )r   resultrz   s      r1   _smart_joinr   $  s     raj\FQRR[ # #":t$$ 	#MM!MM#'""""776??r3   c                 V   | j         }|st          S t          ||          }g }|j        r|                    |j        dz              |j        r9|j        r|                    d           |                    |j        dz              t          j        t          |          |d          S )Nr"   Tr   force_empty_end)	helpr   r2   r,   rb   r+   r   from_formatr   )r   r   raw_doc_stringparsed
componentss        r1   
format_docr   3  s    XN ^V44FJ ;&2T9::: :# 	$d###&1D8999!+j"9"9&Z^____r3   groupr   c                 h   ddl m} d| j        | j        rt	          j        | j        |d          n	 |            d}t          di |}fd}g g }}|                    d          D ]}	|	j        j	        sJ g t          |	j                  }
t                      }g }|
D ]J}|	j        	                    |          }||vr*|                    |           |                    |           K|}
|	j        >|
d                             d	                                          }||
d         k    r|g|
}
g g }}|
D ]<}t%          |          r|                    |           '|                    |           =t	          j        |	j        j        |
          }|	                                }d }|	j        j        r%|	j        j        rt-          |	j        j                  }d }|	j        rt1          |	j        t4                    r*|	j        	                    |	j        j        j                  }nt;          |	j        j                  }t=          |	j                  r|	                    |	j        j                  }t?          t-          |          |t-          |          |	j         tC          |	j        j"                  |||          }|	j        j#        r|                    |           ~|                    |           |j$        %                    |           |j$        %                    |           |S )Nr   r5   rY   Tr   )r   rZ   r?   c                 v    rd| z   } |r                     | |f           d S                      |            d S )Nr#   )rb   )textr   help_componentss     r1   help_appendz0create_parameter_help_panel.<locals>.help_appendW  sT     	:D 	)""D%=11111""4(((((r3   r   rj   r   )r=   r?   r>   r@   rB   rC   rD   rE   r<   )&r7   r6   r   r   r   r   rW   	filter_byrY   name_transformrx   r=   r`   ra   rb   indexr   r   r{   get_choicesshow_env_varrD   rR   show_defaultr   r   r   r   rE   rS   callabler;   r@   r   
annotationr   r]   r   )r   r|   r   r6   rK   
help_panelr   entries_positional
entries_kwr   optionsseen_transformedunique_optionsoptiontransformedr   short_optionslong_optionshelp_descriptionrC   rD   rE   rn   r   s                          @r1   create_parameter_help_panelr   F  s   
  :z-ejY]^^^^TVV F $$V$$J) ) ) ) ) &(
'11t1<< C% C%!0000x~&& 55 	. 	.F",;;FCCK"222 $$[111%%f---  >%qz((--3355H71:%%#.g.&("| 	, 	,F   ,$$V,,,,##F++++%1(2D2IRXYYY &&(( * 	8x/A/I 	8H.677G   	M$X]D99 ;",;;H<O<W<\]]h19::-.. M"//0C0KLL %%(''&"8#6#ABB	
 	
 	
 , 	%%%e,,,,e$$$$0111j)))r3   apps_with_namesc                    g }| D ]}|j         }|j        }|j        sg g }}|D ];}t          |          r|                    |          n|                    |           <t          t          |          t          |          t          j        t          |j
        |          j        |          t          |j        |                    }	|	|vr|                    |	           |S )a,  Format command entries for help display.

    Parameters
    ----------
    apps_with_names : Iterable[RegisteredCommand]
        Iterable of RegisteredCommand tuples.
    format : str
        Help text format.

    Returns
    -------
    list[HelpEntry]
        List of formatted help entries.
    r   )r=   r>   r?   rA   )r=   r   r   r{   rb   r;   rR   r   r   r2   r   r,   r   rA   )
r   r   r]   registered_commandr=   r   short_names
long_namesr   rn   s
             r1   format_command_entriesr     s    G- " ""( $x 	"$bZ 	U 	UD(1$TKt$$$Z=N=Nt=T=T
##%%".sx/P/P/bkqrrr&s|S99	
 
 
 NN5!!!Nr3   )8r%   r   collections.abcr   r   enumr   	functoolsr   pathlibr   typingr   r	   r
   attrsr   r   r   r   r   r   cyclopts.corer   cyclopts.groupr   cyclopts.help.inline_textr   cyclopts.help.silentr   r   cyclopts.utilsr   r   r   r   rich.consoler   cyclopts.argumentr   r   rS   r2   r8   r;   rW   r{   rR   rx   r   r   r   r   r   r   r   r<   r3   r1   <module>r      s    



 . . . . . . . .                            4 3 3 3 3 3 3 3 3 3 3 3 2 2 2 2 2 2 / / / / / /             0 0 0 0 0 0 3 3 3 3 3 3 3 3 W W W W W W W W W W W W "++++++444444!!!!!! 2 c    0   "& "& "& "& "& "& "& "&J 6& 6& 6& 6& 6& 6& 6& 6&r8 8 87K PUVZ\`V`Pa    @ :N  SXY]_cYcSd        F>6	>6C=>6 >6 >6 >6B# 3    `E `3 `:
+B ` ` ` `&bb-b b 	b b b bJ!H !c !d9o ! ! ! ! ! !r3   