U
    ·ÜŸjî  ã                   @  sò   d dl mZ d dlmZmZmZmZmZmZ d dl	m
Z
mZ d dlmZmZ ddlmZmZmZ ddlmZ edƒZed	 Zed
 Zeeeeedf Zeeee ee df Zeeef ZG dd„ dƒZeƒ Z e j!Z!e j"Z"e j#Z#G dd„ dƒZ$dS )é    )Úannotations)ÚAnyÚListÚTupleÚUnionÚMappingÚTypeVar)Úparse_qsÚ	urlencode)ÚLiteralÚget_argsé   )Ú	NOT_GIVENÚNotGivenÚ
NotGivenOr)ÚflattenÚ_T)ÚcommaÚrepeatÚindicesÚbrackets)Údotsr   NzMapping[str, Any]c                   @  s¤   e Zd ZU ded< ded< dddœdddd	œd
d„Zdddœdd„Zeedœdddddœdd„Zeedœdddddœdd„Zdddddœdd„Z	ddd œd!d"„Z
d#S )$ÚQuerystringÚArrayFormatÚarray_formatÚNestedFormatÚnested_formatr   r   ©r   r   ÚNone)r   r   Úreturnc                C  s   || _ || _d S ©Nr   )Úselfr   r   © r"   ú./tmp/pip-unpacked-wheel-2qj3ofc_/openai/_qs.pyÚ__init__   s    zQuerystring.__init__ÚstrzMapping[str, object])Úqueryr   c                 C  s   t |ƒS r    )r	   )r!   r&   r"   r"   r#   Úparse$   s    zQuerystring.parseÚParamsúNotGivenOr[ArrayFormat]úNotGivenOr[NestedFormat])Úparamsr   r   r   c                C  s   t | j|||d�ƒS )Nr   )r
   Ústringify_items©r!   r+   r   r   r"   r"   r#   Ú	stringify(   s    ýÿzQuerystring.stringifyzlist[tuple[str, str]]c                  s*   t ˆ||d�‰ t‡ ‡fdd„| ¡ D ƒƒS )N)Úqsr   r   c                   s   g | ]\}}ˆ  ||ˆ ¡‘qS r"   )Ú_stringify_item)Ú.0ÚkeyÚvalue©Úoptsr!   r"   r#   Ú
<listcomp>C   s     z/Querystring.stringify_items.<locals>.<listcomp>)ÚOptionsr   Úitemsr-   r"   r4   r#   r,   7   s    ýzQuerystring.stringify_itemsÚDatar7   )r2   r3   r5   r   c              	     sP  t |tƒr`g }|j}| ¡ D ]>\}}| ˆ  |dkrB|› d|› �n|› d|› d�||¡¡ q|S t |ttfƒ�r2|j}|dkrœ|d 	‡ fdd„|D ƒ¡fgS |d	krÊg }|D ]}	| ˆ  ||	|¡¡ q¬|S |d
krÜt
dƒ‚nV|dk�rg }|d }|D ]}	| ˆ  ||	|¡¡ qö|S t
d|› dd 	ttƒ¡› �ƒ‚ˆ  |¡}
|
�sFg S ||
fgS )Nr   Ú.ú[ú]r   ú,c                 3  s    | ]}|d k	rˆ   |¡V  qd S r    )Ú_primitive_value_to_str)r1   Úitem©r!   r"   r#   Ú	<genexpr>_   s      z.Querystring._stringify_item.<locals>.<genexpr>r   r   z-The array indices format is not supported yetr   z[]zUnknown array_format value: z, choose from z, )Ú
isinstancer   r   r8   Úextendr0   ÚlistÚtupler   ÚjoinÚNotImplementedErrorr   r   r>   )r!   r2   r3   r5   r8   r   ÚsubkeyZsubvaluer   r?   Z
serialisedr"   r@   r#   r0   E   sN    
$üÿþÿ

ÿ
zQuerystring._stringify_itemÚPrimitiveData)r3   r   c                 C  s,   |dkrdS |dkrdS |d kr$dS t |ƒS )NTÚtrueFÚfalseÚ )r%   )r!   r3   r"   r"   r#   r>   y   s    z#Querystring._primitive_value_to_strN)Ú__name__Ú
__module__Ú__qualname__Ú__annotations__r$   r'   r   r.   r,   r0   r>   r"   r"   r"   r#   r      s   
ü	ûû4r   c                   @  s>   e Zd ZU ded< ded< efeedœdddd	d
œdd„ZdS )r7   r   r   r   r   r   r   r)   r*   r   )r/   r   r   r   c                C  s0   t |tƒr|jn|| _t |tƒr&|jn|| _d S r    )rB   r   r   r   )r!   r/   r   r   r"   r"   r#   r$   Ž   s    zOptions.__init__N)rM   rN   rO   rP   Ú_qsr   r$   r"   r"   r"   r#   r7   Š   s   
þûr7   )%Ú
__future__r   Útypingr   r   r   r   r   r   Úurllib.parser	   r
   Útyping_extensionsr   r   Ú_typesr   r   r   Ú_utilsr   r   r   r   r%   ÚintÚfloatÚboolrI   r9   r(   r   rQ   r'   r.   r,   r7   r"   r"   r"   r#   Ú<module>   s"    m