o
    dWA                     @   s  d dl mZmZ d dlZd dlmZ d dlZd dlmZ d dlm	Z	 d dl
mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZ d dlmZ e	dZ e	d	Z!e	d
Z"G dd de#Z$e$ Z%[$d=ddZ&e Z'e'e%d< e'e%d< e'e%d< e'e%d< i Z(ee(de%d< ee(dde%d< ee(de%d< ee(de%d< ee(de%d< e e%d< e e%d< e e%d< e e%d< e Z)e)e%d< e)e%d < e e%d!< e e%d"< ee(de%d#< ee(d$d%e%d$< ee(d&d%e%d'< ee(d(d%e%d)< ee(dd*e%d+< ee(d,d*e%d-< e e%d.< e e%d/< dZ*ej+,d0dZ-e-r2ze%.e- W n e/y.   e/d1j0e-d2w e-Z*ne re 1 re*sPzd dl2Z3dZ*W n
 e4yO   Y nw e*s\ej56d3r\dZ*e*sgd4ej+v rgdZ*e*srd5ej+v rrdZ*e*s}d6ej+v r}dZ*e*sd7ej+v rdZ*e*sd8ej+v rdZ*e*sd9ej+v rzd d:l7m8Z8 e8  d!Z*W n
 e/y   Y nw e*se 1 j9j:d;krd#Z*e*sd<Z*nzd dl;Z;e;,  d#Z*W n
 e<y   Y nw de%_=e*e%_>dS )>    )absolute_importdivisionN)copy)Version)optional_imports)MimetypeRendererExternalRendererPlotlyRendererNotebookRendererKaggleRendererAzureRendererColabRendererJsonRendererPngRendererJpegRendererSvgRendererPdfRendererBrowserRendererIFrameRendererSphinxGalleryHtmlRendererSphinxGalleryOrcaRendererCoCalcRendererDatabricksRenderer)validate_coerce_fig_to_dictIPythonzIPython.displaynbformatc                   @   s   e Zd ZdZdd Zdd Zdd Zdd	 Zd
d Zdd Z	dd Z
dd Zdd Zi fddZedd Zejdd Zedd Zejdd ZefddZdd Zd d! Zd"d# Zd)d%d&Zd)d'd(Zd$S )*RenderersConfigzI
    Singleton object containing the current renderer configurations
    c                 C   s"   i | _ d | _g | _d| _g | _d S )NF)
_renderers_default_name_default_renderers_render_on_display_to_activateself r$   Y/var/www/html/visualizacion-main/env/lib/python3.10/site-packages/plotly/io/_renderers.py__init__-   s
   
zRenderersConfig.__init__c                 C   
   t | jS N)lenr   r"   r$   r$   r%   __len__6      
zRenderersConfig.__len__c                 C   s
   || j v S r(   r   )r#   itemr$   r$   r%   __contains__9   r+   zRenderersConfig.__contains__c                 C   r'   r(   )iterr   r"   r$   r$   r%   __iter__<   r+   zRenderersConfig.__iter__c                 C   s   | j | }|S r(   r,   )r#   r-   rendererr$   r$   r%   __getitem__?   s   
zRenderersConfig.__getitem__c                 C   s0   t |ttfstdjt|d|| j|< d S )NzhRenderer must be a subclass of MimetypeRenderer or ExternalRenderer.
    Received value with type: {typ})typ)
isinstancer   r   
ValueErrorformattyper   )r#   keyvaluer$   r$   r%   __setitem__C   s   zRenderersConfig.__setitem__c                 C   s    | j |= | j|krd | _d S d S r(   )r   _default)r#   r8   r$   r$   r%   __delitem__O   s   

zRenderersConfig.__delitem__c                 C   
   | j  S r(   )r   keysr"   r$   r$   r%   r>   W   r+   zRenderersConfig.keysc                 C   r=   r(   )r   itemsr"   r$   r$   r%   r?   Z   r+   zRenderersConfig.itemsc                 K   s*   t |fi | D ]\}}|| |< q
dS )aj  
        Update one or more renderers from a dict or from input keyword
        arguments.

        Parameters
        ----------
        d: dict
            Dictionary from renderer names to new renderer objects.

        kwargs
            Named argument value pairs where the name is a renderer name
            and the value is a new renderer object
        N)dictr?   )r#   dkwargskvr$   r$   r%   update]   s   
zRenderersConfig.updatec                 C      | j S )a  
        The default renderer, or None if no there is no default

        If not None, the default renderer is used to render
        figures when the `plotly.io.show` function is called on a Figure.

        If `plotly.io.renderers.render_on_display` is True, then the default
        renderer will also be used to display Figures automatically when
        displayed in the Jupyter Notebook

        Multiple renderers may be registered by separating their names with
        '+' characters. For example, to specify rendering compatible with
        the classic Jupyter Notebook, JupyterLab, and PDF export:

        >>> import plotly.io as pio
        >>> pio.renderers.default = 'notebook+jupyterlab+pdf'

        The names of available renderers may be retrieved with:

        >>> import plotly.io as pio
        >>> list(pio.renderers)

        Returns
        -------
        str
        )r   r"   r$   r$   r%   defaulto   s   zRenderersConfig.defaultc                    sH   |s
d _ g  _d S  |}| _  fdd|D  _t j _d S )N c                       g | ]} | qS r$   r$   .0namer"   r$   r%   
<listcomp>       z+RenderersConfig.default.<locals>.<listcomp>)r   r   _validate_coerce_rendererslistr!   )r#   r9   renderer_namesr$   r"   r%   rG      s   
c                 C   rF   )z
        If True, the default mimetype renderers will be used to render
        figures when they are displayed in an IPython context.

        Returns
        -------
        bool
        )r    r"   r$   r$   r%   render_on_display   s   
z!RenderersConfig.render_on_displayc                 C   s   t || _d S r(   )boolr    )r#   valr$   r$   r%   rR      s   c                    sH    fdd| j D }|r|d}|  |s fdd| j D | _ dS )z
        Activate all renderers that are waiting in the _to_activate list

        Parameters
        ----------
        cls
            Only activate renders that are subclasses of this class
        c                    s   g | ]} rt | r|qS r$   r4   rK   rclsr$   r%   rM          z?RenderersConfig._activate_pending_renderers.<locals>.<listcomp>r   c                    s   g | ]} rt | s|qS r$   rU   rV   rX   r$   r%   rM      rZ   N)r!   popactivate)r#   rY   to_activate_with_clsr1   r$   rX   r%   _activate_pending_renderers   s   
	

z+RenderersConfig._activate_pending_renderersc                    sH   t |ts	td|d} fdd|D }|r"tdt||S )a=  
        Input a string and validate that it contains the names of one or more
        valid renderers separated on '+' characters.  If valid, return
        a list of the renderer names

        Parameters
        ----------
        renderers_string: str

        Returns
        -------
        list of str
        z&Renderer must be specified as a string+c                    s   g | ]}| vr|qS r$   r$   rJ   r"   r$   r%   rM      s    z>RenderersConfig._validate_coerce_renderers.<locals>.<listcomp>z'
Invalid named renderer(s) received: {})r4   strr5   splitr6   )r#   renderers_stringrQ   invalidr$   r"   r%   rO      s   

z*RenderersConfig._validate_coerce_renderersc                 C   s   dj t| j|  dS )NzuRenderers configuration
-----------------------
    Default renderer: {default}
    Available renderers:
{available}
)rG   	available)r6   reprrG   _available_renderers_strr"   r$   r$   r%   __repr__   s   zRenderersConfig.__repr__c                 C   s$   d tjtt| dddd}|S )ze
        Return nicely wrapped string representation of all
        available renderer names
        
G   z        z	         )widthinitial_indentsubsequent_indent)jointextwrapwrapre   rP   )r#   rd   r$   r$   r%   rf      s   
z(RenderersConfig._available_renderers_strNc           
         s   |r  |} fdd|D }|D ]}t|tr|  qn	 jtd  j}i }|D ]'}t|trSt|}| D ]\}}	t||rJt	|||	 q;|
|| q,|S )aY  
        Build a mime bundle dict containing a kev/value pair for each
        MimetypeRenderer specified in either the default renderer string,
        or in the supplied renderers_string argument.

        Note that this method skips any renderers that are not subclasses
        of MimetypeRenderer.

        Parameters
        ----------
        fig_dict: dict
            Figure dictionary
        renderers_string: str or None (default None)
            Renderer string to process rather than the current default
            renderer string

        Returns
        -------
        dict
        c                    rI   r$   r$   rJ   r"   r$   r%   rM     rN   z6RenderersConfig._build_mime_bundle.<locals>.<listcomp>rX   )rO   r4   r   r\   r^   r   r   r?   hasattrsetattrrE   to_mimebundle)
r#   fig_dictrb   rB   rQ   renderers_listr1   bundlerC   rD   r$   r"   r%   _build_mime_bundle   s*   



z"RenderersConfig._build_mime_bundlec           	         s   |r  |} fdd|D }|D ]}t|tr|  qn	 jtd  j}|D ]$}t|trNt|}| D ]\}}t||rHt	||| q9|
| q*dS )a?  
        Perform external rendering for each ExternalRenderer specified
        in either the default renderer string, or in the supplied
        renderers_string argument.

        Note that this method skips any renderers that are not subclasses
        of ExternalRenderer.

        Parameters
        ----------
        fig_dict: dict
            Figure dictionary
        renderers_string: str or None (default None)
            Renderer string to process rather than the current default
            renderer string

        Returns
        -------
        None
        c                    rI   r$   r$   rJ   r"   r$   r%   rM   C  rN   z?RenderersConfig._perform_external_rendering.<locals>.<listcomp>rX   N)rO   r4   r   r\   r^   r   r   r?   rp   rq   render)	r#   rs   rb   rB   rQ   rt   r1   rC   rD   r$   r"   r%   _perform_external_rendering,  s(   




z+RenderersConfig._perform_external_renderingr(   )__name__
__module____qualname____doc__r&   r*   r.   r0   r2   r:   r<   r>   r?   rE   propertyrG   setterrR   objectr^   rO   rg   rf   rv   rx   r$   r$   r$   r%   r   (   s4    	




.r   Tc                 K   sv   t | |}tj|fd|i|}|r.tstdtr#ttjtdk r'tdtj|dd tj	|fd|i| dS )a#  
    Show a figure using either the default renderer(s) or the renderer(s)
    specified by the renderer argument

    Parameters
    ----------
    fig: dict of Figure
        The Figure object or figure dict to display

    renderer: str or None (default None)
        A string containing the names of one or more registered renderers
        (separated by '+' characters) or None.  If None, then the default
        renderers specified in plotly.io.renderers.default are used.

    validate: bool (default True)
        True if the figure should be validated before being shown,
        False otherwise.

    width: int or float
        An integer or float that determines the number of pixels wide the
        plot is. The default is set in plotly.js.

    height: int or float
        An integer or float that determines the number of pixels wide the
        plot is. The default is set in plotly.js.

    config: dict
        A dict of parameters to configure the figure. The defaults are set
        in plotly.js.

    Returns
    -------
    None
    rb   z<Mime type rendering requires ipython but it is not installedz4.2.0zDMime type rendering requires nbformat>=4.2.0 but it is not installedT)rawN)
r   	renderersrv   ipython_displayr5   r   r   __version__displayrx   )figr1   validaterB   rs   ru   r$   r$   r%   show^  s   
#r   plotly_mimetype
jupyterlabnteractvscode)confignotebook)r   	connectednotebook_connectedkaggleazurecolabcocalc
databricksjsonpngjpegjpgsvgpdfbrowserfirefox)r   using)chromezgoogle-chromer   )chromiumzchromium-browserr   )r   include_plotlyjsiframecdniframe_connectedsphinx_gallerysphinx_gallery_pngPLOTLY_RENDERERzb
Invalid named renderer(s) specified in the 'PLOTLY_RENDERER'
environment variable: {env_renderer})env_rendererz/kaggle/inputAZURE_NOTEBOOKS_HOST
VSCODE_PIDNTERACT_EXECOCALC_PROJECT_IDDATABRICKS_RUNTIME_VERSIONSPYDER_ARGS)validate_executableTerminalInteractiveShellzplotly_mimetype+notebook)NT)?
__future__r   r   rn   r   ospackaging.versionr   plotlyr   plotly.io._base_renderersr   r   r	   r
   r   r   r   r   r   r   r   r   r   r   r   r   r   r   plotly.io._utilsr   
get_moduleipythonr   r   r   r   r   r   plotly_rendererr   jpeg_rendererdefault_rendererenvirongetr   rO   r5   r6   get_ipythongoogle.colabgoogleImportErrorpathexistsplotly.io.orcar   	__class__ry   
webbrowser	ExceptionrR   rG   r$   r$   r$   r%   <module>   s    P


  3
<








	
