Viewing File: /opt/alt/python35/lib/python3.5/site-packages/sentry_sdk/__pycache__/utils.cpython-35.opt-1.pyc



\k@sQddlZddlZddlZddlZddlmZddlmZddlmZm	Z	m
Z
mZmZm
Z
mZerddlmZmZnddlmZmZedddZejdZeZgZd	d
ZddZed
dZddZdddZGdddeZe
GdddeZ GdddeZ!ddZ"ddZ#ddZ$dd Z%d!d"d#Z&ddd$d%Z'd&d'Z(d(d)Z)d*d+Z*d,dd-d.Z+d/d0Z,d1d2Z-dd3d4d5Z.dd3d6d7Z/d3d8d9Z0d:d;Z1ddd<d=Z2e3e4d>Z5e5rd?d@Z6ndAd@Z6dddBdCZ7dDdEZ8dFdGZ9dHdIZ:dddJdKZ;dLdMZ<dNdOZ=dddPdQZ>dRdSZ?GdTdUdUeZ@dVdWZAdXdYZBdZd[ZCd\d]ZDd^d_ZEd`daZFGdbdcdceZGdddeZHdfdfdgdhZId!didjZJeJdkdlZKd3ZLy6ddmlMmNZNerejOdvkrddlPZPWn>eQk
r@dpZLddqlRmSZSGdrdsdseZNYnXdtduZTdS)wN)contextmanager)datetime)urlparse	text_typeimplements_strstring_typesnumber_types	int_typesPY2)MappingSequenceizsentry_sdk.errorscCstj|dS)N)global_repr_processorsappend)	processorr	/utils.pyadd_global_repr_processor9srcCsdS)Nrrrrr_get_debug_hub=srccsJy	dVWn:tk
rEt}|dk	rA|jtjYnXdS)N)	ExceptionrZ_capture_internal_exceptionsysexc_info)Zhubrrrcapture_internal_exceptionsBs	
	rcCs|tjS)N)epochZ
total_seconds)valuerrrto_timestampMsrcCsG|dkrtj}nt|}|ddkr=d}d|iS)z+Creates a hint with the exc info filled in.Nrr)rrexc_info_from_error)rrrrevent_hint_with_exc_infoQsrc@seZdZdZdS)BadDsnzRaised on invalid DSNs.N)__name__
__module____qualname____doc__rrrrr]src@sOeZdZdZddZeddZdddZd	d
ZdS)DsnzRepresents a DSN.cCsft|tr%t|j|_dStjt|}|jdkr\td|j|j|_|j	|_
|j|_|jdkr|jdkrdpd|_|j|_
|j
std|j|_|jjdd}ytt|j|_Wn;ttfk
rKtd	|jp6d
ddYnXdj|d|_dS)NhttphttpszUnsupported scheme %riPzMissing public key/r
zInvalid project in DSN (%r))r$r%)
isinstancer#dict__dict__rZurlsplitrschemerhostnamehostportZusername
public_keyZpassword
secret_keypathrsplitintpop
project_id
ValueError	TypeErrorjoin)selfrpartsr2rrr__init__es*	(zDsn.__init__cCs8|j}|j|jfdkr4d||jf}|S)	zThe netloc part of a DSN.r$r&r%z%s:%sr$r&r%r=)r>r?)r.r,r/)r:rvrrrnetlocs	z
Dsn.netlocNcCsCtd|jd|jd|jd|jd|jd|jd|S)z*Returns the auth info object for this dsn.r,r.r2r6r0r1client)Authr,rAr2r6r0r1)r:rBrrrto_auths						zDsn.to_authcCs?d|j|j|jr%d|jp(d|j|j|jfS)Nz%s://%s%s@%s%s%s@r()r,r0r1rAr2r6)r:rrr__str__szDsn.__str__)	rr r!r"r<propertyrArDrFrrrrr#as
r#c@sOeZdZdZddddddZeddZdd	d
ZdS)rCz,Helper object that represents the auth info.Nr'c		CsL||_||_||_||_||_||_||_||_dS)N)r,r.r2r6r0r1versionrB)	r:r,r.r6r0r1rIrBr2rrrr<s							z
Auth.__init__cCs d|j|j|j|jfS)z'Returns the API url for storing events.z%s://%s%sapi/%s/store/)r,r.r2r6)r:rrr
store_api_urls
zAuth.store_api_urlcCsd|jfd|jfg}|dk	rI|jdtt|f|jdk	rn|jd|jf|jdk	r|jd|jfddjd	d
|DS)z!Returns the auth header a string.Z
sentry_keyZsentry_versionNZsentry_timestampZ
sentry_clientZ
sentry_secretzSentry z, css%|]\}}d||fVqdS)z%s=%sNr).0keyrrrr	<genexpr>sz!Auth.to_header.<locals>.<genexpr>)r0rIrstrrrBr1r9)r:Z	timestampr@rrr	to_headerszAuth.to_header)rr r!r"r<rGrJrOrrrrrCs
rCcCs"t|ddp!t|ddS)Nr!r)getattr)clsrrr
get_type_namesrRcCs&t|dd}|dkr"|SdS)Nr builtins__builtins__)NrSrT)rP)rQmodrrrget_type_modulesrVcCsxy|jd}|jdSWnttfk
r8YnXx8dD]0}y|j|rZdSWq@tk
roYq@Xq@WdS)Nrzsentry_sdk.__traceback_hide____tracebackhide__TF)rWrX)	f_globals
startswithAttributeErrorKeyErrorf_localsr)framerUZ	flag_namerrrshould_hide_frames



	r_ccs4x-|dk	r/t|js#|V|j}qWdS)N)r_tb_frametb_next)tbrrriter_stackssrcicCs@|s
|St||kr2|d|ddS|d|S)Nz...)len)rlengthrrrslim_strings
rgcCsd}d}|dk	rst|drsy|j|}Wnttfk
rZd}YnX|dk	rs|j}|dkrytj|}Wn%ttfk
rgdgfSYnX|sgdgfStd||}t	|d|t
|}yhdd|||D}	t||jd}
dd||d|D}|	|
|fSWnt
k
rgdgfSYnXdS)	N
get_sourcerr
cSs%g|]}t|jdqS)z
)rgstrip)rKlinerrr
<listcomp>s	z'get_lines_from_file.<locals>.<listcomp>z
cSs%g|]}t|jdqS)z
)rgrj)rKrkrrrrls	)hasattrriImportErrorIOError
splitlines	linecachegetlinesOSErrormaxminrergrj
IndexError)filenamelinenoloadermoduleZ
context_linessourceZ
source_strZlower_boundZupper_boundpre_contextcontext_linepost_contextrrrget_lines_from_files4
	
rcCsy|jj}Wntk
r*d}YnXy|jd}Wntk
r]gdgfSYnXy|jd}Wntk
rd}YnX|d}|dk	r|rt||||SgdgfS)Nr
__loader__r
)f_codeco_filenamerrYr)r^	tb_linenoabs_pathrzryrxrrrget_source_context's 



rcCs1yt|SWntk
r,t|SYnXdS)N)rr	safe_repr)rrrrsafe_str;s
rcCsydt|}t|tr0|jdd}y|jdjdSWntk
rb|SYnXWntk
r|dSYnXdS)Nzutf-8replacelatin1zunicode-escapez
<broken repr>)reprr)bytesdecodeencoder)rr@rrrrCs



rcstdkrtj|r2tSzdkrddi}x>tD]6}t$|||}|tk	r|SWdQRXqZWt|ttfrfdd|DSt|t	rfddt|j
DSt|SWdj|XWdQRXdS)	Nrmemoremaining_depthcs,g|]"}t|dddqS)rr
r)object_to_json)rKx)rrrrrlss	z"object_to_json.<locals>.<listcomp>cs;i|]1\}}t|dddt|qS)rr
r)rr)rKkv)rrrr
<dictcomp>zs	z"object_to_json.<locals>.<dictcomp>z
<broken repr>)
rMemomemoizeCYCLE_MARKERrNotImplementedr)listtupleritemsr	unmemoize)objrrZhintsrresultr)rrrr_s,
	

rcCs@i}x3|jjD]"\}}t||t|<qW|S)N)r]rrrN)r^r@rLrrrrextract_localssrcCsy|jdr"|dd}|jddd}||krTtjj|Stj|j}|j|jtj	ddddj
tj	SWntk
r|SYnXdS)Nz.pycr
.rr)endswithsplitosr2basenamermodules__file__r3seplstripr)rzrZbase_moduleZbase_module_pathrrrfilename_for_modules)
rTcCst|dd}|r3|jj}|jj}nd}d}y|jd}Wntk
rjd}YnX|dkr|j}t||\}}}	dt||pdd|rt	j
j|ndd|pdd|d|d	|d
|d|	i}
|rt||
d<|
S)
Nrrrwrfunctionz	<unknown>rzrxr|r}r~vars)
rPrrco_namerYrf_linenorrrr2abspathr)r^rwith_localsrrrrzr|r}r~r@rrrserialize_frames0
	rcs#dfddt|DiS)Nframescs.g|]$}t|jd|jdqS)rr)rr`r)rKrb)rrrrls	z-stacktrace_from_traceback.<locals>.<listcomp>)rc)rbrr)rrstacktrace_from_tracebacksrcCsmd}g}tj}x>|dk	rXt|sL|jt|d||j}qW|jd|iS)NTrr)r	_getframer_rrf_backreverse)rrXrfrrrcurrent_stacktraces

rcCst|ddS)Nerrno)rP)	exc_valuerrr	get_errnosrcCs|dk	rt|}nd}|dk	ra|p6i}|jdi}|jdd|i|dkrvd}n
|d}dt|dt|dt|d	|d
t||iS)NmetarcodeTrrztyper	mechanism
stacktrace)r
setdefaultrVrRrr)exc_typerrbclient_optionsrrZmechanism_metarrrr!single_exception_from_error_tuples	
r__suppress_context__ccs|\}}}g}t}x|dk	r|dk	rt||kr|||fV|j||jt||jr|j}n	|j}|dkrPt|}|}t|dd}q!WdS)N
__traceback__)	setidraddr	__cause____context__rrP)rrrrbZseen_exceptionsZseen_exception_idscauserrrwalk_exception_chains$	
		rccs	|VdS)Nr)rrrrr(scCsX|\}}}g}x<t|D].\}}}|jt|||||q"W|S)N)rrr)rrrrrrbr@rrrexceptions_from_error_tuple-srcCs;yt|SWn&tk
r6t|ddSYnXdS)Nr
r)rUnicodeDecodeErrorr)rrrr	to_string>s
rccs^d|kr|dVd|krZx6|djdp:fD]}d|kr;|dVq;WdS)Nr	exceptionvalues)get)eventrrrriter_event_stacktracesFs	 rccs@x9t|D]+}x"|jdp(fD]}|Vq)Wq
WdS)Nr)rr)rrr^rrriter_event_framesPsrcCs:x3t|D]%}t|jdd|d|q
W|S)Nrin_app_excludein_app_include)rhandle_in_app_implr)rrrrrrr
handle_in_appWsrcCs|s
dSd}x|D]}|jd}|dk	rG|rd}q|jd}|sbqqt||rd|d<d}qt||rd|d<qW|sx-|D]%}|jddkrd|d<qW|S)NFin_appTrz)r_module_in_set)rrrZ
any_in_appr^rrzrrrrcs,

	
rcCst|tr3t|dkr3|\}}}nt|trt|dd}|dk	rut|}|}qtj\}}}||k	rd}|}t|}n	t|||fS)Nrdr)	r)rre
BaseExceptionrPrrrr7)errorrrrbrrrrs!		rcCs@t|}t|}ddddt|||ii|fS)Nlevelrrr)rrr)rrrZhintrrrevent_from_exceptionsrcCsH|s
dSx7|pfD])}||ks<|j|drdSqWdS)NFrT)rZ)nameritemrrrrsrc@seZdZddZdS)AnnotatedValuecCs||_||_dS)N)rmetadata)r:rrrrrr<s	zAnnotatedValue.__init__N)rr r!r<rrrrrsrcs>fdd|\}}|dk	r:||d<|S)Ncst|tri}i}xq|jD]c\}}|dkrCq(|\||<||<||dkrt||=||dkr(||=q(W||pdfSt|trIt|ttfrIg}i}xft|D]X\}}|\}|t|<|j||t|dkr|t|=qW||pEdfSt|t	rx|j
dd|jifS|dfS)Nr(r)r)rrrrr	enumeraterNrrrr)rZdict_rvrrrZlist_rviZnew_v)innerrrrs0%
 zflatten_metadata.<locals>.innerZ_metar)rrr)rrflatten_metadatas

rcCst|jdd|jdd}|rgx6|jddpFfD]}t|jddqGWt|jddt|jdddS)Nrrrrequestbreadcrumbs)strip_stacktrace_mutrstrip_request_mutstrip_breadcrumbs_mut)rrrrrstrip_event_mutsrcCs;|s
dSx*|jddp"fD]}t|q#WdS)Nr)rstrip_frame_mut)rr^rrrrsrcCs:|s
dS|jdd}|s&dSt||d<dS)Ndata)r
strip_databag)rrrrrrsrcCs?|s
dSx.tt|D]}t||||<qWdS)N)rangerer)rrrrrrsrcCs$d|kr t|d|d<dS)Nr)r)r^rrrrsrc@s4eZdZddZddZddZdS)rcCs
i|_dS)N)_inner)r:rrrr<sz
Memo.__init__cCs0t||jkrdS||jt|<dS)NTF)rr)r:rrrrrszMemo.memoizecCs|jjt|ddS)N)rr5r)r:rrrrrszMemo.unmemoizeN)rr r!r<rrrrrrrsrcCs|dkrdS|tkr dSt|trBt|jdSt|trhdd|jDSt|trt|ttfrdd|DSt|t	rt	t
|j|jSt|t
tst|St|tr|jddS|S)	Nz<cyclic>z%Y-%m-%dT%H:%M:%SZcSs%i|]\}}t||qSr)
convert_types)rKrrrrrr%s	z!convert_types.<locals>.<dictcomp>cSsg|]}t|qSr)r)rKrrrrrl's	z!convert_types.<locals>.<listcomp>zutf-8r)rr)rrstrftimerrrrrrrrrrrr)rrrrrs"%
rcCs>|dkr(tddddggiSt|trAt|St|tri}xet|jD]Q\}\}}||krt|d|iSt|d|dd|||<qiW|St|tr:g}x\t|D]N\}}||krt|d|iS|j	t|d|dd|qW|S|S)	Nrremz!limitrrerr
max_breadth)
rr)rstrip_stringrrrrrr)rrrZrv_dictrrrZrv_listrrrr3s,
%!rcCsj|s
|St|}||krftd|d|dddd|ddd|d|ggiS|S)	Nrrdz...rrerz!limitr)rer)rZ
max_lengthrfrrrrSs rc
s|jd}|s!tdtt|}g}d}dg}fddx|ddD]}|j|t|7|t|7}|std|j}||}	t|	tr
|j	fd	d
|	j
dD|	j}	|t|7}t|	7|j|	qnW|j|dt|d7|t|d7}dj|}|s|Std
|dd|d|iS)zFormat a string containing %s for placeholders and call `strip_string`
    on each parameter. The string template itself does not have a maximum
    length.

    TODO: handle other placeholders, not just %s
    z%sz No formatting placeholders foundrcsfddt|DS)NcsAg|]7\}}t|tr7|dkr7|n|qS)r)r)r	)rKrr)	rv_lengthrrrlws	z<format_and_strip.<locals>.realign_remark.<locals>.<listcomp>)r)remark)rrrrealign_remarkusz(format_and_strip.<locals>.realign_remarkNr
zNot enough params.c3s|]}|VqdS)Nr)rKr)rrrrMsz#format_and_strip.<locals>.<genexpr>rr(rrrerrrr)
rr7rreversedrrer5r)rextendrrr9)
templateZparamsrZchunksZ
rv_remarksZrv_original_lengthr@chunkZparamZstripped_paramr)rrrformat_and_stripds@
!	r)
ContextVarrdrHF)localc@s4eZdZddZddZddZdS)rcCs||_t|_dS)N)_namer_local)r:rrrrr<s	zContextVar.__init__cCst|jd|S)Nr)rPr)r:defaultrrrrszContextVar.getcCst|jd|dS)Nr)setattrr)r:rrrrrszContextVar.setN)rr r!r<rrrrrrrsrcCsy$d|jj|jj|jfSWntk
r8YnXt|ddp`t|ddp`d}|smdSyd|j|fSWntk
rYnX|S)Nz%s.%s.%sr!rz%s.%s)Zim_classr rrrP)funcZ
func_qualnamerrrtransaction_from_functions		
*
r)rdrH)Urrrqlogging
contextlibrrZsentry_sdk._compatrrrrrr	r
collectionsrrcollections.abcr	getLoggerloggerobjectrrrrrrrr7rr#rCrRrVr_rcrgrrrrrrrrrrrrrmrZHAS_CHAINED_EXCEPTIONSrrrrrrrrrrrrrrrrrrrrrrZHAS_REAL_CONTEXTVARSZcontextvarsrversion_infoZaiocontextvarsrn	threadingrrrrrr<module>s4	<-(("	!

&
 9

Back to Directory File Manager