
    ue(
                     j    d Z ddlZddlmZ g dZd Zd Zd Zd Zefd	Z	d
 Z
 G d de          ZdS )z'
Support serializing objects into JSON
    N)
PydeckType)
mapbox_keygoogle_maps_keydeck_widgetbinary_data_sets_binary_data_tooltip_kwargsc                     d}d}t          |           D ]4\  }}|dk    r	|dk    rd}|r||                                z   n||z   }d}5|S )a.  Makes a snake case string into a camel case one

    Parameters
    -----------
    snake_case : str
        Snake-cased string (e.g., "snake_cased") to be converted to camel-case (e.g., "camelCase")

    Returns
    -------
    str
        Camel-cased (e.g., "camelCased") version of input string
     F_r   T)	enumerateupper)
snake_case
output_strshould_upper_caseics        :lib/python3.11/site-packages/pydeck/bindings/json_tools.pyto_camel_caser      st     J*%% " "188Q $/@TZ!''))++jSTn
!    c                 X    | r'| d d                                          | dd          z   ndS )N   r   )lower)ss    r   lower_first_letterr   ,   s/    $%-1RaR5;;==1QRR5  2-r   c                 :    t          t          |                     S N)r   r   )ws    r   camel_and_lowerr    0   s    mA..///r   c                     t          |                                           D ]7}d|vr|dk    rd}nt          |          }|                     |          | |<   8dS )zMakes all the keys in a dictionary camel-cased and lower-case

    Parameters
    ----------
    attrs : dict
        Dictionary for which all the keys should be converted to camel-case
    r   _datadataN)listkeysr    pop)attrs	snake_key	camel_keys      r   lower_camel_case_keysr*   4   ss     %**,,'' 0 0	iII'	22I 99Y//i0 0r   c                     t          t          |           t                    rt          |           S t	          |           }d |                                D             }t          D ]}|                    |          r||= |r ||           |S )z3Default method for rendering JSON from a dictionaryc                     i | ]
\  }}|||S r    ).0kvs      r   
<dictcomp>z%default_serialize.<locals>.<dictcomp>K   s    ===daq}Q}}}r   )
issubclasstyper   reprvarsitemsIGNORE_KEYSget)oremap_functionr'   ignore_attrs       r   default_serializer<   F   s    $q'':&& AwwGGE==ekkmm===E" # #99[!! 	#k" uLr   c                 <    t          j        | dt          d          S )z,Takes a serializable object and JSONifies itT   )	sort_keysdefaultindent)jsondumpsr<   )serializables    r   	serializerE   T   s    :ld<MVWXXXXr   c                       e Zd Zd Zd ZdS )	JSONMixinc                      t          |           S )zu
        Override of string representation method to return a JSON-ified version of the
        Deck object.
        rE   selfs    r   __repr__zJSONMixin.__repr__Z   s    
 r   c                      t          |           S )zA
        Return a JSON-ified version of the Deck object.
        rI   rJ   s    r   to_jsonzJSONMixin.to_jsona   s     r   N)__name__
__module____qualname__rL   rN   r-   r   r   rG   rG   Y   s2              r   rG   )__doc__rB   pydeck.types.baser   r7   r   r   r    r*   r<   rE   objectrG   r-   r   r   <module>rU      s      ( ( ( ( ( (    0. . .0 0 00 0 0$ )>    Y Y Y
         r   