Your IP : 3.145.88.111


Current Path : /opt/alt/python27/lib/python2.7/site-packages/raven/
Upload File :
Current File : //opt/alt/python27/lib/python2.7/site-packages/raven/base.pyc

�
��Yc@@s�dZddlmZddlZddlZddlZddlZddlZddlZddl	Z	ddl
m
Z
ddlmZddl
mZddlmZddlmZejd	d
fkr�ddlZnddlZyddlmZWn!ek
r!ddlmZnXddlZddlmZdd
lmZddl 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/m0Z0m1Z1ddl2m3Z3ddl4m5Z5m6Z6ddl7ZdfZ8e9a:dZ;idd6ej<d6Z=e9a>ejd	d
fkrTe?Z@nd�ZAdeBfd��YZCdeDfd��YZEdeDfd ��YZFd!eFfd"��YZGdS(#s�
raven.base
~~~~~~~~~~

:copyright: (c) 2010-2012 by the Sentry Team, see AUTHORS for more details.
:license: BSD, see LICENSE for more details.
i(tabsolute_importN(tdatetime(tisclass(tRandom(tFunctionType(tlocalii(t	get_ident(tdefaults(tRemoteConfig(tAPIErrortRateLimited(tjsontget_versionstget_auth_headertmerge_dicts(t	text_typet	iteritems(t
to_unicode(t	transform(tget_stack_infotiter_stack_frames(tTransactionStack(tTransportRegistrytdefault_transportstClienttpythonsraven-pythontnametversioncC@s/tj}t|dd�}|dk	r+|SdS(Ntraven_client(tsyst
excepthooktgetattrtNone(thooktclient((s;/opt/alt/python27/lib/python2.7/site-packages/raven/base.pytget_excepthook_clientEs	tModuleProxyCachecB@seZd�ZRS(cC@sG|jdd�\}}tt|ii|g�|�}|||<|S(Nt.i(trsplitRt
__import__(tselftkeytmodulet
class_namethandler((s;/opt/alt/python27/lib/python2.7/site-packages/raven/base.pyt__missing__Ms

(t__name__t
__module__R-(((s;/opt/alt/python27/lib/python2.7/site-packages/raven/base.pyR$LstClientStatecB@sDeZdZdZd�Zd�Zdd�Zd�Zd�ZRS(iicC@s+|j|_d|_d|_d|_dS(Ni(tONLINEtstatusR t
last_checktretry_numbertretry_after(R(((s;/opt/alt/python27/lib/python2.7/site-packages/raven/base.pyt__init__\s		cC@sV|j|jkrtS|jp2t|jd�d}tj�|j|krRtStS(Nii(	R2R1tTrueR5tminR4ttimeR3tFalse(R(tinterval((s;/opt/alt/python27/lib/python2.7/site-packages/raven/base.pyt
should_trybscC@s7|j|_|jd7_tj�|_||_dS(Ni(tERRORR2R4R9R3R5(R(R5((s;/opt/alt/python27/lib/python2.7/site-packages/raven/base.pytset_failmscC@s+|j|_d|_d|_d|_dS(Ni(R1R2R R3R4R5(R(((s;/opt/alt/python27/lib/python2.7/site-packages/raven/base.pytset_successss		cC@s|j|jkS(N(R2R=(R(((s;/opt/alt/python27/lib/python2.7/site-packages/raven/base.pytdid_failys(	R.R/R1R=R6R<R>R?R@(((s;/opt/alt/python27/lib/python2.7/site-packages/raven/base.pyR0Xs			c	B@s9eZdZejd�ZdZede�Z	d/ed/eed/ed/d�Z
d�Zd/d/d�Zd�Zd�Zd	�Zed
��Zd�Zd�Zd
�Zd�Zd/d�Zd�Zd�Zd�Zd/d/d/d/d/d/d/d/d�Zd�Zed��Z d�Z!d�Z"d�Z#d�Z$d/d/d/d/d/d/d/d�Z%d�Z&d�Z'd�Z(d�Z)d�Z*d/d �Z+d/d!�Z,d/d"�Z-d#�Z.d$�Z/d%�Z0d&�Z1d/d'�Z2d(�Z3d/d)�Z4d0d/d*�Z5d+�Z6d,�Z7e7Z8ed-��Z9e9j:d.��Z9RS(1sU
    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
    travent6t
transportsc	K@s�|	}
t�|_||_|j}t�|_tjd|j|j	f�|_
tjd�|_tjd�|_i|_
|j||�t|
jd�p�g�|_t|
jd�p�g�|_t|
jd�p�|
jd�p�tj�|_t|
jd�ptj�|_t|
jd	tj��|_t|
jd
�pRtj�|_t|
jd�pstj�|_ |
jd�|_!|
jd
t"�|_#|
jd�|_$|j$dkr�tj&|_$n|
jd�}|dkrit't(dg�d6}n||_)|
jd�p&i|_*|
jd�p>d|_+|
jd�pbt,j-jd�|_.|j/|
jd��|_0|
jd�dk	r�|
jd�nd|_1t2�|_3t|
jd�p�d�|_4t5�|_6t7|�|_8|j9�s|j
j:d�nt;dkr)|a;nt<�|_=||_>ddl?m@}
|
|�|_A|rp|jB�n|r�|jC�n|jD|�dS(Ns%s.%ss
sentry.errorsssentry.errors.uncaughtt
include_pathst
exclude_pathsRtmachinetauto_log_stackstcapture_localststring_max_lengthtlist_max_lengthtsitetinclude_versionst
processorstcontexttargvssys.argvttagstenvironmenttreleasetHEROKU_SLUG_COMMITtrepostsample_rateitignore_exceptionssaRaven is not configured (logging is disabled). Please see the documentation for more information.i(tContext((ERt_local_statetraise_send_errorst	__class__R0tstatetloggingt	getLoggerR/R.tloggerterror_loggertuncaught_loggert_transport_cachetset_dsntsettgetRDRERRtNAMERtbooltAUTO_LOG_STACKSRGtCAPTURE_LOCALSRHtinttMAX_LENGTH_STRINGRItMAX_LENGTH_LISTRJRKR7RLRMR t
PROCESSORSRRtextraRPRQtostenvironRRt
_format_reposRTRURttransactionRVR$tmodule_cacheRt_randomt
is_enabledtinfotRaventget_thread_identtmain_thread_idtenable_breadcrumbst
raven.contextRWt_contexttinstall_sys_hooktinstall_logging_hookthook_libraries(R(tdsnRYt	transportR|R}R~Ryt_random_seedtoptionstotclsRNRW((s;/opt/alt/python27/lib/python2.7/site-packages/raven/base.pyR6�sn			0	$$		
		

cC@si|s
iSi}xRt|�D]D\}}|ddkrWtjjt|�j�}n|||<qW|S(Nit/(RRntpathtabspathR't__file__(R(tvaluetresultR�tconfig((s;/opt/alt/python27/lib/python2.7/site-packages/raven/base.pyRp�scC@s�|r?tjjd�r?d}|jj|�tjd}n||jkr�|sftd|�}ntj|d|d|j�}||j|<||_	n|j||_	|jjdj
|j	��dS(Nt
SENTRY_DSNs8Configuring Raven from environment variable 'SENTRY_DSN'R�ttransport_registrysConfiguring Raven for host: {0}(RnRoRdR^tdebugRaRtfrom_stringt	_registrytremotetformat(R(RR�tmsgR�((s;/opt/alt/python27/lib/python2.7/site-packages/raven/base.pyRb�s
c@s=tdkrtjan�fd�}�|_|t_dS(Nc@s$�jd|dd�t|�dS(Ntexc_infotleveltfatal(tcaptureExceptiont__excepthook__(R�(R((s;/opt/alt/python27/lib/python2.7/site-packages/raven/base.pythandle_exceptions(R�R RRR(R(R�((R(s;/opt/alt/python27/lib/python2.7/site-packages/raven/base.pyR|s
	cC@sddlm}|�dS(Ni(R}(traven.breadcrumbsR}(R(R}((s;/opt/alt/python27/lib/python2.7/site-packages/raven/base.pyR}scC@sddlm}||�dS(Ni(R~(R�R~(R(t	librariesR~((s;/opt/alt/python27/lib/python2.7/site-packages/raven/base.pyR~scC@s|jj||�dS(N(R�tregister_scheme(R�tschemettransport_class((s;/opt/alt/python27/lib/python2.7/site-packages/raven/base.pyR�"scc@s*x#|jD]}|j||�Vq
WdS(N(RMRr(R(t	processor((s;/opt/alt/python27/lib/python2.7/site-packages/raven/base.pytget_processors&scC@sN|js
iStj}t|j�}dj|d|d|d�|d<|S(Ns{0}.{1}.{2}iiiR(RLRtversion_infoRRDR�(R(R�tmodules((s;/opt/alt/python27/lib/python2.7/site-packages/raven/base.pytget_module_versions*s		cC@stjdt�|S(s�
        Returns a searchable string representing a message.

        >>> result = client.capture(**kwargs)
        >>> ident = client.get_ident(result)
        sVClient.get_ident is deprecated. The event ID is now returned as the result of capture.(twarningstwarntDeprecationWarning(R(R�((s;/opt/alt/python27/lib/python2.7/site-packages/raven/base.pyR7s	cC@s|j||�S(N(Rr(R(R((s;/opt/alt/python27/lib/python2.7/site-packages/raven/base.pytget_handlerCscC@s7|j�sdS|jj�}|s)|Sd||fS(s�
        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')
        Ns%s:%s(RtR�tget_public_dsn(R(R�turl((s;/opt/alt/python27/lib/python2.7/site-packages/raven/base.pyR�Fs
cC@s�d}d}yAt|do)|djj�}|drF|djpId}Wnttfk
rfnX|dt|d�|t|d�|fS(Niii(tidttb_frametf_codettb_lastitAttributeErrort
IndexError(R(R�tcode_idtlast_id((s;/opt/alt/python27/lib/python2.7/site-packages/raven/base.pyt_get_exception_keyWs !

cC@s|j|�}||jjkS(N(R�RNtexceptions_to_skip(R(R�R)((s;/opt/alt/python27/lib/python2.7/site-packages/raven/base.pytskip_error_for_loggingiscC@s&|j|�}|jjj|�dS(N(R�RNR�tadd(R(R�R)((s;/opt/alt/python27/lib/python2.7/site-packages/raven/base.pytrecord_exception_seenmsc
@stj�j}t|jj|�}|jdi�|jdi�d|kr]d|}n|j|�}|j|
�}
|
j	dd �}|jd�r�|d}nx3t|
�D]%\}}||kr�|||<q�q�W|d krd|kr|j
}n|rhd|krh|tkr-t�}n|}t|d|jd	|j�}|ji|d6�n|jr#x�|j|�D]�}|jd
�d k	r�q�n|jd���s�q�n�jd�r�t|d
<q�t�fd
�|jD��ot�fd�|jD��|d
<q�Wn|s;|jj�}n|jd�si|
jd�p_tj|d<n|jd�s�|j|d<n|jd�s�|j�|d<n|j d k	r�|j |d<n|j!d k	r�|j!|d<nt|j"|d|�|d<t|j#|d|�|d<|j	dd �p:|j$}|rZ|djd|�n|rm||d<n|	r�|	|d<nx*|j%�D]}|j|j&|��q�Wd|kr�|
jd|j'|��|d<nx2t|d�D] \}}t(|�|d|<q�Wx5t|d�D]#\}}|j|�|d|<q!W|jd|j)j*�|jd|pvt+j,��|jd|�|jd|�|jdt-�|jdt.�|jd|j/�|j0r|jj1j2�}|r|jdi|d6�qn|S(!s�
        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.
        RPRmR%sraven.events.%stculpritt	exceptiont
stacktracettransformerRHtin_appR*sraven.c3@s|]}�j|�VqdS(N(t
startswith(t.0tx(R�(s;/opt/alt/python27/lib/python2.7/site-packages/raven/base.pys	<genexpr>�sc3@s|]}�j|�VqdS(N(R�(R�R�(R�(s;/opt/alt/python27/lib/python2.7/site-packages/raven/base.pys	<genexpr>�sR�tserver_nameR�RRRQRKtfingerprinttmessagetprojectt	timestampt
time_spenttevent_idtplatformtsdkRTtbreadcrumbstvaluesN(3tuuidtuuid4thexRRNtdatat
setdefaultR�tcapturetpopR RdRRGR7RRRRHtupdateRDt_iter_framesR�R:tanyRERqtpeekR\R=RR�RRRQRPRmRKR�tprocesst	to_stringRR�R�Rtutcnowt
PLATFORM_NAMEt	SDK_VALUERTRyR�t
get_buffer(R(t
event_typeR�tdateR�Rmtstackt
public_keyRPR�tkwargsR�R,R�R�tktvtframest
stack_infotframeRKR�R)R�tcrumbs((R�s;/opt/alt/python27/lib/python2.7/site-packages/raven/base.pyt	build_msgqs�


			
+

"	cC@st|d|jd|j�S(NRJRI(RRJRI(R(R�((s;/opt/alt/python27/lib/python2.7/site-packages/raven/base.pyR�scC@s|jS(sT
        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{(R(((s;/opt/alt/python27/lib/python2.7/site-packages/raven/base.pyRNscC@s|jji|d6�S(s{
        Update the user context for future events.

        >>> client.user_context({'email': 'foo@example.com'})
        tuser(RNtmerge(R(R�((s;/opt/alt/python27/lib/python2.7/site-packages/raven/base.pytuser_contextscK@s|jji|d6�S(s|
        Update the http context for future events.

        >>> client.http_context({'url': 'http://example.com'})
        trequest(RNR�(R(R�R�((s;/opt/alt/python27/lib/python2.7/site-packages/raven/base.pythttp_contextscK@s|jji|d6�S(so
        Update the extra context for future events.

        >>> client.extra_context({'foo': 'bar'})
        Rm(RNR�(R(R�R�((s;/opt/alt/python27/lib/python2.7/site-packages/raven/base.pyt
extra_context$scK@s|jji|d6�S(sr
        Update the tags context for future events.

        >>> client.tags_context({'version': '1.0'})

        RP(RNR�(R(R�R�((s;/opt/alt/python27/lib/python2.7/site-packages/raven/base.pyttags_context.sc	
K@s|j�sdS|	jd�}
|
dk	r�|j|
�r>dS|j|
�st|jjd|
ddtj��dS|j	|
�n|j
||||||d||	�}|dkr�|j}n|jj
�|kr�|j|�n|d|j_|dS(s�
        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 tuple with a 32-length string identifying this event
        NR�s*Not capturing exception due to filters: %siRPR�(RtRdR R�tshould_captureR^RuRR�R�R�RURstrandomtsendRXt
last_event_id(R(R�R�R�R�RmR�RPRUR�R�((s;/opt/alt/python27/lib/python2.7/site-packages/raven/base.pyR�9s*5	

	cC@s
|jj�S(sg
        Return a boolean describing whether the client should attempt to send
        events.
        (R�t	is_active(R(((s;/opt/alt/python27/lib/python2.7/site-packages/raven/base.pyRt�scc@srd|kr-x|ddD]}|VqWnd|krnx2|ddddjdg�D]}|Vq\WndS(NR�R�R�R�i����(Rd(R(R�R�((s;/opt/alt/python27/lib/python2.7/site-packages/raven/base.pyR��s)cC@s|jj�dS(N(R[R?(R(((s;/opt/alt/python27/lib/python2.7/site-packages/raven/base.pyt_successful_send�sc
C@s�d}t|t�rUt|t�r0|j}n|jjdt|�j|j�n)|jjd||dt	di|d6�|j
|�|jjd|�dS(Nis*Sentry responded with an API error: %s(%s)s,Sentry responded with an error: %s (url: %s)R�RmR�R5(
t
isinstanceR	R
R5R_terrorttypeR.R�R7t_log_failed_submissionR[R>(R(texcR�R�R5((s;/opt/alt/python27/lib/python2.7/site-packages/raven/base.pyt_failed_send�s			
cC@s�|jdd�}|g}d|kr�d|dddkr�xw|ddddjdg�D]P}|jdi|jd	d
�d6|jdd�d6|jd
d�d6�qbWn|jj|�dS(sj
        Log a reasonable representation of an event that should have been sent
        to Sentry
        R�s<no message value>R�R�R�i����R�s-  File "%(fn)s", line %(lineno)s, in %(func)stfilenametunknown_filenametfntlinenotfunctiontunknown_functiontfuncN(R�RdtappendR`R�(R(R�R�toutputR�((s;/opt/alt/python27/lib/python2.7/site-packages/raven/base.pyR��s	$)c@s|dkri}n�jrO�jj�rO�j����j��dS�jjdt�������fd�}yX�j	j
�}|jr�|j��|�j
|�n|j��|��j
�Wn,tk
r}�jr��n||�nXdS(Ns"Sending message of length %d to %sc@s �j|��j���dS(N(R�tdecode(te(R�R(R�(s;/opt/alt/python27/lib/python2.7/site-packages/raven/base.pytfailed_send�s(R RYR[R<RR�R^R�tlenR�t
get_transporttis_asynct
async_sendR�R�t	Exception(R(R�R�theadersRR�R((R�R(R�s;/opt/alt/python27/lib/python2.7/site-packages/raven/base.pytsend_remote�s&	
	
	cK@s"|j|�}|j|d|�S(sV
        Serializes the message and passes the payload onto ``send_encoded``.
        tauth_header(tencodetsend_encoded(R(R
R�R�((s;/opt/alt/python27/lib/python2.7/site-packages/raven/base.pyR��scK@s�dtjf}|s[tj�}td|jd|d|d|jjd|jj�}ni|d6|d6|j�d	6d
d6}|j	d|jj
d
|d||�S(s
        Given an already serialized message, signs the message and passes the
        payload off to ``send_remote``.
        sraven-python/%stprotocolR�R"tapi_keyt
api_secrets
User-Agents
X-Sentry-AuthsContent-Encodingsapplication/octet-streamsContent-TypeR�R�R(RAtVERSIONR9R
tprotocol_versionR�R�t
secret_keytget_content_encodingRtstore_endpoint(R(R�R
R�t
client_stringR�R((s;/opt/alt/python27/lib/python2.7/site-packages/raven/base.pyR�s&	

	cC@sdS(Ntdeflate((R(((s;/opt/alt/python27/lib/python2.7/site-packages/raven/base.pyRscC@stjtj|�jd��S(s8
        Serializes ``data`` into a raw string.
        tutf8(tzlibtcompressRtdumpsR(R(R�((s;/opt/alt/python27/lib/python2.7/site-packages/raven/base.pyR
scC@stjtj|�jd��S(s2
        Unserializes a string, ``data``.
        R(RtloadsRt
decompressR(R(R�((s;/opt/alt/python27/lib/python2.7/site-packages/raven/base.pyRscK@s|jdd||�S(sr
        Creates an event from ``message``.

        >>> client.captureMessage('My event just happened!')
        sraven.events.MessageR�(R�(R(R�R�((s;/opt/alt/python27/lib/python2.7/site-packages/raven/base.pytcaptureMessagescK@s=|dks|tkr'tj�}n|jdd||�S(s�
        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``.
        sraven.events.ExceptionR�N(R R7RR�R�(R(R�R�((s;/opt/alt/python27/lib/python2.7/site-packages/raven/base.pyR�sc@s�|d�d�j�jf�|j}d�|D�}d�|D�}d�|D�}�|kritS�j|kr|tS�|kr�tSt�fd�|D��r�tSt�fd�|D��r�tStS(Nis%s.%scs@s$|]}t|t�r|VqdS(N(R�t
basestring(R�R((s;/opt/alt/python27/lib/python2.7/site-packages/raven/base.pys	<genexpr>8scs@s$|]}|jd�r|VqdS(t*N(tendswith(R�R((s;/opt/alt/python27/lib/python2.7/site-packages/raven/base.pys	<genexpr>9scs@s!|]}t|�r|VqdS(N(R(R�R((s;/opt/alt/python27/lib/python2.7/site-packages/raven/base.pys	<genexpr>:sc3@s|]}t�|�VqdS(N(t
issubclass(R�R(texc_type(s;/opt/alt/python27/lib/python2.7/site-packages/raven/base.pys	<genexpr>Bsc3@s"|]}�j|d �VqdS(i����N(R�(R�R(texc_name(s;/opt/alt/python27/lib/python2.7/site-packages/raven/base.pys	<genexpr>Ds(R/R.RVR:R�R7(R(R�t
exclusionststring_exclusionstwildcard_exclusionstclass_exclusions((R&R%s;/opt/alt/python27/lib/python2.7/site-packages/raven/base.pyR�4s"
	c@swd}tf}t|t�r'|}n|dk	r<|}ntj��fd��}||�}|rs||�S|S(s�
        Wrap a function or code block in try/except and automatically call
        ``.captureException`` if it raises an exception, then the exception
        is reraised.

        By default, it will capture ``Exception``

        >>> @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``.
        c3@s1y	dVWn!|k
r,�j���nXdS(N(R�(t
exceptions(R�R((s;/opt/alt/python27/lib/python2.7/site-packages/raven/base.pytmake_decoratorjs
	

N(R R
R�Rt
contextlibtcontextmanager(R(tfunction_or_exceptionsR�R�R+R,t	decorator((R�R(s;/opt/alt/python27/lib/python2.7/site-packages/raven/base.pytcapture_exceptionsHs			
c	K@s"|jdd|d|d||�S(si
        Creates an event for a SQL query.

        >>> client.captureQuery('SELECT * FROM foo')
        sraven.events.Querytquerytparamstengine(R�(R(R2R3R4R�((s;/opt/alt/python27/lib/python2.7/site-packages/raven/base.pytcaptureQueryxscK@stjdt�|j|�S(Ns8captureExceptions is deprecated, used context() instead.(R�R�R�RN(R(R�((s;/opt/alt/python27/lib/python2.7/site-packages/raven/base.pytcaptureExceptions�scO@s|jjj||�dS(sp
        Records a breadcrumb with the current context.  They will be
        sent with the next event.
        N(RNR�trecord(R(targsR�((s;/opt/alt/python27/lib/python2.7/site-packages/raven/base.pytcaptureBreadcrumb�scC@st|jdd�S(NR�(RRXR (R(((s;/opt/alt/python27/lib/python2.7/site-packages/raven/base.pyR��scC@s||j_dS(N(RXR�(R(R�((s;/opt/alt/python27/lib/python2.7/site-packages/raven/base.pyR��sN((;R.R/t__doc__R\R]R^RRRR�R R:R7R6RpRbR|R}R~tclassmethodR�R�R�RR�R�R�R�R�R�RtpropertyRNR�R�R�R�R�RtR�R�R�R�RR�RRRRR R�R�R1R5R6R9tcapture_breadcrumbR�tsetter(((s;/opt/alt/python27/lib/python2.7/site-packages/raven/base.pyR}sl	Q						
					�		
	
	
		Q										0
		
tDummyClientcB@seZdZd�ZRS(s"Sends messages into an empty void.cK@sdS(N(R (R(R�((s;/opt/alt/python27/lib/python2.7/site-packages/raven/base.pyR��s(R.R/R:R�(((s;/opt/alt/python27/lib/python2.7/site-packages/raven/base.pyR?�s(HR:t
__future__RRR\RnRR9R�R�RtinspectRR�RttypesRt	threadingRR�R-tcontextlib2tthreadRRwtImportErrort_threadRAt
raven.confRtraven.conf.remoteRtraven.exceptionsR	R
traven.utilsRRR
Rtraven.utils.compatRRtraven.utils.encodingRtraven.utils.serializerRtraven.utils.stacksRRtraven.utils.transactionRtraven.transport.registryRRtraven.eventst__all__R R�R�RR�RvtstrR!R#tdictR$tobjectR0RR?(((s;/opt/alt/python27/lib/python2.7/site-packages/raven/base.pyt<module>sb
"	
		%���#

?>