U
    Y»{j A  ã                   @   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-�rlze% .e-¡ W n& e/k
�rb   e/d1j0e-d2�ƒ‚Y nX e-Z*�nbe �rœe  1¡ �rœe*�sªzd dl2Z3dZ*W n e4k
�r¨   Y nX e*�sÂej5 6d3¡�rÂdZ*e*�sØd4ej+k�rØdZ*e*�sîd5ej+k�rîdZ*e*�sd6ej+k�rdZ*e*�sd7ej+k�rdZ*e*�s0d8ej+k�r0dZ*e*�std9ej+k�rtzd d:l7m8Z8 e8ƒ  d!Z*W n e/k
�rr   Y nX e*�s�e  1¡ j9j:d;k�r�d#Z*e*�sÎd<Z*n2d dl;Z;ze; ,¡  d#Z*W n e;j<k
�rÌ   Y nX de%_=e*e%_>dS )>é    )Úabsolute_importÚdivisionN)Úcopy)ÚLooseVersion)Úoptional_imports)ÚMimetypeRendererÚExternalRendererÚPlotlyRendererÚNotebookRendererÚKaggleRendererÚAzureRendererÚColabRendererÚJsonRendererÚPngRendererÚJpegRendererÚSvgRendererÚPdfRendererÚBrowserRendererÚIFrameRendererÚSphinxGalleryHtmlRendererÚSphinxGalleryOrcaRendererÚCoCalcRendererÚDatabricksRenderer)Úvalidate_coerce_fig_to_dictZ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#   úS/var/www/html/bwave/python/venv/lib/python3.8/site-packages/plotly/io/_renderers.pyÚ__init__-   s
    zRenderersConfig.__init__c                 C   s
   t | jƒS ©N)Úlenr   r!   r#   r#   r$   Ú__len__6   s    zRenderersConfig.__len__c                 C   s
   || j kS r&   ©r   )r"   Úitemr#   r#   r$   Ú__contains__9   s    zRenderersConfig.__contains__c                 C   s
   t | jƒS r&   )Úiterr   r!   r#   r#   r$   Ú__iter__<   s    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 r&   )r   Ú_default)r"   r5   r#   r#   r$   Ú__delitem__O   s    
zRenderersConfig.__delitem__c                 C   s
   | j  ¡ S r&   )r   Úkeysr!   r#   r#   r$   r:   W   s    zRenderersConfig.keysc                 C   s
   | j  ¡ S r&   )r   Úitemsr!   r#   r#   r$   r;   Z   s    zRenderersConfig.itemsc                 K   s&   t |f|Ž ¡ 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   s   | 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                    s   g | ]}ˆ | ‘qS r#   r#   ©Ú.0Únamer!   r#   r$   Ú
<listcomp>š   s     z+RenderersConfig.default.<locals>.<listcomp>)r   r   Ú_validate_coerce_renderersÚlistr    )r"   r6   Úrenderer_namesr#   r!   r$   rB   �   s    
c                 C   s   | j S )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$   rK   «   s    c                    sF   ‡ fdd„| j D ƒ}|r,| d¡}| ¡  q‡ 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#   ©r1   ©rE   Úr©Úclsr#   r$   rG   ¸   s     
 z?RenderersConfig._activate_pending_renderers.<locals>.<listcomp>r   c                    s   g | ]}ˆ rt |ˆ ƒs|‘qS r#   rN   rO   rQ   r#   r$   rG   Â   s     
 N)r    ÚpopÚactivate)r"   rR   Zto_activate_with_clsr.   r#   rQ   r$   Ú_activate_pending_renderers¯   s    	
ÿ


ÿz+RenderersConfig._activate_pending_renderersc                    sH   t |tƒstdƒ‚| d¡}‡ fdd„|D ƒ}|rDt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 | ]}|ˆ kr|‘qS r#   r#   rD   r!   r#   r$   rG   Ù   s      z>RenderersConfig._validate_coerce_renderers.<locals>.<listcomp>z'
Invalid named renderer(s) received: {})r1   Ústrr2   Úsplitr3   )r"   Úrenderers_stringrJ   Úinvalidr#   r!   r$   rH   Æ   s    

þÿz*RenderersConfig._validate_coerce_renderersc                 C   s   dj t| jƒ|  ¡ d�S )NzuRenderers configuration
-----------------------
    Default renderer: {default}
    Available renderers:
{available}
)rB   Ú	available)r3   ÚreprrB   Ú_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Úwrapr\   rI   )r"   r[   r#   r#   r$   r]   ï   s    
üÿz(RenderersConfig._available_renderers_strNc           
         s¬   |r>ˆ   |¡}‡ fdd„|D ƒ}|D ]}t|tƒr$| ¡  q$nˆ jtd� ˆ j}i }|D ]N}t|tƒrXt|ƒ}| ¡ D ]\}}	t||ƒrvt	|||	ƒ qv| 
| |¡¡ qX|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                    s   g | ]}ˆ | ‘qS r#   r#   rD   r!   r#   r$   rG     s     z6RenderersConfig._build_mime_bundle.<locals>.<listcomp>rQ   )rH   r1   r   rT   rU   r   r   r;   ÚhasattrÚsetattrrA   Zto_mimebundle)
r"   Úfig_dictrY   r>   rJ   Úrenderers_listr.   Úbundler?   r@   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 ]H}t|tƒrTt|ƒ}| ¡ D ]\}}t||ƒrrt	|||ƒ qr| 
|¡ qTd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                    s   g | ]}ˆ | ‘qS r#   r#   rD   r!   r#   r$   rG   C  s     z?RenderersConfig._perform_external_rendering.<locals>.<listcomp>rQ   N)rH   r1   r   rT   rU   r   r   r;   rg   rh   Úrender)	r"   ri   rY   r>   rJ   rj   r.   r?   r@   r#   r!   r$   Ú_perform_external_rendering,  s    



z+RenderersConfig._perform_external_rendering)N)N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r%   r(   r+   r-   r/   r7   r9   r:   r;   rA   ÚpropertyrB   ÚsetterrK   ÚobjectrU   rH   r^   r]   rl   rn   r#   r#   r#   r$   r   (   s2   	




.r   Tc                 K   sv   t | |ƒ}tj|fd|i|—Ž}|r\ts0tdƒ‚trFttjƒtdƒk rNt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
    rY   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   Ú	renderersrl   Úipython_displayr2   r   r   Ú__version__Údisplayrn   )Zfigr.   Úvalidater>   ri   rk   r#   r#   r$   Úshow^  s    #
ÿÿr|   Zplotly_mimetypeZ
jupyterlabZnteractZvscode)ÚconfigÚnotebook)r}   Ú	connectedZnotebook_connectedZkaggleZazureZcolabZcocalcZ
databricksÚjsonZpngZjpegZjpgÚsvgZpdfZbrowserZfirefox)r}   Úusing)Úchromezgoogle-chromerƒ   )Úchromiumzchromium-browserr„   )r}   Zinclude_plotlyjsZiframeZcdnZiframe_connectedZsphinx_galleryZsphinx_gallery_pngZPLOTLY_RENDERERzb
Invalid named renderer(s) specified in the 'PLOTLY_RENDERER'
environment variable: {env_renderer})Úenv_rendererz/kaggle/inputZAZURE_NOTEBOOKS_HOSTZ
VSCODE_PIDZNTERACT_EXEZCOCALC_PROJECT_IDÚDATABRICKS_RUNTIME_VERSIONZSPYDER_ARGS)Úvalidate_executableÚTerminalInteractiveShellzplotly_mimetype+notebook)NT)?Ú
__future__r   r   re   r   ÚosZdistutils.versionr   Zplotlyr   Zplotly.io._base_renderersr   r   r	   r
   r   r   r   r   r   r   r   r   r   r   r   r   r   r   Zplotly.io._utilsr   Z
get_moduleÚipythonrx   r   ru   r   rw   r|   Zplotly_rendererr}   Zjpeg_rendererZdefault_rendererÚenvironÚgetr…   rH   r2   r3   Úget_ipythonZgoogle.colabZgoogleÚImportErrorÚpathÚexistsZplotly.io.orcar‡   Ú	__class__ro   Z
webbrowserÚErrorrK   rB   r#   r#   r#   r$   Ú<module>   sÆ   P


  3
<





 ÿ


ýÿ
ÿ