a
    7g                     @   s  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eedd	d
Zeee
eef ef  edddZeee
eef ef  edddZeee
edf dd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                 C   s   t | }|tu rt| S t|tr8tr4t| ts4J | S |tu sJt|trtr\t| ts\J t| rnt	dt
| rt	dtt| S |turt|trtt| S td| |dS )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 {}N)typeintstr
issubclassr   
isinstancefloatmathisinf
ValueErrorisnanboolr   	TypeErrorformat)r   cls r   h/var/www/vosh/data/www/fastworkle.ru/webshop-tgbot-v.1.0/venv/lib/python3.9/site-packages/yarl/_query.py	query_var   s,    


r   )itemsr   c                    s    t   fd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                    sd   g | ]\\}}t |tur*t|ttfr*|n|fD ].} | d  t |tu rP|nt| q0qS =)r   r   r   listtupler   ).0kvalr   quoterr   r   
<listcomp>6   s   &z8get_str_query_from_sequence_iterable.<locals>.<listcomp>&r   joinr    pairsr   r(   r   $get_str_query_from_sequence_iterable,   s
    	
r0   c                    s    t   fd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                    s:   g | ]2\}} | d  t |tu r(|nt| qS r!   )r   r   r   )r%   r&   r   r(   r   r   r*   M   s   z/get_str_query_from_iterable.<locals>.<listcomp>r+   r,   r.   r   r(   r   get_str_query_from_iterable@   s
    

r1   )argskwargsr   c                  O   s   |r| rd}t ||}nt| dkr0| d }nt d|du rDdS |sLdS t|tu rdt| S t|tu szt|trt|S t|t	rt| S t|t
ttfrd}t|t|trt|S tddS )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   dictr0   r    r   r   r   r   bytes	bytearray
memoryviewr   r   r1   )r2   r3   msgqueryr   r   r   get_str_queryS   s4    


r<   )__doc__r   collections.abcr   r   r   typingr   r   r   r   Z	multidictr	   Z_quotersr   r   r   r   r   ZSimpleQueryZQueryVariabler$   ZQueryr   r0   r1   r<   r   r   r   r   <module>   s$   