o
    &zh/                     @   sv   d dl Z d dlmZmZ d dlmZmZ dd Zdd Zde	d	e	fd
dZ
de	d	e	fddZdee d	efddZdS )    N)ChainMapOrderedDict)DictListc                 C   s    t dd| }t dd| S )z5
    converts camelCase to snake_case for python
    z(.)([A-Z][a-z]+)z\1_\2z([a-z0-9])([A-Z]))resublower)names1 r   U/var/www/html/kangema/venv/lib/python3.10/site-packages/imagekitio/utils/formatter.pycamel_to_snake   s   r   c                 C   s6   |  d}|r|d ddd |dd D  S | S )ze
    changes word snake to  lower camelCase example: my_plan -> MyPlan
    :return camelCaseWord
    _r    c                 s   s    | ]}|  V  qd S )N)title).0xr   r   r   	<genexpr>   s    z'snake_to_lower_camel.<locals>.<genexpr>   N)splitjoin)word	word_listr   r   r   snake_to_lower_camel   s   
$r   datareturnc                 C      dd |   D S )zConverts all keys to camelCase format required for ImageKit server
    :param data: dict()
    :return: converted_dict -> dict()
    c                 S      i | ]	\}}t ||qS r   )r   r   keyvalr   r   r   
<dictcomp>       z%request_formatter.<locals>.<dictcomp>itemsr   r   r   r   request_formatter   s   r&   c                 C   r   )z<Convert the keys of dictionary from camel case to snake casec                 S   r   r   )r   r   r   r   r   r!   #   r"   z,camel_dict_to_snake_dict.<locals>.<dictcomp>r#   r%   r   r   r   camel_dict_to_snake_dict!   s   r'   	dict_listc                 C   s   t  }| D ]}|| q|S )zrConvert list of dictionary to flatten dict
    :param dict_list: list of dictionary
    :return: flatten_dict
    )r   update)r(   	flat_dictdict_varr   r   r   flatten_dict&   s   r,   )r   collectionsr   r   typingr   r   r   r   dictr&   r'   r,   r   r   r   r   <module>   s    