
    K:g                        d dl mZmZmZmZ d dlmZ dedeeeef      deeef   fdZdee   deeeef      fdZ	d	d
ddddddddddddddZ
dedefdZdZdeeef   deeef   fdZdeeef   deeeef   eeef   f   fdZy)     )AnyDictListTuple)InvalidParameterError
param_namevaluesreturnc                 r     t         fdt        |      D              D ci c]  \  }}||
 c}}S c c}}w )a  
    Build the dict to be used by request params from dict list

    Expected Airtable Url Params is:
        `?sort[0][field]=FieldOne&sort[0][direction]=asc`

    >>> objects = [
    ...    { "field": "FieldOne", "direction": "asc"},
    ...    { "field": "FieldTwo", "direction": "desc"},
    ... ]
    >>> dict_list_to_request_params("sort", objects)
    {
        "sort[0][field]": "FieldOne",
        "sort[0][direction]: "asc",
        "sort[1][field]": "FieldTwo",
        "sort[1][direction]: "desc",
    }
    c              3   n   K   | ],  \  }}|j                         D ]  \  }} d | d| d|f  . yw)[z][]N)items).0index
field_sortkeyvaluer   s        R/var/www/html/lionshead/venv/lib/python3.12/site-packages/pyairtable/api/params.py	<genexpr>z.dict_list_to_request_params.<locals>.<genexpr>   sP      #
%6!z(..0
U |1UG2cU!,e40 5%6s   25)sorted	enumerate)r   r	   r   r   s   `   r   dict_list_to_request_paramsr      sM    0 # #
%.v%6#
 

LS% 	U

  s   3field_namesc                 z    g }| D ]3  }|j                  d      rd}|dd }nd}||d}|j                  |       5 |S )z
    >>> field_names_to_sorting_dict(["Name", "-Age"])
    [
        { "field": "FieldOne", "direction": "asc"},
        { "field": "FieldTwo", "direction": "desc"},
    ]
    -desc   Nasc)field	direction)
startswithappend)r   r	   
field_namer!   
sort_params        r   field_names_to_sorting_dictr&   &   sS     F!
  %I#ABJI)	B
j! " M    
cellFormatfieldsfilterByFormula
maxRecordsoffsetpageSizereturnFieldsByFieldIdsorttimeZone
userLocaleviewlimitcursornextprevious)cell_formatr)   formulamax_recordsr,   	page_sizeuse_field_idsr/   	time_zoneuser_localer2   r3   r4   r5   r6   namec                 F    	 t         |    S # t        $ r t        |       w xY w)N)OPTIONS_TO_PARAMETERSKeyErrorr   )r>   s    r   _option_to_paramrB   S   s,    *$T** *#D))*s     )r=   r<   optionsc                 6   | j                         D ci c]  \  }}t        |      | }}}d|v r|j                  d      |d<   d|v rt        |d         |d<   d|v r5t	        |j                  d            }|j                  t        d|             |S c c}}w )z
    Convert Airtable options to a dict of query params.

    Args:
        options: A dict of Airtable-specific options. See :ref:`parameters`.

    Returns:
        A dict of query parameters that can be passed to the ``requests`` library.
    r)   zfields[]r.   r/   )r   rB   popintr&   updater   )rC   r>   r   paramssorting_dict_lists        r   options_to_paramsrJ   _   s     BIQut$e+FQ6#ZZ1z&(*-f5L.M*N&'7

68JK1&:KLMM Rs   Bc                 ^   | j                         D ci c]  \  }}|t        vrt        |      | }}}| j                         D ci c]  \  }}|t        v rt        |      | }}}d|v rt        |d         |d<   d|v rt	        |j                  d            |d<   ||fS c c}}w c c}}w )a  
    Convert Airtable options to a JSON payload with (possibly) leftover query params.

    Args:
        options: A dict of Airtable-specific options. See :ref:`parameters`.

    Returns:
        A 2-tuple that contains the POST data and the non-POSTable query parameters.
    r.   r/   )r   OPTIONS_NOT_SUPPORTED_VIA_POSTrB   boolr&   rE   )rC   r>   r   jsonrH   s        r   options_to_json_and_paramsrO   v   s     %]]_,MT555 	%, 	  %]]_,MT511 	%,   $&(,T2I-J(K$%~2488F3CDV&>!
s   B#B)N)typingr   r   r   r   pyairtable.exceptionsr   strr   r&   r@   rB   rL   rJ   rO    r'   r   <module>rT      s   ) ) 7c3h  
#s(^@T#Y 4S#X;O 2   ,% ,*3 *3 * "> tCH~ $sCx. .#s(^
4S>4S>)*r'   