
    |h                    B    d dl mZ d dlZd dlmZ d dlZ G d de      Zy)    )annotationsN)MutableMappingc                      e Zd ZdZej
                  j                  ej
                  j                  ff	 	 	 	 	 ddZddZ	ddZ
ddZddZddZddZdd	Zdd
ZddZddZddZddZddZy)MultiDictProxyal  
    A proxy object which wraps multidict types along with a matching schema
    Whenever a value is looked up, it is checked against the schema to see if
    there is a matching field where `is_multiple` is True. If there is, then
    the data should be loaded as a list or tuple.

    In all other cases, __getitem__ proxies directly to the input multidict.
    c                L    || _         || _        | j                  |      | _        y N)dataknown_multi_fields_collect_multiple_keysmultiple_keys)self	multidictschemar
   s       U/var/www/html/test/engine/venv/lib/python3.12/site-packages/webargs/multidictproxy.py__init__zMultiDictProxy.__init__   s&     	"4!88@    c                P    t        |dd      }||S t        || j                        S )zEReturn whether or not `field` handles repeated/multi-value arguments.is_multipleN)getattr
isinstancer
   )r   fieldis_multiple_attrs      r   _is_multiplezMultiDictProxy._is_multiple    s2     #5->'##%!8!899r   c                    t               }|j                  j                         D ]@  \  }}| j                  |      s|j	                  |j
                  |j
                  n|       B |S r   )setfieldsitemsr   adddata_key)r   r   resultnamer   s        r   r   z%MultiDictProxy._collect_multiple_keys)   s^    !==..0 	OKD%$$U+JJ)Cu~~N	O r   c                   | j                   j                  |t        j                        }|t        j                  u s|| j                  vr|S t        | j                   d      r| j                   j                  |      S t        | j                   d      r| j                   j                  |      S t        |t        t        f      r|S |y |gS )Ngetlistgetall)r	   getmamissingr   hasattrr#   r$   r   listtuple)r   keyvals      r   __getitem__zMultiDictProxy.__getitem__1   s    iimmC,"**4+=+= =J499i(99$$S))499h'99##C((cD%=)J;ur   c                ,    t        | j                        S r   )strr	   r   s    r   __str__zMultiDictProxy.__str__?       499~r   c                <    d| j                   d| j                  dS )NzMultiDictProxy(data=z, multiple_keys=))r	   r   r0   s    r   __repr__zMultiDictProxy.__repr__B   s&    "499-/?@R@R?UUVW	
r   c                    | j                   |= y r   r	   )r   r+   s     r   __delitem__zMultiDictProxy.__delitem__G   s    IIcNr   c                "    || j                   |<   y r   r7   )r   r+   values      r   __setitem__zMultiDictProxy.__setitem__J   s    		#r   c                .    t        | j                  |      S r   )r   r	   )r   r!   s     r   __getattr__zMultiDictProxy.__getattr__M   s    tyy$''r   c              #  x   K   t        | j                        D ]  }t        |t              r|d    |   y w)Nr   )iterr	   r   r*   r   xs     r   __iter__zMultiDictProxy.__iter__P   s7     dii 	A !U#d
	s   8:c                    || j                   v S r   r7   r@   s     r   __contains__zMultiDictProxy.__contains__Y   s    DII~r   c                ,    t        | j                        S r   )lenr	   r0   s    r   __len__zMultiDictProxy.__len__\   r2   r   c                     | j                   |k(  S r   r7   r   others     r   __eq__zMultiDictProxy.__eq___       yyE!!r   c                     | j                   |k7  S r   r7   rI   s     r   __ne__zMultiDictProxy.__ne__b   rL   r   N)r   r   r   	ma.Schemar
   ztuple[type, ...])r   zma.fields.Fieldreturnbool)r   rO   rP   zset[str])r+   r/   rP   
typing.Any)rP   r/   )r+   r/   rP   None)r+   r/   r:   rR   rP   rS   )r!   r/   rP   rR   )rP   ztyping.Iterator[str])rA   objectrP   rQ   )rP   int)rJ   rT   rP   rQ   )__name__
__module____qualname____doc__r&   r   ListTupler   r   r   r-   r1   r5   r8   r;   r=   rB   rD   rG   rK   rN    r   r   r   r   	   s     IINNIIOO0
	A!A A -	A:

(""r   r   )
__future__r   typingcollections.abcr   marshmallowr&   r   r\   r   r   <module>ra      s    "  * Z"^ Z"r   