
    =)id                        U d dl Z d dl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mZmZ d dl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 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' d dl(m)Z) d dl*m+Z+ d dl,m-Z- d dl.m/Z/ dZ0dZ1dZ2dZ3dZ4dZ5dZ6dZ7dZ8dZ9dZ:dZ;dZ<dZ=d Z>dZ?d!Z@dZAd"ZBed#   eCd$<   d%ZDd ZEd%ZFd&ZGdZHdZIdZJdZKd"ZLed#   eCd'<   d%ZMd ZNd%ZOd&ZPdZQdZRdZSdZTdZUd"ZVed#   eCd(<   dZWdZX e	d)      ZYeYr eZeY      ndZ[d*Z\eed+      eCd,<    e	d-      Z] e	d.      s e	d/      s e	d0      rd1ndZ^e]rd%Z^ ed2      Z_ ed3      Z` ed4      Zad5Zb ed6      Zcd7Zd ed8      Ze ed9      Zf ed:      Zg ed;      Zh ed<      Zi ed=      Zjd>Zkd?Zld@ZmdAZnedB   Zo G dC dDe      Zp G dE dFe      Zq G dG dHe      Zr ep       Zs eq       Zt er       ZudIevdJewfdKZxdldLewdJefdMZyddNdIevdOevdPeodJeee)f   fdQZz e       dReej                  ej                  f   dPeodJeeee)f      fdS       Z}dTeej                  ej                  ej                   f   dUej                  dPeodJefdVZdWevdPeodJee)ef   fdXZdYevdZeeej                     eej                     f   dUej                  dPeod[edJdfd\ZdYevd]eej                     dPeod[ed^eZdJdfd_ZdReej                  ej                  f   dUej                  dPeodJdfd`Zdaej                  dJdfdbZdmdcZddevdJevfdeZddevdJevfdfZdIevdJevfdgZdhedie/djeev   dJe-fdkZy)n    N)defaultdict)Iterable)gettext)getenv)AnyLiteralOptionalUnion)box)Align)Columns)ConsoleRenderableTypegroup)Emoji)RegexHighlighter)Markdown)escape)Padding)Panel)Table)Text)Theme)	Traceback)DeveloperExceptionConfigz	bold cyanz
bold greenzbold magentazbold redzbold yellowdimyellowboldred z
dim yellowzdim redleft)r!   centerrightALIGN_OPTIONS_PANELF)r      ALIGN_COMMANDS_PANELALIGN_ERRORS_PANELTERMINAL_WIDTHauto)r)   standard256	truecolorwindowsCOLOR_SYSTEM_TYPER_FORCE_DISABLE_TERMINALGITHUB_ACTIONSFORCE_COLOR	PY_COLORSTz(deprecated) z[default: {}]z[env var: {}]*z
[required]z [{}]	ArgumentsOptionsCommandsErrorzAborted.z5Try [blue]'{command_path} {help_option}'[/] for help.markdownrichrich_help_panelz[)r8   r9   c                       e Zd ZdZg dZy)OptionHighlighterzHighlights our special options.)z&(^|\W)(?P<switch>\-\w+)(?![a-zA-Z0-9])z,(^|\W)(?P<option>\-\-[\w\-]+)(?![a-zA-Z0-9])z(?P<metavar>\<[^\>]+\>)z(?P<usage>Usage: )N)__name__
__module____qualname____doc__
highlights     -/mnt/e/genesis-system/lib/typer/rich_utils.pyr<   r<   j   s    )JrC   r<   c                       e Zd ZddgZy)NegativeOptionHighlighterz/(^|\W)(?P<negative_switch>\-\w+)(?![a-zA-Z0-9])z5(^|\W)(?P<negative_option>\-\-[\w\-]+)(?![a-zA-Z0-9])Nr=   r>   r?   rA   rB   rC   rD   rF   rF   u   s    :@JrC   rF   c                       e Zd Zg dZy)MetavarHighlighter)z^(?P<metavar_sep>(\[|<))z(?P<metavar_sep>\|)z!(?P<metavar_sep>(\]|>))(\.\.\.)?$NrG   rB   rC   rD   rI   rI   }   s	    JrC   rI   textreturnc                     t         | v S N)ANSI_PREFIXrJ   s    rD   _has_ansi_characterrP      s    $rC   stderrc                     t        t        t        t        t        t
        t        t        t        d      t        t        t        t        |       S )N)optionswitchnegative_optionnegative_switchmetavarmetavar_sepusage)themehighlightercolor_systemforce_terminalwidthrQ   )r   r   STYLE_OPTIONSTYLE_SWITCHSTYLE_NEGATIVE_OPTIONSTYLE_NEGATIVE_SWITCHSTYLE_METAVARSTYLE_METAVAR_SEPARATORSTYLE_USAGEr[   r.   FORCE_TERMINAL	MAX_WIDTHrQ   s    rD   _get_rich_consoleri      sB    &&#8#8(6$

  !%! rC   stylerk   markup_modec                 .   t        j                  |       } |t        k(  r"t        j                  |       } t        | |      S |t        k(  sJ t        |       r t        t        j                  | |            S t        t        j                  | |            S )zTake a string, remove indentations, and return styled text.

    If `markup_mode` is `"rich"`, the text is parsed for Rich markup strings.
    If `markup_mode` is `"markdown"`, parse as Markdown.
    rj   )inspectcleandocMARKUP_MODE_MARKDOWNr   replacer   MARKUP_MODE_RICHrP   r[   r   	from_ansifrom_markuprJ   rk   rl   s      rD   _make_rich_textrv      s}     D!D**}}T"E**....t$t~~d%@AAt//EBCCrC   objc              #     K   | j                   rt        t        t               t	        j
                  | j                  xs d      }|j                  d      d   }|j                  d      ^}}|t        k7  r#|j                  d      s|j                  dd      }t        |j                         t        |	       |r3t        d       dj                  |      }t        |t         |	       y
y
w)a  Build primary help text for a click command or group.

    Returns the prose help text for a command or group, rendered either as a
    Rich Text object or as Markdown.
    If the command is marked as deprecated, the deprecated string will be prepended.
    rj   r    r   


 ru   N)
deprecatedr   DEPRECATED_STRINGSTYLE_DEPRECATEDrn   ro   help	partitionsplitrp   
startswithrq   rv   stripSTYLE_HELPTEXT_FIRST_LINEjoinSTYLE_HELPTEXT)rw   rl   	help_text
first_lineremaining_paragraphsremaining_liness         rD   _get_help_textr      s      ~~$,<==   R0I ##D)!,I )2(?%J% **:3H3H3N''c2

'  2h ++&:;  #
 	
 s   C2C4paramctxc                    ddl m}m} g }t        | dd      }d}|Ot        | dd      rBt        |dd      5| j                  )|j
                   d| j                  j                          }|*t        |t              r|nd	j                  d
 |D              }t        | dd      }|r|j                  d      }	|t        k7  r^|	D 
cg c]S  }
|
j                  d      s |
j                  dd      j                         ndj                  |
j                  d            U }	}
|j!                  t#        dj                  |	      j                         t$        |             |r@t        | dd      r3|j!                  t'        t(        j                  |      t*                     t        | ||f      r| j-                  |      }t        | j.                  t              }|s|a| j.                  s|j.                  rI| j1                  |||      }|r3|j!                  t'        t2        j                  |      t4                     | j6                  r$|j!                  t'        t8        t:                     t=        |      S c c}
w )a  Build primary help text for a click option or argument.

    Returns the prose help text for an option or argument, rendered either
    as a Rich Text object or as Markdown.
    Additional elements are appended to show the default and required status if
    applicable.
    r%   )TyperArgumentTyperOptionenvvarNr    allow_from_autoenvauto_envvar_prefix_z, c              3   2   K   | ]  }t        |        y wrM   )str).0ds     rD   	<genexpr>z&_get_parameter_help.<locals>.<genexpr>  s     <TSV<Ts   r   rz   r{   r|   r}   z{}

ru   show_envvarrj   r   )r   show_default_is_strdefault_value)corer   r   getattrnamer   upper
isinstancer   r   r   rp   r   rq   r   formatappendrv   STYLE_OPTION_HELPr   ENVVAR_STRINGSTYLE_OPTION_ENVVAR_extract_default_help_strshow_default_get_default_stringDEFAULT_STRINGSTYLE_OPTION_DEFAULTrequiredREQUIRED_LONG_STRINGSTYLE_REQUIRED_LONGr   )r   r   rl   r   r   itemsr   var_str
help_value
paragraphsxr   r   default_strs                 rD   _get_parameter_helpr      sJ    1)+E UHd+FG~E/6148D

&../q1A1A1C0DEF -F499<TV<T3T 	
 $+5&$#?J%%f-
..
 $	  ||D) 		$$**,]]1776?34J  	YYz*002''	
 '%5T-..w7?RST %+}5677C7@(););SA%5+=+=AQAQ33$7+ 4 K
 &--k:2 ~~T.6IJK 5>[s   AI8r   c                 T   t        j                  |       j                  d      }|t        k7  r-|d   j	                  d      s|d   j                  dd      |d<   n,|d   j	                  d      r|d   j                  dd      |d<   t        |d   j                         t        |      S )	av  Build cli help text for a click group command.

    That is, when calling help on groups with multiple subcommands
    (not the main help text when calling the subcommand help).

    Returns the first paragraph of help text for a command, rendered either as a
    Rich Text object or as Markdown.
    Ignores single newlines as paragraph markers, looks for double only.
    rz   r   r{   r|   r}   r   r    ru   )	rn   ro   r   rr   r   rq   rv   r   r   )r   rl   r   s      rD   _make_command_helpr   A  s     !!),226:J&&z!}/G/G/M"1--dC8
1	A	!	!$	'"1--fb9
1]  " rC   r   paramsconsolec                 j   g }g }|D ]  }g }g }	g }
g }|j                   D ])  }d|v r|j                  |       |	j                  |       + |j                  D ])  }d|v r|
j                  |       |j                  |       + t        t        d      }t        j                  |j                        }d|j                  v r|j                  |      }n|j                         }t        |t        j                        rM|j                  rA||j                  j                         k(  r$|j                  j                  j                         }|dk7  r|j                  |       t        |j                  t        j                  j                         rt        |t        j"                        r{|j$                  r/|j                  j&                  dk(  r|j                  j(                  @|j                  j+                         }|r$|j                  t,        j/                  |             d}|j0                  rt        t2        t4        	      }|j                  |       |j                  t7        d
j9                  |            t7        d
j9                  |	            t;        d
j9                  |
            t;        d
j9                  |            t=        |      t?        |||      g        g }tA        |      r)tC        ||      D ]  \  }}|j                  |g|        n|}|rtD        tF        tH        tJ        tL        tN        tP        d}tS        tT        |jW                  d      d       }tY        dddd|d|}|D ]  } |jZ                  |   |j]                  t_        |t`        | tb                     y y )Nz--fold)rk   overflowr   r   BOOLEANr   r    rj   ,)r   r   rl   
show_linesleadingr   border_style
row_stylespad_edgepaddingr   TF	highlightshow_headerexpandr   r   titletitle_alignrB   )2optsr   secondary_optsr   rc   rn   	signaturemake_metavar
parametersr   clickArgumentr   r   typetypes_NumberRangeBaseOptioncountminmax_describe_rangeRANGE_STRINGr   r   REQUIRED_SHORT_STRINGSTYLE_REQUIRED_SHORTr[   r   negative_highlightermetavar_highlighterr   anyzipSTYLE_OPTIONS_TABLE_SHOW_LINESSTYLE_OPTIONS_TABLE_LEADINGSTYLE_OPTIONS_TABLE_BOX STYLE_OPTIONS_TABLE_BORDER_STYLESTYLE_OPTIONS_TABLE_ROW_STYLESSTYLE_OPTIONS_TABLE_PAD_EDGESTYLE_OPTIONS_TABLE_PADDINGr   r   popr   add_rowprintr   STYLE_OPTIONS_PANEL_BORDERr$   )r   r   r   rl   r   options_rowsrequired_rowsr   opt_long_strsopt_short_strssecondary_opt_long_strssecondary_opt_short_strsopt_strrW   r   metavar_str	range_strr   rows_with_requiredrowt_styles	box_styleoptions_tables                          rD   _print_options_panelr   \  sR    02L,.M F
"$#% zz 	/Gw$$W-%%g.		/
 ++ 	9Gw'..w7(//8		9 ]V<%%e&8&89	I(((,,,5K  ,,.K uenn-

uzz//11**////1K )#NN;' uzz5;;#?#?@5%,,/[[UZZ^^q%8UZZ^^=S

224I|229=> &(>>19MNHX&CHH]34CHH^45$SXX.E%FG$SXX.F%GH#G,# +	
sF
N 68
= = 	8MHc%%x&6#&67	8 *82*<842$
 Ce!4d;	 
	

 
 & 	(C!M!!3'	(7/		
+ rC   commandscmd_lenc                 x   t         t        t        t        t        t
        t        d}t        t        |j                  d      d       }t        dddd|d|}|j                  t        d|       |j                  dddd	
       g }g }	|D ]  }
|
j                  xs |
j                  xs d}|
j                  xs d}|
j                   r7t#        | t$              }|	j'                  t#        t(        t*                     nt#        |      }|	j'                  d        |j'                  |t-        ||      g        |}t/        |	      r+g }t1        ||	      D ]  \  }}|j'                  g ||        |D ]  } |j2                  |   |j4                  r'|j7                  t9        |t:        | t<                     y y )Nr   r   FTr   )rk   no_wrapr^   Descriptionr!   
   )justifyr  ratior    rj   )r   rl   r   rB   )STYLE_COMMANDS_TABLE_SHOW_LINESSTYLE_COMMANDS_TABLE_LEADINGSTYLE_COMMANDS_TABLE_BOX!STYLE_COMMANDS_TABLE_BORDER_STYLESTYLE_COMMANDS_TABLE_ROW_STYLESSTYLE_COMMANDS_TABLE_PAD_EDGESTYLE_COMMANDS_TABLE_PADDINGr   r   r   r   
add_column!STYLE_COMMANDS_TABLE_FIRST_COLUMN
short_helpr   r   r~   r   STYLE_DEPRECATED_COMMANDr   r   r   r   r   r   r   	row_countr   r   STYLE_COMMANDS_PANEL_BORDERr&   )r   r  rl   r   r  r   r   commands_tablerowsdeprecated_rowscommandhelptextcommand_namecommand_name_textrows_with_deprecatedr   deprecated_texts                    rD   _print_commands_panelr    s    6/'951/ H X\\%0$7I 	
 N /   mVURTU46D9;O 
%%;;||)r $~>V W""4(9AQ#RS $\ 2""4(!"& +	

$  
?!$'o$> 	A C ''(?#(?(?@	A# %$%80		
  rC   c                    t               }|j                  t        t        | j	                  |            d      t
               | j                  r1|j                  t        t        t        | |      d      d             t        t              }t        t              }| j                  |      D ]  }t        |dd      rt        |t        j                        r.t        |t         d      xs t"        }||   j%                  |       Yt        |t        j&                        stt        |t         d      xs t(        }||   j%                  |        |j+                  t"        g       }t-        t"        ||||	       |j/                         D ]  \  }}	|t"        k(  rt-        ||	|||	       ! |j+                  t(        g       }
t-        t(        |
|||	       |j/                         D ]  \  }}|t(        k(  rt-        |||||	       ! t        | t        j0                        rt        t              }| j3                  |      D ]Q  }| j5                  ||      }|s|j6                  r%t        |t         d      xs t8        }||   j%                  |       S t;        |j=                         D cg c]"  }|D ]  }t?        |j@                  xs d
       $ c}}d      }|j+                  t8        g       }tC        t8        ||||       |j/                         D ]  \  }}|t8        k(  rtC        |||||       ! | jD                  r| jD                  jG                  d      }djI                  |D cg c]"  }|jK                  dd      jM                         $ c}      }tO        ||      }|j                  t        t        |d      d             yyc c}}w c c}w )a^  Print nicely formatted help text using rich.

    Based on original code from rich-cli, by @willmcgugan.
    https://github.com/Textualize/rich-cli/blob/8a2767c7a340715fc6fbf4930ace717b9b2fc5e5/src/rich_cli/__main__.py#L162-L236

    Replacement for the click function format_help().
    Takes a command or group and builds the help text output.
    r%   rj   )rw   rl   F)pad)r   r%   r%   r%   hiddenN)r   r   r   rl   r   r    r   )default)r   r  rl   r   r  rz   r|   r}   )rJ   rl   )(ri   r   r   r[   	get_usageSTYLE_USAGE_COMMANDr   r   r   r   list
get_paramsr   r   r   r   _RICH_HELP_PANEL_NAMEARGUMENTS_PANEL_TITLEr   r   OPTIONS_PANEL_TITLEgetr   r   Grouplist_commandsget_commandr"  COMMANDS_PANEL_TITLEr   valueslenr   r  epilogr   r   rq   r   rv   )rw   r   rl   r   panel_to_argumentspanel_to_optionsr   
panel_namedefault_arguments	argumentsdefault_optionsoptionspanel_to_commandsr  r  r  max_cmd_lendefault_commandslinesr   epilogueepilogue_texts                         rD   rich_format_helpr@    s     !G MMCMM#./3;N  
 xx"$/  		
 BMTAR=H=N$ 75(E*eU^^,4d;T?T  z*11%8u||,4d;R?R  Z(//67 +../DbI"  "4!9!9!; 


I..#	
	

 '**+>CO   0557 


G,,#	
	

 #u{{#CNtCT--c2 	>Looc<8Gw~~G%:DA ,+  "*-44W=	>  !2 8 8 :'  GLL&B''
 
 -001ErJ%%#	
 %6$;$;$= 
	 J11!!'#	
	 zz

  (99EJqaiic288:JK'X;OgeMu=qAB =B Ks   2'O
5'Oselfc                    | j                   j                  dk(  ryt        d      }t        | dd      }||j	                  |j                                |^|j                  j                  |      C|j	                  t        j                  |j                  |j                  d         t               |j	                  t        t        | j                               t         t"        t$        	             y)
zPrint richly formatted click errors.

    Called by custom exception handler to print richly formatted click errors.
    Mimics original click.ClickException.echo() function but with rich formatting.
    NoArgsIsHelpErrorNTrh   r   r   )command_pathhelp_optionrj   r   )	__class__r=   ri   r   r   r$  r  get_help_option	RICH_HELPr   rD  help_option_namesSTYLE_ERRORS_SUGGESTIONr   r[   format_messageSTYLE_ERRORS_PANEL_BORDERERRORS_PANEL_TITLEr'   )rA  r   r   s      rD   rich_format_errorrN    s     ~~"55t,G&-dE4&@C
cmmo&
3;;66s;G --3;P;PQR;S   *	 	 	
 MM++-.2$*		
rC   c                  R    t        d      } | j                  t        t               y)z#Print richly formatted abort error.Trh   rj   N)ri   r   ABORTED_TEXTSTYLE_ABORTED)r   s    rD   rich_abort_errorrR    s    t,GMM,mM4rC   
input_textc                 4    t        |       j                         S )z9Ensure that the input string can be used for HTML export.)r   r   )rS  s    rD   escape_before_html_exportrU    s    *##%%rC   c                     t        ddt        j                               }|j                  | dd       |j	                  dd      j                         S )zPrint the HTML version of a rich-formatted input string.

    This function does not provide a full HTML page, but can be used to insert
    HTML-formatted text spans into a markdown file.
    TF)recordr   fileignore)r   cropz{code})inline_stylescode_format)r   ioStringIOr   export_htmlr   )rS  r   s     rD   rich_to_htmlr`    sI     TUGGMM*xeM<TxHNNPPrC   c                     t               }dj                  d |j                  |       D              j                  d      S )z6Remove rich tags and render a pure text representationr    c              3   4   K   | ]  }|j                     y wrM   rO   )r   segments     rD   r   z#rich_render_text.<locals>.<genexpr>  s     DG7<<Ds   r|   )ri   r   renderrstrip)rJ   r   s     rD   rich_render_textrf    s3    !G77Dw~~d/CDDKKDQQrC   excexception_configinternal_dir_namesc                 ~    t        j                  t        |       | | j                  |j                  |t
              }|S )N)show_localssuppressr^   )r   from_exceptionr   __traceback__pretty_exceptions_show_localsrg   )rg  rh  ri  rich_tbs       rD   get_tracebackrq    s=    
 &&S	$BB#G NrC   )F)rK   N)rn   r]  collectionsr   collections.abcr   r   r   osr   typingr   r   r	   r
   r   r9   r   
rich.alignr   rich.columnsr   rich.consoler   r   r   
rich.emojir   rich.highlighterr   rich.markdownr   rich.markupr   rich.paddingr   
rich.panelr   
rich.tabler   	rich.textr   
rich.themer   rich.tracebackr   typer.modelsr   r_   r`   ra   rb   rc   rd   re   r%  r   r  r   r   r   r   r   r   r   r   r$   __annotations__r   r   r   r   r   r   r   r  r&   r	  r
  r  r  r  r  r  r  rL  r'   rJ  rQ  _TERMINAL_WIDTHintrg   r.   r/   rf   r   r   r   r   r   r   r)  r*  r/  rM  rP  rH  rp   rr   r(  rN   MarkupModeStrictr<   rF   rI   r[   r   r   r   boolrP   ri   rv   Commandr,  r   r   r   	ParameterContextr   r   r&  r   r  r@  ClickExceptionrN  rR  rU  r`  rf  BaseExceptionrq  rB   rC   rD   <module>r     s^    	 # $    0 0      7 7  - "        $ 1 & "         "   " :@ W67 @!&  $ $  !% #'  # ;A g78 A"'    % %  "& $( !$/ !! 9? G56 ? )*$3C 	
 hwPQR  !''F G  6-#8F;<O 		 
 !N o& ?#/"  + 	l } wZ }EF	!  ) -. (  0 )   !02 (* c d d w ,  "DDD0@D
8T>D* ,
	u}}ekk)	*,
 ",
 eHdN#$	,
 	,
^Vu~~u>?V 
V "	V
 Vr " 4>	6s

s
 $u||$d5>>&::;s
 
	s

 "s
 s
 
s
lI

I
 5==!I
 "	I

 I
 I
 
I
XKC	u}}ekk)	*KC 
KC "	KC
 
KC\E00 T B5&# &# &

QS 
QS 
QR3 R3 R	. S	 	rC   