o
    NhF                     @   s  d dl Z d dl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	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 d
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$d0< dZ)ej*+d1dZ,e,r2ze$-e, W n e.y.   e.d2j/e,d3w e,Z)nere)sKzd dl0Z1dZ)W n
 e2yJ   Y nw e)sWej34d4rWdZ)e)sbd5ej*v rbdZ)e)smd6ej*v rmdZ)e)sxd7ej*v rxdZ)e)sd8ej*v rdZ)e)sd9ej*v rdZ)e)sd:ej*v rzd d;l5m6Z6 e6  d"Z)W n
 e.y   Y nw e7 Z8e8j9j:Z;e)se;d<krd$Z)e)se;d=kre<e8j=>d>rdZ)e)sd?Z)nzd dl?Z?e?+  d$Z)W n
 e@y   Y nw de$_Ae)e$_BdS )A    N)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                  C   s   d } zt d}|d ur|   d } W n	 ty    Y nw | d u r'd S d| v rIt d}|d urE|jdk rGtd|j d d S d S d S d| v rgt d	}|d uri|jd
k rktd|j d d S d S d S d S )Npsutilzjupyter-notebooknotebook7z@Plotly version >= 6 requires Jupyter Notebook >= 7 but you have zV installed.
 To upgrade Jupyter Notebook, please run `pip install notebook --upgrade`.zjupyter-lab
jupyterlab3z:Plotly version >= 6 requires JupyterLab >= 3 but you have zQ installed. To upgrade JupyterLab, please run `pip install jupyterlab --upgrade`.)	r   
get_moduleProcessparentcmdline	Exception__version__warningswarn)parent_processr   jupyter_notebookjupyter_lab r+   U/var/www/html/Persson_Maskin/env/lib/python3.10/site-packages/plotly/io/_renderers.py display_jupyter_version_warnings$   s4   


r-   c                   @   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selfr+   r+   r,   __init__F   s
   
zRenderersConfig.__init__c                 C   
   t | jS N)lenr/   r4   r+   r+   r,   __len__O      
zRenderersConfig.__len__c                 C   s
   || j v S r8   r/   )r5   itemr+   r+   r,   __contains__R   r;   zRenderersConfig.__contains__c                 C   r7   r8   )iterr/   r4   r+   r+   r,   __iter__U   r;   zRenderersConfig.__iter__c                 C   s   | j | }|S r8   r<   )r5   r=   rendererr+   r+   r,   __getitem__X   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/   )r5   keyvaluer+   r+   r,   __setitem__\   s   zRenderersConfig.__setitem__c                 C   s    | j |= | j|krd | _d S d S r8   )r/   _default)r5   rH   r+   r+   r,   __delitem__f   s   

zRenderersConfig.__delitem__c                 C   
   | j  S r8   )r/   keysr4   r+   r+   r,   rN   n   r;   zRenderersConfig.keysc                 C   rM   r8   )r/   itemsr4   r+   r+   r,   rO   q   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)dictrO   )r5   dkwargskvr+   r+   r,   updatet   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
        )r0   r4   r+   r+   r,   default   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namer4   r+   r,   
<listcomp>       z+RenderersConfig.default.<locals>.<listcomp>)r0   r1   _validate_coerce_rendererslistr3   )r5   rI   renderer_namesr+   r4   r,   rW      s   
c                 C   rV   )z
        If True, the default mimetype renderers will be used to render
        figures when they are displayed in an IPython context.

        Returns
        -------
        bool
        )r2   r4   r+   r+   r,   render_on_display   s   
z!RenderersConfig.render_on_displayc                 C   s   t || _d S r8   )boolr2   )r5   valr+   r+   r,   rb      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+   rD   r[   rclsr+   r,   r]          z?RenderersConfig._activate_pending_renderers.<locals>.<listcomp>r   c                    s   g | ]} rt | s|qS r+   re   rf   rh   r+   r,   r]      rj   N)r3   popactivate)r5   ri   to_activate_with_clsrA   r+   rh   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+   rZ   r4   r+   r,   r]      s    z>RenderersConfig._validate_coerce_renderers.<locals>.<listcomp>z'
Invalid named renderer(s) received: {})rD   strrE   splitrF   )r5   renderers_stringra   invalidr+   r4   r,   r_      s   


z*RenderersConfig._validate_coerce_renderersc                 C   s   dj t| j|  dS )NzuRenderers configuration
-----------------------
    Default renderer: {default}
    Available renderers:
{available}
)rW   	available)rF   reprrW   _available_renderers_strr4   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wrapru   r`   )r5   rt   r+   r+   r,   rv     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                    rY   r+   r+   rZ   r4   r+   r,   r]   (  r^   z6RenderersConfig._build_mime_bundle.<locals>.<listcomp>rh   )r_   rD   r   rl   rn   r1   r   rO   hasattrsetattrrU   to_mimebundle)
r5   fig_dictrr   rR   ra   renderers_listrA   bundlerS   rT   r+   r4   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                    rY   r+   r+   rZ   r4   r+   r,   r]   V  r^   z?RenderersConfig._perform_external_rendering.<locals>.<listcomp>rh   N)r_   rD   r   rl   rn   r1   r   rO   r   r   render)	r5   r   rr   rR   ra   r   rA   rS   rT   r+   r4   r,   _perform_external_rendering?  s(   




z+RenderersConfig._perform_external_renderingr8   )__name__
__module____qualname____doc__r6   r:   r>   r@   rB   rJ   rL   rN   rO   rU   propertyrW   setterrb   objectrn   r_   rw   rv   r   r   r+   r+   r+   r,   r.   A   s4    	




	
.r.   Tc                 K   s|   t | |}tj|fd|i|}|r1tstdtr#ttjtdk r'tdt  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 specifying the height of the plot in pixels.
        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
    rr   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   	renderersr   ipython_displayrE   r   r   r%   r-   displayr   )figrA   validaterR   r   r   r+   r+   r,   showq  s   
#r   plotly_mimetyper   nteractvscode)configr   )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TerminalInteractiveShellZMQInteractiveShellz
ipykernel.zplotly_mimetype+notebook)NT)Cr~   r   ospackaging.versionr   r&   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   r    ipythonr   r   r-   r   r.   r   r   plotly_rendererr   jpeg_rendererdefault_rendererenvirongetr   r_   rE   rF   google.colabgoogleImportErrorpathexistsplotly.io.orcar   get_ipythonipython_info	__class__r   shellrG   r   
startswith
webbrowserr$   rb   rW   r+   r+   r+   r,   <module>   s    P


  -
>










