o
    /i                     @   s\   d Z ddlZddlZdddZdddZdd	 Zdd
dZdddZdddZdddZ	dS )zHelpers for rest transports.    NFc                 C   s(   | durt | tstdt| g |dS )a  Flatten a dict into a list of (name,value) tuples.

    The result is suitable for setting query params on an http request.

    .. code-block:: python

        >>> obj = {'a':
        ...         {'b':
        ...           {'c': ['x', 'y', 'z']} },
        ...      'd': 'uvw',
        ...      'e': True, }
        >>> flatten_query_params(obj, strict=True)
        [('a.b.c', 'x'), ('a.b.c', 'y'), ('a.b.c', 'z'), ('d', 'uvw'), ('e', 'true')]

    Note that, as described in
    https://github.com/googleapis/googleapis/blob/48d9fb8c8e287c472af500221c6450ecd45d7d39/google/api/http.proto#L117,
    repeated fields (i.e. list-valued fields) may only contain primitive types (not lists or dicts).
    This is enforced in this function.

    Args:
      obj: a possibly nested dictionary (from json), or None
      strict: a bool, defaulting to False, to enforce that all values in the
              result tuples be strings and, if boolean, lower-cased.

    Returns: a list of tuples, with each tuple having a (possibly) multi-part name
      and a scalar value.

    Raises:
      TypeError if obj is not a dict or None
      ValueError if obj contains a list of non-primitive values.
    Nz4flatten_query_params must be called with dict objectkey_pathstrict)
isinstancedict	TypeError_flatten)objr    r
   P/var/www/passon-env/lib/python3.10/site-packages/google/api_core/rest_helpers.pyflatten_query_params   s   !r   c                 C   sJ   | d u rg S t | trt| ||dS t | trt| ||dS t| ||dS )Nr   )r   r   _flatten_dictlist_flatten_list_flatten_valuer	   r   r   r
   r
   r   r   <   s   

r   c                 C   s&   | d u rdS t | ttfrtddS )NFz4query params may not contain repeated dicts or listsT)r   r   r   
ValueError)r	   r
   r
   r   _is_primitive_valueF   s
   r   c                 C   s   d |t| |dfgS )N.)r   )join_canonicalizer   r
   r
   r   r   P   s   r   c                    s(    fdd|   D }ttj|g S )Nc                 3   s(    | ]\}}t | |g d V  qdS r   N)r   ).0keyvaluer   r
   r   	<genexpr>U   s
    
z _flatten_dict.<locals>.<genexpr>)items	functoolsreduceoperatorconcat)r	   r   r   r   r
   r   r   r   T   s   r   c                    s$    fdd| D }t tj|g S )Nc                 3   s&    | ]}t |rt| d V  qdS r   )r   r   )r   elemr   r
   r   r   _   s    
z _flatten_list.<locals>.<genexpr>)r   r   r   r    )elemsr   r   r   r
   r   r   r   \   s   r   c                 C   s&   |rt | }t| tr| }|S | S )N)strr   boollower)r	   r   r   r
   r
   r   r   g   s   
r   )F)
__doc__r   r   r   r   r   r   r   r   r   r
   r
   r
   r   <module>   s   

'




