
    gO&                         d dl Z d dlZddlmZ ddlmZ ddlmZ ddlmZ	 ddl
mZ dd	lmZ dd
lmZ ddlmZmZ d Zdej(                  v Z G d de      Zy)    N   )	JSONMixin)Layer   )deck_to_html)settings)View)	ViewState)BaseMapProvider)DARKget_from_map_identifierc                  J    	 ddl m}   |         y# t        t        f$ r Y yw xY w)Nr   DeckGLWidgetTF)widgetr   ImportErrorNotImplementedErrorr   s    I/var/www/openai/venv/lib/python3.12/site-packages/pydeck/bindings/deck.pyhas_jupyter_extrar      s*    ),- s    ""zgoogle.colabc                       e Zd Zd edd      ged eddd      dd	dddej                  j                  dfd
Z	e
d        ZddefdZd Zd Z	 	 	 	 	 	 	 ddZd Zy)DeckNMapViewT)type
controllerr   r   )latitude	longitudezoom100%  c                 .   g | _         t        |t              r| j                   j                  |       n|xs g | _         || _        || _        |xs i }|	| _        |
| _        |rt        |      j                         nd| _
        || _        t               rddlm}  |       | _        t         j"                  | j                  _        t         j$                  | j                  _        || j                  _        || j                  _        || j                  _        || j                  _
        | j-                  |       d}t        |t.              r3|t0        j2                  j4                  k(  sJ |       || _        || _        yt9        ||      | _        || _        y)a  This is the renderer and configuration for a deck.gl visualization, similar to the
        `Deck <https://deck.gl/docs/api-reference/core/deck>`_ class from deck.gl.
        Pass `Deck` a Mapbox API token to display a basemap; see the notes below.

        Parameters
        ----------

        layers : pydeck.Layer or list of pydeck.Layer, default None
            List of :class:`pydeck.bindings.layer.Layer` layers to render.
        views : list of pydeck.View, default ``[pydeck.View(type="MapView", controller=True)]``
            List of :class:`pydeck.bindings.view.View` objects to render.
        api_keys : dict, default None
            Dictionary of geospatial API service providers, where the keys are ``mapbox``, ``google_maps``, or ``carto``
            and the values are the API key. Defaults to None if not set. Any of the environment variables
            ``MAPBOX_API_KEY``, ``GOOGLE_MAPS_API_KEY``, and ``CARTO_API_KEY`` can be set instead of hardcoding the key here.
        map_provider : str, default 'carto'
            If multiple API keys are set (e.g., both Mapbox and Google Maps), inform pydeck which basemap provider to prefer.
            Values can be ``carto``, ``mapbox`` or ``google_maps``
        map_style : str or dict, default 'dark'
            One of 'light', 'dark', 'road', 'satellite', 'dark_no_labels', and 'light_no_labels', a URI for a basemap
            style, which varies by provider, or a dict that follows the Mapbox style `specification <https://docs.mapbox.com/mapbox-gl-js/style-spec/>`.
            The default is Carto's Dark Matter map. For Mapbox examples, see  Mapbox's `gallery <https://www.mapbox.com/gallery/>`.
            If not using a basemap, set ``map_provider=None``.
        initial_view_state : pydeck.ViewState, default ``pydeck.ViewState(latitude=0, longitude=0, zoom=1)``
            Initial camera angle relative to the map, defaults to a fully zoomed out 0, 0-centered map
            To compute a viewport from data, see :func:`pydeck.data_utils.viewport_helpers.compute_view`
        height : int, default 500
            Height of Jupyter notebook cell, in pixels.
        width : int` or string, default '100%'
            Width of visualization, in pixels (if a number) or as a CSS value string.
        tooltip : bool or dict of {str: str}, default True
            If ``True``/``False``, toggles a default tooltip on visualization hover.
            Layers must have ``pickable=True`` set in order to display a tooltip.
            For more advanced usage, the user can pass a dict to configure more custom tooltip features.
            Further documentation is `here <tooltip.html>`_.

        .. _Deck:
            https://deck.gl/docs/api-reference/core/deck
        .. _gallery:
            https://www.mapbox.com/gallery/
        Nr   r   zQThe map_provider parameter must be 'mapbox' when map_style is provided as a dict.)layers
isinstancer   appendviewsinitial_view_statedescriptioneffectsstrlowermap_provider_tooltipr   r   r   deck_widgetpydeck_settingscustom_librariesconfigurationheightwidthtooltip_set_api_keysdictr   MAPBOXvalue	map_styler   
parameters)selfr!   r$   r7   api_keysr%   r1   r0   r2   r&   r'   r*   r8   r   custom_map_style_errors                  r   __init__zDeck.__init__   sS   p fe$KKv& ,BDK
"4>r&9EC-3354-+~D0?0P0PD--<-J-JD*&,D#%*D"'.D$,8D)8$!ti&?#9#9#?#??WAWW?&DN % 5YMDN$    c                 \    | j                   j                  sy | j                   j                  S N)r,   selected_datar9   s    r   r@   zDeck.selected_data|   s&    -----r=   r:   c                 D   |D ]  }|xr t        |        t         D ]  }|j                   d}|j                   d}|j                  |j                        xs t	        j
                  |      }t        | ||       t               skt        | j                  ||        y)zQSets API key for base map provider for both HTML embedding and the Jupyter widget_key_API_KEYN)	r   r6   namegetosgetenvsetattrr   r,   )r9   r:   kprovider	attr_nameprovider_env_var
attr_values          r   r3   zDeck._set_api_keys   s    A$/!$ 'H#>>*$/I"*--9!hnn5TCS9TJD)Z0 "(()Z@ (r=   c                 &    | j                  d      S )z2Display current Deck object for a Jupyter notebookTnotebook_display)to_htmlrA   s    r   showz	Deck.show   s     ||T|22r=   c                     t        d      )a  Update a deck.gl map to reflect the current configuration

        For example, if you've modified data passed to Layer and rendered the map using `.show()`,
        you can call `update` to change the data on the map.

        Intended for use in a Jupyter environment.
        zAJupyter-specific features not currently supported in pydeck v0.9.)r   rA   s    r   updatezDeck.update   s    , "O
 	
r=   c                     | j                         }	t        |	f| j                  | j                  |||||| j                  t
        j                  t
        j                  ||d|}
|
S )a  Write a file and loads it to an iframe, if in a Jupyter environment;
        otherwise, write a file and optionally open it in a web browser

        Parameters
        ----------
        filename : str, default None
            Name of the file.
        open_browser : bool, default False
            Whether a browser window will open or not after write.
        notebook_display : bool, default None
            Display the HTML output in an iframe if True. Set to True automatically if rendering in Jupyter.
        iframe_width : str or int, default '100%'
            Width of Jupyter notebook iframe in pixels, if rendered in a Jupyter environment.
        iframe_height : int, default 500
            Height of Jupyter notebook iframe in pixels, if rendered in Jupyter or Colab.
        as_string : bool, default False
            Returns HTML as a string, if True and ``filename`` is None.
        css_background_color : str, default None
            Background color for visualization, specified as a string in any format accepted for CSS colors.

        Returns
        -------
        str
            Returns absolute path of the file
        )
mapbox_keygoogle_maps_keyfilenameopen_browserrQ   iframe_heightiframe_widthr2   r.   r/   	as_stringoffline)to_jsonr   rW   rX   r+   r-   r.   r/   )r9   rY   rZ   rQ   r\   r[   r]   r^   kwargs	deck_jsonfs              r   rR   zDeck.to_html   sq    H LLN	
 00%-'%MM,==)77
 
  r=   c                 @    | j                  d      }t        |dd      S )NTrP   data )rR   getattr)r9   htmls     r   _repr_html_zDeck._repr_html_   s#     ||T|2tVR((r=   r?   )NFNr   r   FF)__name__
__module____qualname__r	   r   r
   r   CARTOr6   r<   propertyr@   r4   r3   rS   rU   rR   rh    r=   r   r   r      s     t45$a11E$**00^%@ . .

Ad 
A3
8 5n)r=   r   )rG   sys
json_toolsr   layerr   io.htmlr   r   r-   viewr	   
view_stater
   base_map_providerr   
map_stylesr   r   r   modulesin_google_colabr   rn   r=   r   <module>ry      sF    	 
 !  " 2  ! . 5 !CKK/R)9 R)r=   