
    p h+                     |   d Z ddlZddlmZmZmZ ddl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)AnySupportsIntUnion)istr   )QUERY_PART_QUOTERQUERY_QUOTERvreturnc                 &   t          |           }|t          u rt          |           S t          | t                    r| S t          | t                    rbt          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
isinstancefloatmathisinf
ValueErrorisnanboolr   	TypeErrorformat)r   clss     G/var/www/html/Sam_Eipo/venv/lib/python3.11/site-packages/yarl/_query.py	query_varr      s    
q''C
czz1vv!S !U :a== 	><===:a== 	><===588}}
$:a55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>2   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_iterabler1   (   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>I   sb       KO1a66!99FFvv477c>>aay||DDFF  r   r,   r-   r/   s     @r   get_str_query_from_iterabler4   <   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   dictr1   r    r   r   r   r   bytes	bytearray
memoryviewr   r   r4   )r5   r6   msgquerys       r   get_str_queryr@   O   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   	multidictr	   _quotersr   r   r   r   SimpleQueryQueryVariabler&   Queryr   r1   r4   r@    r   r   <module>rJ      s      7 7 7 7 7 7 7 7 7 7 * * * * * * * * * *       5 5 5 5 5 5 5 5Ce+,k8K#889#wsM)*HU3;M5N,OO	
     ,E%T	*M9:;   (E%T	*K789   &# # #c4i0@ # # # # # #r   