o
    tBh:                     @   sh   d Z ddlmZmZmZmZmZ dd Zdedeee df deeef fd	d
Zdede	fddZ
dS )z/Utilities to manipulate several python objects.    )AnyDictListTupleTypec                 C   s.   |  d}|d ddd |dd  D  S )N_r    c                 s   s     | ]}|r
|  nd V  qdS )r   N)title).0x r   `/var/www/html/riverr-enterprise-integrations-main/venv/lib/python3.10/site-packages/gql/utils.py	<genexpr>   s    z to_camel_case.<locals>.<genexpr>   )splitjoin)	snake_str
componentsr   r   r   to_camel_case   s   
$r   	variablesfile_classes.returnc                    s&   i  fddd| }|fS )Nc                    s   t |tr!g }t|D ]\}}|  d| |}|| q|S t |trAi }| D ]\}}|  d| |}|||< q,|S t | rL|| < dS |S )z
        recursively traverse obj, doing a deepcopy, but
        replacing any file-like objects with nulls and
        shunting the originals off to the side.
        .N)
isinstancelist	enumerateappenddictitems)pathobj
nulled_objkeyvaluer   filesrecurse_extractr   r   r&      s    



z&extract_files.<locals>.recurse_extractr   r   )r   r   nulled_variablesr   r$   r   extract_files   s   
r(   errorsc              	   C   s4   z	| d }W t|S  t tfy   | }Y t|S w )Nr   )KeyError	TypeErrorstr)r)   first_errorr   r   r   str_first_element4   s   
r.   N)__doc__typingr   r   r   r   r   r   r(   r,   r.   r   r   r   r   <module>   s    

%