
    WhF                        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j:                  d      Z ej:                  d      Z ej:                  d	      Z 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jT                  jW                  d/d      Z,e,r	 e$j[                  e,       e,Z)ner e)s	 d dl0Z1dZ)e)sejf                  ji                  d2      rdZ)e)sd3ejT                  v rdZ)e)sd4ejT                  v rdZ)e)sd5ejT                  v rdZ)e)sd6ejT                  v rdZ)e)sd7ejT                  v rdZ)e)sd8ejT                  v r	 d d9l5m6Z6  e6        d Z)ejo                         Z8e8jr                  jt                  Z;e)se;d:k(  rd"Z)e)s(e;d;k(  r# e<e8      jz                  j}                  d<      rdZ)e)sd=Z)n	 d dl?Z? e?jV                          d"Z)de$_A        e)e$_B        y# e.$ r  e.d0j_                  e,1            w xY w# e2$ r Y Gw xY w# e.$ r Y w xY w# e@$ 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                     d } 	 t        j                  d      }|/|j                         j                         j	                         d   } | y d| v rLt        j                  d      }|4|j                  dk  r$t        j                  d|j                   d       y y y d| v rLt        j                  d	      }|4|j                  d
k  r$t        j                  d|j                   d       y y y y # t
        $ r Y w xY w)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_labs       N/var/www/html/jupyter_env/lib/python3.12/site-packages/plotly/io/_renderers.py display_jupyter_version_warningsr.   $   s$   N!,,X6#^^-446>>@DN 	~	-+66zB',<,H,H3,NMMRScSoSoRp  qH  I -O'
 
.	(&11,?"{'>'>'DMML[MdMdLe  fw  x (E" 
)  s   AC. .	C:9C:c                       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    r-   __init__zRenderersConfig.__init__F   s)    !"$"'    c                 ,    t        | j                        S N)lenr2   r7   s    r-   __len__zRenderersConfig.__len__O   s    4??##r:   c                     || j                   v S r<   r2   )r8   items     r-   __contains__zRenderersConfig.__contains__R   s    t&&r:   c                 ,    t        | j                        S r<   )iterr2   r7   s    r-   __iter__zRenderersConfig.__iter__U   s    DOO$$r:   c                 $    | j                   |   }|S r<   r@   )r8   rA   renderers      r-   __getitem__zRenderersConfig.__getitem__X   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typer2   )r8   keyvalues      r-   __setitem__zRenderersConfig.__setitem__\   sE    %"24D!EF''-v$u+v'>   %r:   c                 L    | j                   |= | j                  |k(  rd | _        y y r<   )r2   _default)r8   rO   s     r-   __delitem__zRenderersConfig.__delitem__f   s(    OOC  ==C DM  r:   c                 6    | j                   j                         S r<   )r2   keysr7   s    r-   rV   zRenderersConfig.keysn   s    ##%%r:   c                 6    | j                   j                         S r<   )r2   itemsr7   s    r-   rX   zRenderersConfig.itemsq   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)dictrX   )r8   dkwargskvs        r-   updatezRenderersConfig.updatet   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
        )r3   r7   s    r-   defaultzRenderersConfig.default   s    8 !!!r:   c                     |sd| _         g | _        y | j                  |      }|| _         |D cg c]  }| |   	 c}| _        t        | j                        | _        y c c}w )N )r3   r4   _validate_coerce_rendererslistr6   )r8   rP   renderer_namesnames       r-   ra   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
        )r5   r7   s    r-   render_on_displayz!RenderersConfig.render_on_display   s     &&&r:   c                 $    t        |      | _        y r<   )boolr5   )r8   vals     r-   ri   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)r6   rK   popactivate)r8   clsrto_activate_with_clsrG   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: {})rK   strrL   splitrM   )r8   renderers_stringrf   rg   invalids        r-   rd   z*RenderersConfig._validate_coerce_renderers   sv     *C0EFF)//4$2GDd$6F4GG**0&W*> 
  Hs
   	A(A(c                 j    dj                  t        | j                        | j                               S )NzuRenderers configuration
-----------------------
    Default renderer: {default}
    Available renderers:
{available}
)ra   	available)rM   reprra   _available_renderers_strr7   s    r-   __repr__zRenderersConfig.__repr__   s/     F4%1N1N1PFQ	R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wrapr|   re   )r8   r{   s     r-   r}   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
        rp   )rd   rK   r   ro   rs   r4   r   rX   hasattrsetattrr_   to_mimebundle)r8   fig_dictrx   r\   rf   rg   renderers_listrG   bundler]   r^   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
        r   N)rd   rK   r   ro   rs   r4   r   rX   r   r   render)
r8   r   rx   r\   rf   rg   r   rG   r]   r^   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__r9   r>   rB   rE   rH   rQ   rT   rV   rX   r_   propertyra   setterri   objectrs   rd   r~   r}   r   r    r:   r-   r0   r0   A   s    $'%%!&'  $ " ": ^^: :" 	' 	' , , /5 
.8R,\(*r:   r0   Tc                 P   t        | |      }t        j                  |fd|i|}|rht        st	        d      t
        r%t        t
        j                        t        d      k  rt	        d      t                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 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
    rx   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_displayrL   r   r   r'   r.   displayr   )figrG   validater\   r   r   s         r-   showr   q  s    F +39H ))(XXXQWXFN  78#7#7877;KKV  	)*D1 ))(XXXQWXr:   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   r0   r   r   plotly_rendererr   jpeg_rendererdefault_rendererenvirongetr   rd   rL   rM   google.colabgoogleImportErrorpathexistsplotly.io.orcar   get_ipythonipython_info	__class__r   shellrN   r   
startswith
webbrowserr&   ri   ra   r   r:   r-   <module>r      s     	 %  #    ( 9
%

%
%i
0-"--.?@&&&z2:f*f f*V	 	7Y| !".	
 )	, &	) %	(  
(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'  ;	:!$ &&(L""++E*D!D$ ++,**55lC,
 5	
$ #	 $	 o  
((.L(I
 	

   		B  		>   		sB   L !L& 1L2 L= L#&L/.L/2L:9L:=MM