
    Ng                        d Z ddlZddlmZmZmZ ddlmZmZm	Z	m
Z
 ddlmZ ddlmZmZ e
eeef         Ze
eee         f         Ze
deeeef         eeeef                  f         Zded	efd
Zdeee
eef         ef                  d	efdZdeee
eef         ef                  d	efdZdeded	e
edf         fdZdS )zQuery string handling.    N)IterableMappingSequence)TYPE_CHECKINGAnySupportsIntUnion)istr   )QUERY_PART_QUOTERQUERY_QUOTERvreturnc                    t          |           }|t          u rt          |           S t          |t                    r t          rt          | t                    sJ | S |t          u st          |t                    rt          rt          | t                    sJ t          j        |           rt          d          t          j
        |           rt          d          t          t          |                     S |t          ur1t          |t                    rt          t          |                     S t          d                    | |                    )z%Convert a query variable to a string.zfloat('inf') is not supportedzfloat('nan') is not supportedzMInvalid variable type: value should be str, int or float, got {!r} of type {})typeintstr
issubclassr   
isinstancefloatmathisinf
ValueErrorisnanboolr   	TypeErrorformat)r   clss     G/var/www/html/ai-engine/env/lib/python3.11/site-packages/yarl/_query.py	query_varr       s(   
q''C
czz1vv#s  	&a%%%%%
e||z#u--| 	(a''''':a== 	><===:a== 	><===588}}
$:c;773q66{{
	VAs^^      itemsc                 X    t           fd| D             }d                    |          S )zReturn a query string from a sequence of (key, value) pairs.

    value is a single value or a sequence of values for the key

    The sequence of values must be a list or tuple.
    c           
         g | ]}\  }}t          |          t          urt          |t          t          f          r|n|fD ]@} |           d  t          |          t          u r|nt          |                     A~S =)r   r   r   listtupler    ).0kvalr   quoters       r   
<listcomp>z8get_str_query_from_sequence_iterable.<locals>.<listcomp>6   s       As99C''JsT5M,J,J'CCQTPV	   6!99FFvv477c>>aay||DDFF   r!   &r   joinr"   pairsr,   s     @r   $get_str_query_from_sequence_iterabler3   ,   sD     F     E 88E??r!   c                 X    t           fd| D             }d                    |          S )zReturn a query string from an iterable.

    The iterable must contain (key, value) pairs.

    The values are not allowed to be sequences, only single values are
    allowed. For sequences, use `_get_str_query_from_sequence_iterable`.
    c           	          g | ]C\  }} |           d  t          |          t          u r|nt          |                     DS r%   )r   r   r    )r)   r*   r   r,   s      r   r-   z/get_str_query_from_iterable.<locals>.<listcomp>M   sb       KO1a66!99FFvv477c>>aay||DDFF  r!   r.   r/   r1   s     @r   get_str_query_from_iterabler6   @   sD     F   SX  E 88E??r!   argskwargsc                     |r| rd}t          |          |}n+t          |           dk    r	| d         }nt          d          |dS |sdS t          |          t          u r!t	          |                                          S t          |          t          u st          |t                    rt          |          S t          |t                    r!t	          |                                          S t          |t          t          t          f          rd}t          |          t          |t                    rt          |          S t          d          )z*Return a query string from supported args.z7Either kwargs or single query parameter must be presentr   r   N zAInvalid query type: bytes, bytearray and memoryview are forbiddenzRInvalid query type: only str, mapping or sequence of (key, value) pairs is allowed)r   lenr   dictr3   r"   r   r   r   r   bytes	bytearray
memoryviewr   r   r6   )r7   r8   msgquerys       r   get_str_queryrB   S   sN     T 	"KCS//!	TaQRSSS}t rE{{d3EKKMMBBBE{{cZs33E"""%!! C3EKKMMBBB%%J788 Qnn%"" 2
 +5111
	4  r!   )__doc__r   collections.abcr   r   r   typingr   r   r   r	   	multidictr
   _quotersr   r   r   r   r   SimpleQueryQueryVariabler(   Queryr    r3   r6   rB    r!   r   <module>rL      s      7 7 7 7 7 7 7 7 7 7 9 9 9 9 9 9 9 9 9 9 9 9       5 5 5 5 5 5 5 5CeO$k8K#889#wsM)*HU3;M5N,OO	
 3    4E%T	*M9:;   (E%T	*K789   &# # #c4i0@ # # # # # #r!   