Ë
    ómxi…  ã                   ó†   — d dl Z d dlZddlmZmZmZ ddlmZm	Z	 ddl
m
Z d dlmZmZ d dlmZ d	Zd
Zh d£Z G d„ de«      Zy)é    Né   )Úis_pandas_dfÚhas_geo_interfaceÚrecords_from_geo_interfaceé   )Ú	JSONMixinÚcamel_and_lower)Úsettings)ÚImageÚFunction)ÚBinaryTransportExceptionz@@typez@@=>   ú"ú'ú`c                   óŽ   — e Zd Zd
d„Zed„ «       Zej                  d„ «       Zd„ Zd„ Zed„ «       Z	e	j                  d„ «       Z	d	„ Z
y)ÚLayerNc                 óà  — || _         |xs t        t        j                  «       «      | _        | j                  |«      }|j                  «       | _        |�r||j                  «       D �]M  \  }}t        |t        «      r/|d   t        v r$|d   |d   k(  r|j                  |d   d«      ||<   ŒFt        |t        «      r$t        j                  |«      rt        |«      ||<   Œzt        |t        «      rt        |z   ||<   Œ—t        |t        «      r‚|g k7  r}t        |d   t        «      rjd}t!        |«      D ]?  \  }	}
|	t#        |«      dz
  k(  r|dj%                  |
«      z  }Œ,|dj%                  |
«      z  }ŒA dj%                  t        |«      ||<   �Œ)t        |t&        «      s�Œ;|j)                  «       ||<   �ŒP | j*                  j-                  |«       d| _        || _        d| _        || _        y)	a   Configures a deck.gl layer for rendering on a map. Parameters passed
        here will be specific to the particular deck.gl layer that you are choosing to use.

        Please see the deck.gl
        `Layer catalog <https://deck.gl/docs/api-reference/layers>`_
        to determine the particular parameters of your layer. You are highly encouraged to look
        at the examples in the pydeck documentation.

        Parameters
        ==========

        type : str
            Type of layer to render, e.g., `HexagonLayer`
        id : str, default None
            Unique name for layer
        data : str or list of dict of {str: Any} or pandas.DataFrame, default None
            Either a URL of data to load in or an array of data
        use_binary_transport : bool, default None
            Boolean indicating binary data
        **kwargs
            Any of the parameters passable to a deck.gl layer.

        Examples
        ========

        For example, here is a HexagonLayer which reads data from a URL.

          >>> import pydeck
          >>> # 2014 location of car accidents in the UK
          >>> UK_ACCIDENTS_DATA = ('https://raw.githubusercontent.com/uber-common/'
          >>>                     'deck.gl-data/master/examples/3d-heatmap/heatmap-data.csv')
          >>> # Define a layer to display on a map
          >>> layer = pydeck.Layer(
          >>>     'HexagonLayer',
          >>>     UK_ACCIDENTS_DATA,
          >>>     get_position=['lng', 'lat'],
          >>>     auto_highlight=True,
          >>>     elevation_scale=50,
          >>>     pickable=True,
          >>>     elevation_range=[0, 3000],
          >>>     extruded=True,
          >>>     coverage=1)

        Alternately, input can be a pandas.DataFrame:

          >>> import pydeck
          >>> df = pd.read_csv(UK_ACCIDENTS_DATA)
          >>> layer = pydeck.Layer(
          >>>     'HexagonLayer',
          >>>     df,
          >>>     get_position=['lng', 'lat'],
          >>>     auto_highlight=True,
          >>>     elevation_scale=50,
          >>>     pickable=True,
          >>>     elevation_range=[0, 3000],
          >>>     extruded=True,
          >>>     coverage=1)
        r   éÿÿÿÿÚ r   z{}z{}, z{}[{}]N)ÚtypeÚstrÚuuidÚuuid4ÚidÚ_add_default_layer_attributesÚcopyÚ_kwargsÚitemsÚ
isinstanceÚQUOTE_CHARSÚreplacer   ÚvalidateÚFUNCTION_IDENTIFIERÚlistÚ	enumerateÚlenÚformatr   Ú	serializeÚ__dict__ÚupdateÚ_dataÚuse_binary_transportÚ_binary_dataÚdata)Úselfr   r.   r   r,   ÚkwargsÚkÚvÚarray_as_strÚiÚ
identifiers              úL/home/htdocs/ttos/venv/lib/python3.12/site-packages/pydeck/bindings/layer.pyÚ__init__zLayer.__init__   s§  € ðv ˆŒ	ØÒ)œœDŸJ™J›LÓ)ˆŒà×3Ñ3°FÓ;ˆð —{‘{“}ˆŒâØŸ™›ó .‘��1ô ˜a¤Ô%¨!¨A©$´+Ñ*=À!ÀAÁ$È!ÈBÉ%Â-à !§	¡	¨!¨A©$°Ó 3�F˜1’IÜ ¤3Ô'¬E¯N©N¸1Ô,=ä % a£�F˜1’IÜ ¤3Ô'ä 3°aÑ 7�F˜1’IÜ ¤4Ô(¨Q°"ªW¼ÀAÀaÁDÌ#Ô9Nà#%�LÜ)2°1«ò F™˜˜:Ø¤ A£¨¡
š?Ø(¨D¯K©K¸
Ó,CÑC™Là(¨F¯M©M¸*Ó,EÑE™Lð	Fð
 !)§¡Ô0CÀ\Ó R�F˜1“IÜ ¤8Ö,Ø !§¡£�F˜1“Ið5.ð8 �M‰M× Ñ  Ô(àˆŒ
Ø$8ˆÔ!Ø ˆÔØˆ�	ó    c                 ó   — | j                   S ©N)r+   ©r/   s    r6   r.   z
Layer.dataz   s   € à�z‰zÐr8   c                 óÖ   — | j                   r| j                  |«      | _        yt        |«      r|j	                  d¬«      | _        yt        |«      rt        |«      | _        y|| _        y)z±Make the data attribute a list no matter the input type, unless
        use_binary_transport is specified, which case we circumvent
        serializing the data to JSON
        Úrecords)ÚorientN)r,   Ú_prepare_binary_datar-   r   Úto_dictr+   r   r   )r/   Údata_sets     r6   r.   z
Layer.data~   sX   € ð ×$Ò$Ø $× 9Ñ 9¸(Ó CˆDÕÜ˜(Ô#Ø!×)Ñ)°Ð)Ó;ˆD�JÜ˜xÔ(Ü3°HÓ=ˆD�Jà!ˆD�Jr8   c                 óH   — | j                   st        d«      ‚| j                  S )Nz6Layer must be flagged with `use_binary_transport=True`)r,   r   r-   r;   s    r6   Úget_binary_datazLayer.get_binary_data�   s#   € Ø×(Ò(Ü*Ð+cÓdÐdØ× Ñ Ð r8   c           	      óÀ  — t        |«      st        d«      ‚| j                  }|j                  «       D ��ci c]%  \  }}t	        |«      t
        t        t        fvsŒ#||“Œ' }}}g }|j                  D ]d  }t        j                  ||   j                  «       «      }| j                  ||   = |j                  | j                  |t        ||   «      |dœ«       Œf |S c c}}w )Nz,Layer data must be a `pandas.DataFrame` type)Úlayer_idÚcolumn_nameÚaccessorÚnp_data)r   r   r   r   r   r$   ÚdictÚsetÚcolumnsÚnpÚstackÚto_numpyr)   Úappendr   r	   )	r/   rA   Úlayer_accessorsr1   r2   Úinverted_accessor_mapÚbinary_transmissionÚcolumnrH   s	            r6   r?   zLayer._prepare_binary_data’   sá   € ô ˜HÔ%Ü*Ð+YÓZÐZàŸ,™,ˆØ2A×2GÑ2GÓ2I× n©$¨!¨QÌTÐRSËWÔ]aÔcgÔilÐ\mÒMm  A¡Ð nÐÑ nà Ðà×&Ñ&ò 	ˆFä—h‘h˜x¨Ñ/×8Ñ8Ó:Ó;ˆGà—‘Ð3°FÑ;Ð<Ø×&Ñ&à $§¡Ø#)Ü /Ð0EÀfÑ0MÓ NØ&ñ	õð	ð #Ð"ùó# !os   ¶$CÁCc                 ó"   — t        | t        «      S r:   )ÚgetattrÚTYPE_IDENTIFIERr;   s    r6   r   z
Layer.type¬   s   € ä�tœ_Ó-Ð-r8   c                 ó0   — | j                  t        |«       y r:   )Ú__setattr__rV   )r/   Ú	type_names     r6   r   z
Layer.type°   s   € à×Ñœ¨)Õ4r8   c                 óÂ   — t         j                  }t        |t        «      r>| j                  |v r0t        || j                     t        «      ri || j                     ¥|¥}|S r:   )Úpydeck_settingsÚdefault_layer_attributesr   rI   r   )r/   r0   Ú
attributess      r6   r   z#Layer._add_default_layer_attributes´   sV   € Ü$×=Ñ=ˆ
ä�j¤$Ô'¨D¯I©I¸Ñ,CÌ
ÐS]Ð^b×^gÑ^gÑShÔjnÔHoØ8˜
 4§9¡9Ñ-Ð8°Ð8ˆFàˆr8   )NNN)Ú__name__Ú
__module__Ú__qualname__r7   Úpropertyr.   ÚsetterrC   r?   r   r   © r8   r6   r   r      sp   „ óeðN ñó ðð 
‡[�[ñ"ó ð"ò!ò
#ð4 ñ.ó ð.ð 
‡[�[ñ5ó ð5ór8   r   )r   ÚnumpyrL   Ú
data_utilsr   r   r   Ú
json_toolsr   r	   r
   r[   Úpydeck.typesr   r   Úpydeck.exceptionsr   rV   r#   r    r   rc   r8   r6   ú<module>ri      s=   ðÛ ã ç TÑ Tß 2Ý 2ç (Ý 6ð €ØÐ Ú€ôhˆIõ hr8   