bg/ddlZddlZddlZddlmZddlmZmZmZm Z ddl m Z m Z ddl mZe rddlmZddlmZmZnddlmZddlmZmZer"ddlZddlmZdd lmZdd lmZdd lmZdd lmZejd ZdZGddeZdZ ej!dZ"dZ#dZ$dZ%Gdde&Z'dZ(dZ)ddl*m+Z+dS)N)OP)capture_internal_exceptionsDsnmatch_regex_list to_string)PY2 iteritems) TYPE_CHECKING)Mapping)quoteunquote)Any)Dict) Generator)Optional)Unionz5^[ ]*([0-9a-f]{32})?-?([0-9a-f]{16})?-?([01])?[ ]*$z(([a-zA-Z0-9+/]{4})*([a-zA-Z0-9+/]{2,3})?c*eZdZ ddZdZdZdZdS)EnvironHeadersHTTP_c"||_||_dSN)environprefix)selfrrs O/opt/cloudlinux/venv/lib64/python3.11/site-packages/sentry_sdk/tracing_utils.py__init__zEnvironHeaders.__init__5s   cx|j|j|ddzSN-_)rrreplaceupper)rkeys r __getitem__zEnvironHeaders.__getitem__>s0|DK#++c3*?*?*E*E*G*GGHHrcNtdt|DS)Nc3K|]}dVdS)N).0r!s r z)EnvironHeaders.__len__..Ds"))1))))))r)sumiterrs r__len__zEnvironHeaders.__len__Bs%))d4jj))))))rc# K|jD]y}t|ts|dd}||js[|t|jdVzdSr)r isinstancestrr"r# startswithrlen)rks r__iter__zEnvironHeaders.__iter__Fs ( (Aa%%  #s##))++A<< ,, C $$&&' ' ' ' ' ( (rN)r)__name__ __module__ __qualname__rr%r/r6r)rrrr4s]III*** ( ( ( ( (rrc|dSt|dduo-|ddup|dduS)z} Returns True if either traces_sample_rate or traces_sampler is defined and enable_tracing is set and not false. NFenable_tracingtraces_sample_ratetraces_sampler)boolget)optionss rhas_tracing_enabledrASsi u  $%%U2 KK, - -T 9 9{{+,,D8   rc#:K|jr:|jjdddr|r|dgkrd}|dkrd}nd}d}t||}i}|||d<|||d<|rd|d <t 5||d | dddn #1swxYwY|tj| 5}| D]\}} | || |VddddS#1swxYwYdS) N _experimentsrecord_sql_paramsFpyformatformatz db.paramsz db.paramstyleTzdb.executemanyquery)messagecategorydata)op description) clientr@r? _format_sqlradd_breadcrumb start_spanrDBitemsset_data) hubcursorrG params_list paramstyle executemanyrJspanr5vs rrecord_sql_queriesr[es z cj(8<<U  kdV33K  # #!J   & &E D'[ *_&!%  $ & &GG 57FFFGGGGGGGGGGGGGGG 25e 4 4JJLL  DAq MM!Q     s$=B""B&)B&5DDDcB|jtjkr%||jdd|jdS|jtjkr|dd|jdS|jdkr%|dd|j|jdSdS)Nredis)rHtyperIrJhttphttplib)r^rIrJ subprocess)r^rIrHrJ)rKrDB_REDISrOrL_tags HTTP_CLIENT_data)rTrYs r"maybe_create_breadcrumbs_from_spanrfs w"+ $7W4:       BN " " LLLLL L  !$       ! rc|sdS|dr|dr |dd}t|}|sdS|\}}}d}|r#dt |d}|r#dt |d}|r|d k}|||d S) zL Given a `sentry-trace` header string, return a dictionary of data. Nz00-z-00z{:032x}z{:016x}0)trace_idparent_span_idparent_sampled)r3endswithSENTRY_TRACE_REGEXmatchgroupsrFint)headerrqrlrm sampled_strrns rextract_sentrytrace_datarvs t FOOE$:$:"  $ $V , ,E t,1LLNN)HnkN7##C"$5$566C"))#nb*A*ABB,$+((  rcd} t|drI||}t|tr||jj}n#t$rd}YnwxYw|pt|S)Nmogrify) hasattrrxr1bytesdecode connectionencoding Exceptionr)rUsqlreal_sqls rrNrNsH  69 % % G~~c**H(E** G#??6+<+EFF   %y~~%sAA A-,A-ceZdZdZdZejdZ ddZe dZ e dZ e d Z d Z d Zdd ZdS)Baggage sentry_itemsthird_party_itemsmutablezsentry-z^sentry-Tc0||_||_||_dSrr)rrrrs rrzBaggage.__init__s )!2 rci}d}d}|r|dD]}d|vrt5|}|d\}}tj|r=t |dd}t |||<d}n ||rdnd|zz }dddn #1swxYwYt|||S) zF freeze if incoming header already has sentry baggage rT,=r r(FN)splitrstriprSENTRY_PREFIX_REGEXrqr ) clsrtrrritemr$val baggage_keys rfrom_incoming_headerzBaggage.from_incoming_headersV    W S)) W Wd??022WW::<U7?<(( (.#8  *z=P/P/P'::'FL $ ;;} % % A*1-*@L ' ;;y ! ! 9&-i&8L # ;;u   H),WU^)<)<)GL & ;;+ , , H*12F*GL '%%+," 88I   ;+/ ?L (|%6@@@rc|jptjj}|j}i}|st |S|jpi}|jr |jjpi}|j |d<| dr |d|d<| dr |d|d<| drt|dj |d<|j r|jtvr |j |d<| dr |d|d<|jt#|j|d <|j|jrd nd |d <|jr+|jjr||jjt |dS)z Populate fresh baggage entry with sentry_items and make it immutable if this is the head SDK which originates traces. rlrrrr transactionrrNrtruefalsesampledFr)rTrrrrMrr@rrrlr?rrnamesourceLOW_QUALITY_TRANSACTION_SOURCESrr2r_baggagerupdate)rrrTrMrr@rs rpopulate_from_transactionz!Baggage.populate_from_transaction%so7!7  )<(( (.&B -cio4"#.#7 Z ;;} % % A*1-*@L ' ;;y ! ! 9&-i&8L # ;;u   H),WU^)<)<)GL &   ;"*III*5*:L ' 88I   ;+/ ?L (  " .*-k.E*F*FL '   *0;0C&PffL #   CK$8$E C    4 A B B B|U3333rcd|_dS)NFrr.s rfreezezBaggage.freezeXs  rcHi}t|jD] \}}|||< |Sr)r r)rrtr$rs rdynamic_sampling_contextz Baggage.dynamic_sampling_context\s5"4#455  ICF3KK rFcg}t|jD]|\}}t5tjt |zdzt t |z}||dddn #1swxYwY}|r||jd |S)Nrr) r rrr SENTRY_PREFIXr r2appendrjoin)rinclude_third_partyrRr$rrs r serializezBaggage.serializees!$"344 # #HC,.. # #,uSzz9C?%C//Q T""" # # # # # # # # # # # # # # #  1 LL/ 0 0 0xxsABB B N)rT)F)r7r8r9 __slots__rrecompilerr classmethodrrrrrrr)rrrrs@IM$"*Z00  AA[A4"A"A["AH0404[04d      rrc|j}|jd}|jr|jjr|jjj}nd}|o||v}|rdSt ||dS)zv Returns True if url matches trace_propagation_targets configured in the given hub. Otherwise, returns False. trace_propagation_targetsNFT)substring_matching)rMr@ transport parsed_dsnnetlocr)rTurlrMrdsn_urlis_request_to_sentrys rshould_propagate_tracertsx ZF &/J K F,7"-4"5w#~u C!:t T T TTrci}|D]Q\}}|dr |dd}|dd}|||<R|S)z Normalizes incoming data so the keys are all lowercase with dashes instead of underscores and stripped from known prefixes. rNr!r )rRr3r"lower) incoming_datarJr$values rnormalize_incoming_datarsx D#))++ U >>' " " abb'Ckk#s##))++S Kr)r),r contextlibrsentry_sdk.constsrsentry_sdk.utilsrrrrsentry_sdk._compatrr sentry_sdk._typesr collectionsr urllibr r collections.abc urllib.parsetypingrrrrrrrpbase64_strippedrrAcontextmanagerr[rfrvrNobjectrrrsentry_sdk.tracingrr)rrrs   .-------++++++,######%%%%%%%%%''''''++++++++MMM       RZ(((((W(((>$ '''T   "@&&&(\\\\\f\\\~UUU(   "?>>>>>>>r