
    tni                        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
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cast)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     H/var/www/html/gpu-tools/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_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>I   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                  H   |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                    rZt          rDt!          t          t"          t$          t          t&          f         t(          f                  |          }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   r   r
   r(   r	   r   SimpleQueryr6   )r7   r8   msgquerys       r   get_str_queryrC   O   s~     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
  	P%c4i(8+(E"FGOOE*5111
	4  r!   )__doc__r   collections.abcr   r   r   typingr   r   r   r	   r
   	multidictr   _quotersr   r   r   r   r@   QueryVariabler(   Queryr    r3   r6   rC    r!   r   <module>rL      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!   