
    k7i8                     ,   S SK r S SKrS SKJrJr  S SKJr  S SKJr  S SK	J
r
  S SKJrJrJr  S SKJrJrJrJr  S SKJr  S S	KJr  S S
KJr  S SKJr  S SKJrJr  S SKJ r J!r!J"r"J#r#  \(       a  S SK$J%r%  S SK&J'r'  S SKJ(r(  \" SS9S\)S\)4S j5       r*S r+\!" SS9 " S S5      5       r,\ " S S5      5       r-S r.SSS \/\0\04   4S! jr1SSS \/\0\04   4S" jr2S#S$S%\\)   4S& jr3S'\\)   S \)4S( jr4S#S$S\)S \\-  4S) jr5S*S+SSS\)S \-4S, jr6S-\S\)S \0\,   4S. jr7g)/    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                 ,   SSK n[        R                  " U 5      nUR                  SS5      nUS   R	                  SS5      n[        U5      S:X  a  UnOUS-   US   -   nUR                  U5      nUR                  (       a  UR                  (       d   eU$ )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          L/home/james-whalen/.local/lib/python3.13/site-packages/cyclopts/help/help.pydocstring_parser2      s     ""3'K,7,=,=fa,H)
 2!4<<T3GE
01Q6fn'LQ'OO

 
 
-C ##s'<'<<<J    c                      SSK Jn   U " 5       $ )Nr   Text)	rich.textr6   r5   s    r1   _text_factoryr8   6   s    6Mr3   T)kw_onlyc                       \ rS rSr% SrSr\\S4   \S'    Sr	\\S4   \S'    Sr
\\S'    S	r\\S
'    Sr\\S'    Sr\S-  \S'    Sr\\S4   S-  \S'    Sr\\S4   S-  \S'    Sr\S-  \S'    S rSrg)	HelpEntry<   z$Container for help table entry data. .namesshortsNdescriptionFrequiredsort_keytypechoicesenv_vardefaultc                     [        U 40 UD6$ Nr   selfkwargss     r1   copyHelpEntry.copy^       d%f%%r3   )__name__
__module____qualname____firstlineno____doc__r>   tuplestr__annotations__r?   r@   r	   rA   boolrB   rC   rD   rE   rF   rM   __static_attributes__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                       \ rS rSr% Sr\S   \S'    S\S'    \" S\R                  " \
S9S	9r\\S
'    \" \S9r\\   \S'    S rS rS rSrg)	HelpPanelb   z*Data container for help panel information.)command	parameterr   r   titleN)factory)rF   	converterr@   entriesc                     [        U 40 UD6$ rH   rI   rJ   s     r1   rM   HelpPanel.copyx   rO   r3   c                     [        5       / p!U R                   HD  nUR                  UR                  4nXA;  d  M"  UR	                  U5        UR                  U5        MF     X l        g rH   )setrb   r>   r?   addappend)rK   seenoutitemhashables        r1   _remove_duplicatesHelpPanel._remove_duplicates{   sP    E2cLLD

DKK0H#"

4 	 !
 r3   c                    U R                   (       d  gU R                  S:X  a  [        R                  " U R                    Vs/ s Hk  n[        UR                  UR
                  (       a  UR
                  S   R                  S5      OSUR
                  (       a  UR
                  S   OS4U5      PMm     sn5      nU Vs/ s H  o3R                  PM     snU l         g[        es  snf s  snf )zSort entries in-place.Nr]   r   -F )	rb   r   r   sortrB   r>   
startswithvalueNotImplementedError)rK   entrysorted_sort_helperxs       r1   _sortHelpPanel._sort   s    ||;;)#!+ "&
 ". >CkkEKKN55c:u.3kkEKKNr  ".
" .@@-?GG-?@DL%%
 As   A2C">C')rb   )rP   rQ   rR   rS   rT   r
   rW   r   r   default_if_noner8   r@   r	   listrb   r;   rM   rm   ry   rY   r=   r3   r1   r[   r[   b   sk    4*++@,,]CK 
  %T2GT)_2B&&r3   r[   c                 ^    U R                  S5      (       + =(       a    U R                  S5      $ )Nz--rp   )rs   )ss    r1   	_is_shortr      s"    ||D!!7all3&77r3   argument_collectionr   returnc                 n   / / p!U  H  nUR                   (       d  M  UR                  R                  UR                  R                  4;   a  UR	                  U5        MX  UR                  R
                  (       d  Mu  UR                  (       a  UR	                  U5        M  UR	                  U5        M     X4$ )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_KEYWORDrh   is_keyword_onlyrA   r   rA   optionalarguments       r1   _categorize_keyword_argumentsr      s     Rh'}}##(;(;(G(G'IIOOH%  000  )) ( r3   c                    / / p!U  H  nUR                   (       d  M  UR                  R                  UR                  R                  :X  a7  UR                  (       a  UR                  U5        Mh  UR                  U5        M{  UR                  R                  (       d  M  UR                  (       a  UR                  U5        M  UR                  U5        M     X4$ )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_POSITIONALrA   rh   is_positionalr   s       r1    _categorize_positional_argumentsr      s     Rh'}}##x':':'I'II  ))  ...  )) ( r3   appr   command_chainc                 B  ^  SSK Jn  SSKJn  / nUR	                  S5        U(       d[  T R
                  (       aJ  T R                  (       d9  [        [        R                  S   5      R                  nUS:X  a
  [        5       nUnOT R                  S   nUR	                  U5        UR                  U5        U H  nT U   m M
     [        U 4S jT R                   5       5      (       a  UR	                  S5        T R
                  (       Ga  T R                  SS	9n[!        U5      u  p[#        U5      u  pU	 HE  nUR                  nU" UR$                  5      R'                  5       nUR	                  U S
U 35        MG     U
(       a  UR	                  S5        U H  nUR(                  R*                  UR(                  R,                  :X  a?  UR                  R/                  S5      R'                  5       nUR	                  U S35        Mp  UR                  R/                  S5      R'                  5       nUR	                  U5        M     U(       a<  [        S U 5       5      nU(       a  UR	                  S5        OUR	                  S5        U" S
R1                  U5      S-   SS9$ )Nr   r5   )get_hint_namezUsage:z__main__.pyc              3   B   >#    U  H  nTU   R                   v   M     g 7frH   r   ).0rx   r   s     r1   	<genexpr>format_usage.<locals>.<genexpr>   s     
9 813q6;; 8s   COMMANDF)parse_docstringr#   z	[OPTIONS]rp   z...c              3   z   #    U  H1  oR                   R                  UR                   R                  :H  v   M3     g 7frH   )r   r   r   )r   args     r1   r   r     s+      %Ph##s~~'D'DDPhs   9;z	[ARGS...]z[ARGS]r"   bold)style)r7   r6   cyclopts.annotationsr   rh   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_namer]   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E	LL S00CHHQK %%= (*D88A;	LL	LL 'l ! 
9 8 8
999Y
!>>u>U;XYl;m8=]^q=r: /H!J%hmm4::<ILLJ<q45 0
 #LL%0H""''8+>+>+M+MM#==//4::<z-.#==//4::<X& 1 $!$ %Ph% " "[)X&$&f55r3   stringsc                     U (       d  gU S   /nU SS  HC  nUS   R                  S5      (       a  UR                  U5        M/  UR                  SU-   5        ME     SR                  U5      $ )zJJoins strings with a space, unless the previous string ended in a newline.rq   r   r!   Nr"   r#   )endswithrh   r   )r   resultr~   s      r1   _smart_joinr   $  sd    aj\FQR[":t$$MM!MM#'"	  776?r3   c                    U R                   nU(       d  [        $ [        X!5      n/ nUR                  (       a  UR	                  UR                  S-   5        UR
                  (       a@  UR                  (       a  UR	                  S5        UR	                  UR
                  S-   5        [        R                  " [        U5      USS9$ )Nr"   Tr   force_empty_end)	helpr   r2   r,   rh   r+   r   from_formatr   )r   r   raw_doc_stringparsed
componentss        r1   
format_docr   3  s    XXN^4FJ&22T9:##d#&11D89!!+j"9&Z^__r3   groupr   c                 B  ^ SSK Jn  SU R                  U R                  (       a   [        R
                  " U R                  USS9OU" 5       S.n[        S0 UD6nU4S jn/ / pUR                  SS9 GH  n	U	R                  R                  (       d   e/ m[        U	R                  5      n
[        5       n/ nU
 HG  nU	R                  R                  U5      nX;  d  M%  UR                  U5        UR                  U5        MI     Un
U	R                  b/  U
S   R!                  S	5      R#                  5       nXS   :w  a  U/U
Qn
/ / nnU
 H7  n[%        U5      (       a  UR                  U5        M&  UR                  U5        M9     [        R
                  " U	R                  R                  US
9nU	R'                  5       nS nU	R                  R(                  (       a:  U	R                  R*                  (       a  [-        U	R                  R*                  5      nS nU	R.                  (       a  [1        U	R2                  [4        5      (       a:  U	R                  R                  U	R6                  R8                  R                  5      nO[;        U	R6                  R8                  5      n[=        U	R.                  5      (       a%  U	R/                  U	R6                  R8                  5      n[?        [-        U5      U[-        U5      U	R@                  [C        U	R6                  RD                  5      UUUS9nU	R6                  RF                  (       a  UR                  U5        GM  UR                  U5        GM     URH                  RK                  U5        URH                  RK                  U5        U$ )Nr   r5   r^   Tr   )r   r_   r@   c                 t   > T(       a  SU -   n U(       a  TR                  X45        g TR                  U 5        g )Nr#   )rh   )textr   help_componentss     r1   help_append0create_parameter_help_panel.<locals>.help_appendW  s0    :D""D=1""4(r3   r   rp   r   )r>   r@   r?   rA   rC   rD   rE   rF   r=   )&r7   r6   r   r   r   r   r[   	filter_byr^   name_transformr|   r>   rf   rg   rh   indexr   r   r   get_choicesshow_env_varrE   rU   show_defaultr   r   r   r   rF   rV   callabler;   rA   r   
annotationr   rb   r   )r   r   r   r6   rL   
help_panelr   entries_positional
entries_kwr   optionsseen_transformedunique_optionsoptiontransformedr   short_optionslong_optionshelp_descriptionrD   rE   rF   rv   r   s                          @r1   create_parameter_help_panelr   F  s   
  :: "--ejjY]^VF $V$J) &(
'11t1<!!0000x~~& 5F",,;;FCK2 $$[1%%f-	 
 ! >>%qz((-335H1:%#.g.&("|F  $$V,##F+	  &11(2D2D2I2IRXY &&( **x/A/A/I/IH..667G   $X]]D99",,;;H<O<O<W<W<\<\]h1199:--.."//0C0C0K0KL %('&&"8#6#6#A#AB	
 ,,%%e,e$G =J 01j)r3   apps_with_namesc                    / nU  H  nUR                   nUR                  nUR                  (       d  M.  / / pvU H7  n[        U5      (       a  UR	                  U5        M&  UR	                  U5        M9     [        [        U5      [        U5      [        R                  " [        UR                  U5      R                  US9[        UR                  U5      S9n	X;  d  M  UR	                  U	5        M     U$ )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@   rB   )r>   r   r   r   rh   r;   rU   r   r   r2   r   r,   r   rB   )
r   r   rb   registered_commandr>   r   short_names
long_namesr   rv   s
             r1   format_command_entriesr     s     G-"(( $$xx"$bZD(1$Kt$Z=N=Nt=T  
#%"..sxx/P/b/bkqr&s||S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   rV   r2   r8   r;   r[   r   rU   r|   r   r   r   r   r   r   r   r=   r3   r1   <module>r      s    
 .     4 3 2 /   0 3 W W+4! 2 c  0 "& "& "&J 6& 6& 6&r87K PUVZ\`V`Pa @ :N  SXY]_cYcSd  F>6	>6C=>6B# 3 `E `3 `:
+B `&bb-b b 	bJ!H !c !d9o !r3   