
    |h}              	      V   U d dl mZ d dlZd dlZd dlZd dlZd dlZd dlZd dl	Z	d dl
Zd dl
mZ d dlmZ d dlmZ  ej"                  e      Zg dZ e	j*                  d      Ze	j.                  ej0                  e	j2                  ej0                     e	j4                  ee	j.                  ej8                  j:                  e	j2                  ej8                  j:                     f   f   e	j<                  egej0                  f   f   Ze	j.                  de	j<                  e	j@                  e	j<                     f   Z!e	jD                  e	j<                     Z#e	j<                  de	jH                  f   Z% e	j*                  d	      Z& e	j*                  d
e	j<                        Z' e	j*                  de      Z( e	j*                  de%      Z)e	j<                  de	jT                  e	jH                     f   Z+dZ,dZ-de.d<   ddZ/ddZ0ddZ1d dZ2d!dZ3ddd"dZ4d#dZ5 G d de	jl                  e         Z7y)$    )annotationsN)ValidationErrormissing)MultiDictProxy)r   Parserr   
parse_jsonRequest.TC)boundMultiDictProxyTErrorHandlerT_defaulti  intDEFAULT_VALIDATION_STATUSc                \    |y t        | d      sd| _        | xj                  |fz  c_        y )N__webargs_argnames__ )hasattrr   )fargnames     K/var/www/html/test/engine/venv/lib/python3.12/site-packages/webargs/core.py_record_arg_namer   ;   s0    1,-!#wj(    c                    t        |       S N)callable)xs    r   _iscallabler    C   s     A;r   c                <    | rt        |       st        | d      | S )ziMakes sure an object is callable if it is not ``None``. If not
    callable, a ValueError is raised.
    z is not callable.)r    
ValueError)objs    r   _callable_or_raiser$   I   s&     ;s#C7"3455Jr   c                F    | j                  d      d   j                         S )N;r   )splitstrip)content_types    r   get_mimetyper*   R   s!    c"1%++--r   c                z    | syd| v rt        |       } | dk(  ry| j                  d      r| j                  d      ryy)zIndicates if this mimetype is JSON or not.  By default a request
    is considered to include JSON data if the mimetype is
    ``application/json`` or ``application/*+json``.
    Fr&   zapplication/jsonTzapplication/z+json)r*   
startswithendswith)mimetypes    r   is_jsonr/   X   sH    
 
h)%%>*x/@/@/Ir   zutf-8)encodingc                  t        | t              r| }n	 | j                  |      }t	        j                  |      S # t        $ rH}t	        j
                  d|j                   t        |j                        |j                        |d }~ww xY w)NzBytes decoding error : )docpos)

isinstancestrdecodeUnicodeDecodeErrorjsonJSONDecodeErrorreasonobjectstartloads)sr0   decodedexcs       r   r	   r	   h   s    !S	hhx(G ::g " 	&&)#**6

OII 		s   ; 	BABBc                    | rYt        | t        t        f      r%t        j                  t
        t        |             }|S t        |       r| g}|S t        | d      g }|S )Nz( is not a callable or list of callables.)r4   listtupletypingcastCallableListr   r"   )r#   
validatorss     r   _ensure_list_of_callablesrH   w   sg    
cD%=)\49=J  c]J
  w&NOPP
r   c            	      x   e Zd ZU dZdZded<   dddej                  ej                  ej                  ej                  ej                  dZded<   ej                  Z
d	ed
<   eZded<   dZded<   ej                  j                  ej                  j                  gZded<   dZded<   dddddddddZded<   	 dCeddd	 	 	 	 	 	 	 	 	 dDdZed 	 	 	 	 	 	 	 dEd!ZdFd"Z	 	 	 	 	 	 	 	 dGd#Z	 	 	 	 	 	 	 	 dGd$Z	 	 	 	 	 	 	 	 	 	 	 	 	 	 dHd%Z	 	 	 	 	 	 	 	 	 	 	 	 	 	 dHd&ZdId'ZdJd(Zddedf	 	 	 	 	 	 	 	 	 	 	 dKd)Z	 	 	 	 	 	 	 	 	 	 	 	 	 	 dLd*Z	 dCdedddd+	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 dMd,Z 	 dCdedddd+	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 dMd-Z!dNd.Z"	 	 	 	 	 	 	 	 dOd/Z#e$	 	 	 	 	 	 	 	 	 	 	 	 dPd0       Z%	 dCded1ddddd2	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 dQd3Z&	 dCdedddd+	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 dRd4Z'dSd5Z(dTd6Z)dUd7Z*	 	 	 	 	 	 	 	 	 	 dVd8Z+	 	 	 	 	 	 	 	 	 	 dWd9Z,dXd:Z-dXd;Z.dYd<Z/dXd=Z0dXd>Z1dXd?Z2dXd@Z3dXdAZ4	 	 	 	 	 	 	 	 	 	 	 	 dZdBZ5y)[r   a  Base parser class that provides high-level implementation for parsing
    a request.

    Descendant classes must provide lower-level implementations for reading
    data from  different locations, e.g. ``load_json``, ``load_querystring``,
    etc.

    :param str location: Default location to use for data
    :param str unknown: A default value to pass for ``unknown`` when calling the
        schema's ``load`` method. Defaults to ``marshmallow.EXCLUDE`` for non-body
        locations and ``marshmallow.RAISE`` for request bodies. Pass ``None`` to use the
        schema's setting instead.
    :param callable error_handler: Custom error handler function.
    r8   r5   DEFAULT_LOCATIONN)r8   formjson_or_formquerystringqueryheaderscookiesfileszdict[str, str | None]DEFAULT_UNKNOWN_BY_LOCATIONztype[ma.Schema]DEFAULT_SCHEMA_CLASSr   r   zInvalid value.DEFAULT_VALIDATION_MESSAGEz
list[type]KNOWN_MULTI_FIELDSTboolUSE_ARGS_POSITIONAL	load_jsonload_querystring	load_formload_headersload_cookies
load_filesload_json_or_form)r8   rM   rN   rK   rO   rP   rQ   rL   z dict[str, str | typing.Callable]__location_map__)unknownerror_handlerschema_classc                   |xs | j                   | _        t        |      | _        |xs | j                  | _        || _        y r   )rJ   locationr$   error_callbackrS   rb   r`   )selfrd   r`   ra   rb   s        r   __init__zParser.__init__   s=     !9D$9$93Em3T(ED,E,Er   )clsc               >     |||t        | j                              S )zDCreate a multidict proxy object with options from the current parser)known_multi_fields)rC   rU   )rf   	multidictschemarh   s       r   
_makeproxyzParser._makeproxy   s     9ft?V?V9WXXr   c                    t        | j                  j                               }||vrt        d|       | j                  |   }t	        |t
              rt        | |      S |S )zuGet the loader function for the given location.

        :raises: ValueError if a given location is invalid.
        zInvalid location argument: )setr_   keysr"   r4   r5   getattr)rf   rd   valid_locationsfuncs       r   _get_loaderzParser._get_loader   sf    
 d3388:;?*:8*EFF $$X.dC 4&&r   c               6    | j                  |      } |||      S )zReturn a dictionary-like object for the location on the given request.

        Needs to have the schema in hand in order to correctly handle loading
        lists from multidict objects and `many=True` schemas.
        )rt   )rf   rl   reqrd   loader_funcs        r   _load_location_datazParser._load_location_data   s!     &&x03''r   c                   K   | j                  |      } |||      }t        j                  |      r
| d {   S |S 7 wr   )rt   inspectisawaitable)rf   rl   rv   rd   rw   datas         r   _async_load_location_dataz Parser._async_load_location_data   sD     
 &&x03't$: s   5A >A c               x    ||j                   i|_         | j                  xs | j                  } ||||||       y Nerror_status_codeerror_headers)messagesre   handle_error)rf   errorrv   rl   rd   r   r   ra   s           r   _on_validation_errorzParser._on_validation_error   sA     #ENN3&*&9&9&NT=N=N/'	
r   c                 K   ||j                   i|_         | j                  xs | j                  }t        j                  |      r0t        j                  t        |      } ||||||       d {    y  ||||||       y 7 wr   )r   re   r   asyncioiscoroutinefunctionrD   rE   AsyncErrorHandler)	rf   r   rv   rl   rd   r   r   ra   async_error_handlers	            r   _async_on_validation_errorz!Parser._async_on_validation_error  s      #ENN3++@t/@/@&&}5"(++.?"O%"3+   "3+s   A-B/B0Bc                X    |D ]%  } ||      du s| j                   }t        ||       y )NF)r|   )rT   r   )rf   r|   rG   	validatormsgs        r   _validate_argumentszParser._validate_arguments5  s7     $ 	6I%'55%c55	6r   c                   t        |t        j                        r|}|S t        |t              r#t	        |t        j                        r	 |       }|S t        |t
        j                  j                        r@t        |t              r|}nt        |      } | j                  j                  |             }|S t        |      r
 ||      }|S t        dt        |             )ab  Return a `marshmallow.Schema` for the given argmap and request.

        :param argmap: Either a `marshmallow.Schema`, `dict`
            of argname -> `marshmallow.fields.Field` pairs, or a callable that returns
            a `marshmallow.Schema` instance.
        :param req: The request object being parsed.
        :rtype: marshmallow.Schema
        zargmap was of unexpected type )r4   maSchematype
issubclasscollectionsabcMappingdictrb   	from_dictr   	TypeError)rf   argmaprv   rl   argmap_dicts        r   _get_schemazParser._get_schema=  s     fbii( &F  %*VRYY*GXF   7 78&$'$"6l=T&&00=?F  f C[F  <T&\NKLLr   c                    ||n| j                         }|t        d      |xs | j                  }t        |      }| j	                  ||      }d ||||fS )NzMust pass req object)get_default_requestr"   rd   rH   r   )rf   r   rv   rd   r`   validaterG   rl   s           r   _prepare_for_parsezParser._prepare_for_parseX  sd     _c$*B*B*D;344,t}}.x8
!!&#.c8Z88r   c                (   |t         u ri }|t        k7  r|n9| j                  t        k7  r| j                  n| j                  j	                  |      }|rd|ini }| j                  ||||      } |j                  |fi |}	| j                  |	|       |	S )Nr`   rl   rv   rd   )r   _UNKNOWN_DEFAULT_PARAMr`   rR   getpre_loadloadr   )
rf   location_datarl   rv   rd   r`   rG   load_kwargspreprocessed_datar|   s
             r   _process_location_datazParser._process_location_dataj  s      G#M
 00  <<#99 5599(C 	 FMi-ART MM&cH * 
 v{{,<<  z2r   )rd   r`   r   r   r   c          	     "   | j                  |||||      \  }}}}	}
	 | j                  |
||      }| j                  ||
||||	      }|S # t        j                  j
                  $ r(}| j                  |||
|||       t        d      |d}~ww xY w)a  Main request parsing method.

        :param argmap: Either a `marshmallow.Schema`, a `dict`
            of argname -> `marshmallow.fields.Field` pairs, or a callable
            which accepts a request and returns a `marshmallow.Schema`.
        :param req: The request object to parse.
        :param str location: Where on the request to load values.
            Can be any of the values in :py:attr:`~__location_map__`. By
            default, that means one of ``('json', 'query', 'querystring',
            'form', 'headers', 'cookies', 'files', 'json_or_form')``.
        :param str unknown: A value to pass for ``unknown`` when calling the
            schema's ``load`` method. Defaults to ``marshmallow.EXCLUDE`` for non-body
            locations and ``marshmallow.RAISE`` for request bodies. Pass ``None`` to use
            the schema's setting instead.
        :param callable validate: Validation function or list of validation functions
            that receives the dictionary of parsed arguments. Validator either returns a
            boolean or raises a :exc:`ValidationError`.
        :param int error_status_code: Status code passed to error handler functions when
            a `ValidationError` is raised.
        :param dict error_headers: Headers passed to error handler functions when a
            a `ValidationError` is raised.

         :return: A dictionary of parsed arguments
        r   r   4_on_validation_error hook did not raise an exceptionN)r   rx   r   r   
exceptionsr   r   r"   rf   r   rv   rd   r`   r   r   r   r|   rG   rl   r   r   s                r   parsezParser.parse  s    F 372I2IC7H3
/c8Z	 443 5 M ..vsHgzD  }},, 	%%"3+ &  F	s   *A	 	B&#B		Bc          	     P  K   | j                  |||||      \  }}}}	}
	 | j                  |
||       d{   }| j                  ||
||||	      }|S 7 # t        j                  j
                  $ r1}| j                  |||
|||       d{  7   t        d      |d}~ww xY ww)zCoroutine variant of `webargs.core.Parser.parse`.

        Receives the same arguments as `webargs.core.Parser.parse`.
        r   Nr   r   )r   r}   r   r   r   r   r   r"   r   s                r   async_parsezParser.async_parse  s      372I2IC7H3
/c8Z	"&"@"@3 #A # M ..vsHgzD % }},, 	11"3+ 2    F	sD   B&A AA B&A B#2BBBB##B&c                     y)ziOptional override. Provides a hook for frameworks that use thread-local
        request objects.
        Nr   )rf   s    r   r   zParser.get_default_request  s     r   c                     y)a  Optional override. Returns the request object to be parsed, given a view
        function's args and kwargs.

        Used by the `use_args` and `use_kwargs` to get a request object from a
        view's arguments.

        :param callable view: The view function or method being decorated by
            `use_args` or `use_kwargs`
        :param tuple args: Positional arguments passed to ``view``.
        :param dict kwargs: Keyword arguments passed to ``view``.
        Nr   )rf   viewargskwargss       r   get_request_from_view_argsz!Parser.get_request_from_view_args  s    " r   c                Z    |r|j                  |       | |fS |r	|||<   | |fS | |fz  } | |fS )z=Update args or kwargs with parsed_args depending on as_kwargs)update)r   r   parsed_args	as_kwargsarg_names        r   _update_args_kwargszParser._update_args_kwargs
  sR     MM+& V| #.x  V| &V|r   F)rd   r`   r   r   r   r   r   c               d   	 xs  j                   |t        t        j                        r;t        t              st	                j
                  j                               rt        d       j                  s j                        d	 f
d}
|
S )a  Decorator that injects parsed arguments into a view function or method.

        Example usage with Flask: ::

            @app.route("/echo", methods=["get", "post"])
            @parser.use_args({"name": fields.Str()}, location="querystring")
            def greet(querystring_args):
                return "Hello " + querystring_args["name"]

        :param argmap: Either a `marshmallow.Schema`, a `dict`
            of argname -> `marshmallow.fields.Field` pairs, or a callable
            which accepts a request and returns a `marshmallow.Schema`.
        :param str location: Where on the request to load values.
        :param str unknown: A value to pass for ``unknown`` when calling the
            schema's ``load`` method.
        :param bool as_kwargs: Whether to insert arguments as keyword arguments.
        :param str arg_name: Keyword argument name to use for arguments. Mutually
            exclusive with as_kwargs.
        :param callable validate: Validation function that receives the dictionary
            of parsed arguments. If the function returns ``False``, the parser
            will raise a :exc:`ValidationError`.
        :param int error_status_code: Status code passed to error handler functions when
            a `ValidationError` is raised.
        :param dict error_headers: Headers passed to error handler functions when a
            a `ValidationError` is raised.
        z-arg_name and as_kwargs are mutually exclusivec                V  
  
"s t         dd      }|v rt        d d      t        j                         r/t	        j
                         	 	 	 	 	 	 d 	fd       }n(t	        j
                         d 	fd       } |_        t        |       |S )Nr   r   zAttempted to pass `arg_name='z'` via use_args() but that name was already used. If this came from stacked webargs decorators, try setting `arg_name` to distinguish usages.c            	        K   }|sj                  	| |      }j                  |
       d {   }j                  | ||      \  } } 	| i | d {   S 7 ,7 wN)rv   rd   r`   r   r   r   )r   r   r   r   r   req_objr   r   r   r   r   r   rs   rd   req_rf   r`   r   s       r   wrapperz3Parser.use_args.<locals>.decorator.<locals>.wrappere  s      #G""&"A"A$f"U(,(8(8#!) '!)*;&3 )9 ) #K $(#;#;fk9h$LD& "&t!6v!666# 7s!   3A'A#'A'A%A'%A'c            	         }|sj                  	| |      }j                  |
      }j                  | ||      \  } } 	| i |S r   )r   r   r   r   s       r   r   z3Parser.use_args.<locals>.decorator.<locals>.wrapper~  sz    "G""&"A"A$f"U"&**#!) '!)*;&3 #- #K $(#;#;fk9h$LD&  000r   )r   
typing.Anyr   r   returnr   )rq   r"   r   r   	functoolswraps__wrapped__r   )rs   existing_arg_namesr   r   r   r   r   r   r   rd   request_objrf   r`   r   s   `  @r   	decoratorz"Parser.use_args.<locals>.decoratorU  s    D #I%,T3I2%N"11$7z BT T  **40&7%71;77 7 '70 &1 1 '1( #'GWh/Nr   )rs   typing.Callabler   r   )
rd   r4   rD   r   r   rb   r   r"   rW   get_default_arg_name)rf   r   rv   rd   r`   r   r   r   r   r   r   r   s   `` ``````` @r   use_argszParser.use_args  s    N ,t}} ffnn-fd+f8T&&008:FILMMD$<$<006BH@	 @	D r   c          
     4    | j                  ||d|||||      S )a  Decorator that injects parsed arguments into a view function or method
        as keyword arguments.

        This is a shortcut to :meth:`use_args` with ``as_kwargs=True``.

        Example usage with Flask: ::

            @app.route("/echo", methods=["get", "post"])
            @parser.use_kwargs({"name": fields.Str()})
            def greet(name):
                return "Hello " + name

        Receives the same ``args`` and ``kwargs`` as :meth:`use_args`.
        T)rv   r   rd   r`   r   r   r   )r   )rf   r   rv   rd   r`   r   r   r   s           r   
use_kwargszParser.use_kwargs  s2    2 }}/'  	
 		
r   c                    | dS )a  This method provides the rule by which an argument name is derived for
        :meth:`use_args` if no explicit ``arg_name`` is provided.

        By default, the format used is ``{location}_args``. Users may override this method
        to customize the default argument naming scheme.

        ``schema`` will be the argument map or schema passed to :meth:`use_args` unless a
        dict was used, in which case it will be the schema derived from that dict.
        _argsr   )rf   rd   rl   s      r   r   zParser.get_default_arg_name  s     5!!r   c                     d fd}|S )a  Decorator that registers a function for loading a request location.
        The wrapped function receives a schema and a request.

        The schema will usually not be relevant, but it's important in some
        cases -- most notably in order to correctly load multidict values into
        list fields. Without the schema, there would be no way to know whether
        to simply `.get()` or `.getall()` from a multidict for a given value.

        Example: ::

            from webargs import core

            parser = core.Parser()


            @parser.location_loader("name")
            def load_data(request, schema):
                return request.data

        :param str name: The name of the location to register.
        c                &    | j                   <   | S r   )r_   )rs   namerf   s    r   r   z)Parser.location_loader.<locals>.decorator  s    *.D!!$'Kr   )rs   r   r   r   r   )rf   r   r   s   `` r   location_loaderzParser.location_loader  s    .	 r   c                    || _         |S )a  Decorator that registers a custom error handling function. The
        function should receive the raised error, request object,
        `marshmallow.Schema` instance used to parse the request, error status code,
        and headers to use for the error response. Overrides
        the parser's ``handle_error`` method.

        Example: ::

            from webargs import flaskparser

            parser = flaskparser.FlaskParser()


            class CustomError(Exception):
                pass


            @parser.error_handler
            def handle_error(error, req, schema, *, error_status_code, error_headers):
                raise CustomError(error.messages)

        :param callable func: The error callback to register.
        )re   )rf   rs   s     r   ra   zParser.error_handler  s    0 #r   c                   |S )zA method of the parser which can transform data after location
        loading is done. By default it does nothing, but users can subclass
        parsers and override this method.
        r   )rf   r   rl   rv   rd   s        r   r   zParser.pre_load  s
     r   c                    |)a  Internal hook for overriding treatment of JSONDecodeErrors.

        Invoked by default `load_json` implementation.

        External parsers can just implement their own behavior for load_json ,
        so this is not part of the public parser API.
        r   )rf   r   rv   r   r   s        r   _handle_invalid_json_errorz!Parser._handle_invalid_json_error  s	     r   c                   	 | j                  |      S # t        j                  $ r6}|j                  dk(  rt        cY d}~S | j                  ||      cY d}~S d}~wt        $ r}| j                  ||      cY d}~S d}~ww xY w)z^Load JSON from a request object or return `missing` if no value can
        be found.
         N)_raw_load_jsonr8   r9   r2   r   r   r7   )rf   rv   rl   r@   s       r   rX   zParser.load_json  sm    	=&&s++## 	=ww"}223<<! 	=223<<	=s7    A?AA? AA?A?#A:4A?:A?c                ^    | j                  ||      }|t        ur|S | j                  ||      S )zLoad data from a request, accepting either JSON or form-encoded
        data.

        The data will first be loaded as JSON, and, if that fails, it will be
        loaded as a form post.
        )rX   r   rZ   )rf   rv   rl   r|   s       r   r^   zParser.load_json_or_form1  s2     ~~c6*wK~~c6**r   c                    t         S )a  Internal hook method for implementing load_json()

        Get a request body for feeding in to `load_json`, and parse it either
        using core.parse_json() or similar utilities which raise
        JSONDecodeErrors.
        Ensure consistent behavior when encountering decoding errors.

        The default implementation here simply returns `missing`, and the default
        implementation of `load_json` above will pass that value through.
        However, by implementing a "mostly concrete" version of load_json with
        this as a hook for getting data, we consolidate the logic for handling
        those JSONDecodeErrors.
        r   )rf   rv   s     r   r   zParser._raw_load_json?  s	     r   c                    t         S )zhLoad the query string of a request object or return `missing` if no
        value can be found.
        r   rf   rv   rl   s      r   rY   zParser.load_querystringO  	     r   c                    t         S )zeLoad the form data of a request object or return `missing` if no
        value can be found.
        r   r   s      r   rZ   zParser.load_formU  r   r   c                    t         S )z>Load the headers or return `missing` if no value can be found.r   r   s      r   r[   zParser.load_headers[  s    r   c                    t         S )z`Load the cookies from the request or return `missing` if no value
        can be found.
        r   r   s      r   r\   zParser.load_cookies_  r   r   c                    t         S )z[Load files from the request or return `missing` if no values can be
        found.
        r   r   s      r   r]   zParser.load_filese  r   r   c               0    t         j                  |       |)zjCalled if an error occurs while parsing args. By default, just logs and
        raises ``error``.
        )loggerr   )rf   r   rv   rl   r   r   s         r   r   zParser.handle_errork  s     	Ur   r   )
rd   
str | Noner`   r   ra   zErrorHandler | Nonerb   ztype[ma.Schema] | Noner   None)rk   r   rl   	ma.Schemarh   z,type[MultiDictProxyT] | type[MultiDictProxy]r   z MultiDictProxyT | MultiDictProxy)rd   r5   r   r   )rl   r   rv   r
   rd   r5   r   r   )r   r   rv   r
   rl   r   rd   r5   r   
int | Noner   typing.Mapping[str, str] | Noner   typing.NoReturn)r|   r   rG   rF   r   r   )r   ArgMaprv   r
   r   r   )r   r   rv   Request | Nonerd   r   r`   r   r   ValidateArgr   z2tuple[None, Request, str, CallableList, ma.Schema])r   r   rl   r   rv   r
   rd   r5   r`   r   rG   rF   r   r   )r   r   rv   r   rd   r   r`   r   r   r   r   r   r   r   r   r   )r   r   )r   r   r   rC   r   ztyping.Mapping[str, typing.Any]r   r   )r   rC   r   dict[str, typing.Any]r   r   r   rV   r   r   r   z#tuple[tuple, dict[str, typing.Any]])r   r   rv   r   rd   r   r`   r   r   rV   r   r   r   r   r   r   r   r   r   %typing.Callable[..., typing.Callable])r   r   rv   r   rd   r   r`   r   r   r   r   r   r   r   r   r   )rd   r5   rl   r   r   r5   )r   r5   r   ztyping.Callable[[C], C])rs   r   r   r   )
r   typing.Mappingrl   r   rv   r
   rd   r5   r   r   )
r   z)json.JSONDecodeError | UnicodeDecodeErrorrv   r
   r   r   r   r   r   r   )rv   r
   rl   r   r   r   )rv   r
   r   r   )r   r   rv   r
   rl   r   r   r   r   r   r   r   )6__name__
__module____qualname____doc__rJ   __annotations__r   EXCLUDErR   r   rS   r   rT   fieldsListTuplerU   rW   r_   r   rg   r   rm   rt   rx   r}   r   r   r   r   r   r   r   r   r   r   staticmethodr   r   r   r   r   ra   r   r   rX   r^   r   rY   rZ   r[   r\   r]   r   r   r   r   r   r      s     #c" zz::::	:!6 	 -/II/5%>s>&66&(iinnbiioo%F
F !%$ )#!!+	:6 	  $ 5-1/3 	
 + - 
$ =KYY Y
 :Y 
*Y 	("	()0	(<?	(		(&-9<	

 
 	

 
 &
 7
 

2     	 
   &  7  
 D6< ##4 $99 9 	9
 9 9 
<9$#!# # 	#
 # # !# 
#P #9
  $4 $(,9=99 9
 9 9 9 &9 79 
9| #%
  $4 $(,9=%% %
 % % % &% 7% 
%N  0	
 
& % + 	
  
- . #x
  $4# $(,9=xx x
 x x x x x &x 7x 
/xz #"

  $4 $(,9="
"
 "

 "
 "
 "
 &"
 7"
 
/"
H
":6% 	
   
8  	
  
 =$
+   	 & 7 
r   r   )r   z typing.Callable[..., typing.Any]r   r   r   r   )r   r   r   rV   )r#   T | Noner   r  )r)   r5   r   r5   )r.   r   r   rV   )r>   ztyping.AnyStrr0   r5   r   r   )r#   r   r   rF   )8
__future__r   r   collections.abcr   r   rz   r8   loggingrD   marshmallowr   r   marshmallow.utilsr   webargs.multidictproxyr   	getLoggerr   r   __all__TypeVarr
   Unionr   Typer   r5   r   FieldCallabler   Iterabler   r  rF   NoReturnErrorHandlerr   r   r   r   	Awaitabler   r   r   r   r   r    r$   r*   r/   r	   rH   Genericr   r   r   r   <module>r     s   "         ' % 1			8	$ &..
#	II
KK		
NN3RYY__fkk"))//6R%RSST
OOWIryy()+
 ll4&//&//2RRS{{6??+sFOO34FNN3FNN3foo. &..!2.I lCOOC)9)9&//)J$JK 
 $ !$ 3 $).  5< 
tV^^G$ tr   