o
    PDie                     @  s  d dl mZ d dlZd dlZd dlZd dlmZ d dlm	Z	m
Z
mZmZmZ dZerRd dlmZmZmZmZ d dlmZmZmZmZmZ d dlmZmZ d dlmZ G d	d
 d
ejZG dd deZ G dd de Z!G dd dej"eZ#G dd dej$eZ%G dd dejZ&dS )    )annotationsN)_HIGHLIGHTS_fix_legacy_win_text	rich_fill
rich_strip	rich_wrapF)ActionArgumentParser	Namespace_MutuallyExclusiveGroup)CallableIterableIteratorMutableMappingSequence)AnyClassVar)Selfc                	      s  e Zd ZU dZejZded< 	 ddddddd	d
dZded< 	 e	dd Z
ded< 	 dZded< 	 dZded< 	 dZded< 	 ded< ded< 			didddj fd*d+Zedkd-d.Zejdld/d.ZG d0d dejjZdmd4d5Zdnd8d9Zdod<d=Z	dpdqdEdFZdr fdIdJZdsdKdLZdtdNdOZdudQdRZdvdUdVZdwdXdYZdxdZd[Zdyd\d]Z dzd_d`Z!dxdadbZ"d{dddeZ#d|dgdhZ$  Z%S )}RichHelpFormatterz8An argparse HelpFormatter class that renders using rich.zClassVar[Callable[[str], str]]group_name_formattercyandark_orangedefault	dark_cyanboldgrey50italic)argparse.argsargparse.groupsargparse.helpargparse.metavarzargparse.syntaxargparse.textargparse.progargparse.defaultz ClassVar[dict[str, r.StyleType]]stylesNzClassVar[list[str]]
highlightsFzClassVar[bool]usage_markupThelp_markuptext_markup_Section_root_section_current_section      )consoleprogstrindent_incrementintmax_help_positionwidth
int | Noner.   r.Console | Nonekwargsr   returnNonec                  s4   t  j||||fi | || _tdtj| _d S )Na  
            %                               # Percent character
            (?:\((?P<mapping>[^)]*)\))?     # Mapping key
            (?P<flag>[#0\-+ ])?             # Conversion Flags
            (?P<width>\*|\d+)?              # Minimum field width
            (?P<precision>\.(?:\*?|\d*))?   # Precision
            [hlL]?                          # Length modifier (ignored)
            (?P<format>[diouxXeEfFgGcrsa%]) # Conversion type
            )super__init___consolerecompileVERBOSE_printf_style_pattern)selfr/   r1   r3   r4   r.   r7   	__class__ P/var/www/Datamplify/venv/lib/python3.10/site-packages/rich_argparse/_argparse.pyr;   P   s   
	
zRichHelpFormatter.__init__	r.Consolec                 C  s   | j d u r
t | _ | j S N)r<   rConsole)rA   rD   rD   rE   r.   k   s   

zRichHelpFormatter.consolec                 C  s
   || _ d S rG   )r<   )rA   r.   rD   rD   rE   r.   q   s   
c                      s@   e Zd Z	dd fd
dZdddZdddZdddZ  ZS )zRichHelpFormatter._SectionN	formatterr   parentSelf | Noneheading
str | Noner8   r9   c                   sb   |t jur|d urt|| d}t ||| |  g | _g | _|d ur/|j|  d S d S )N:)	argparseSUPPRESStyper   r:   r;   
rich_itemsrich_actionsappend)rA   rJ   rK   rM   rB   rD   rE   r;   v   s   z#RichHelpFormatter._Section.__init__r.   rF   optionsr.ConsoleOptionsr.RenderResultc                 c  s    | j sd S |jddd}tj }| j D ].}t|tjr'|||E d H  qt|tj	r:|||E d H  |V  q|||E d H  qd S )NTignoreno_wrapoverflow)
rS   updaterH   Segmentline
isinstancer   r)   renderPadding)rA   r.   rV   generated_optionsnew_lineitemrD   rD   rE   _render_items   s   

z(RichHelpFormatter._Section._render_itemsc           
      c  s   | j sd S |jddd}t| jjd | jj}t| jj| d}t	d| }| j D ]Z\}}|s;|
||E d H  q+| j||}t||d krU|
||E d H  |}|| |d   |
||d  |E d H  |dd  D ]}	|	  |
||	 |E d H  qsq+d	V  d S )
NTrY   rZ   r,       r       )rT   r]   minrJ   _action_max_length_max_help_positionmax_widthrH   Textra   _rich_split_lineslen
set_lengthrstrip)
rA   r.   rV   help_pos
help_widthindentaction_headeraction_helpaction_help_linesr_   rD   rD   rE   _render_actions   s.   

z*RichHelpFormatter._Section._render_actionsc                 c  sd    | j s	| js	d S | jtjur| jd urtj| jdddV  | ||E d H  | ||E d H  d S )Nr   rY   )styler\   )	rS   rT   rM   rP   rQ   rH   rp   rf   r{   )rA   r.   rV   rD   rD   rE   __rich_console__   s   z+RichHelpFormatter._Section.__rich_console__rG   )rJ   r   rK   rL   rM   rN   r8   r9   r.   rF   rV   rW   r8   rX   )__name__
__module____qualname__r;   rf   r{   r}   __classcell__rD   rD   rB   rE   r)   u   s    

rV   rW   rX   c           
      c  s    | t| j[ || j|| j}tj	 }d}tj
|D ]9}tt|ddD ],\}}|j }	|	rY|r=|V  d}|d |  E d H  tj|	|j|jdV  |V   nq-d}q#W d    d S 1 shw   Y  d S )NFri   )start)r|   controlT)	use_themerH   Themer$   ra   r*   update_widthro   r^   r_   split_lines	enumeratereversedtextrt   r|   r   )
rA   r.   rV   rootrd   add_empty_lineline_segmentsisegmentstrippedrD   rD   rE   r}      s*   

	"z"RichHelpFormatter.__rich_console__r   r.RenderableType | Nonec                 C  sF   |t ju s	|d u rd S t|tr| jj| | d S | | d S rG   )	rP   rQ   r`   r0   r+   rS   rU   _rich_format_textadd_renderable)rA   r   rD   rD   rE   add_text   s
   
zRichHelpFormatter.add_text
renderabler.RenderableTypec                 C  s"   t j|| j}| jj| d S rG   )rH   rb   rw   _current_indentr+   rS   rU   )rA   r   paddedrD   rD   rE   r      s   z RichHelpFormatter.add_renderableusagerN   actionsIterable[Action]groups!Iterable[_MutuallyExclusiveGroup]prefixc                 C  s  |t ju rd S |d u r| jdddd dd}|drdnd}|d t|t|  }tt| 	|| }t
dt| dg}t| j||||d}|d u rt| j }|rs||t|}	|t
|	|	t| d	 t|t| d
 }
zt| j||
|d}W n ty   g }Y nw || t|}n3| jr|| |tj|j  tj|}||j |j  n|| ||  t|}|j| | jj| d S )Nrj   rD   )r   r   r   r   
z: r   r   )r   r"   ri   )r   )rP   rQ   _format_usagert   endswithrr   rH   strip_control_codesrR   r   Span_progindexrU   list_rich_usage_spans
ValueErrorextendrp   r&   _rich_prog_spansfrom_markupplainspansclearr*   rS   )rA   r   r   r   r   
prefix_endusage_spans
usage_textr/   
prog_startactions_startr   
rich_usagerD   rD   rE   	add_usage   sB   


zRichHelpFormatter.add_usageactionr   c                   s4   t  | |jtjur| jj| | d S d S rG   )	r:   add_argumenthelprP   rQ   r+   rT   r   _rich_format_action)rA   r   rB   rD   rE   r      s   zRichHelpFormatter.add_argumentc                 C  sJ   | j  }| j j| dd W d    n1 sw   Y  t| j | S )NFcrop)r.   captureprintr   get)rA   r   rD   rD   rE   format_help   s   zRichHelpFormatter.format_helpIterator[r.Span]c                 c  s    d|vrd S d| j i}d}d}| j|D ]0}| \}}|||| 7 }||| | }t|}	|	t| }
||7 }|}t|	|
dV  qd S )N%(prog)r/   rj   r   r"   )r   r@   finditerspanrr   rH   r   )rA   r   paramsformatted_usagelastmr   endsubr   prog_endrD   rD   rE   r     s    
z"RichHelpFormatter._rich_prog_spansr   c                 #  s   g }g }|D ]}|j tjur|jr||n|| q| d fdd}|D ]m}tjdkrT| }t|tj	rS|jD ]}	||	\}}
t
||
dV  |
d	  q=q)n|jd
 }||\}}
t
||
dV  |
d	  |jd
kr| |}| ||D ]\}}||\}}
|rt
||
dV  |
 q{|
d	  q)|D ](}| |}| ||D ]\}}||\}}
|rt
||
dV  |
 q|
d	  qd S )N_stringr0   r8   tuple[int, int]c                   s*   t | }| }|t| }||fS rG   )rH   r   r   rr   )r   r   _start_endposr   rD   rE   	find_span!  s   
z6RichHelpFormatter._rich_usage_spans.<locals>.find_span   	   r   ri   r   r    )r   r0   r8   r   )r   rP   rQ   option_stringsrU   sysversion_infoformat_usager`   BooleanOptionalActionrH   r   nargs!_get_default_metavar_for_optional_rich_metavar_parts#_get_default_metavar_for_positional)rA   r   r   r   rV   positionalsr   r   r   option_stringr   default_metavarmetavar_partcolorizerD   r   rE   r     sP   








z#RichHelpFormatter._rich_usage_spansr   Iterator[tuple[str, bool]]c                 c  s   |  ||}|jd u rd|d dfV  d S |jtjkr-dd|d dfdfE d H  d S |jtjkrptjdk s@t|ddkr^|d}dd|d  dfd	d|d  dfd
ddfE d H  d S dd|d dfd
ddfE d H  d S |jtjkr|d}d|d  dfd	d|d  dfd
ddfE d H  d S |jtj	krdV  d S |jtj
krd|d dfd
dfE d H  d S |jtjkrdV  d S ||j}d}|D ]}|rd}nd
V  d| dfV  qd S )Nz%sri   T)[F)]Fr   r,   r   )z [F)rh   F)z...T)z]]F)rj   FF)_metavar_formatterr   rP   OPTIONALZERO_OR_MOREr   r   rr   ONE_OR_MORE	REMAINDERPARSERrQ   )rA   r   r   get_metavarmetavarfirstmetrD   rD   rE   r   F  sh   



z%RichHelpFormatter._rich_metavar_partsr.Textc                 C  s   dd | j |jD }t|D ]5\}}|| dkr4|||d  }d|_|d | | ||d   }q|jd | d |j|d   |_qt|S )Nc                 S  s   g | ]}|  qS rD   )r   .0r   rD   rD   rE   
<listcomp>      z:RichHelpFormatter._rich_whitespace_sub.<locals>.<listcomp>ri   rh   )_whitespace_matcherr   r   r   r   )rA   r   r   r   r   spacerD   rD   rE   _rich_whitespace_sub  s   $z&RichHelpFormatter._rich_whitespace_subc                 C  s  t t|| jd}t|D ]}|| tju r||= qt|| dr(|| j||< q|dd ur>d	dd |d D |d< | 
|}|d usIJ ||  g }g }d}d}d}	| j|D ];}
|
 \}}|||	|  ||| | }|
d	d
kr|| ||}|d7 }nt|}|| |}	q]|||	d   | jrtjjd	|ddn	tjd	|dd}ttt|D ]m\}}||}z|j|}W nC ty   dd l}tt|j|j}| jj }tdd t!d| d|t!j"D d}d|d| d| d}|j#|t$dd Y qw |t%| }|d | j|dd||d  }q| j&D ]
}|j'|dd q3|S )N)r/   r   choices, c                 S  s   g | ]}t |qS rD   )r0   )r   crD   rD   rE   r     r   z7RichHelpFormatter._rich_expand_help.<locals>.<listcomp>z?rich-argparse-f3ae8b55df34d5d83a8189d2e4766e68-{}-argparse-richr   mappingr   ri   rj   r   r|   c                 s  s4    | ]}| d dkrt| ddd V  qdS )r   r   ri   N)groupreprr   rD   rD   rE   	<genexpr>  s    z6RichHelpFormatter._rich_expand_help.<locals>.<genexpr>z	\[([^\]]*z	[^\]]*)\]zdefault: %(default)sz;Failed to process default value in help string of argument zw.
Hint: try disabling rich markup: `RichHelpFormatter.help_markup = False`
      or replace brackets by parenthesis: `[z]` -> `(z)`   )
stacklevelr#   	argparse.style_prefix)(dictvarsr   r   rP   rQ   hasattrr   r   join_get_help_stringr@   r   r   rU   r   formatrH   escaper'   rp   r   r   r   r   rindexr   warningsnextiterr   destpatternr=   XwarnUserWarningrr   r%   highlight_regex)rA   r   r   namehelp_stringpartsdefaultsdefault_sub_template	default_nr   r   r   r   r   	rich_helpr   r   default_subr  	action_id
printf_patreplmsg	highlightrD   rD   rE   _rich_expand_help  s|   






	"
z#RichHelpFormatter._rich_expand_helpc                 C  s   d|v r|dt | ji }| jrt jj|ddnt j|dd}| jD ]	}|j|dd q#t| j	| j
d  d}t d	| j
 }| |||S )
Nr   r/   r!   r   r  r  r,   rg   rh   )rH   r  r   r(   rp   r   r%   r  rn   ro   r   _rich_fill_text)rA   r   	rich_textr$  
text_widthrw   rD   rD   rE   r     s   
z#RichHelpFormatter._rich_format_text&Iterator[tuple[r.Text, r.Text | None]]c                 c  sd    |  |}|| j |jr|j r| |nd }||fV  | |D ]
}| |E d H  q%d S rG   )_rich_format_action_invocationpad_leftr   r   stripr%  _iter_indented_subactionsr   )rA   r   headerr   	subactionrD   rD   rE   r     s   

z%RichHelpFormatter._rich_format_actionc                 C  s   |j st j| |ddS tddd |j D }|jdkrD| |}|d | ||D ]\}}|r:dnd }|j||d q2|S )	Nr   r   r   c                 s  s    | ]	}t |d V  qdS )r   N)rH   rp   )r   orD   rD   rE   r    s    
zCRichHelpFormatter._rich_format_action_invocation.<locals>.<genexpr>r   rh   r    )	r   rH   rp   rU   _format_action_invocationr
  r   r   r   )rA   r   rx   r   r   r   r|   rD   rD   rE   r*    s   


z0RichHelpFormatter._rich_format_action_invocationr.Linesc                 C  s   t | j| ||S rG   )r   r.   r   rA   r   r4   rD   rD   rE   rq     s   z#RichHelpFormatter._rich_split_linesrw   c                 C  s   t | j| |||d S )N

)r   r.   r   rA   r   r4   rw   rD   rD   rE   r&  	  s   z!RichHelpFormatter._rich_fill_text)r,   r-   N)r/   r0   r1   r2   r3   r2   r4   r5   r.   r6   r7   r   r8   r9   )r8   rF   )r.   rF   r8   r9   r~   )r   r   r8   r9   )r   r   r8   r9   rG   )
r   rN   r   r   r   r   r   rN   r8   r9   )r   r   r8   r9   )r8   r0   )r   r0   r8   r   )r   r0   r   r2   r   r   r8   r   )r   r   r   r0   r8   r   )r   r   r8   r   )r   r   r8   r   )r   r0   r8   r   )r   r   r8   r)  r   r   r4   r2   r8   r2  r   r   r4   r2   rw   r   r8   r   )&r   r   r   __doc__r0   titler   __annotations__r$   r   r%   r&   r'   r(   r;   propertyr.   setterrP   HelpFormatterr)   r}   r   r   r   r   r   r   r   r   r   r%  r   r   r*  rq   r&  r   rD   rD   rB   rE   r      sh   
 

<

	*



/
G

E


r   c                   @     e Zd ZdZddd	Zd
S )RawDescriptionRichHelpFormatterzIRich help message formatter which retains any formatting in descriptions.r   r   r4   r2   rw   r8   c                   s&   t d fdd| D d S )Nr   c                 3  s    | ]} | V  qd S rG   rD   )r   r_   rw   rD   rE   r    s    zBRawDescriptionRichHelpFormatter._rich_fill_text.<locals>.<genexpr>r4  )rH   rp   r
  splitr5  rD   r@  rE   r&    s   &z/RawDescriptionRichHelpFormatter._rich_fill_textNr7  )r   r   r   r8  r&  rD   rD   rD   rE   r?        r?  c                   @  r>  )RawTextRichHelpFormatterzFRich help message formatter which retains formatting of all help text.r   r   r4   r2   r8   r2  c                 C  s   |  S rG   )rA  r3  rD   rD   rE   rq     s   z*RawTextRichHelpFormatter._rich_split_linesNr6  )r   r   r   r8  rq   rD   rD   rD   rE   rC    rB  rC  c                   @     e Zd ZdZdS )!ArgumentDefaultsRichHelpFormatterzGRich help message formatter which adds default values to argument help.Nr   r   r   r8  rD   rD   rD   rE   rE        rE  c                   @  rD  )MetavarTypeRichHelpFormatterzRich help message formatter which uses the argument 'type' as the default
    metavar value (instead of the argument 'dest').
    NrF  rD   rD   rD   rE   rH    rG  rH  c                      sF   e Zd ZdZejejejfdddd fddZ	ddddZ  ZS )HelpPreviewActionzBAction that renders the help to SVG, HTML, or text file and exits.N)pathexport_kwdsr   Sequence[str]r  r0   r   r   rJ  rN   rK  MutableMapping[str, Any] | Noner8   r9   c                  s&   t  j||d|||d |pi | _d S )N?)r   constr   r   )r:   r;   rK  )rA   r   r  r   r   rJ  rK  rB   rD   rE   r;   (  s   
zHelpPreviewAction.__init__parserr	   	namespacer
   valuesstr | Sequence[Any] | Noner   c           	      C  s
  |}|d u r| dd t|ts| dd |ds"| dd dd l}tj| }tj	|
 dd}|j|d	d
 |drU| jdd |j|fi | j n$|dre|j|fi | j n|dru|j|fi | j ntd| dd| d d S )Nri   z)error: help preview path is not provided
z*error: help preview path must be a string
).svg.html.txtz<error: help preview path must end with .svg, .html, or .txt
r   T)filerecordFr   rT  r9  rj   rU  rV  unreachablezHelp preview saved to r   )exitr`   r0   r   iorH   rp   	from_ansir   rI   StringIOr   rK  
setdefaultsave_svg	save_html	save_textAssertionError)	rA   rP  rQ  rR  r   rJ  r[  r   r.   rD   rD   rE   __call__5  s(   




zHelpPreviewAction.__call__)r   rL  r  r0   r   r0   r   r0   rJ  rN   rK  rM  r8   r9   rG   )
rP  r	   rQ  r
   rR  rS  r   rN   r8   r9   )	r   r   r   r8  rP   rQ   r;   rc  r   rD   rD   rB   rE   rI  %  s    rI  )'
__future__r   rP   r=   r   rich_argparse._lazy_rich
_lazy_richrH   rich_argparse._commonr   r   r   r   r   TYPE_CHECKINGr   r	   r
   r   collections.abcr   r   r   r   r   typingr   r   typing_extensionsr   r=  r   r?  rC  ArgumentDefaultsHelpFormatterrE  MetavarTypeHelpFormatterrH  rI  rD   rD   rD   rE   <module>   s*      t