a
    &h+                     @   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	 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)AnySupportsIntUnion)istr   )QUERY_PART_QUOTERQUERY_QUOTER)vreturnc                 C   s   t | }|tu rt| S t| tr&| S t| tr`t| rBtdt| rTtdtt| S |t	ur~t| t
r~t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
isinstancefloatmathisinf
ValueErrorisnanboolr   	TypeErrorformat)r   cls r   P/var/www/html/swiplay.fr/scambot/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   Zquoterr   r   
<listcomp>2   s   &z8get_str_query_from_sequence_iterable.<locals>.<listcomp>&r
   joinr   pairsr   r&   r   $get_str_query_from_sequence_iterable(   s
    	
r-   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'   I   s   z/get_str_query_from_iterable.<locals>.<listcomp>r(   r)   r+   r   r&   r   get_str_query_from_iterable<   s
    

r.   )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   dictr-   r   r   r   r   r   bytes	bytearray
memoryviewr   r   r.   )r/   r0   msgZqueryr   r   r   get_str_queryO   s4    


r8   )__doc__r   collections.abcr   r   r   typingr   r   r   	multidictr   Z_quotersr
   r   r   r   SimpleQueryQueryVariabler"   Queryr   r-   r.   r8   r   r   r   r   <module>   s$   