
    g%A                     B   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j8                  d      Z ej8                  d      Z ej8                  d	      Z G d
 de       Z! e!       Z"[!d;dZ# e
       Z$e$e"d<   e$e"d<   e$e"d<   e$e"d<   i Z% ee%      e"d<    ee%d      e"d<    ee%      e"d<    ee%      e"d<    ee%      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%      e"d!<    ee%d"#      e"d"<    ee%d$#      e"d%<    ee%d&#      e"d'<    ee%d(      e"d)<    ee%d*(      e"d+<    e       e"d,<    e       e"d-<   dZ'ejP                  jS                  d.d      Z*e*r	 e"jW                  e*       e*Z'nerej]                         re's	 d dl/Z0dZ'e'sejd                  jg                  d1      rdZ'e'sd2ejP                  v rdZ'e'sd3ejP                  v rdZ'e'sd4ejP                  v rdZ'e'sd5ejP                  v rdZ'e'sd6ejP                  v rdZ'e'sd7ejP                  v r	 d d8l4m5Z5  e5        dZ'e's)ej]                         jl                  jn                  d9k(  rd!Z'e'sd:Z'n	 d dl8Z8 e8jR                          d!Z'de"_:        e'e"_;        y# e,$ r  e,d/j[                  e*0            w xY w# e1$ r Y w xY w# e,$ r Y w xY w# e9$ r Y Nw xY w)<    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                       e Zd ZdZd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zi fdZed        Zej                   d        Zed        Zej                   d        ZefdZd Zd Zd ZddZddZy)RenderersConfigzI
    Singleton object containing the current renderer configurations
    c                 J    i | _         d | _        g | _        d| _        g | _        y )NF)
_renderers_default_name_default_renderers_render_on_display_to_activateselfs    Q/var/www/dash_apps/app1/venv/lib/python3.12/site-packages/plotly/io/_renderers.py__init__zRenderersConfig.__init__+   s)    !"$"'    c                 ,    t        | j                        S N)lenr   r#   s    r%   __len__zRenderersConfig.__len__4   s    4??##r'   c                     || j                   v S r)   r   )r$   items     r%   __contains__zRenderersConfig.__contains__7   s    t&&r'   c                 ,    t        | j                        S r)   )iterr   r#   s    r%   __iter__zRenderersConfig.__iter__:   s    DOO$$r'   c                 $    | j                   |   }|S r)   r-   )r$   r.   renderers      r%   __getitem__zRenderersConfig.__getitem__=   s    ??4(r'   c                     t        |t        t        f      s$t        dj	                  t        |                  || j                  |<   y )NzhRenderer must be a subclass of MimetypeRenderer or ExternalRenderer.
    Received value with type: {typ})typ)
isinstancer   r   
ValueErrorformattyper   )r$   keyvalues      r%   __setitem__zRenderersConfig.__setitem__A   sK    %"24D!EF''-vU (. (   %r'   c                 L    | j                   |= | j                  |k(  rd | _        y y r)   )r   _default)r$   r<   s     r%   __delitem__zRenderersConfig.__delitem__M   s(    OOC  ==C DM  r'   c                 6    | j                   j                         S r)   )r   keysr#   s    r%   rC   zRenderersConfig.keysU   s    ##%%r'   c                 6    | j                   j                         S r)   )r   itemsr#   s    r%   rE   zRenderersConfig.itemsX   s    $$&&r'   c                 R    t        |fi |j                         D ]
  \  }}|| |<    y)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)dictrE   )r$   dkwargskvs        r%   updatezRenderersConfig.update[   s3     %f%++- 	DAqDG	r'   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#   s    r%   defaultzRenderersConfig.defaultm   s    8 !!!r'   c                     |sd| _         g | _        y | j                  |      }|| _         |D cg c]  }| |   	 c}| _        t        | j                        | _        y c c}w )N )r   r    _validate_coerce_rendererslistr"   )r$   r=   renderer_namesnames       r%   rN   zRenderersConfig.default   sh      "$D&(D# 88?":H"I$4:"I !!8!89 #Js   Ac                     | 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#   s    r%   render_on_displayz!RenderersConfig.render_on_display   s     &&&r'   c                 $    t        |      | _        y r)   )boolr!   )r$   vals     r%   rV   z!RenderersConfig.render_on_display   s    "&s)r'   c                    | j                   D cg c]  }|st        ||      s| }}|r$|j                  d      }|j                          |r$| j                   D cg c]  }|rt        ||      r| c}| _         yc c}w c c}w )z
        Activate all renderers that are waiting in the _to_activate list

        Parameters
        ----------
        cls
            Only activate renders that are subclasses of this class
        r   N)r"   r8   popactivate)r$   clsrto_activate_with_clsr4   s        r%   _activate_pending_renderersz+RenderersConfig._activate_pending_renderers   s     (( 
CJq#4FA 
  
 # ,//2H	 # ((
As9KA
 

s   A?A?A?B2Bc                     t        |t              st        d      |j                  d      }|D cg c]	  }|| vs| }}|r#t        dj	                  t        |                  |S c c}w )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+z'
Invalid named renderer(s) received: {})r8   strr9   splitr:   )r$   renderers_stringrS   rT   invalids        r%   rQ   z*RenderersConfig._validate_coerce_renderers   sy     *C0EFF)//4$2GDd$6F4GG**0&L+   Hs
   	A(A(c                 j    dj                  t        | j                        | j                               S )NzuRenderers configuration
-----------------------
    Default renderer: {default}
    Available renderers:
{available}
)rN   	available)r:   reprrN   _available_renderers_strr#   s    r%   __repr__zRenderersConfig.__repr__   s4     F&$2O2O2Q  
	
r'   c           	      z    dj                  t        j                  t        t	        |             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wrapri   rR   )r$   rh   s     r%   rj   z(RenderersConfig._available_renderers_str   s;    
 IIMMT$Z &")	
	 r'   Nc                    |rL| j                  |      }|D cg c]  }| |   	 }}|D ]#  }t        |t              s|j                          % n"| j	                  t               | j
                  }i }|D ]p  }t        |t              st        |      }|j                         D ]  \  }	}
t        ||	      st        ||	|
       ! |j                  |j                  |             r |S c c}w )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
        r]   )rQ   r8   r   r\   r`   r    r   rE   hasattrsetattrrL   to_mimebundle)r$   fig_dictre   rI   rS   rT   renderers_listr4   bundlerJ   rK   s              r%   _build_mime_bundlez"RenderersConfig._build_mime_bundle   s    * !<<=MNN5CDTd4jDND + (h(89%%'(
 ,,1A,B!44N& 	@H($45>"LLN 0DAqx+!Q/0 h44X>?	@ + Es   C*c                    |rL| j                  |      }|D cg c]  }| |   	 }}|D ]#  }t        |t              s|j                          % n"| j	                  t               | j
                  }|D ]a  }t        |t              st        |      }|j                         D ]  \  }}	t        ||      st        |||	       ! |j                  |       c yc c}w )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
        rv   N)rQ   r8   r   r\   r`   r    r   rE   rw   rx   render)
r$   rz   re   rI   rS   rT   r{   r4   rJ   rK   s
             r%   _perform_external_renderingz+RenderersConfig._perform_external_rendering*  s    * !<<=MNN5CDTd4jDND + (h(89%%'( ,,1A,B!44N& 	*H($45>"LLN 0DAqx+!Q/0 )	* Es   Cr)   )__name__
__module____qualname____doc__r&   r+   r/   r2   r5   r>   rA   rC   rE   rL   propertyrN   setterrV   objectr`   rQ   rk   rj   r}   r    r'   r%   r   r   &   s    $'%
%!&'  $ " ": ^^: :" 	' 	' , , /5 
.<	
,\(*r'   r   Tc                 <   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       t        j                  |fd|i| y)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
    re   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_displayr9   r   r   __version__displayr   )figr4   validaterI   rz   r|   s         r%   showr   \  s    F +39H ))(XXXQWXFN  78#7#7877;KKV  	D1 ))(XXXQWXr'   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)<rs   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   rQ   r9   r:   get_ipythongoogle.colabgoogleImportErrorpathexistsplotly.io.orcar   	__class__r   
webbrowser	ExceptionrV   rN   r   r'   r%   <module>r      s     	 % #    ( 9
%

%
%i
0-"--.?@&&&z2
l*f l*b	 	5Yx !".	
 )	, &	) %	(  
(7	* "2&D"Q	
 $F3	( "&1	' "&1	' $&	( ,.	,  !N	&  =	% !	&  	% =	% =	%  'f5	) &fYH	) %V;VW	( '9	*  %FTJ	(  .fu U	
 79	
 ";"=	
 
   zz~~/6	
,,\: $$$& 	&
  ?#  6"** D" 

 :#  ;$  3rzz A# <

 J'  ;	:!$ ''004NN$
 5	
$ #	 $	 c  
((.) )/ )
 	

$  		B  		.   		sB   ?K (K? 8L 8L K<?LLLLLL