B ¿öY¹ã@s¤dZddlmZddlmZmZddlmZddlm Zddl m Z yddl m ZWn ek rtddlm ZYnXeƒZdd „ZGd d „d eeeƒZdd lZd S) z— raven.context ~~~~~~~~~~~~~ :copyright: (c) 2010-2012 by the Sentry Team, see AUTHORS for more details. :license: BSD, see LICENSE for more details. é)Úabsolute_import)ÚMappingÚIterable)Úlocal)Úref)Ú iteritems)Ú get_identcCs$y ttjƒStk rgSXdS)z7Returns all the active contexts for the current thread.N)ÚlistÚ_active_contextsÚcontextsÚAttributeError©r r ú>/opt/alt/python37/lib/python3.7/site-packages/raven/context.pyÚget_active_contextss rc@s¤eZdZdZd'dd„Zedd„ƒZdd„Zd d „Zd d „Z d d„Z dd„Z dd„Z dd„Z dd„Zdd„Zd(dd„Zdd„Zd)dd „Zd!d"„Zd#d$„Zd*d%d&„ZdS)+ÚContexta' Stores context until cleared. >>> def view_handler(view_func, *args, **kwargs): >>> context = Context() >>> context.merge(tags={'key': 'value'}) >>> try: >>> return view_func(*args, **kwargs) >>> finally: >>> context.clear() NcCsLtj |dkp|j¡}|dk r&t|ƒ}||_| ¡i|_tƒ|_ ||_dS)N) ÚravenÚ breadcrumbsZ make_bufferZenable_breadcrumbsÚweakrefÚ_clientÚactivateÚdataÚsetÚexceptions_to_skip)ÚselfÚclientrr r rÚ__init__.szContext.__init__cCs|jdkrdS| ¡S)N)r)rr r rr=s zContext.clientcCst|ƒS)N)Úid)rr r rÚ__hash__CszContext.__hash__cCs||kS)Nr )rÚotherr r rÚ__eq__FszContext.__eq__cCs | |¡ S)N)r)rrr r rÚ__ne__IszContext.__ne__cCs |j|S)N)r)rÚkeyr r rÚ __getitem__LszContext.__getitem__cCs t|jƒS)N)Úiterr)rr r rÚ__iter__OszContext.__iter__cCs t|jƒS)N)Úlenr)rr r rÚ__len__RszContext.__len__cCsdt|ƒj|jfS)Nz<%s: %s>)ÚtypeÚ__name__r)rr r rÚ__repr__UszContext.__repr__cCs | ¡|S)N)r)rr r rÚ __enter__XszContext.__enter__cCs | ¡dS)N)Ú deactivate)rÚexc_typeÚ exc_valueÚtbr r rÚ__exit__\szContext.__exit__FcCs&|r tƒ|_tj dtƒ¡ |¡dS)Nr )Úget_thread_identZ_sticky_threadr Ú__dict__Ú setdefaultrÚadd)rZstickyr r rr_szContext.activatecCs*ytj |¡Wntk r$YnXdS)N)r r Údiscardr )rr r rr+dszContext.deactivateTcCsl|r | ¡|j}xTt|ƒD]H\}}|dkr\| |i¡x*t|ƒD]\}}||||<qBWq|||<qWdS)N)ZtagsÚextra)rrrr2)rrrÚdr!ÚvalueZt_keyZt_valuer r rÚmergejs z Context.mergecCs ||_dS)N)r)rrr r rrvsz Context.setcCs|jS)N)r)rr r rÚgetysz Context.getcCsLi|_|j ¡|j ¡|dkr<|j}|dk rs    l