§
    xÅjIE  ã            
       ó  — 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 d dl	Z	d dl	m
Z
 d dlmZmZ d dlmZ d dlmZmZmZ d d	lmZmZ d d
lmZ d dlmZ d dlmZmZ d dlmZ d dl m!Z! d dl"m#Z#m$Z$m%Z%m&Z&m'Z'm(Z(m)Z)m*Z* er4d dl+m,Z, d dlm-Z-m.Z.m/Z/m0Z0m1Z1 d dl2m3Z3m4Z4 d dl5m6Z6 d dl7m8Z8 d dl9m:Z:m;Z;m<Z<m=Z= 	 d dl>m?Z? d dl>m@ZA d dlBmCZC d dlDmEZE d dl7mFZF n# eG$ r  ed¦  «        ‚w xY weEjH        ZIe?jJ        ZKeFjL        ZM	 e?jN        ZOn# eP$ r Y nw xY w G d„ de¦  «        ZQ G d„ de¦  «        ZRdAd!„ZSdAd"„ZTdBd%„ZNdCd(„ZU	 dD	 	 	 	 	 dEd+„ZVdFd0„ZWd#d/d1eXd2d/d3d/d d4f
d5„ZY	 	 	 	 	 	 	 	 	 	 dGd6„ZZdHd8„Z[ e&eQ¦  «        dId:„¦   «         Z\dJd<„Z]dKd@„Z^dS )Lé    N)Úisawaitable)ÚTYPE_CHECKING)Úurlsplit)Úcontinue_trace)ÚOPÚSPANDATA)Ú0_apply_data_collection_filtering_to_query_string)ÚDidNotEnableÚIntegrationÚ_check_minimum_version)ÚRequestExtractorÚ_filter_headers)Úignore_logger)Úshould_send_default_pii)ÚSegmentNameSourceÚStreamedSpan)ÚTransactionSource)Úhas_span_streaming_enabled)ÚCONTEXTVARS_ERROR_MESSAGEÚHAS_REAL_CONTEXTVARSÚcapture_internal_exceptionsÚensure_integration_enabledÚevent_from_exceptionÚhas_data_collection_enabledÚparse_versionÚreraise)Ú	Container)ÚAnyÚCallableÚDictÚOptionalÚUnion)ÚRequestÚRequestParameters)ÚBaseHTTPResponse)ÚRoute)ÚEventÚEventProcessorÚExcInfoÚHint)ÚSanic)Ú__version__)ÚSanicException)ÚErrorHandler)ÚRouterzSanic not installedc                   ój   — e Zd ZU dZde› �ZdZded<    edh¦  «        f	 	 	 dd
„Ze	dd„¦   «         Z
dS )ÚSanicIntegrationÚsanicz
auto.http.NzOptional[tuple[int, ...]]Úversioni”  Úunsampled_statusesúOptional[Container[int]]Úreturnc                 ó0   — |pt          ¦   «         | _        dS )aG  
        The unsampled_statuses parameter can be used to specify for which HTTP statuses the
        transactions should not be sent to Sentry. By default, transactions are sent for all
        HTTP statuses, except 404. Set unsampled_statuses to None to send transactions for all
        HTTP statuses, including 404.
        N)ÚsetÚ_unsampled_statuses)Úselfr4   s     úNC:\Projects\Historical\venv\Lib\site-packages\sentry_sdk/integrations/sanic.pyÚ__init__zSanicIntegration.__init__C   s   € ð $6Ð#>½¹¼ˆÔ Ð Ð ó    c                  óv  — t          t          ¦  «        t          _        t	          t          t          j        ¦  «         t
          st          dt          z   ¦  «        ‚t          j        d¦  «        rt          d¦  «         t          j        � t          j        dk     rt          ¦   «          d S t          ¦   «          d S )NzUThe sanic integration for Sentry requires Python 3.7+  or the aiocontextvars package.z0.8.Úroot©é   é	   )r   ÚSANIC_VERSIONr1   r3   r   r   r
   r   Ú
startswithr   Ú_setup_legacy_sanicÚ_setup_sanic© r=   r;   Ú
setup_oncezSanicIntegration.setup_onceN   s¬   € å#0µÑ#?Ô#?ÕÔ ÝÕ/Õ1AÔ1IÑJÔJÐJå#ð 	õ ð2Ý4MñNñô ð õ
 Ô# FÑ+Ô+ð 
	"õ ˜&Ñ!Ô!Ð!åÔ#Ð/Õ4DÔ4LÈwÒ4VÐ4VÝÑ!Ô!Ð!ØˆFå‰Œˆˆˆr=   )r4   r5   r6   N©r6   N)Ú__name__Ú
__module__Ú__qualname__Ú
identifierÚoriginr3   Ú__annotations__Ú	frozensetr<   ÚstaticmethodrH   rG   r=   r;   r1   r1   >   s�   € € € € € € Ø€JØ&˜*Ð&Ð&€FØ+/€GÐ(Ð/Ð/Ñ/ð @I¸yÈ#ÈÑ?OÔ?Oð	?Ø"<ð	?à	ð	?ð 	?ð 	?ð 	?ð ðð ð ñ „\ðð ð r=   r1   c                   ób   — e Zd Zdefd„Zdd„Zdefd„Zdd„Zde	fd„Z
dd
„Zdd„Zdddefd„ZdS )ÚSanicRequestExtractorr6   c                 óP   — | j         j        €dS t          | j         j        ¦  «        S )Nr   )ÚrequestÚbodyÚlen©r:   s    r;   Úcontent_lengthz$SanicRequestExtractor.content_lengtho   s%   € ØŒ<ÔÐ$Ø�1Ý�4”<Ô$Ñ%Ô%Ð%r=   úDict[str, str]c                 ó4   — t          | j        j        ¦  «        S ©N)ÚdictrU   ÚcookiesrX   s    r;   r^   zSanicRequestExtractor.cookiest   s   € Ý�D”LÔ(Ñ)Ô)Ð)r=   c                 ó   — | j         j        S r\   )rU   rV   rX   s    r;   Úraw_datazSanicRequestExtractor.raw_dataw   ó   € ØŒ|Ô Ð r=   r$   c                 ó   — | j         j        S r\   )rU   ÚformrX   s    r;   rc   zSanicRequestExtractor.formz   ra   r=   c                 ó   — t          ¦   «         ‚r\   )ÚNotImplementedErrorrX   s    r;   Úis_jsonzSanicRequestExtractor.is_json}   s   € Ý!Ñ#Ô#Ð#r=   úOptional[Any]c                 ó   — | j         j        S r\   )rU   ÚjsonrX   s    r;   ri   zSanicRequestExtractor.json€   ra   r=   c                 ó   — | j         j        S r\   )rU   ÚfilesrX   s    r;   rk   zSanicRequestExtractor.filesƒ   s   € ØŒ|Ô!Ð!r=   Úfiler   c                 ó.   — t          |j        pd¦  «        S )NrG   )rW   rV   )r:   rl   s     r;   Úsize_of_filez"SanicRequestExtractor.size_of_file†   s   € Ý�4”9�? Ñ#Ô#Ð#r=   N)r6   rZ   )r6   r$   )r6   rg   )rJ   rK   rL   ÚintrY   r^   Úbytesr`   rc   Úboolrf   ri   rk   rn   rG   r=   r;   rS   rS   n   s×   € € € € € ð& ð &ð &ð &ð &ð
*ð *ð *ð *ð!˜%ð !ð !ð !ð !ð!ð !ð !ð !ð$˜ð $ð $ð $ð $ð!ð !ð !ð !ð"ð "ð "ð "ð$ ð $¨3ð $ð $ð $ð $ð $ð $r=   rS   r6   c                  óJ   — t           t          _         t          t          _        d S r\   )Ú_startupr+   Ú_sentry_error_handler_lookupr.   ÚlookuprG   r=   r;   rF   rF   Š   s   € Ý…E„NÝ6…LÔÐÐr=   c                  ól   — t           t          _        t          t          _        t          t          _        d S r\   )	Ú_legacy_handle_requestr+   Úhandle_requestÚ_legacy_router_getr/   Úgetrt   r.   ru   rG   r=   r;   rE   rE   �   s   € Ý1…EÔÝ#…F„JÝ6…LÔÐÐr=   r:   r+   c              ƒ   ó  K  —  |                       d¦  «        t          ¦  «          |                       d¦  «        t          ¦  «          |                       d¦  «        t          ¦  «         t	          | ¦  «        ƒ d {V —† d S )Nzhttp.lifecycle.requestzhttp.lifecycle.responsezhttp.routing.after)ÚsignalÚ_context_enterÚ_context_exitÚ_set_transactionÚold_startuprX   s    r;   rs   rs   •   sŒ   è è € ð *€D‡K‚KÐ(Ñ)Ô)­.Ñ9Ô9Ð9ð +€D‡K‚KÐ)Ñ*Ô*­=Ñ9Ô9Ð9ð &€D‡K‚KÐ$Ñ%Ô%Õ&6Ñ7Ô7Ð7õ �dÑ
Ô
ÐÐÐÐÐÐÐÐÐr=   rU   r#   c              ƒ   óÒ  K  — t          j        ¦   «                              t          ¦  «        d u| j        _        | j        j        sd S t          j        ¦   «         }t          |j        ¦  «        }t          j	        | ¦  «        }t          j
        ¦   «         | j        _        | j        j                             ¦   «         }|                     ¦   «          |                     t          |¦  «        ¦  «         |�rw|                     t          ¦  «        }t!          |t          ¦  «        r|j        rt%          j        dd¬¦  «         t           j                             t-          | j        ¦  «        ¦  «         |                     d| i¦  «         | j        r€t5          |j        ¦  «        r9|j        d         d         r%|                     t8          j        | j        ¦  «         n3t=          ¦   «         r%|                     t8          j        | j        ¦  «         t           j                             | j         tB          j"        t          j#        tH          j%        j&        dœd ¬¦  «        }|| j        _'        d S t+          t-          | j        ¦  «        tB          j"        | j         tP          j%        t          j#        ¬	¦  «        }t          j)        |¦  «                             ¦   «         | j        _'        d S )
NzaThe `unsampled_statuses` option of SanicIntegration has no effect when span streaming is enabled.é   )Ú
stacklevelÚsanic_requestÚdata_collectionÚ	user_info)z	sentry.opzsentry.originzsentry.segment.name.source)ÚnameÚ
attributesÚparent_span)Úopr‡   ÚsourcerN   )*Ú
sentry_sdkÚ
get_clientÚget_integrationr1   ÚctxÚ_sentry_do_integrationr   ÚoptionsÚweakrefÚrefÚisolation_scopeÚ_sentry_scopeÚ	__enter__Úclear_breadcrumbsÚadd_event_processorÚ_make_request_processorÚ
isinstancer9   ÚwarningsÚwarnÚtracesr   r]   ÚheadersÚset_custom_sampling_contextÚremote_addrr   Úset_attributer   ÚUSER_IP_ADDRESSr   Ú
start_spanÚpathr   ÚHTTP_SERVERrN   r   ÚURLÚvalueÚ_sentry_root_spanr   Ústart_transaction)rU   ÚclientÚis_span_streaming_enabledÚweak_requestÚscopeÚintegrationÚspanÚtransactions           r;   r}   r}   ¨   s›  è è € åÔÑÔ×/Ò/Õ0@ÑAÔAÈÐMð „KÔ&ð Œ;Ô-ð ØˆåÔ"Ñ$Ô$€FÝ :¸6¼>Ñ JÔ JÐå”;˜wÑ'Ô'€LÝ *Ô :Ñ <Ô <€G„KÔØŒKÔ%×/Ò/Ñ1Ô1€EØ	×ÒÑÔÐØ	×ÒÕ5°lÑCÔCÑDÔDÐDà ñ ,Ø×,Ò,Õ-=Ñ>Ô>ˆå�{Õ$4Ñ5Ô5ð	àÔ/ð	õ ŒMØsØðñ ô ð õ
 	Ô×(Ò(­¨g¬oÑ)>Ô)>Ñ?Ô?Ð?Ø×)Ò)¨?¸GÐ*DÑEÔEÐEàÔð 	SÝ*¨6¬>Ñ:Ô:ð SØ”>Ð"3Ô4°[ÔAð WØ×'Ò'­Ô(@À'ÔBUÑVÔVÐVøÝ(Ñ*Ô*ð SØ×#Ò#¥HÔ$<¸gÔ>QÑRÔRÐRåÔ ×+Ò+ð ”åœ^Ý!1Ô!8Ý.?Ô.CÔ.Iðð ð
 ð ,ñ 

ô 

ˆð )-ˆŒÔ%Ð%Ð%å$Ý�”Ñ!Ô!ÝŒ~à”Ý$Ô(Ý#Ô*ð
ñ 
ô 
ˆõ )3Ô(DØñ)
ô )
ç
Š)‰+Œ+ð 	ŒÔ%Ð%Ð%r=   ÚresponseúOptional[BaseHTTPResponse]c              ƒ   óÌ  K  — t          ¦   «         5  | j        j        s	 d d d ¦  «         d S t          j        ¦   «                              t          ¦  «        }|€d n|j        }t          ¦   «         5  | j        j        }t          |t          ¦  «        rªt          ¦   «         5  t          | ¦  «                             ¦   «         D ]\  }}|                     ||¦  «         Œ	 d d d ¦  «         n# 1 swxY w Y   |�/|                     t          j        |¦  «         |dk    rdnd|_        |                     ¦   «          nX|                     |¦  «         |xj        t          |t          ¦  «        o||j        vz  c_        |                     d d d ¦  «         d d d ¦  «         n# 1 swxY w Y   | j        j                             d d d ¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )Ni�  ÚerrorÚok)r   r�   r�   rŒ   r�   rŽ   r1   Ústatusr¨   rš   r   Ú_get_request_attributesÚitemsr¡   r   ÚHTTP_STATUS_CODEÚendÚset_http_statusÚsampledr9   Ú__exit__r•   )rU   r±   r®   Úresponse_statusr¯   Úattrr§   s          r;   r~   r~   è   sÅ  è è € õ 
%Ñ	&Ô	&ð =ð =ØŒ{Ô1ð 	Øð=ð =ð =ñ =ô =ð =ð =ð =õ !Ô+Ñ-Ô-×=Ò=Õ>NÑOÔOˆà"*Ð"2˜$˜$¸¼ˆõ )Ñ*Ô*ð 	0ð 	0Ø”;Ô0ˆDÝ˜$¥Ñ-Ô-ð 0Ý0Ñ2Ô2ð 8ð 8Ý'>¸wÑ'GÔ'G×'MÒ'MÑ'OÔ'Oð 8ð 8™˜˜eØ×*Ò*¨4°Ñ7Ô7Ð7Ð7ð8ð8ð 8ð 8ñ 8ô 8ð 8ð 8ð 8ð 8ð 8ð 8øøøð 8ð 8ð 8ð 8ð #Ð.Ø×&Ò&¥xÔ'@À/ÑRÔRÐRØ-<ÀÒ-CÐ-C ' 'È�D”Kà—’‘
”
�
�
ð ×$Ò$ _Ñ5Ô5Ð5Ø�”Ý˜{Õ,<Ñ=Ô=ð OØ'¨{Ô/NÐNñ�”ð
 —’˜d D¨$Ñ/Ô/Ð/ð'	0ð 	0ð 	0ñ 	0ô 	0ð 	0ð 	0ð 	0ð 	0ð 	0ð 	0øøøð 	0ð 	0ð 	0ð 	0ð* 	ŒÔ!×*Ò*¨4°°tÑ<Ô<Ð<ð?=ð =ð =ñ =ô =ð =ð =ð =ð =ð =ð =ð =øøøð =ð =ð =ð =ð =ð =s`   ‘G¬AGÁ00F Â >C+ÃF Ã+C/Ã/F Ã2C/Ã3B!F ÆGÆ F$	Æ$GÆ'F$	Æ($GÇGÇ GÚrouter&   Ú_r   c              ‹   óL  K  — | j         j        r•t          ¦   «         5  t          j        ¦   «         }|j                             | j        j        d¦  «                             d¦  «        }| 	                    |t          j        ¬¦  «         d d d ¦  «         d S # 1 swxY w Y   d S d S )NÚ ú.©r‹   )r�   r�   r   rŒ   Úget_current_scoper‡   ÚreplaceÚappÚstripÚset_transaction_namer   Ú	COMPONENT)rU   rÀ   rÁ   r­   Ú
route_names        r;   r   r     sù   è è € Ø„{Ô)ð WÝ(Ñ*Ô*ð 	Wð 	WÝÔ0Ñ2Ô2ˆEØœ×+Ò+¨G¬KÔ,<¸bÑAÔA×GÒGÈÑLÔLˆJØ×&Ò& zÕ:KÔ:UÐ&ÑVÔVÐVð	Wð 	Wð 	Wñ 	Wô 	Wð 	Wð 	Wð 	Wð 	Wð 	Wð 	Wð 	Wøøøð 	Wð 	Wð 	Wð 	Wð 	Wð 	WðWð Ws   �A-BÂBÂBÚ	exceptionÚargsÚkwargszOptional[object]c                 óÌ   ‡— t          |¦  «         t          | |g|¢R i |¤ŽŠ‰€d S t          j        ¦   «                              t
          ¦  «        €‰S dddt          ddfˆfd„}|S )NrU   r#   rÍ   r6   r   c              “   ó  •K  — 	  ‰| |¦  «        }t          |¦  «        r|ƒ d {V —†}|t          j        r&t          j        dk    rt          | ¦  «        ƒ d {V —† S S S # t          $ r. t          j        ¦   «         }t          |¦  «         t          |Ž  Y nw xY w	 t          j        r't          j        dk    rt          | ¦  «        ƒ d {V —† d S d S d S # t          j        r&t          j        dk    rt          | ¦  «        ƒ d {V —† w w w xY w)Nr@   )	r   r1   r3   r~   Ú	ExceptionÚsysÚexc_infoÚ_capture_exceptionr   )rU   rÍ   r±   rÔ   Úold_error_handlers       €r;   Úsentry_wrapped_error_handlerzB_sentry_error_handler_lookup.<locals>.sentry_wrapped_error_handler!  so  øè è € ð	-Ø(Ð(¨°)Ñ<Ô<ˆHÝ˜8Ñ$Ô$ð *Ø!)˜>˜>˜>˜>˜>˜>�Øõ  Ô'ð -Õ,<Ô,DÈÒ,OÐ,OÝ# GÑ,Ô,Ð,Ð,Ð,Ð,Ð,Ð,Ð,Ð,ð-Ð,Oøõ ð 	ð 	ð 	õ ”|‘~”~ˆHÝ˜xÑ(Ô(Ð(Ý�XÐÐÐÐð	øøøð õ  Ô'ð -Õ,<Ô,DÈÒ,OÐ,OÝ# GÑ,Ô,Ð,Ð,Ð,Ð,Ð,Ð,Ð,Ð,Ð,ð-ð -Ð,OÐ,OøÕÔ'ð -Õ,<Ô,DÈÒ,OÐ,OÝ# GÑ,Ô,Ð,Ð,Ð,Ð,Ð,Ð,Ð,Ð,ð-Ð,Oøøøs#   …$A Á5BÂC ÂBÂC Ã5D)rÕ   Úold_error_handler_lookuprŒ   r�   rŽ   r1   rÒ   )r:   rÍ   rÎ   rÏ   r×   rÖ   s        @r;   rt   rt     s    ø€ õ �yÑ!Ô!Ð!Ý0°°yÐRÀ4ÐRÐRÐRÈ6ÐRÐRÐàÐ ØˆtåÔÑÔ×.Ò.Õ/?Ñ@Ô@ÐHØ Ð ð-Øð-Ý'0ð-à	ð-ð -ð -ð -ð -ð -ð* (Ð'r=   c              �   óÌ  K  — t          j        ¦   «                              t          ¦  «        €t	          | |g|¢R i |¤Žƒ d {V —†S t          j        |¦  «        }t          j        ¦   «         5 }|                     ¦   «          | 	                    t          |¦  «        ¦  «         t	          | |g|¢R i |¤Ž}t          |¦  «        r|ƒ d {V —†}|cd d d ¦  «         S # 1 swxY w Y   d S r\   )rŒ   r�   rŽ   r1   Úold_handle_requestr’   r“   r”   r—   r˜   r™   r   )r:   rU   rÎ   rÏ   r¬   r­   r±   s          r;   rw   rw   9  sI  è è € õ ÔÑÔ×.Ò.Õ/?Ñ@Ô@ÐHÝ'¨¨gÐG¸ÐGÐGÐGÀÐGÐGÐGÐGÐGÐGÐGÐGÐGå”;˜wÑ'Ô'€Lå	Ô	#Ñ	%Ô	%ð ¨Ø×ÒÑ!Ô!Ð!Ø×!Ò!Õ"9¸,Ñ"GÔ"GÑHÔHÐHå% d¨GÐE°dÐEÐEÐE¸fÐEÐEˆÝ�xÑ Ô ð 	&Ø%�~�~�~�~�~�~ˆHàðð ð ð ñ ô ð ð ð ð ð ð øøøð ð ð ð ð ð s   Á,A CÃCÃ CúUnion[Any, Request]c                 ó\  — t          | g|¢R Ž }t          j        ¦   «                              t          ¦  «        �ót          ¦   «         5  t          j        ¦   «         }t          j        r‚t          j        dk    rr| j        j	        j
        }|d         j
        }|                     d|z  ¦  «        r|t          |¦  «        dz   d …         }|                     |t          j        ¬¦  «         n,|                     |d         j        t          j        ¬¦  «         d d d ¦  «         n# 1 swxY w Y   |S )N)rA   é   r   z%s.é   rÅ   )Úold_router_getrŒ   r�   rŽ   r1   r   Úget_isolation_scoper3   r�   rÈ   r‡   rD   rW   rÊ   r   rË   rJ   )r:   rÎ   Úrvr­   Úsanic_app_nameÚsanic_routes         r;   ry   ry   L  sq  € Ý	˜Ð	$˜tÐ	$Ð	$Ð	$€BÝÔÑÔ×.Ò.Õ/?Ñ@Ô@ÐLÝ(Ñ*Ô*ð 	ð 	ÝÔ2Ñ4Ô4ˆEÝÔ'ð Õ,<Ô,DÈÒ,OÐ,Oð "&¤¤Ô!2�Ø  œeœj�à×)Ò)¨%°.Ñ*@ÑAÔAð Ið #.­c°.Ñ.AÔ.AÀAÑ.EÐ.GÐ.GÔ"H�Kà×*Ò*ØÕ(9Ô(Cð +ñ ô ð ð ð ×*Ò*Ø�q”E”NÕ+<Ô+Fð +ñ ô ð ð'	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð. €Is   ÁCD!Ä!D%Ä(D%úUnion[ExcInfo, BaseException]c                 óZ  — t          ¦   «         5  t          | t          j        ¦   «         j        dddœ¬¦  «        \  }}|r=t          |d         d         d¦  «        r!|d         d         j        r	 d d d ¦  «         d S t          j        ||¬¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )	Nr2   F)ÚtypeÚhandled)Úclient_optionsÚ	mechanismrÔ   r   Úquiet)Úhint)r   r   rŒ   r�   r‘   Úhasattrrê   Úcapture_event)rÍ   Úeventrë   s      r;   rÕ   rÕ   i  s#  € å	$Ñ	&Ô	&ð 
3ð 
3Ý*ØÝ%Ô0Ñ2Ô2Ô:Ø&°5Ð9Ð9ð
ñ 
ô 
‰ˆˆtð ð 	•G˜D Ô,¨QÔ/°Ñ9Ô9ð 	¸dÀ:Ô>NÈqÔ>QÔ>Wð 	Øð
3ð 
3ð 
3ñ 
3ô 
3ð 
3ð 
3ð 
3õ 	Ô  ¨TÐ2Ñ2Ô2Ð2ð
3ð 
3ð 
3ñ 
3ô 
3ð 
3ð 
3ð 
3ð 
3ð 
3ð 
3ð 
3øøøð 
3ð 
3ð 
3ð 
3ð 
3ð 
3s   �A!B Á=B Â B$Â'B$úDict[str, Any]c                 óè  — i }| j         r&| j                              ¦   «         |t          j        <   t	          t          | j        ¦  «        d¬¦  «        }|                     ¦   «         D ]+\  }}||t          j        › d| 	                    ¦   «         › �<   Œ,t          | j        ¦  «        }t          j        ¦   «         j        }t          |¦  «        r§|j        |d<   d}|j        r3t%          |j        |d         d         ¬¦  «        }|r||t          j        <   |                     |pd	¬
¦  «                             ¦   «         |t          j        <   | j        r"|d         d         r| j        |t          j        <   nbt3          ¦   «         rT| j        |t          j        <   |j        |d<   |j        r|j        |t          j        <   | j        r| j        |t          j        <   |j        r|j        |t          j        <   |S )zR
    Return span attributes related to the HTTP request from a Sanic request.
    F)Úuse_annotated_valuerÄ   zurl.pathNr…   Úurl_query_params©Úquery_stringÚ	behaviourrÃ   )Úqueryr†   )ÚmethodÚupperr   ÚHTTP_REQUEST_METHODr   r]   rž   r¸   ÚHTTP_REQUEST_HEADERÚlowerr   ÚurlrŒ   r�   r‘   r   r¤   rö   r	   Ú
HTTP_QUERYÚ_replaceÚgeturlÚURL_FULLr    ÚCLIENT_ADDRESSr   ÚschemeÚNETWORK_PROTOCOL_NAME)rU   rˆ   rž   Úheaderr§   Úurlpartsrè   Úfiltered_querys           r;   r·   r·   x  s  € ð €Jà„~ð JØ3:´>×3GÒ3GÑ3IÔ3Iˆ
•8Ô/Ñ0å�d 7¤?Ñ3Ô3ÈÐOÑOÔO€GØ Ÿš™œð Oð O‰ˆ�ØINˆ
•hÔ2ÐEÐE°V·\²\±^´^ÐEÐEÑFÐFå˜œÑ$Ô$€HÝÔ*Ñ,Ô,Ô4€Nå" >Ñ2Ô2ð FØ!)¤ˆ
�:ÑàˆØŒ>ð 	AÝMØ%œ^Ø(Ð):Ô;Ð<NÔOðñ ô ˆNð ð AØ2@�
�8Ô.Ñ/à(0×(9Ò(9Ø Ð& Bð ):ñ )
ô )
ç
Š&‰(Œ(ð 	•8Ô$Ñ%ð Ôð 	JØÐ/Ô0°Ô=ð JØ6=Ô6I�
�8Ô2Ñ3øå	 Ñ	"Ô	"ð FØ(/¬ˆ
•8Ô$Ñ%Ø!)¤ˆ
�:ÑàŒ>ð 	=Ø.6¬nˆJ•xÔ*Ñ+àÔð 	FØ29Ô2EˆJ•xÔ.Ñ/à„ð EØ5=´_ˆ
•8Ô1Ñ2àÐr=   r¬   úCallable[[], Request]r(   c                 ó   ‡ — dˆ fd„}|S )	Nrî   r'   rë   úOptional[Hint]r6   úOptional[Event]c                 ó  •— 	 |r#t          |d         d         t          ¦  «        rd S n# t          $ r Y nw xY w ‰¦   «         }|€| S t          ¦   «         5  t	          |¦  «        }|                     | ¦  «         | d         }t          |j        ¦  «        }|j        ›d|j	        ›|j
        ›�|d<   t          j        ¦   «         j        }t          |¦  «        r1|j        r)t!          |j        |d         d         ¬¦  «        }|r||d	<   n
|j        |d	<   |j        |d
<   t          |¦  «        r|d         d         rd|j        i|d<   t'          t)          |j        ¦  «        ¦  «        |d<   d d d ¦  «         n# 1 swxY w Y   | S )NrÔ   r   rU   z://rü   r…   rò   ró   rô   r÷   r†   ÚREMOTE_ADDRÚenvrž   )Ú
issubclassr-   ÚKeyErrorr   rS   Úextract_into_eventr   rü   r  Únetlocr¤   rŒ   r�   r‘   r   rö   r	   r÷   r    r   r]   rž   )	rî   rë   rU   Ú	extractorÚrequest_infor  rè   r  r¬   s	           €r;   Úsanic_processorz0_make_request_processor.<locals>.sanic_processor­  s  ø€ ð	Øð �
 4¨
Ô#3°AÔ#6½ÑGÔGð Ø�tøøÝð 	ð 	ð 	ØˆDð	øøøð �,‘.”.ˆØˆ?ØˆLå(Ñ*Ô*ð "	Mð "	MÝ-¨gÑ6Ô6ˆIØ×(Ò(¨Ñ/Ô/Ð/à  Ô+ˆLÝ ¤Ñ,Ô,ˆHð ”��Ø”�Ø”�ð#ˆL˜Ñõ (Ô2Ñ4Ô4Ô<ˆNÝ*¨>Ñ:Ô:ð 	>Ø”>ð FÝ%UØ%-¤^Ø"0Ð1BÔ"CÐDVÔ"Wð&ñ &ô &�Nð &ð FØ7E˜ ^Ñ4øà/7¬~�˜^Ñ,à%,¤^ˆL˜Ñ"õ
 0°Ñ?Ô?ðKà!Ð"3Ô4°[ÔAðKð (5°gÔ6IÐ&J�˜UÑ#Ý&5µd¸7¼?Ñ6KÔ6KÑ&LÔ&LˆL˜Ñ#ðE"	Mð "	Mð "	Mñ "	Mô "	Mð "	Mð "	Mð "	Mð "	Mð "	Mð "	Møøøð "	Mð "	Mð "	Mð "	MðH ˆs   ƒ#) ©
6µ6ÁDE6Å6E:Å=E:)rî   r'   rë   r	  r6   r
  rG   )r¬   r  s   ` r;   r™   r™   ¬  s*   ø€ ð/ð /ð /ð /ð /ð /ðb Ðr=   rI   )r:   r+   r6   N)rU   r#   r6   Nr\   )rU   r#   r±   r²   r6   N)rU   r#   rÀ   r&   rÁ   r   r6   N)
r:   r   rU   r#   rÎ   r   rÏ   r   r6   r   )r:   r   rÎ   rÛ   r6   r   )rÍ   rä   r6   N)rU   r#   r6   rï   )r¬   r  r6   r(   )_rÓ   r›   r’   Úinspectr   Útypingr   Úurllib.parser   rŒ   r   Úsentry_sdk.constsr   r   Úsentry_sdk.data_collectionr	   Úsentry_sdk.integrationsr
   r   r   Ú$sentry_sdk.integrations._wsgi_commonr   r   Úsentry_sdk.integrations.loggingr   Úsentry_sdk.scoper   Úsentry_sdk.tracesr   r   Úsentry_sdk.tracingr   Úsentry_sdk.tracing_utilsr   Úsentry_sdk.utilsr   r   r   r   r   r   r   r   Úcollections.abcr   r   r   r    r!   r"   Úsanic.requestr#   r$   Úsanic.responser%   Úsanic.routerr&   Úsentry_sdk._typesr'   r(   r)   r*   r2   r+   r,   rC   Úsanic.exceptionsr-   Úsanic.handlersr.   r/   ÚImportErrorru   rØ   rx   rÚ   rz   rß   rs   r€   ÚAttributeErrorr1   rS   rF   rE   r}   r~   r   rÒ   rt   rw   ry   rÕ   r·   r™   rG   r=   r;   ú<module>r+     s  ðØ 
€
€
€
Ø €€€Ø €€€Ø Ð Ð Ð Ð Ð Ø  Ð  Ð  Ð  Ð  Ð  Ø !Ð !Ð !Ð !Ð !Ð !à Ð Ð Ð Ø %Ð %Ð %Ð %Ð %Ð %Ø *Ð *Ð *Ð *Ð *Ð *Ð *Ð *ðð ð ð ð ð ð VÐ UÐ UÐ UÐ UÐ UÐ UÐ UÐ UÐ UØ RÐ RÐ RÐ RÐ RÐ RÐ RÐ RØ 9Ð 9Ð 9Ð 9Ð 9Ð 9Ø 4Ð 4Ð 4Ð 4Ð 4Ð 4Ø =Ð =Ð =Ð =Ð =Ð =Ð =Ð =Ø 0Ð 0Ð 0Ð 0Ð 0Ð 0Ø ?Ð ?Ð ?Ð ?Ð ?Ð ?ð	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð ð GØ)Ð)Ð)Ð)Ð)Ð)Ø;Ð;Ð;Ð;Ð;Ð;Ð;Ð;Ð;Ð;Ð;Ð;Ð;Ð;à8Ð8Ð8Ð8Ð8Ð8Ð8Ð8Ø/Ð/Ð/Ð/Ð/Ð/Ø"Ð"Ð"Ð"Ð"Ð"àFÐFÐFÐFÐFÐFÐFÐFÐFÐFÐFÐFð.ØÐÐÐÐÐØ2Ð2Ð2Ð2Ð2Ð2Ø/Ð/Ð/Ð/Ð/Ð/Ø+Ð+Ð+Ð+Ð+Ð+Ø#Ð#Ð#Ð#Ð#Ð#Ð#øØð .ð .ð .Ø
ˆ,Ð,Ñ
-Ô
-Ð-ð.øøøð (Ô.Ð ØÔ)Ð Ø”€ð	à”.€K€KøØð 	ð 	ð 	Ø€Dð	øøøð-ð -ð -ð -ð -�{ñ -ô -ð -ð`$ð $ð $ð $ð $Ð,ñ $ô $ð $ð87ð 7ð 7ð 7ð
7ð 7ð 7ð 7ðð ð ð ð&=ð =ð =ð =ðB BFð"=Øð"=Ø">ð"=à	ð"=ð "=ð "=ð "=ðJWð Wð Wð Wð!(Ø
ð!(Ø%ð!(Ø.3ð!(Ø?Dð!(àð!(ð !(ð !(ð !(ðHØ
ðØ#ðØ,1ðØ=Bðà
ðð ð ð ð&ð ð ð ð: ÐÐ,Ñ-Ô-ð3ð 3ð 3ñ .Ô-ð3ð1ð 1ð 1ð 1ðh2ð 2ð 2ð 2ð 2ð 2s   Â4C ÃC$Ã=D ÄDÄD