Ë
    ðŸ|hv  ã                  óB  — U d Z ddlmZ ddlZddlmZmZ ddlmZm	Z	m
Z
 ddlmZ ddlmZ ddlmZ dd	lmZ dd
„Z G d„ dej(                  «      Zi Zded<   eed<   dd„Z e«        [ G d„ deej2                     «      Z e«       Zej8                  Zej:                  Zy)aÙ  aiohttp request argument parsing module.

Example: ::

    import asyncio
    from aiohttp import web

    from webargs import fields
    from webargs.aiohttpparser import use_args


    hello_args = {"name": fields.Str(required=True)}


    @asyncio.coroutine
    @use_args(hello_args)
    def index(request, args):
        return web.Response(body="Hello {}".format(args["name"]).encode("utf-8"))


    app = web.Application()
    app.router.add_route("GET", "/", index)
é    )ÚannotationsN)ÚwebÚweb_exceptions)ÚRAISEÚSchemaÚValidationError)Úcore)ÚAsyncParser)Újson)ÚMultiDictProxyc                óD   — | j                   }t        j                  |«      S ©N)Úcontent_typer	   Úis_json)Úreqr   s     úT/var/www/html/test/engine/venv/lib/python3.12/site-packages/webargs/aiohttpparser.pyÚis_json_requestr   &   s   € Ø×#Ñ#€LÜ<‰<˜Ó%Ð%ó    c                  ó   — e Zd ZdZy)ÚHTTPUnprocessableEntityé¦  N)Ú__name__Ú
__module__Ú__qualname__Ústatus_code© r   r   r   r   +   s   „ ØKr   r   z-dict[int, type[web_exceptions.HTTPException]]Úexception_mapr   c                 óH  — t         j                  D ]~  } t        t         | «      }	 t        |t         j                  «      }|r|j                  €Œ=t        j                  |j                  d «      }|t        ||«      rŒl|t        |j                  <   Œ€ y # t
        $ r d}Y Œaw xY w)NF)	r   Ú__all__ÚgetattrÚ
issubclassÚHTTPExceptionÚ	TypeErrorr   r   Úget)ÚnameÚobjÚis_http_exceptionÚold_objs       r   Ú_find_exceptionsr)   5   s™   € Ü×&Ñ&ò -ˆÜ”n dÓ+ˆð	&Ü *¨3´×0LÑ0LÓ MÐñ ! C§O¡OÐ$;ØÜ×#Ñ# C§O¡O°TÓ:ˆØÐ¤:¨c°7Ô#;ØØ),Œc—o‘oÒ&ñ-øô ò 	&Ø %Òð	&ús   ¥BÂB!Â B!c                  ó  — e Zd ZU dZeedœej                  j                  ¥Zded<    e	ddddœej                  j                  ¤Ž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)ÚAIOHTTPParserz aiohttp request argument parser.)Ú
match_infoÚpathzdict[str, str | None]ÚDEFAULT_UNKNOWN_BY_LOCATIONÚload_match_infoc                ó:   — | j                  |j                  |«      S )z9Return query params from the request as a MultiDictProxy.)Ú
_makeproxyÚquery©Úselfr   Úschemas      r   Úload_querystringzAIOHTTPParser.load_querystringW   s   € à‰˜sŸy™y¨&Ó1Ð1r   c              ƒ  ób   K  — |j                  «       ƒ d{  –—† }| j                  ||«      S 7 Œ­w)z8Return form values from the request as a MultiDictProxy.N)Úpostr1   )r4   r   r5   Ú	post_datas       r   Ú	load_formzAIOHTTPParser.load_form[   s*   è ø€ àŸ(™(›*×$ˆ	Ø‰˜y¨&Ó1Ð1ð %ús   ‚/–-—/c              ƒ  ó¢   K  — | j                  ||«      ƒ d {  –—† }|t        j                  ur|S | j                  ||«      ƒ d {  –—† S 7 Œ27 Œ­wr   )Ú	load_jsonr	   Úmissingr:   )r4   r   r5   Údatas       r   Úload_json_or_formzAIOHTTPParser.load_json_or_form`   sI   è ø€ Ø—^‘^ C¨Ó0×0ˆØ”t—|‘|Ñ#ØˆKØ—^‘^ C¨Ó0×0Ð0ð 1øð 1ús!   ‚A˜A™-AÁAÁAÁAc              ƒ  ó   K  — |j                   rt        |«      st        j                  S 	 |j	                  t        j
                  ¬«      ƒ d{  –—† S 7 Œ# t        j                  $ r@}|j                  dk(  rt        j                  cY d}~S | j                  ||«      cY d}~S d}~wt        $ r}| j                  ||«      cY d}~S d}~ww xY w­w)z.Return a parsed json payload from the request.)ÚloadsNÚ )
Úbody_existsr   r	   r=   r   rA   ÚJSONDecodeErrorÚdocÚ_handle_invalid_json_errorÚUnicodeDecodeError)r4   r   r5   Úexcs       r   r<   zAIOHTTPParser.load_jsonf   s—   è ø€ à—’¤O°CÔ$8Ü—<‘<Ðð	=ØŸ™¬¯
©
˜Ó3×3Ð3Ð3ùÜ×#Ñ#ò 	=Øw‰w˜"Š}Ü—|‘|Õ#Ø×2Ñ2°3¸Ó<Õ<ûÜ!ò 	=Ø×2Ñ2°3¸Ó<Õ<ûð	=üsp   ‚(C«#A ÁAÁA ÁCÁA ÁCÁ(B#ÂCÂCÂB#ÂCÂCÂ#CÂ/CÃ CÃCÃCÃCc                ó:   — | j                  |j                  |«      S )z4Return headers from the request as a MultiDictProxy.)r1   Úheadersr3   s      r   Úload_headerszAIOHTTPParser.load_headerss   ó   € à‰˜sŸ{™{¨FÓ3Ð3r   c                ó:   — | j                  |j                  |«      S )z4Return cookies from the request as a MultiDictProxy.)r1   Úcookiesr3   s      r   Úload_cookieszAIOHTTPParser.load_cookiesw   rL   r   c                ó   — t        d«      ‚)NzXload_files is not implemented. You may be able to use load_form for parsing upload data.)ÚNotImplementedErrorr3   s      r   Ú
load_fileszAIOHTTPParser.load_files{   s   € Ü!ð#ó
ð 	
r   c                ó   — |j                   S )z"Load the request's ``match_info``.)r,   r3   s      r   r/   zAIOHTTPParser.load_match_info   s   € à~‰~Ðr   c                óî   — d}|D ]H  }t        |t        j                  «      r|} n*t        |t        j                  «      sŒ<|j                  } n t        |t        j                  «      st        d«      ‚|S )zzGet request object from a handler function or method. Used internally by
        ``use_args`` and ``use_kwargs``.
        Nz&Request argument not found for handler)Ú
isinstancer   ÚRequestÚViewÚrequestÚ
ValueError)r4   ÚviewÚargsÚkwargsr   Úargs         r   Úget_request_from_view_argsz(AIOHTTPParser.get_request_from_view_args…   si   € ð ˆØò 	ˆCÜ˜#œsŸ{™{Ô+ØÙÜ˜#œsŸx™xÕ(Ø—k‘kÙð	ô ˜#œsŸ{™{Ô+ÜÐEÓFÐFØˆ
r   c               ó¼   — t         j                  |xs | j                  «      }|st        d|› «      ‚|} |t	        j
                  |j                  «      |d¬«      ‚)zdHandle ValidationErrors and return a JSON response of error messages
        to the client.
        zNo exception for úapplication/json)ÚtextrJ   r   )r   r$   ÚDEFAULT_VALIDATION_STATUSÚLookupErrorr   ÚdumpsÚmessages)r4   Úerrorr   r5   Úerror_status_codeÚerror_headersÚerror_classrJ   s           r   Úhandle_errorzAIOHTTPParser.handle_error—   sd   € ô $×'Ñ'ØÒ? ×!?Ñ!?ó
ˆñ ÜÐ 1Ð2CÐ1DÐEÓFÐFØˆÙÜ—‘˜EŸN™NÓ+ØØ+ô
ð 	
r   c                óX   — t         d   }ddgi} |t        j                  |«      d¬«      ‚)Ni  r   zInvalid JSON body.r`   )ra   r   )r   r   rd   )r4   rf   r   r[   r\   ri   re   s          r   rF   z(AIOHTTPParser._handle_invalid_json_error¯   s3   € ô $ CÑ(ˆØÐ1Ð2Ð3ˆÙœtŸz™z¨(Ó3ÐBTÔUÐUr   Nr   )r5   r   Úreturnr   )r5   r   rl   zdict | MultiDictProxy)r5   r   )r5   r   rl   útyping.NoReturn)r5   r   rl   útyping.Mapping)rZ   ztyping.Callabler[   ztyping.Iterabler\   rn   )
rf   r   r5   r   rg   z
int | Nonerh   ztyping.Mapping[str, str] | Nonerl   rm   )rf   z)json.JSONDecodeError | UnicodeDecodeErrorrl   rm   )r   r   r   Ú__doc__r   r	   ÚParserr.   Ú__annotations__ÚdictÚ__location_map__r6   r:   r?   r<   rK   rO   rR   r/   r^   rj   rF   r   r   r   r+   r+   I   sï   … Ù*ð Øñ:ð +‰+×
1Ñ
1ð:ÐÐ!6ó ñ
 ð Ø$Øñð +‰+×
&Ñ
&ñÐó2ó2ó
1ó=ó4ó4ó
óðØ#ðØ+:ðØDRóð$
àð
ð ð	
ð &ð
ð 7ð
ð 
ó
ð0VØ>ðVà	ôVr   r+   )rl   Úbool)rl   ÚNone)ro   Ú
__future__r   ÚtypingÚaiohttpr   r   Úmarshmallowr   r   r   Úwebargsr	   Úwebargs.asyncparserr
   Úwebargs.corer   Úwebargs.multidictproxyr   r   ÚHTTPClientErrorr   r   rq   r)   rV   r+   ÚparserÚuse_argsÚ
use_kwargsr   r   r   ú<module>r‚      sž   ðòõ0 #ã ç 'ß 6Ñ 6å Ý +Ý Ý 1ó&ô
˜c×1Ñ1ô ð @B€Ð<Ó AØ,€ˆcÑ ó-ñ  Ô ØôkVK §¡Ñ,ô kVñ\ 
‹€Ø?‰?€Ø×Ñ
r   