
    
FZj                         d Z ddlZddlmZ ddlmZmZmZmZ deeef   deeef   fdZ	deeef   deeef   fdZ
ddeeef   d	ed
ee   deedf   fdZy)zm
mygeotab.parameters
~~~~~~~~~~~~~~~~~~~

This module contains parameter utilities used in the MyGeotab API.
    N)copy)AnyOptionalDictUnion
parametersreturnc                     | s
t               S t        |       }| D ]H  }| |   }t        j                  dd |      }t	        |t               rt        |      }|||<   ||k7  sF||= J |S )zAllows the use of Pythonic-style parameters with underscores instead of camel-case.

    :param parameters: The parameters object.
    :type parameters: dict
    :return: The processed parameters.
    :rtype: dict
    z_(\w)c                 @    | j                  d      j                         S )N   )groupupper)ms    UC:\Users\Rodrigo\frota-trucks-cliente\python\Lib\site-packages\mygeotab/parameters.py<lambda>z)camelcaseify_parameters.<locals>.<lambda>   s    qwwqz7G7G7I    )dictr   resub
isinstancecamelcaseify_parameters)r   params
param_namevalueserver_param_names        r   r   r      sv     v*F 
:&FF8-I:VeT"+E2E$) !
*z" ! Mr   c                     | s
t               S t        |       } t        | dd      }t        | dd      }t        | d      }d| v r| j                  | d          | d= d| i}|||d<   |||d<   |||d<   |S )a  Converts parameters passed into a get() call to a format suitable for the MyGeotab API.
    It detects if a 'search' dictionary is passed and flattens it into the top-level parameters.
    It also detects 'resultsLimit'/'results_limit' or 'sort' parameters and removes them from the parameters
    so they doesn't become part of the search.

    :param parameters: The parameters object.
    :type parameters: dict
    :return: The processed parameters.
    :rtype: dict
    resultsLimitresults_limitpropertySelectorproperty_selectorsortsearch)r   r   _try_extract_get_parameterupdate)r   results_limit_paramproperty_selector_param
sort_paramresults        r   convert_get_parametersr)   %   s     vj!J4ZQ`a8EWYlm+J?J:*X./x 
#F&!4~*%<!"#vMr   namepythonic_namec                 f    | j                  |      }|| |= |S || j                  |      }|| |= |S )zPHelper to get a parameter from a dictionary, returning None if it doesn't exist.)get)r   r*   r+   	parameters       r   r#   r#   G   sP    t$It
 	 
	"NN=1	 =)r   )N)__doc__r   r   typingr   r   r   r   strr   r)   r#    r   r   <module>r3      s    
  - -S#X 4S> ,tCH~ $sCx. D	4S> 	 	U]^aUb 	nstwy}t}n~ 	r   