o
    ni;                     @  sx  d Z ddlmZ ddlZddlZddlZddlZddlZddlm	Z	m
Z
 ddlZejdkr4ddlmZ nddlmZ ddlZddlZddlmZ dd	lmZmZ d
ZeZdZdZeZdZdZdZedededededediZeeeeeeeedZdZ 	 dZ!	 dZ"dZ#d)ddZ$G dd dej%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&Z*G d'd( d(e'Z+dS )*z*Terminal, Jupyter and file output for W&B.    )annotationsN)CallableIterator)      )override)term   )ipython	sparkline2   (         
   CRITICALERRORWARNINGINFODEBUGNOTSET)r   FATALr   WARNr   r   r   r   u   ⢿⣻⣽⣾⣷⣯⣟⡿   a  
    <style>
        table.wandb td:nth-child(1) {
            padding: 0 10px;
            text-align: left;
            width: auto;
        }

        table.wandb td:nth-child(2) {
            text-align: left;
            width: 100%;
        }
    </style>
a  
    <style>
        .wandb-row {
            display: flex;
            flex-direction: row;
            flex-wrap: wrap;
            justify-content: flex-start;
            width: 100%;
        }
        .wandb-col {
            display: flex;
            flex-direction: column;
            flex-basis: 100%;
            flex: 1;
            padding: 10px;
        }
    </style>
returnPrinterc                   C  s   t  rt S t S )z8Returns a new printer based on the environment we're in.)r
   
in_jupyter_PrinterJupyter_PrinterTerm r   r   S/home/ubuntu/SoloSpeech/.venv/lib/python3.10/site-packages/wandb/sdk/lib/printer.pynew_printere   s   r!   c                   @  sF  e Zd ZdZejejd@ddZejdddAddZ	ej	dBdCddZ
ejdBdDddZedEddZeejdFddZeejdFddZdGd"d#ZejdHd$d%ZejdHd&d'ZejdBdId)d*ZejdHd+d,ZejdJd.d/ZejdHd0d1ZejdKd3d4ZejdHd5d6ZejdBdLd:d;ZejdMd>d?ZdS )Nr   z-An object that shows styled text to the user.r   Iterator[DynamicText | None]c                 C     dS )a  A context manager providing a handle to a block of changeable text.

        Since `wandb` may be outputting to a terminal, it's important to only
        use this when `wandb` is performing blocking calls, or else text output
        by non-`wandb` code may get overwritten.

        Returns None if dynamic text is not supported, such as if stderr is not
        a TTY and we're not in a Jupyter notebook.
        Nr   selfr   r   r    dynamic_textp       zPrinter.dynamic_textNleveltextstr | list[str] | tuple[str]r)   str | int | NoneNonec                C  r#   )zDisplay text to the user.

        Args:
            text: The text to display. If given an iterable of strings, they're
                joined with newlines.
            level: The logging level, for controlling verbosity.
        Nr   r%   r*   r)   r   r   r    display}   r'   zPrinter.displaystrpercent_donefloat | Nonec                 C  r#   )zSet the text on the progress indicator.

        Args:
            text: The text to set, which must end with \r.
            percent_done: The current progress, between 0 and 1.
        Nr   r%   r*   r1   r   r   r    progress_update   r'   zPrinter.progress_update
str | Nonec                 C  r#   )zClose the progress indicator.

        After this, `progress_update` should not be used.

        Args:
            text: The final text to set on the progress indicator.
                Ignored in Jupyter notebooks.
        Nr   r%   r*   r   r   r    progress_close   r'   zPrinter.progress_closename_or_levelintc              	   C  sh   t | tr zt|   W S  ty   td|  dt  w t | tr'| S | du r-tS td|  )zReturns the number corresponding to the logging level.

        Args:
            name_or_level: The logging level passed to `display`.

        Raises:
            ValueError: if the input is not a valid logging level.
        zUnknown level name: z, supported levels: NzUnknown status level )	
isinstancer0   _name_to_levelupperKeyError
ValueErrorkeysr9   r   )r8   r   r   r    _sanitize_level   s   


zPrinter._sanitize_levelboolc                 C  r#   )z8Whether text passed to display may contain HTML styling.Nr   r$   r   r   r    supports_html   r'   zPrinter.supports_htmlc                 C  r#   )z=Whether text passed to display may contain arbitrary Unicode.Nr   r$   r   r   r    supports_unicode   r'   zPrinter.supports_unicodeserieslist[int | float]c                 C  s   | j rt|S dS )zReturns a Unicode art representation of the series of numbers.

        Also known as "ASCII art", except this uses non-ASCII
        Unicode characters.

        Returns None if the output doesn't support Unicode.
        N)rC   r   sparkify)r%   rD   r   r   r    
sparklines   s   
zPrinter.sparklinesc                 C  r#   )z"Returns the text styled like code.Nr   r6   r   r   r    code   r'   zPrinter.codec                 C  r#   )z(Returns the text styled like a run name.Nr   r6   r   r   r    name   r'   zPrinter.namelinkc                 C  r#   )a  Returns the text styled like a link.

        Args:
            link: The target link.
            text: The text to show for the link. If not set, or if we're not
                in an environment that supports clickable links,
                this is ignored.
        Nr   r%   rJ   r*   r   r   r    rJ      r'   zPrinter.linkc                 C  r#   )z/Returns the text styled to draw less attention.Nr   r6   r   r   r    secondary_text   r'   zPrinter.secondary_texttickc                 C  r#   )zReturns a frame of an animated loading symbol.

        May return an empty string.

        Args:
            tick: An index into the animation.
        Nr   r%   rM   r   r   r    loading_symbol   r'   zPrinter.loading_symbolc                 C  r#   )z'Returns the text colored like an error.Nr   r6   r   r   r    error   r'   zPrinter.errorrI   c                 C  r#   )z9Returns the string for a named emoji, or an empty string.Nr   r%   rI   r   r   r    emoji   r'   zPrinter.emojic                 C  r#   )z)Returns the text styled like a file path.Nr   r6   r   r   r    files   r'   zPrinter.filesrowslist[list[str]]titlec                 C  r#   )z1Returns a grid of strings with an optional title.Nr   )r%   rT   rV   r   r   r    grid  r'   zPrinter.gridcolumns	list[str]c                 C  r#   )z2Returns the column text combined in a compact way.Nr   r%   rX   r   r   r    panel  r'   zPrinter.panelr   r"   r*   r+   r)   r,   r   r-   Nr*   r0   r1   r2   r   r-   r*   r5   r   r-   )r8   r,   r   r9   r   rA   )rD   rE   r   r5   r*   r0   r   r0   rJ   r0   r*   r5   r   r0   rM   r9   r   r0   rI   r0   r   r0   rT   rU   rV   r5   r   r0   rX   rY   r   r0   )__name__
__module____qualname____doc__
contextlibcontextmanagerabcabstractmethodr&   r/   r4   r7   staticmethodr@   propertyrB   rC   rG   rH   rI   rJ   rL   rO   rP   rR   rS   rW   r[   r   r   r   r    r   m   sT    


	c                   @  s    e Zd ZdZejd	ddZdS )
DynamicTextz5A handle to a block of text that's allowed to change.r*   r0   r   r-   c                 C  r#   )a^  Change the text.

        Args:
            text: The text to put in the block, with lines separated
                by \n characters. The text should not end in \n unless
                a blank line at the end of the block is desired.
                May include styled output from methods on the Printer
                that created this.
        Nr   r6   r   r   r    set_text  r'   zDynamicText.set_textNr*   r0   r   r-   )rh   ri   rj   rk   rn   ro   rs   r   r   r   r    rr     s    rr   c                      s*  e Zd Zd= fddZeejd>ddZedd	d?ddZe	d@dAddZ
ed@dBddZed@dCddZeedDddZeedDddZedEd d!ZedEd"d#Zed@dFd%d&ZedGd(d)ZedEd*d+ZedHd.d/ZedEd0d1ZedEd2d3Zed@dId7d8ZedJd;d<Z  ZS )Kr   r   r-   c                   s   t    tg d| _d S )N)-\|/)super__init__	itertoolscycle	_progressr$   	__class__r   r    rz     s   
z_PrinterTerm.__init__r"   c                 c  sV    t  }|sd V  nt|V  W d    d S W d    d S 1 s$w   Y  d S r^   )r   r&   _DynamicTermTextr%   handler   r   r    r&      s   
"z_PrinterTerm.dynamic_textNr(   r*   r+   r)   r,   c                C  s.   t |ttfrd|n|}| || d S N
)r:   listtuplejoin_display_fn_mappingr.   r   r   r    r/   )  s   z_PrinterTerm.displayCallable[[str], None]c                 C  s   t | } | tkrtjS t|   krtk rtjS  t|   kr%tk r&tjS  t|   kr2tk r3tj	S  t
|   kr?tk rCtj	S  tj	S tj	S r^   )r   r@   r   wandb	termerrorr   r   termwarnr   termlogr   r(   r   r   r    r   3  s    
z _PrinterTerm._display_fn_mappingr0   r1   r2   c                 C  s"   t jt| j d| dd d S )N F)newline)r   r   nextr}   r3   r   r   r    r4   D  s   "z_PrinterTerm.progress_updater5   c                 C  s   |pd}t | d S )NzO                                                                               )r   r   r6   r   r   r    r7   H  s   z_PrinterTerm.progress_closerA   c                 C  r#   )NFr   r$   r   r   r    rB   M     z_PrinterTerm.supports_htmlc                 C  s   t jtjS r^   )r   utilis_unicode_safesysstderrr$   r   r   r    rC   R  s   z_PrinterTerm.supports_unicodec                 C     t j|dd}|S )NT)boldclickstyler%   r*   retr   r   r    rH   W     z_PrinterTerm.codec                 C  r   )Nyellowfgr   r   r   r   r    rI   \  r   z_PrinterTerm.namerJ   c                 C  s   t j|ddd}|S )NblueT)r   	underliner   )r%   rJ   r*   r   r   r   r    rJ   a  s   z_PrinterTerm.linkrI   c                 C  s@   t  }t dkrtjtjrt ddddddd}||d	S )
NWindowsu   ⭐️u   🧹u   🚀u   🦍u   🐢u   ️⚡)starbroomrocketgorillaturtle	lightning )	dictplatformsystemr   r   r   r   stdoutget)r%   rI   emojisr   r   r    rR   h  s   	z_PrinterTerm.emojic                 C     t j|ddS )Nwhiter   r   r6   r   r   r    rL   w  s   z_PrinterTerm.secondary_textrM   r9   c                 C  s(   | j sdS |tt }tjt| tdS )Nr   r   )rC   len_PROGRESS_SYMBOL_ANIMATIONr   r   _PROGRESS_SYMBOL_COLOR)r%   rM   idxr   r   r    rO   }  s   z_PrinterTerm.loading_symbolc                 C  r   )Nredr   r   r6   r   r   r    rP        z_PrinterTerm.errorc                 C  s   t j|ddd}|S )NmagentaT)r   r   r   r   r   r   r    rS     s   z_PrinterTerm.filesrT   rU   rV   c                   sh   t dd |D dddt|d d  g d fd	d
|D }|r/| d| dS | dS )Nc                 s  s    | ]	}t |d  V  qdS )r   N)r   .0rowr   r   r    	<genexpr>  s    z$_PrinterTerm.grid.<locals>.<genexpr>r   z{:>{max_len}}z{}r   r	   r   c                   s   g | ]
} j |d iqS )max_lenformatr   
format_rowr   r   r    
<listcomp>  s    z%_PrinterTerm.grid.<locals>.<listcomp>)maxr   r   r%   rT   rV   rW   r   r   r    rW     s   
z_PrinterTerm.gridrX   rY   c                 C  s   dd | S r   )r   rZ   r   r   r    r[     r   z_PrinterTerm.panelr   r-   r\   r]   r^   )r)   r,   r   r   r_   r`   ra   rb   rc   re   rd   rf   rg   )rh   ri   rj   rz   r   rl   rm   r&   r/   rp   r   r4   r7   rq   rB   rC   rH   rI   rJ   rR   rL   rO   rP   rS   rW   r[   __classcell__r   r   r~   r    r     sP    	
r   c                   @  s$   e Zd ZdddZedd	d
ZdS )r   r   term.DynamicBlockr   r-   c                 C  s
   || _ d S r^   )_handler   r   r   r    rz     s   
z_DynamicTermText.__init__r*   r0   c                 C  s   | j | d S r^   )r   rs   r6   r   r   r    rs     s   z_DynamicTermText.set_textN)r   r   r   r-   rt   rh   ri   rj   rz   r   rs   r   r   r   r    r     s    
r   c                      s  e Zd Zd; fddZeejd<ddZedd	d=ddZee	d>ddZ
ee	d>ddZed?ddZed?ddZed@dAddZedBdd Zed?d!d"ZedCd%d&Zed?d'd(Zed?d)d*Ze	d@dDd-d.Zed@dEd0d1Zed@dFd5d6ZedGd9d:Z  ZS )Hr   r   r-   c                   s*   t    t | _ddlm} || _d S Nr   )r/   )ry   rz   r
   jupyter_progress_barr}   IPythonr/   _ipython_display)r%   r/   r~   r   r    rz     s   


z_PrinterJupyter.__init__r"   c                 c  sF    | j j| j ddd}|rt|V  nd V  || j d d S )Nr   T)
display_id)r   r/   HTML_DynamicJupyterTextupdater   r   r   r    r&     s   
z_PrinterJupyter.dynamic_textNr(   r*   r+   r)   r,   c                C  sV   t jr
t jjjr
d S t|ttfrd|n|}d| }| j	
| j	| d S Nz<br>)r   run	_settingssilentr:   r   r   r   
splitlinesr   r/   r   r.   r   r   r    r/     s
   z_PrinterJupyter.displayrA   c                 C  r#   NTr   r$   r   r   r    rB     r   z_PrinterJupyter.supports_htmlc                 C  r#   r   r   r$   r   r   r    rC     r   z _PrinterJupyter.supports_unicoder0   c                 C  s   d| dS )N<code>r   r6   r   r   r    rH        z_PrinterJupyter.codec                 C     d| dS )Nz<strong style="color:#cdcd00">	</strong>r   r6   r   r   r    rI     r   z_PrinterJupyter.namerJ   r5   c                 C  s   d|d|p| dS )Nz<a href=z target="_blank">z</a>r   rK   r   r   r    rJ     s   z_PrinterJupyter.linkrI   c                 C  r#   Nr   r   rQ   r   r   r    rR        z_PrinterJupyter.emojic                 C  s   |S r^   r   r6   r   r   r    rL     r   z_PrinterJupyter.secondary_textrM   r9   c                 C  r#   r   r   rN   r   r   r    rO     r   z_PrinterJupyter.loading_symbolc                 C  r   )Nz<strong style="color:red">r   r   r6   r   r   r    rP     r   z_PrinterJupyter.errorc                 C  r   )Nr   z</code>r   r6   r   r   r    rS     r   z_PrinterJupyter.filesr1   r2   c                 C  s(   | j sd S |d u rd}| j || d S )Ng      ?)r}   r   r3   r   r   r    r4     s
   z_PrinterJupyter.progress_update_c                 C  s   | j r
| j   d S d S r^   )r}   close)r%   r   r   r   r    r7     s   z_PrinterJupyter.progress_closerT   rU   rV   c                   sd   d ddt|d  dg d  fdd|D }d| d	}|r+d
| d| dS t | dS )Nr   z<tr>z<td>{}</td>r   z</tr>c                   s   g | ]} j | qS r   r   r   r   r   r    r     s    z(_PrinterJupyter.grid.<locals>.<listcomp>z<table class="wandb">z</table>z<h3>z
</h3><br/>z<br/>)r   r   _JUPYTER_TABLE_STYLESr   r   r   r    rW     s   z_PrinterJupyter.gridrX   rY   c                 C  s$   d dd |D }t d| dS )Nr   c                 S  s   g | ]}d | dqS )z<div class="wandb-col"></div>r   )r   colr   r   r    r     s    z)_PrinterJupyter.panel.<locals>.<listcomp>z<div class="wandb-row">r   )r   _JUPYTER_PANEL_STYLES)r%   rX   r   r   r   r    r[     s   z_PrinterJupyter.panelr   r\   r]   ra   rb   r^   rc   re   rd   r_   )r   r5   r   r-   rf   rg   )rh   ri   rj   rz   r   rl   rm   r&   r/   rq   rB   rC   rH   rI   rJ   rR   rL   rO   rP   rS   r4   r7   rW   r[   r   r   r   r~   r    r     sN    r   c                   @  s$   e Zd Zd
ddZedddZd	S )r   r   r-   c                 C  s   ddl m} |j| _|| _d S r   )r   r/   r   _ipython_to_htmlr   )r%   r   r/   r   r   r    rz     s   
z_DynamicJupyterText.__init__r*   r0   c                 C  s$   d | }| j| | d S r   )r   r   r   r   r   r6   r   r   r    rs   !  s   z_DynamicJupyterText.set_textNr   rt   r   r   r   r   r    r     s    
r   )r   r   ),rk   
__future__r   rn   rl   r{   r   r   typingr   r   
wandb.utilr   version_infor   typing_extensionsr   wandb.errorsr   r   r
   r   r   r   r   r   r   r   r   r   _level_to_namer;   r   r   r   r   r!   ABCr   rr   r   r   r   r   r   r   r   r    <module>   sn    


  	r