/opt/cloudlinux/venv/lib/python3.11/site-packages/raven/__pycache__
NameSizeModeActions
base.cpython-311.pyc422110644editdlrm
breadcrumbs.cpython-311.pyc172990644editdlrm
context.cpython-311.pyc68470644editdlrm
events.cpython-311.pyc70210644editdlrm
exceptions.cpython-311.pyc22390644editdlrm
middleware.cpython-311.pyc62550644editdlrm
processors.cpython-311.pyc93810644editdlrm
versioning.cpython-311.pyc41080644editdlrm
__init__.cpython-311.pyc25610644editdlrm
Edit: /opt/cloudlinux/venv/lib/python3.11/site-packages/raven/__pycache__/base.cpython-311.pyc (42211B)
§ òÕK»ÜS?ãó<—dZddlmZddlZddlZddlZddlZddlZddlZddl Z ddl m Z ddl m Z ddl mZddlmZddlmZejd krddlZnddlZ dd lmZn#e$r dd lmZYnwxYwddlZdd lmZdd lmZdd l m!Z!m"Z"ddl#m$Z$m%Z%m&Z&m'Z'ddl(m)Z)m*Z*ddl+m,Z,ddl-m.Z.ddl/m0Z0m1Z1ddl2m3Z3ddl4m5Z5m6Z6ddl7ZdZ8da9dZ:dej;dœZZ?d„Z@Gd„deA¦«ZBGd„deC¦«ZDGd„deC¦«ZEGd „d!eE¦«ZFdS)"z‘ raven.base ~~~~~~~~~~ :copyright: (c) 2010-2012 by the Sentry Team, see AUTHORS for more details. :license: BSD, see LICENSE for more details. é)Úabsolute_importN)Údatetime©Úisclass)ÚRandom)Ú FunctionType)Úlocal)éé)Ú get_ident)Údefaults)Ú RemoteConfig)ÚAPIErrorÚ RateLimited)ÚjsonÚ get_versionsÚget_auth_headerÚ merge_dicts)Ú text_typeÚ iteritems)Ú to_unicode)Ú transform)Úget_stack_infoÚiter_stack_frames)ÚTransactionStack)ÚTransportRegistryÚdefault_transports)ÚClientÚpythonz raven-python)ÚnameÚversioncó8—ttjdd¦«S)NÚ raven_client)ÚgetattrÚsysÚ excepthook©óú\/builddir/build/BUILD/cloudlinux-venv-1.0.12/venv/lib/python3.11/site-packages/raven/base.pyÚget_excepthook_clientr*Es€Ý •3”> >°4Ñ 8Ô 8Ð8r(có—eZdZd„ZdS)ÚModuleProxyCachecó„—| dd¦«\}}tt|ii|g¦«|¦«}|||<|S)Nú.é)Úrsplitr$Ú __import__)ÚselfÚkeyÚmoduleÚ class_nameÚhandlers r)Ú __missing__zModuleProxyCache.__missing__JsS€Ø ŸZšZ¨¨QÑ/Ô/ш� å�*Ø �B˜˜Z˜Lñ*ô*Ø+5ñ7ô7ˆðˆˆS‰ àˆr(N)Ú__name__Ú __module__Ú __qualname__r7r'r(r)r,r,Is#€€€€€ðððððr(r,có6—eZdZdZdZd„Zd„Zd d„Zd„Zd„Z dS) Ú ClientStater/rcóH—|j|_d|_d|_d|_dS©Nr©ÚONLINEÚstatusÚ last_checkÚ retry_numberÚ retry_after©r2s r)Ú__init__zClientState.__init__Yó(€Ø”kˆŒ ؈ŒØˆÔ؈ÔÐÐr(cóª—|j|jkrdS|jpt|jd¦«dz}t j¦«|jz |krdSdS)NTér F)rAr@rDÚminrCÚtimerB)r2Úintervals r)Ú should_tryzClientState.should_try_sW€Ø Œ;˜$œ+Ò %Ð %Ø�4àÔ#ÐE¥s¨4Ô+<¸aÑ'@Ô'@ÀAÑ'Eˆå Œ9‰;Œ;˜œÑ (¨8Ò 3Ð 3Ø�4àˆur(có|—|j|_|xjdz c_tj¦«|_||_dS)Nr/)ÚERRORrArCrKrBrD)r2rDs r)Úset_failzClientState.set_failjs:€Ø”jˆŒ Ø ÐÔ˜QÑÐÔÝœ)™+œ+ˆŒØ&ˆÔÐÐr(cóH—|j|_d|_d|_d|_dSr>r?rEs r)Ú set_successzClientState.set_successprGr(có"—|j|jkS©N)rArOrEs r)Údid_failzClientState.did_failvs€ØŒ{˜dœjÒ(Ð(r(N)r) r8r9r:r@rOrFrMrPrRrUr'r(r)r<r<Usn€€€€€Ø €FØ €Eðððð ð ð ð'ð'ð'ð'ð ððð )ð)ð)ð)ð)r(r<cóÆ—eZdZdZejd¦«ZdZee ¬¦«Z d4d„Z d „Z d5d „Z d „Zd „Zd „Zed„¦«Zd„Zd„Zd„Zd„Zd6d„Zd„Zd„Zd„Z d7d„Zd„Zed„¦«Zd„Zd„Z d„Z!d„Z" d8d„Z#d„Z$d „Z%d!„Z&d"„Z'd#„Z(d6d$„Z)d6d%„Z*d6d&„Z+d'„Z,d(„Z-d)„Z.d*„Z/d6d+„Z0d,„Z1d6d-„Z2d9d/„Z3d0„Z4d1„Z5e5Z6ed2„¦«Z7e7j8d3„¦«Z7dS):raU The base Raven client. Will read default configuration from the environment variable ``SENTRY_DSN`` if available. >>> from raven import Client >>> # Read configuration from ``os.environ['SENTRY_DSN']`` >>> client = Client() >>> # Specify a DSN explicitly >>> client = Client(dsn='https://public_key:secret_key@sentry.local/project_id') >>> # Record an exception >>> try: >>> 1/0 >>> except ZeroDivisionError: >>> ident = client.get_ident(client.captureException()) >>> print "Exception caught; reference is %s" % ident ÚravenÚ6)Ú transportsNFTc  ó —| } t¦«|_||_|j} t ¦«|_t j| j›d| j ›�¦«|_ t jd¦«|_ t jd¦«|_ i|_ | ||¦«t|  d¦«pg¦«|_t|  d¦«pg¦«|_t'|  d¦«p?t(j d¦«p |  d¦«p t,j¦«|_t3|  d ¦«p t,j¦«|_t3|  d t,j¦«¦«|_t=|  d ¦«p t,j¦«|_ t=|  d ¦«p t,j!¦«|_"|  d ¦«|_#|  dd¦«|_$|  d¦«|_%|  d¦«|_&|j%€t,j'|_%|  d¦«} | € dtQtRdg¦«dd…i} | |_*|  d¦«pi|_+|  d¦«pt(j dd¦«|_,|  d¦«p=t(j d¦«pt(j d¦«|_-| .|  d¦«¦«|_/|  d¦«�|  d¦«nd|_0tc¦«|_2t|  d¦«pd¦«|_3ti¦«|_5tm|¦«|_7| 8¦«s|j  9d ¦«tt€|a:tw¦«|_<||_=d!d"l>m?} | |¦«|_@|r| A¦«|r| B¦«| C|¦«dS)#Nr.z sentry.errorszsentry.errors.uncaughtÚ include_pathsÚ exclude_pathsr Ú SENTRY_NAMEÚmachineÚauto_log_stacksÚcapture_localsÚstring_max_lengthÚlist_max_lengthÚsiteÚinclude_versionsTÚ processorsÚ sanitize_keysÚcontextzsys.argvÚargvÚtagsÚ environmentÚSENTRY_ENVIRONMENTÚreleaseÚSENTRY_RELEASEÚHEROKU_SLUG_COMMITÚreposÚ sample_rater/Úignore_exceptionsr'zaRaven is not configured (logging is disabled). Please see the documentation for more information.r)ÚContext)Dr Ú _local_stateÚraise_send_errorsÚ __class__r<ÚstateÚloggingÚ getLoggerr9r8ÚloggerÚ error_loggerÚuncaught_loggerÚ_transport_cacheÚset_dsnÚsetÚgetr[r\rÚosÚenvironr ÚNAMEr ÚboolÚAUTO_LOG_STACKSr_ÚCAPTURE_LOCALSr`ÚintÚMAX_LENGTH_STRINGraÚMAX_LENGTH_LISTrbrcrdrerfÚ PROCESSORSr$r%ÚextrarirjrlÚ _format_reposrorprÚ transactionrqr,Ú module_cacherÚ_randomÚ is_enabledÚinfoÚRavenÚget_thread_identÚmain_thread_idÚenable_breadcrumbsÚ raven.contextrrÚ_contextÚinstall_sys_hookÚinstall_logging_hookÚhook_libraries)r2ÚdsnrtÚ transportr—r˜r™r”Ú _random_seedÚoptionsÚoÚclsrgrrs r)rFzClient.__init__–sf€ð ˆå!™GœGˆÔà!2ˆÔðŒnˆÝ ‘]”]ˆŒ ÝÔ'Ø”~�~�~ s¤| |Ð 4ñ6ô6ˆŒ å#Ô-¨oÑ>Ô>ˆÔÝ&Ô0Ð1IÑJÔJˆÔà "ˆÔØ � Š �S˜)Ñ$Ô$Ð$å  §¢ Ñ!7Ô!7Ð!=¸2Ñ>Ô>ˆÔÝ  §¢ Ñ!7Ô!7Ð!=¸2Ñ>Ô>ˆÔÝØ �EŠE�&‰MŒMð 1�RœZŸ^š^¨MÑ:Ô:ð 1Ø�uŠu�YÑÔð 1Ý#+¤=ñ ô ˆŒ õ $Ø �EŠEÐ#Ñ $Ô $Ð @­Ô(@ñ ô ˆÔõ#Ø �EŠEÐ"¥HÔ$;Ñ <Ô <ñ>ô>ˆÔå!$Ø �EŠEÐ%Ñ &Ô &Ð D­(Ô*Dñ"Fô"FˆÔå"Ø �EŠEÐ#Ñ $Ô $Ð @­Ô(@ñ Bô BˆÔà—E’E˜&‘M”MˆŒ Ø !§¢Ð&8¸$Ñ ?Ô ?ˆÔØŸ%š%  Ñ-Ô-ˆŒØŸUšU ?Ñ3Ô3ˆÔØ Œ?Ð "Ý&Ô1ˆDŒOà—%’%˜ Ñ"Ô"ˆØ ˆ?Ø!¥7­3°¸Ñ#;Ô#;¸A¸A¸AÔ#>Ð?ˆG؈Œ Ø—E’E˜&‘M”MÐ' RˆŒ à �EŠE�-Ñ Ô Ð N¥B¤J§N¢NÐ3GÈÑ$NÔ$Nð Ôð �EŠE�)Ñ Ô ð 4¥¤ §¢Ð/?Ñ @Ô @ð 4ÝŒz�~Š~Ð2Ñ3Ô3ð Œ ð×'Ò'¨¯ª¨g©¬Ñ7Ô7ˆŒ ð�uŠu�]Ñ#Ô#Ð/ð �EŠE�-Ñ Ô Ð àð Ôõ ,Ñ-Ô-ˆÔÝ!$ Q§U¢UÐ+>Ñ%?Ô%?Ð%EÀ2Ñ!FÔ!FˆÔå,Ñ.Ô.ˆÔå˜lÑ+Ô+ˆŒ à�ŠÑ Ô ð 8Ø ŒK× Ò ð7ñ 8ô 8ð 8õ ˆ=؈Eõ/Ñ0Ô0ˆÔØ"4ˆÔà)Ð)Ð)Ð)Ð)Ð)ؘ ™ œ ˆŒ à ð $Ø × !Ò !Ñ #Ô #Ð #à ð (Ø × %Ò %Ñ 'Ô 'Ð 'à ×Ò˜NÑ+Ô+Ð+Ð+Ð+r(có¼—i}|rWt|¦«D]G\}}|ddkr1tj t |¦«j¦«}|||<ŒH|S)Nrú/)rr€ÚpathÚabspathr1Ú__file__)r2ÚvalueÚresultr¢Úconfigs r)r‹zClient._format_reposòse€ØˆØ ð &Ý )¨%Ñ 0Ô 0ð &ð &‘ ��fؘ”7˜c’>�>åœ7Ÿ?š?­:°dÑ+;Ô+;Ô+DÑEÔE�DØ%��t‘ � ؈ r(cóÀ—|sMtj d¦«r.d}|j |¦«tjd}||jvrA|st |¬¦«}nt j|||j¬¦«}||j|<||_ n|j||_ |j d  |j ¦«¦«dS)NÚ SENTRY_DSNz8Configuring Raven from environment variable 'SENTRY_DSN')r›)r›Útransport_registryzConfiguring Raven for host: {0}) r€r�rryÚdebugr|rÚ from_stringÚ _registryÚremoteÚformat)r2ršr›Úmsgr¦s r)r}zClient.set_dsnüs䀨ð +•r”z—~’~ lÑ3Ô3ð +ØLˆCØ ŒK× Ò ˜cÑ "Ô "Ð "Ý”*˜\Ô*ˆCà �dÔ+Ð +Ð +Øð Ý%° Ð:Ñ:Ô:��å%Ô1ØØ'Ø'+¤~ðñô�ð *0ˆDÔ ! #Ñ &Ø ˆDŒKˆKàÔ/°Ô4ˆDŒKà Œ ×ÒÐ;×BÒBÀ4Ä;ÑOÔOÑPÔPÐPÐPÐPr(có^‡—t€ tjaˆfd„}‰|_|t_dS)NcóH•—‰ |d¬¦«t|ŽdS)NÚfatal)Úexc_infoÚlevel)ÚcaptureExceptionÚ__excepthook__)r´r2s €r)Úhandle_exceptionz1Client.install_sys_hook..handle_exceptions-ø€Ø × !Ò !¨8¸7Ð !Ñ CÔ CÐ CÝ ˜HÐ %Ð %Ð %Ð %r()r·r%r&r#)r2r¸s` r)r—zClient.install_sys_hooksAø€õ Ð !Ý œ^ˆNð &ð &ð &ð &ð &ð)-ÐÔ%Ø)�Œˆˆr(có&—ddlm}|¦«dS)Nr)r˜)Úraven.breadcrumbsr˜)r2r˜s r)r˜zClient.install_logging_hooks)€Ø:Ð:Ð:Ð:Ð:Ð:ØÐÑÔÐÐÐr(có(—ddlm}||¦«dS)Nr)r™)rºr™)r2Ú librariesr™s r)r™zClient.hook_libraries"s*€Ø4Ð4Ð4Ð4Ð4Ð4؈�yÑ!Ô!Ð!Ð!Ð!r(có<—|j ||¦«dSrT)r­Úregister_scheme)rŸÚschemeÚtransport_classs r)r¾zClient.register_scheme&s €à Œ ×%Ò% f¨oÑ>Ô>Ð>Ð>Ð>r(c#óNK—|jD]}|j||¦«V—ŒdSrT)rer�)r2Ú processors r)Úget_processorszClient.get_processors*sBèè€Øœð 5ð 5ˆIØ.�$Ô# IÔ.¨tÑ4Ô4Ð 4Ð 4Ð 4Ð 4ð 5ð 5r(có°—|jsiStj}t|j¦«}d |d|d|d¦«|d<|S)Nz {0}.{1}.{2}rr/r r)rdr%Ú version_inforr[r¯)r2rÅÚmoduless r)Úget_module_versionszClient.get_module_versions.s^€ØÔ$ð ØˆIåÔ'ˆ å˜tÔ1Ñ2Ô2ˆØ)×0Ò0Ø ˜ŒO˜\¨!œ_¨l¸1¬oñ ô ˆ�Ñðˆr(có:—tjdt¦«|S)z¡ Returns a searchable string representing a message. >>> result = client.capture(**kwargs) >>> ident = client.get_ident(result) zVClient.get_ident is deprecated. The event ID is now returned as the result of capture.)ÚwarningsÚwarnÚDeprecationWarning)r2r¦s r)r zClient.get_ident;s'€õ Œ ð;å(ñ *ô *ð *ðˆ r(có.—|j||¦«SrT)r�)r2r s r)Ú get_handlerzClient.get_handlerGs€Ø&ˆtÔ  Ô& tÑ,Ô,Ð,r(cóv—| ¦«r$|j ¦«}|r|›d|›�S|SdS)zþ Returns a public DSN which is consumable by raven-js >>> # Return scheme-less DSN >>> print client.get_public_dsn() >>> # Specify a scheme to use (http or https) >>> print client.get_public_dsn('https') ú:N)r�r®Úget_public_dsn)r2r¿Úurls r)rÐzClient.get_public_dsnJsQ€ð �?Š?Ñ Ô ð Ø”+×,Ò,Ñ.Ô.ˆCØð /Ø"( & &¨#¨#Ð.Ð.àˆJð  ð r(có—dx}} t|do|djj¦«}|dr |djpd}n#tt f$rYnwxYw|dt|d¦«|t|d¦«|fS)Nrr r/)ÚidÚtb_frameÚf_codeÚtb_lastiÚAttributeErrorÚ IndexError)r2r´Úcode_idÚlast_ids r)Ú_get_exception_keyzClient._get_exception_key[s§€ðЈ�'ð ݘ !œÐD¨°!¬Ô)=Ô)DÑEÔEˆGؘq”kÐ: h¨q¤kÔ&:Ð?¸aˆGˆGøÝ¥ Ð+ð ð ð Ø ˆDð øøøð �QŒKÝ ˆx˜Œ{‰OŒOØ Ý ˆx˜Œ{‰OŒOØ ð  ð s†>AÁAÁAcóH—| |¦«}||jjvSrT)rÛrgÚexceptions_to_skip©r2r´r3s r)Úskip_error_for_loggingzClient.skip_error_for_loggingls%€Ø×%Ò% hÑ/Ô/ˆØ�d”lÔ5Ð5Ð5r(cón—| |¦«}|jj |¦«dSrT)rÛrgrÝÚaddrÞs r)Úrecord_exception_seenzClient.record_exception_seenps4€Ø×%Ò% hÑ/Ô/ˆØ Œ Ô'×+Ò+¨CÑ0Ô0Ð0Ð0Ð0r(c  ó. ‡—tj¦«j} t|jj|¦«}| di¦«| di¦«d|vrd|z}| |¦«} | jd#i| ¤Ž} |   dd¦«}|  d¦«r|d}t| ¦«D]\}}||vr|||<Œ|€ d|vr|j }|rLd|vrH|d urt¦«}n|}t||j|j¬ ¦«}| d|i¦«|jr¥| |¦«D]�}|  d ¦«�Œ|  d ¦«Š‰sŒ0‰ d ¦«rd|d <ŒKt+ˆfd„|jD¦«¦«o t+ˆfd„|jD¦«¦« |d <Œ�d}|s|j ¦«}|  d¦«s$|   d¦«p t2j|d<|  d¦«s |j|d<|  d¦«s| ¦«|d<|j� |j|d<|j� |j|d<t|j|d|¦«|d<t|j |d|¦«|d<|  dd¦«p|j!}|r|d d|¦«|r||d<n|r||d<| r| |d<| "¦«D]*}| | #|¦«¦«Œ+d|vr,|   d|  $|¦«¦«|d<t|d¦«D]\}}tK|¦«|d|<Œt|d¦«D]#\}}| |¦«|d|<Œ$| d|j&j'¦«| d|ptQj)¦«¦«| d|¦«| d| ¦«| dtT¦«| dtV¦«| d |j,¦«|j-r8|jj. /¦«}|r| d!d"|i¦«|S)$z¿ Captures, processes and serializes an event into a dict object The result of ``build_msg`` should be a standardized dict, with all default values available. rirŠr.zraven.events.%sÚculpritNÚ exceptionÚ stacktraceT)Ú transformerr`Úin_appr4zraven.Fc3óB•K—|]}‰ |¦«V—ŒdSrT©Ú startswith©Ú.0Úxr¢s €r)ú z#Client.build_msg..¸s/øèè€ÐKÐK°1˜DŸOšO¨AÑ.Ô.ÐKÐKÐKÐKÐKÐKr(c3óB•K—|]}‰ |¦«V—ŒdSrTrêrìs €r)rïz#Client.build_msg..¹s/øèè€Ð#SÐ#S¸1 D§O¢O°AÑ$6Ô$6Ð#SÐ#SÐ#SÐ#SÐ#SÐ#Sr(rµÚ server_namerÆrlrjrcrŒÚ fingerprintÚmessageÚprojectÚ timestampÚ time_spentÚevent_idÚplatformÚsdkroÚ breadcrumbsÚvaluesr')0ÚuuidÚuuid4ÚhexrrgÚdataÚ setdefaultrÍÚcaptureÚpoprrr_rrrr`Úupdater[Ú _iter_framesrëÚanyr\rŒÚpeekrwrOr rÇrlrjrirŠrcrÃÚprocessÚ to_stringrr®rôrÚutcnowÚ PLATFORM_NAMEÚ SDK_VALUEror”rúÚ get_buffer)r2Ú event_typerÿÚdaterörŠÚstackÚ public_keyriròÚkwargsr÷r6r¦räÚkÚvÚframesÚ stack_infoÚframerŒrcrÂr3r¥Úcrumbsr¢s @r)Ú build_msgzClient.build_msgts¢ø€õ”:‘<”<Ô#ˆå˜4œ<Ô,¨dÑ3Ô3ˆà �Š˜ Ñ#Ô#Ð#Ø �Š˜ Ñ$Ô$Ð$à �jÐ Ð à*¨ZÑ7ˆJà×"Ò" :Ñ.Ô.ˆØ �”Ð*Ð* 6Ð*Ð*ˆð—*’*˜Y¨Ñ-Ô-ˆØ �8Š8�IÑ Ô ð &ؘ9”oˆGå˜fÑ%Ô%ð ð ‰DˆAˆqؘˆ}ˆ}Ø��Q‘øð ˆ=˜[°Ð4Ð4ØÔ(ˆEà ð �\¨Ð-Ð-ؘˆ}ˆ}Ý*Ñ,Ô,��ð�å'ØØ œNØ#Ô2ðñôˆJð �KŠKؘjðñ ô ð ð Ô ð Ø×*Ò*¨4Ñ0Ô0ð ð �Ø—9’9˜XÑ&Ô&Ð2Øà—y’y Ñ*Ô*�ØðØà—?’? 8Ñ,Ô,ðØ&+�E˜(‘O�OõÐKÐKÐKÐK¸Ô8JÐKÑKÔKÑKÔKðTÝ #Ð#SÐ#SÐ#SÐ#SÀÔ@RÐ#SÑ#SÔ#SÑ SÔ SÐSð˜(‘O�Oð ˆ Øð 2ØÔ*×/Ò/Ñ1Ô1ˆKà�xŠx˜Ñ Ô ð AØ"ŸJšJ wÑ/Ô/Ð@µ7´=ˆD�‰Mà�xŠx˜ Ñ&Ô&ð ,Ø"&¤)ˆD�Ñ à�xŠx˜ Ñ"Ô"ð 9Ø"×6Ò6Ñ8Ô8ˆD�‰Oà Œ<Ð #Ø"œlˆD�‰Oà Ô Ð 'Ø"&Ô"2ˆD�Ñ å" 4¤9¨d°6¬l¸DÑAÔAˆˆV‰ Ý# D¤J°°W´ ¸uÑEÔEˆˆW‰ ð�xŠx˜ Ñ%Ô%Ð2¨¬ˆØ ð 2Ø �ŒL× #Ò # F¨DÑ 1Ô 1Ð 1à ð &Ø"-ˆD�Ñ Ð Ø ð &Ø%ˆD�‰Oà ð .Ø"-ˆD�Ñ ð×,Ò,Ñ.Ô.ð 1ð 1ˆIØ �KŠK˜ ×)Ò)¨$Ñ/Ô/Ñ 0Ô 0Ð 0Ð 0à ˜DÐ Ð Ø$Ÿjšj¨°G×4EÒ4EÀdÑ4KÔ4KÑLÔLˆD�‰Oõ$ D¨¤LÑ1Ô1ð 2ð 2‰JˆC�Ý *¨5Ñ 1Ô 1ˆD�ŒL˜Ñ Ð õ˜d 7œmÑ,Ô,ð 1ð 1‰DˆAˆqØ#Ÿ~š~¨aÑ0Ô0ˆD�ŒM˜!Ñ Ð ð �Š˜  4¤;Ô#6Ñ7Ô7Ð7Ø �Š˜  TÐ%>­X¬_Ñ->Ô->Ñ?Ô?Ð?Ø �Š˜  jÑ1Ô1Ð1Ø �Š˜  HÑ-Ô-Ð-Ø �Š˜ ¥MÑ2Ô2Ð2Ø �Š˜�yÑ)Ô)Ð)Ø �Š˜ ¤Ñ,Ô,Ð,ð Ô "ð Ø”\Ô-×8Ò8Ñ:Ô:ˆFØð ð —’  ؘfð0ñôððˆ r(có:—t||j|j¬¦«S)N)rbra)rrbra©r2rÿs r)rzClient.transforms'€ÝØ  $Ô"6Ø"Ô4ð6ñ6ô6ð 6r(có—|jS)aT Updates this clients thread-local context for future events. >>> def view_handler(view_func, *args, **kwargs): >>> client.context.merge(tags={'key': 'value'}) >>> try: >>> return view_func(*args, **kwargs) >>> finally: >>> client.context.clear() )r–rEs r)rgzClient.context s €ðŒ}Ðr(có:—|j d|i¦«S)z{ Update the user context for future events. >>> client.user_context({'email': 'foo@example.com'}) Úuser©rgÚmergers r)Ú user_contextzClient.user_contexts(€ð Œ|×!Ò!Ø �Dð# ñ ô ð r(c ó:—|j d|i¦«S)z| Update the http context for future events. >>> client.http_context({'url': 'http://example.com'}) Úrequestr©r2rÿrs r)Ú http_contextzClient.http_context"s(€ð Œ|×!Ò!Ø �tð# ñ ô ð r(c ó:—|j d|i¦«S)zo Update the extra context for future events. >>> client.extra_context({'foo': 'bar'}) rŠrr#s r)Ú extra_contextzClient.extra_context,s(€ð Œ|×!Ò!Ø �Tð# ñ ô ð r(c ó:—|j d|i¦«S)zr Update the tags context for future events. >>> client.tags_context({'version': '1.0'}) rirr#s r)Ú tags_contextzClient.tags_context6s(€ðŒ|×!Ò!Ø �Dð# ñ ô ð r(c  ó—| ¦«sdS|  d¦«} | �w| | ¦«rdS| | ¦«s6|j d| dt j¦«¬¦«dS| | ¦«|j ||||||fd|i| ¤Ž}|€|j }|j   ¦«|kr |j di|¤Ž|d|j_|dS) a¨ Captures and processes an event and pipes it off to SentryClient.send. To use structured data (interfaces) with capture: >>> capture('raven.events.Message', message='foo', data={ >>> 'request': { >>> 'url': '...', >>> 'data': {}, >>> 'query_string': '...', >>> 'method': 'POST', >>> }, >>> 'logger': 'logger.name', >>> }, extra={ >>> 'key': 'value', >>> }) The finalized ``data`` structure contains the following (some optional) builtin values: >>> { >>> # the culprit and version information >>> 'culprit': 'full.module.name', # or /arbitrary/path >>> >>> # all detectable installed modules >>> 'modules': { >>> 'full.module.name': 'version string', >>> }, >>> >>> # arbitrary data provided by user >>> 'extra': { >>> 'key': 'value', >>> } >>> } :param event_type: the module path to the Event class. Builtins can use shorthand class notation and exclude the full module path. :param data: the data base, useful for specifying structured data interfaces. Any key which contains a '.' will be assumed to be a data interface. :param date: the datetime of this event :param time_spent: a integer value representing the duration of the event (in milliseconds) :param extra: a dictionary of additional standard metadata :param stack: a stacktrace for the event :param tags: dict of extra tags :param sample_rate: a float in the range [0, 1] to sample this message :return: a 32-length string identifying this event Nr´z*Not capturing exception due to filters: %sr)r´rir÷r')r�rrßÚshould_captureryr�r%r´rârrprŽÚrandomÚsendrsÚ last_event_id) r2r rÿrrörŠrrirprr´s r)rzClient.captureAsA€ðj�ŠÑ Ô ð Ø ˆFà—:’:˜jÑ)Ô)ˆØ Ð Ø×*Ò*¨8Ñ4Ô4ð Ø�Ø×(Ò(¨Ñ2Ô2ð Ø” × Ò Ø@À(È1Ä+Ý œ\™^œ^ð!ñ-ô-ð-ð�Ø × &Ò & xÑ 0Ô 0Ð 0àˆtŒ~Ø ˜˜d J°°uððØCGðàððˆð Ð ØÔ*ˆKà Œ<× Ò Ñ Ô  ;Ò .Ð .Ø ˆDŒIÐ Ð ˜Ð Ð Ð à*.¨zÔ*:ˆÔÔ'à�JÔÐr(có4—|j ¦«S)zg Return a boolean describing whether the client should attempt to send events. )r®Ú is_activerEs r)r�zClient.is_enabled“s€ð Œ{×$Ò$Ñ&Ô&Ð&r(c#ó²K—d|vr|ddD]}|V—Œd|vr5|dddd dg¦«D]}|V—ŒdSdS)Nrærrårûéÿÿÿÿ)r)r2rÿrs r)rzClient._iter_framesšs‘èè€Ø ˜4РРؘlÔ+¨HÔ5ð ð �Ø� � � � Ø ˜$РРؘkÔ*¨8Ô4°RÔ8¸ÔF×JÒJÈ8ÐUWÑXÔXð ð �Ø� � � � ð Ð ð ð r(có8—|j ¦«dSrT)rvrRrEs r)Ú_successful_sendzClient._successful_send¢s€Ø Œ ×ÒÑ Ô Ð Ð Ð r(cóv—d}t|t¦«rPt|t¦«r|j}|j dt |¦«j|j¦«n!|j d||dd|i¬¦«|  |¦«|j   |¬¦«dS)Nrz*Sentry responded with an API error: %s(%s)z,Sentry responded with an error: %s (url: %s)Trÿ)r´rŠ)rD) Ú isinstancerrrDrzÚerrorÚtyper8róÚ_log_failed_submissionrvrP)r2ÚexcrÑrÿrDs r)Ú _failed_sendzClient._failed_send¥s΀؈ Ý �c�8Ñ $Ô $ð ݘ#�{Ñ+Ô+ð .Ø!œo� Ø Ô × #Ò #Ø<Ý�S‘ ” Ô" C¤Kñ 1ô 1ð 1ð 1ð Ô × #Ò #Ø>Ø�SØØ˜t�nð $ñ ô ð ð ×#Ò# DÑ)Ô)Ð)Ø Œ ×Ò¨ ÐÑ4Ô4Ð4Ð4Ð4r(c ó²—| dd¦«}|g}d|vrŸd|dddvr‰|dddd dg¦«D]Z}| d| d d ¦«| d d¦«| d d ¦«dœz¦«Œ[|j |¦«dS)zj Log a reasonable representation of an event that should have been sent to Sentry rózrårærûr1rz- File "%(fn)s", line %(lineno)s, in %(func)sÚfilenameÚunknown_filenameÚlinenoÚfunctionÚunknown_function)Úfnr>ÚfuncN)rrÚappendr{r6)r2rÿróÚoutputrs r)r8zClient._log_failed_submission¸sú€ð —(’(˜9Ð&:Ñ;Ô;ˆØ�ˆØ ˜$Ð Ð  <°4¸ Ô3DÀXÔ3NÈrÔ3RÐ#RÐ#Rà˜kÔ*¨8Ô4°RÔ8¸ÔF×JÒJÈ8ÐUWÑXÔXð ð �Ø— ’ ÐMØŸ)š) JÐ0BÑCÔCØ#Ÿiši¨°"Ñ5Ô5Ø!ŸIšI jÐ2DÑEÔEðQðQññôððð Ô×"Ò" 6Ñ*Ô*Ð*Ð*Ð*r(có:‡‡‡—|€i}‰jsE‰j ¦«s,‰ ‰¦«Š‰ ‰¦«dS‰j dt‰¦«‰¦«ˆˆˆfd„} ‰j  ¦«}|j r |  ‰‰|‰j |¦«dS|  ‰‰|¦«‰  ¦«dS#t$r}‰jr‚||¦«Yd}~dSd}~wwxYw)Nz"Sending message of length %d to %scó\•—‰ |‰‰ ‰¦«¦«dSrT)r:Údecode)Úerÿr2rÑs €€€r)Ú failed_sendz'Client.send_remote..failed_sendØs-ø€Ø × Ò ˜a  d§k¢k°$Ñ&7Ô&7Ñ 8Ô 8Ð 8Ð 8Ð 8r()rtrvrMrGr8ryr«Úlenr®Ú get_transportÚis_asyncÚ async_sendr3r,Ú Exception)r2rÑrÿÚheadersrIr›rHs``` r)Ú send_remotezClient.send_remoteÊshøøø€ð ˆ?؈GàÔ%ð ¨d¬j×.CÒ.CÑ.EÔ.Eð Ø—;’;˜tÑ$Ô$ˆDØ × 'Ò '¨Ñ -Ô -Ð -Ø ˆFà Œ ×ÒÐ>ÅÀDÁ Ä È3ÑOÔOÐOð 9ð 9ð 9ð 9ð 9ð 9ð 9ð Øœ ×1Ò1Ñ3Ô3ˆIØÔ!ð (Ø×$Ò$ S¨$°¸Ô9NØ%0ñ2ô2ð2ð2ð2ð—’˜s D¨'Ñ2Ô2Ð2Ø×%Ò%Ñ'Ô'Ð'Ð'Ð'øÝð ð ð ØÔ%ð ØØ ˆK˜‰NŒNˆNˆNˆNˆNˆNˆNˆNøøøøð øøøsÂ>C2Ã+C2Ã2 DÃ<DÄDc óZ—| |¦«}| ||¬¦«S)zV Serializes the message and passes the payload onto ``send_encoded``. )Ú auth_header)ÚencodeÚ send_encoded)r2rRrÿrós r)r,z Client.sendès.€ð—+’+˜dÑ#Ô#ˆà× Ò  °kÐ ÑBÔBÐBr(c ó —dtj›�}|s@tj¦«}t|j|||jj|jj¬¦«}||| ¦«ddœ}|j d|jj ||dœ|¤ŽS)z Given an already serialized message, signs the message and passes the payload off to ``send_remote``. z raven-python/)ÚprotocolrõÚclientÚapi_keyÚ api_secretzapplication/octet-stream)z User-Agentz X-Sentry-AuthzContent-Encodingz Content-Type)rÑrÿrOr') rWÚVERSIONrKrÚprotocol_versionr®rÚ secret_keyÚget_content_encodingrPÚstore_endpoint)r2rórRrÚ client_stringrõrOs r)rTzClient.send_encodedðs¶€€õ .3¬]¨]Ð<ˆ àð Ýœ ™ œ ˆIÝ)ØÔ.Ø#Ø$Øœ Ô.Øœ;Ô1ð ñôˆKð(Ø(Ø $× 9Ò 9Ñ ;Ô ;Ø6ð  ð ˆð ˆtÔð Ø” Ô*ØØð ð ðð  ð ð r(có—dS)NÚdeflater'rEs r)r]zClient.get_content_encodings€Øˆyr(cót—tjtj|¦« d¦«¦«S)z8 Serializes ``data`` into a raw string. Úutf8)ÚzlibÚcompressrÚdumpsrSrs r)rSz Client.encodes,€õŒ}�TœZ¨Ñ-Ô-×4Ò4°VÑ<Ô<Ñ=Ô=Ð=r(cót—tjtj|¦« d¦«¦«S)z2 Unserializes a string, ``data``. rc)rÚloadsrdÚ decompressrGrs r)rGz Client.decodes,€õŒz�$œ/¨$Ñ/Ô/×6Ò6°vÑ>Ô>Ñ?Ô?Ð?r(c ó —|jdd|i|¤ŽS)zr Creates an event from ``message``. >>> client.captureMessage('My event just happened!') úraven.events.Messageró)rk©r)r2rórs r)ÚcaptureMessagezClient.captureMessages!€ð ˆtŒ|ÐNÐN¸GÐNÀvÐNÐNÐNr(c óT—|�|durtj¦«}|j dd|i|¤ŽS)aº Creates an event from an exception. >>> try: >>> exc_info = sys.exc_info() >>> client.captureException(exc_info) >>> finally: >>> del exc_info If exc_info is not provided, or is set to True, then this method will perform the ``exc_info = sys.exc_info()`` and the requisite clean-up for you. ``kwargs`` are passed through to ``.capture``. NTúraven.events.Exceptionr´)ro)r%r´r)r2r´rs r)r¶zClient.captureException&sS€ð Ð ˜x¨4Ð/Ð/Ý”|‘~”~ˆHàˆtŒ|Ø $ðCðCØ/7ðCØ;AðCðCð Cr(có$‡‡—|dЉj›d‰j›�Š|j}d„|D¦«}d„|D¦«}d„|D¦«}‰|vsC‰j|vs:‰|vs6tˆfd„|D¦«¦«stˆfd„|D¦«¦«rdSd S) Nrr.c3óDK—|]}t|t¦«¯|V—ŒdSrT)r5Ú basestring©rírHs r)rïz(Client.should_capture..@s1èè€ÐPÐP 1µjÀÅJÑ6OÔ6OÐP˜QÐPÐPÐPÐPÐPÐPr(c3óDK—|]}| d¦«¯|V—ŒdS)Ú*N)Úendswithrss r)rïz(Client.should_capture..As1èè€ÐOÐO Q¸q¿zºzÈ#¹¼ÐO˜qÐOÐOÐOÐOÐOÐOr(c3ó8K—|]}t|¦«¯|V—ŒdSrTrrss r)rïz(Client.should_capture..Bs-èè€Ð@Ð@ !µW¸Q±Z´ZÐ@˜AÐ@Ð@Ð@Ð@Ð@Ð@r(c3ó8•K—|]}t‰|¦«V—ŒdSrT)Ú issubclass)rírHÚexc_types €r)rïz(Client.should_capture..Gs-øèè€ÐIÐI°1•z (¨AÑ.Ô.ÐIÐIÐIÐIÐIÐIr(c3óR•K—|]!}‰ |dd…¦«V—Œ"dS)Nr1rê)rírHÚexc_names €r)rïz(Client.should_capture..Hs9øèè€ÐPÐP°q�x×*Ò*¨1¨S¨b¨S¬6Ñ2Ô2ÐPÐPÐPÐPÐPÐPr(FT)r9r8rqr)r2r´Ú exclusionsÚstring_exclusionsÚwildcard_exclusionsÚclass_exclusionsr|rzs @@r)r*zClient.should_capture<sçøø€Ø˜A”;ˆØ&Ô1Ð1Ð1°8Ô3DÐ3DÐEˆØÔ+ˆ ØPÐP¨ ÐPÑPÔPÐØOÐOÐ*;ÐOÑOÔOÐØ@Ð@ zÐ@Ñ@Ô@Ðà ˜ Ð "Ð "ØÔ$¨ Ð2Ð2ؘzÐ)Ð)ÝÐIÐIÐIÐIÐ8HÐIÑIÔIÑIÔIð*åÐPÐPÐPÐPÐ>> @client.capture_exceptions >>> def foo(): >>> raise Exception() >>> with client.capture_exceptions(): >>> raise Exception() You can also specify exceptions to be caught specifically >>> @client.capture_exceptions((IOError, LookupError)) >>> def bar(): >>> ... >>> with client.capture_exceptions((IOError, LookupError)): >>> ... ``kwargs`` are passed through to ``.captureException``. Nc3óD•K— dV—dS#|$r‰jdi‰¤Ž‚wxYw)Nr')r¶)Ú exceptionsrr2s €€r)Úmake_decoratorz1Client.capture_exceptions..make_decoratornsPøèè€ð Ø�����øØð ð ð Ø%�Ô%Ð/Ð/¨Ð/Ð/Ð/Øð øøøs… ‹)rNr5rÚ contextlibÚcontextmanager)r2Úfunction_or_exceptionsrr?rƒr„Ú decorators` ` r)Úcapture_exceptionszClient.capture_exceptionsLs”øø€ð4ˆÝ�\ˆ Ý Ð,­lÑ ;Ô ;ð 0Ø-ˆHˆHØ #Ð /Ø/ˆJõ Ô "ð ð ð ð ð ñ #Ô "ð ð#�N :Ñ.Ô.ˆ à ð 'Ø�9˜XÑ&Ô&Ð &ØÐr(r'c ó&—|j d|||dœ|¤ŽS)zi Creates an event for a SQL query. >>> client.captureQuery('SELECT * FROM foo') úraven.events.Query)ÚqueryÚparamsÚengine)r‹rl)r2rŒr�rŽrs r)Ú captureQueryzClient.captureQuery|s6€ð ˆtŒ|Ø ðØ(-°fÀVððàððð r(c óP—tjdt¦«|jdi|¤ŽS)Nz8captureExceptions is deprecated, used context() instead.r')rÉrÊrËrg©r2rs r)ÚcaptureExceptionszClient.captureExceptions†s6€ÝŒ Ø FÝ ñ ô ð ðˆtŒ|Ð%Ð%˜fÐ%Ð%Ð%r(có4—|jjj|i|¤ŽdS)zp Records a breadcrumb with the current context. They will be sent with the next event. N)rgrúÚrecord)r2Úargsrs r)ÚcaptureBreadcrumbzClient.captureBreadcrumbŒs'€ð (ˆŒ Ô Ô'¨Ð8°Ð8Ð8Ð8Ð8Ð8r(có.—t|jdd¦«S)Nr-)r$rsrEs r)r-zClient.last_event_id˜s€å�tÔ(¨/¸4Ñ@Ô@Ð@r(có—||j_dSrT)rsr-)r2r¥s r)r-zClient.last_event_idœs€à*/ˆÔÔ'Ð'Ð'r()NFNTTNTN)NNrT)NNNNNNNN)NNNNNNN)r'N)9r8r9r:Ú__doc__rwrxryr[rrr­rFr‹r}r—r˜r™Ú classmethodr¾rÃrÇr rÍrÐrÛrßrârrÚpropertyrgr r$r&r(rr�rr3r:r8rPr,rTr]rSrGrmr¶r*r‰r�r’r–Úcapture_breadcrumbr-Úsetterr'r(r)rrzsˆ€€€€€ððð,ˆWÔ ˜wÑ 'Ô '€FØÐà!Ð!Ð-?Ð@Ñ@Ô@€IàDHØ=AØ9=Ø"ðZ,ðZ,ðZ,ðZ,ðxðððQðQðQðQð, *ð *ð *ðððð"ð"ð"ðð?ð?ñ„[ð?ð5ð5ð5ð ð ð ð ð ð ð-ð-ð-ððððð" ð ð ð"6ð6ð6ð1ð1ð1ð59ØFJØ)-ðOðOðOðOðb6ð6ð6ð ð ð ñ„Xð ð ð ð ð ð ð ð ð ð ð  ð  ð  ðDHØ?CðP ðP ðP ðP ðd'ð'ð'ðððð!ð!ð!ð5ð5ð5ð&+ð+ð+ð$ðððð<CðCðCðCð ð ð ð ð>ððð>ð>ð>ð @ð@ð@ð OðOðOðCðCðCðCð,ððð .ð.ð.ð.ð`ðððð&ð&ð&ð 9ð9ð9ð+Ðà ðAðAñ„XðAðÔð0ð0ñÔð0ð0ð0r(rcó—eZdZdZd„ZdS)Ú DummyClientz"Sends messages into an empty void.c ó—dSrTr'r‘s r)r,zDummyClient.send¤s€Øˆtr(N)r8r9r:r™r,r'r(r)rŸrŸ¡s)€€€€€Ø,Ð,ðððððr(rŸ)Gr™Ú __future__rrdrwr€r%rKrürÉrÚinspectrr+rÚtypesrÚ threadingr rÅr…Ú contextlib2Úthreadr r’Ú ImportErrorÚ_threadrWÚ raven.confr Úraven.conf.remoterÚraven.exceptionsrrÚ raven.utilsrrrrÚraven.utils.compatrrÚraven.utils.encodingrÚraven.utils.serializerrÚraven.utils.stacksrrÚraven.utils.transactionrÚraven.transport.registryrrÚ raven.eventsÚ__all__r·r rZr r‘Ústrrrr*Údictr,Úobjectr<rrŸr'r(r)úr¸s5ðððð'Ð&Ð&Ð&Ð&Ð&à € € € Ø€€€Ø € € € Ø € € € Ø € € € Ø € € € Ø€€€àÐÐÐÐÐØÐÐÐÐÐØÐÐÐÐÐØÐÐÐÐÐØÐÐÐÐÐàÔ�vÒÐØÐÐÐÐà$Ð$Ð$Ð$ð6Ø4Ð4Ð4Ð4Ð4Ð4Ð4øØð6ð6ð6Ø5Ð5Ð5Ð5Ð5Ð5Ð5Ð5ð6øøøð € € € ØÐÐÐÐÐØ*Ð*Ð*Ð*Ð*Ð*Ø2Ð2Ð2Ð2Ð2Ð2Ð2Ð2ØHÐHÐHÐHÐHÐHÐHÐHÐHÐHÐHÐHØ3Ð3Ð3Ð3Ð3Ð3Ð3Ð3Ø+Ð+Ð+Ð+Ð+Ð+Ø,Ð,Ð,Ð,Ð,Ð,Ø@Ð@Ð@Ð@Ð@Ð@Ð@Ð@Ø4Ð4Ð4Ð4Ð4Ð4ØJÐJÐJÐJÐJÐJÐJÐJðÐÐÐð €à€à€ ð ØŒ}ð ð € ð €àÔ�vÒÐØ€Jð9ð9ð9ð ð ð ð ð �tñ ô ð ð")ð")ð")ð")ð")�&ñ")ô")ð")ðJd 0ðd 0ðd 0ðd 0ðd 0ˆVñd 0ôd 0ðd 0ðNðððð�&ñôðððsÁAÁ A-Á,A-