
    g(
                     b    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y)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 ].  \  }}|dk(  r|dk7  rd}|r||j                         z   n||z   }d}0 |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        O/var/www/openai/venv/lib/python3.12/site-packages/pydeck/bindings/json_tools.pyto_camel_caser      s_     J*%18Q $/@Z!'')+jSTn
! &     c                 <    | r| d d j                         | dd  z   S dS )N   r   )lower)ss    r   lower_first_letterr   ,   s&    $%1Ra5;;=1QR5 -2-r   c                 *    t        t        |             S )N)r   r   )ws    r   camel_and_lowerr   0   s    mA.//r   c                     t        | j                               D ].  }d|vr|dk(  rd}nt        |      }| j                  |      | |<   0 y)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   sN     %**,'	iI'	2I 99Y/i (r   c                    t        t        |       t              rt        |       S t	        |       }|j                         D ci c]  \  }}|	|| }}}t        D ]  }|j                  |      s||=  |r ||       |S c c}}w )z3Default method for rendering JSON from a dictionary)
issubclasstyper   reprvarsitemsIGNORE_KEYSget)oremap_functionr&   kvignore_attrs         r   default_serializer7   F   s}    $q':&AwGE#kkm=mdaq}QTmE="99[!k" # uL >s   
BBc                 <    t        j                  | dt        d      S )z,Takes a serializable object and JSONifies itT   )	sort_keysdefaultindent)jsondumpsr7   )serializables    r   	serializer@   T   s    ::ld<MVWXXr   c                       e Zd Zd Zd Zy)	JSONMixinc                     t        |       S )zu
        Override of string representation method to return a JSON-ified version of the
        Deck object.
        r@   selfs    r   __repr__zJSONMixin.__repr__Z   s    
 r   c                     t        |       S )zA
        Return a JSON-ified version of the Deck object.
        rD   rE   s    r   to_jsonzJSONMixin.to_jsona   s     r   N)__name__
__module____qualname__rG   rI    r   r   rB   rB   Y   s    r   rB   )__doc__r=   pydeck.types.baser   r0   r   r   r   r)   r7   r@   objectrB   rM   r   r   <module>rQ      sI     (0.00$ )> Y
 r   