/opt/cloudlinux/venv/lib/python3.11/site-packages/raven/contrib/__pycache__
NameSizeModeActions
async.cpython-311.pyc20610644editdlrm
flask.cpython-311.pyc143600644editdlrm
paste.cpython-311.pyc8470644editdlrm
sanic.cpython-311.pyc103220644editdlrm
__init__.cpython-311.pyc4550644editdlrm
Edit: /opt/cloudlinux/venv/lib/python3.11/site-packages/raven/contrib/__pycache__/flask.cpython-311.pyc (14360B)
§ ïuøð!ÂPèãóT—dZddlmZ ddlmZdZn #e$rdZYnwxYwddlZddlZddl m Z m Z m Z ddl mZmZdd lmZdd lmZdd lmZdd lmZdd lmZddlmZddlmZddlm Z m!Z!ddl"m#Z#ej$¦«Z%e% &d¦«Z'dd„Z(Gd„de)¦«ZdS)z£ raven.contrib.flask ~~~~~~~~~~~~~~~~~~~ :copyright: (c) 2010-2012 by the Sentry Team, see AUTHORS for more details. :license: BSD, see LICENSE for more details. é)Úabsolute_import)Ú current_userTFN)ÚrequestÚ current_appÚg)Úgot_request_exceptionÚrequest_finished)ÚClientDisconnected)Ú setup_logging)ÚClient)ÚSentry)Ú SentryHandler)Úurlparse)Ú to_unicode)Ú get_headersÚ get_environ)Úconvert_optionsÚlogging_configuredcóò—|dit|j|t|j dg¦«¦«t|jg¦«z|j dg¦«d|idœ¬¦«¤ŽS)NÚSENTRY_INCLUDE_PATHSÚRAVEN_IGNORE_EXCEPTIONSÚapp)ÚdsnÚ include_pathsÚignore_exceptionsÚextra)Údefaults©)rÚconfigÚsetÚgetÚ import_name)Ú client_clsrrs úe/builddir/build/BUILD/cloudlinux-venv-1.0.12/venv/lib/python3.11/site-packages/raven/contrib/flask.pyÚ make_clientr%'s•€Ø ˆ:ð ð Ý Ø ŒJà嘜 ŸšÐ'=¸rÑBÔBÑCÔCݘ3œ?Ð+Ñ,Ô,ñ-ð&)¤Z§^¢^Ð4MÈrÑ%RÔ%Rà˜3ðð ð ð ñ ô ð ð ðóc óЗeZdZdZddedddejddf d„Zed„¦«Z e j d„¦«Z d„Z d „Z d „Z d „Zd „Zd „Zdd„Zd„Zd„Z dd„Zd„Zd„Zd„Zd„Zd„ZdS)r a± Flask application for Sentry. Look up configuration from ``os.environ['SENTRY_DSN']``:: >>> sentry = Sentry(app) Pass an arbitrary DSN:: >>> sentry = Sentry(app, dsn='http://public:secret@example.com/1') Pass an explicit client:: >>> sentry = Sentry(app, client=client) Automatically configure logging:: >>> sentry = Sentry(app, logging=True, level=logging.ERROR) Capture an exception:: >>> try: >>> 1 / 0 >>> except ZeroDivisionError: >>> sentry.captureException() Capture a message:: >>> sentry.captureMessage('hello, world!') By default, the Flask integration will do the following: - Hook into the `got_request_exception` signal. This can be disabled by passing `register_signal=False`. - Wrap the WSGI application. This can be disabled by passing `wrap_wsgi=False`. - Capture information from Flask-Login (if available). NFTc óô—|r$t|t¦«std¦«‚||_||_||_||_||_||_||_ | |_ |r|  |¦«dSdS)Nz&client should be an instance of Client) Ú isinstancer Ú TypeErrorrÚloggingÚlogging_exclusionsr#ÚclientÚlevelÚ wrap_wsgiÚregister_signalÚinit_app) Úselfrr-r#rr+r,r.r/r0s r$Ú__init__zSentry.__init__es’€ð ð F�* V­VÑ4Ô4ð FÝÐDÑEÔEÐ EàˆŒØˆŒ Ø"4ˆÔØ$ˆŒØˆŒ ؈Œ Ø"ˆŒØ.ˆÔà ð Ø �MŠM˜#Ñ Ô Ð Ð Ð ð ð r&có^— tjS#t$rYnwxYwt|dd¦«S)NÚ_last_event_id)rÚsentry_event_idÚ ExceptionÚgetattr)r2s r$Ú last_event_idzSentry.last_event_idwsC€ð ÝÔ$Ð $øÝð ð ð Ø ˆDð øøøå�tÐ-¨tÑ4Ô4Ð4s ‚ Ž šcóP—||_ |t_dS#t$rYdSwxYw©N)r5rr6r7)r2Úvalues r$r9zSentry.last_event_ids?€à#ˆÔð Ø %�AÔ Ð Ð øÝð ð ð Ø ˆDˆDð øøøs ‰ — %¤%cóì—|jsdS| d¦«}|�(t|d¦«rt|¦«||jf}n| d¦«}| |¬¦«dS)NÚ exceptionÚ __traceback__Úexc_info)r@)r-r!ÚhasattrÚtyper?ÚcaptureException)r2ÚargsÚkwargsr>r@s r$Úhandle_exceptionzSentry.handle_exception‡s€€ØŒ{ð Ø ˆFð—J’J˜{Ñ+Ô+ˆ Ø Ð ¥W¨Y¸Ñ%HÔ%HÐ å˜Y™œ¨°IÔ4KÐLˆHˆHð—z’z *Ñ-Ô-ˆHà ×Ò xÐÑ0Ô0Ð0Ð0Ð0r&cóê—i} |jd}n#t$r |j}YnwxYw|r||d<ts|St t d¦«s|S t j}n#t$r|cYSwxYwt|¦«r |¦«}|s|St j ¦«|d<dt j vrBt j dD]/}t t |¦«rtt |¦«||<Œ0|S)zu Requires Flask-Login (https://pypi.python.org/pypi/Flask-Login/) to be installed and setup. rÚ ip_addressÚ login_managerÚidÚSENTRY_USER_ATTRS) Ú access_routeÚ IndexErrorÚ remote_addrÚhas_flask_loginrArrÚis_authenticatedÚAttributeErrorÚcallableÚget_idrr8)r2rÚ user_inforHrPÚattrs r$Ú get_user_infozSentry.get_user_info–sO€ð ˆ ð -Ø Ô-¨aÔ0ˆJˆJøÝð -ð -ð -Ø Ô,ˆJˆJˆJð -øøøð ð 1Ø&0ˆI�lÑ #åð ØÐ å•{ OÑ4Ô4ð ØÐ ð Ý+Ô<Ð Ð øÝð ð ð ðÐ Ð Ð ð  øøøõ Ð$Ñ %Ô %ð 2Ø/Ð/Ñ1Ô1Ð àð ØÐ å&Ô-Ñ/Ô/ˆ �$‰à ¥+Ô"4Ð 4Ð 4Ý#Ô*Ð+>Ô?ð Bð B�Ý�<¨Ñ.Ô.ðBÝ&-­l¸DÑ&AÔ&A�I˜d‘OøàÐs„ ’&¥&Á AÁ A-Á,A-có€—| |j¦«r|j}n|j}| ||¦«S)zR Determine how to retrieve actual data by using request.mimetype. )Ú is_json_typeÚmimetypeÚ get_json_dataÚ get_form_dataÚget_http_info_with_retriever)r2rÚ retrievers r$Ú get_http_infozSentry.get_http_infoÂsE€ð × Ò ˜WÔ-Ñ .Ô .ð +ØÔ*ˆIˆIàÔ*ˆIØ×0Ò0°¸)ÑDÔDÐDr&có—|dkS)Nzapplication/jsonr)r2Ú content_types r$rXzSentry.is_json_typeÌs€ØÐ1Ò1Ð1r&có—|jSr;)Úform©r2rs r$r[zSentry.get_form_dataÏó €ØŒ|Ðr&có—|jSr;)Údatarcs r$rZzSentry.get_json_dataÒrdr&c óR—|€|j}tj|j¦«} ||¦«}n#t$ri}YnwxYw|j›d|j›|j›�|j|j |tt|j ¦«¦«tt|j ¦«¦«dœS)zT Exact method for getting http_info but with form data work around. Nz://)ÚurlÚ query_stringÚmethodrfÚheadersÚenv)r[rÚurlsplitrhr ÚschemeÚnetlocÚpathÚqueryrjÚdictrÚenvironr)r2rr]Úurlpartsrfs r$r\z#Sentry.get_http_info_with_retrieverÕs¾€ð Ð ØÔ*ˆIåÔ$ W¤[Ñ1Ô1ˆð Ø�9˜WÑ%Ô%ˆDˆDøÝ!ð ð ð ØˆDˆDˆDð øøøð#+¤/ / /°8´?°?ÀHÄMÀMÐRØ$œNØ”nØÝ�K¨¬Ñ8Ô8Ñ9Ô9Ý�  G¤OÑ4Ô4Ñ5Ô5ð  ð ð s ¤ 0° ?¾?cód—d|_tjr.|jj tjj¦« |j | t¦«¦«nC#t$r6}|jj   t|¦«¦«Yd}~nd}~wwxYw |j  | t¦«¦«dS#t$r7}|jj   t|¦«¦«Yd}~dSd}~wwxYwr;)r9rÚurl_ruler-Ú transactionÚpushÚruleÚ http_contextr^r7Úloggerr>rÚ user_contextrV)r2rDrEÚes r$Úbefore_requestzSentry.before_requestìs-€Ø!ˆÔå Ô ð @Ø ŒKÔ #× (Ò (­Ô)9Ô)>Ñ ?Ô ?Ð ?ð 8Ø ŒK× $Ò $ T×%7Ò%7½Ñ%@Ô%@Ñ AÔ AÐ AÐ AøÝð 8ð 8ð 8Ø ŒKÔ × (Ò (­°A©¬Ñ 7Ô 7Ð 7Ð 7Ð 7Ð 7Ð 7Ð 7øøøøð 8øøøð 8Ø ŒK× $Ò $ T×%7Ò%7½Ñ%@Ô%@Ñ AÔ AÐ AÐ AÐ AøÝð 8ð 8ð 8Ø ŒKÔ × (Ò (­°A©¬Ñ 7Ô 7Ð 7Ð 7Ð 7Ð 7Ð 7Ð 7Ð 7øøøøð 8øøøs0Á2A6Á6 B6Â,B1Â1B6Â:2C.Ã. D/Ã8,D*Ä*D/cóâ—|jr|j|jd<|jj ¦«t jr.|jj t jj ¦«|S)Nz X-Sentry-ID) r9rkr-ÚcontextÚclearrrvrwÚpopry)r2ÚsenderÚresponserDrEs r$Ú after_requestzSentry.after_requestûsd€Ø Ô ð AØ.2Ô.@ˆHÔ ˜]Ñ +Ø Œ Ô×!Ò!Ñ#Ô#Ð#Ý Ô ð ?Ø ŒKÔ #× 'Ò '­Ô(8Ô(=Ñ >Ô >Ð >؈r&cóB—|�||_|�||_|�||_n|j€|r|jrd|_nd|_|�||_|�||_|�||_|js t|j ||j¦«|_|jr|i}|j� |j|d<t|j|j¬¦«} t| fi|¤Ž|j j dur|j  | ¦«tj|fdti|¤Ž|jrt#|j|j¦«|_| |j¦«t)j|j|¬¦«|jrt/j|j|¬¦«t3|d¦«si|_||jd<dS) NFTÚexclude)r.Úsentry_handler)rƒÚ extensionsÚsentry)rr.r/Údebugr0r+r,r-r%r#rr r{Ú propagateÚ addHandlerrÚsendÚSentryMiddlewareÚwsgi_appr~r Úconnectr…rrFrAr‰) r2rrr+r.r,r/r0rEÚhandlers r$r1zSentry.init_appsè€ð ˆ?؈DŒHà Р؈DŒJà Ð Ø&ˆDŒNˆNØ Œ^Ð #ðð &�s”yð &Ø!&�”�à!%�”à Ð &Ø#2ˆDÔ à Ð Ø"ˆDŒLà Ð )Ø&8ˆDÔ #àŒ{ð FÝ% d¤o°s¸D¼HÑEÔEˆDŒKà Œ<ð >؈FØÔ&Ð2Ø$(Ô$;��yÑ!Ý# D¤K°t´zÐBÑBÔBˆGÝ ˜'Ð ,Ð , VÐ ,Ð ,Ð ,àŒzÔ# uÐ,Ð,Ø” ×%Ò% gÑ.Ô.Ð.å Ô #Øð >ð >Ý%2ð >Ø6<ð >ð >ð >ð Œ>ð GÝ+¨C¬L¸$¼+ÑFÔFˆCŒLà ×Ò˜4Ô.Ñ/Ô/Ð/ÝÔ  Ô!3¸CÐ@Ñ@Ô@Ð@à Ô ð MÝ !Ô )¨$Ô*?ÈÐ LÑ LÔ LÐ Lå�s˜LÑ)Ô)ð ØˆCŒNØ#'ˆŒ�xÑ Ð Ð r&cóž—|js Jd¦«‚|jj|i|¤Ž}|r |j |¦«|_nd|_|S)Nz5captureException called before application configured)r-rCÚ get_identr9©r2rDrEÚresults r$rCzSentry.captureException<sa€ØŒ{ÐSÐSÐSÑSÔSˆ{Ø-�”Ô-¨tÐ>°vÐ>Ð>ˆØ ð &Ø!%¤×!6Ò!6°vÑ!>Ô!>ˆDÔ Ð à!%ˆDÔ Øˆ r&cóž—|js Jd¦«‚|jj|i|¤Ž}|r |j |¦«|_nd|_|S)Nz3captureMessage called before application configured)r-ÚcaptureMessager”r9r•s r$r˜zSentry.captureMessageEsa€ØŒ{ÐQÐQÐQÑQÔQˆ{Ø+�”Ô+¨TÐ<°VÐ<Ð<ˆØ ð &Ø!%¤×!6Ò!6°vÑ!>Ô!>ˆDÔ Ð à!%ˆDÔ Øˆ r&cóH—|js Jd¦«‚|jj|i|¤ŽS)Nz1user_context called before application configured)r-r|©r2rDrEs r$r|zSentry.user_contextNó2€ØŒ{ÐOÐOÐOÑOÔOˆ{Ø'ˆtŒ{Ô'¨Ð8°Ð8Ð8Ð8r&cóH—|js Jd¦«‚|jj|i|¤ŽS)Nz1tags_context called before application configured)r-Ú tags_contextršs r$r�zSentry.tags_contextRr›r&cóH—|js Jd¦«‚|jj|i|¤ŽS)Nz2extra_context called before application configured)r-Ú extra_contextršs r$rŸzSentry.extra_contextVs2€ØŒ{ÐPÐPÐPÑPÔPˆ{Ø(ˆtŒ{Ô(¨$Ð9°&Ð9Ð9Ð9r&r;)NNNNNN)Ú__name__Ú __module__Ú __qualname__Ú__doc__r r+ÚNOTSETr3Úpropertyr9ÚsetterrFrVr^rXr[rZr\r~r…r1rCr˜r|r�rŸrr&r$r r ;s�€€€€€ð%ð%ðR ¨¸ÀTذ4¸w¼~ذððððð$ð5ð5ñ„Xð5ðÔððñÔðð 1ð 1ð 1ð*ð*ð*ðXEðEðEð2ð2ð2ððððððð ð ð ð ð. 8ð 8ð 8ðððð;?Ø48Ø!%ð7(ð7(ð7(ð7(ðrðððððð9ð9ð9ð9ð9ð9ð:ð:ð:ð:ð:r&r r;)*r£Ú __future__rÚ flask_loginrrOÚ ImportErrorr+ÚblinkerÚflaskrrrÚ flask.signalsrr Úwerkzeug.exceptionsr Ú raven.confr Ú raven.baser Úraven.middlewarer r�Úraven.handlers.loggingrÚraven.utils.compatrÚraven.utils.encodingrÚraven.utils.wsgirrÚraven.utils.confrÚ NamespaceÚ raven_signalsÚsignalrr%Úobjectrr&r$úrºsÔðððð'Ð&Ð&Ð&Ð&Ð&ðØ(Ð(Ð(Ð(Ð(Ð(ð€O€OøððððØ€O€O€Oðøøøð €€€à€€€Ø)Ð)Ð)Ð)Ð)Ð)Ð)Ð)Ð)Ð)ØAÐAÐAÐAÐAÐAÐAÐAØ2Ð2Ð2Ð2Ð2Ð2à$Ð$Ð$Ð$Ð$Ð$ØÐÐÐÐÐØ7Ð7Ð7Ð7Ð7Ð7Ø0Ð0Ð0Ð0Ð0Ð0Ø'Ð'Ð'Ð'Ð'Ð'Ø+Ð+Ð+Ð+Ð+Ð+Ø5Ð5Ð5Ð5Ð5Ð5Ð5Ð5Ø,Ð,Ð,Ð,Ð,Ð,ð"�Ô!Ñ#Ô#€ Ø"×)Ò)Ð*>Ñ?Ô?Ðððððð(]:ð]:ð]:ð]:ð]:ˆVñ]:ô]:ð]:ð]:ð]:s Š“œ