§ <ˆjÿ/ãó�—ddlZddlZddlZddlmZddlmZmZmZm Z ddl m Z m Z ddl mZe rddlmZddlmZmZnddlmZddlmZmZer"ddlZddlmZdd lmZdd lmZdd lmZdd lmZejd ¦«ZdZGd„de¦«Zd„Z ej!d„¦«Z"d„Z#d„Z$d„Z%Gd„de&¦«Z'd„Z(d„Z)ddl*m+Z+dS)éN)ÚOP)Úcapture_internal_exceptionsÚDsnÚmatch_regex_listÚ to_string)ÚPY2Ú iteritems)Ú TYPE_CHECKING)ÚMapping)ÚquoteÚunquote)Ú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 dd„Zd„Zd„Zd„ZdS)ÚEnvironHeadersÚHTTP_có"—||_||_dS©N)ÚenvironÚprefix)Úselfrrs úO/opt/cloudlinux/venv/lib64/python3.11/site-packages/sentry_sdk/tracing_utils.pyÚ__init__zEnvironHeaders.__init__5s€ð ˆŒ ؈Œ ˆ ˆ ócóx—|j|j| dd¦« ¦«zS©Nú-Ú_)rrÚreplaceÚupper)rÚkeys rÚ __getitem__zEnvironHeaders.__getitem__>s0€àŒ|˜DœK¨#¯+ª+°c¸3Ñ*?Ô*?×*EÒ*EÑ*GÔ*GÑGÔHÐHrcóN—td„t|¦«D¦«¦«S)Nc3óK—|]}dV—ŒdS)éN©)Ú.0r!s rú z)EnvironHeaders.__len__..Ds"èè€Ð)Ð)˜�1Ð)Ð)Ð)Ð)Ð)Ð)r)ÚsumÚiter©rs rÚ__len__zEnvironHeaders.__len__Bs%€åÐ)Ð)�d 4™jœjÐ)Ñ)Ô)Ñ)Ô)Ð)rc#ó K—|jD]y}t|t¦«sŒ| dd¦« ¦«}| |j¦«sŒ[|t|j¦«d…V—ŒzdSr)rÚ isinstanceÚstrr"r#Ú startswithrÚlen)rÚks rÚ__iter__zEnvironHeaders.__iter__Fs’èè€à”ð (ð (ˆAݘa¥Ñ%Ô%ð Øà— ’ ˜#˜sÑ#Ô#×)Ò)Ñ+Ô+ˆAØ—<’< ¤ Ñ,Ô,ð Øà•C˜œ Ñ$Ô$Ð&Ð&Ô'Ð 'Ð 'Ð 'Ð 'ð (ð (rN)r)Ú__name__Ú __module__Ú __qualname__rr%r/r6r)rrrr4s]€€€€€ððððððIðIðIð*ð*ð*ð (ð (ð (ð (ð (rrcó®—|€dSt| d¦«duo-| d¦«dup| d¦«du¦«S)z} Returns True if either traces_sample_rate or traces_sampler is defined and enable_tracing is set and not false. NFÚenable_tracingÚtraces_sample_rateÚtraces_sampler)ÚboolÚget)Úoptionss rÚhas_tracing_enabledrASsi€ð €Øˆuå Ø� Š Ð$Ñ%Ô%¨UÐ2ð à �KŠKÐ,Ñ -Ô -°TÐ 9ð 9Ø�{Š{Ð+Ñ,Ô,°DÐ8ñ  ô ðrc#ó:K—|jr:|jjd dd¦«r|r|dgkrd}|dkrd}nd}d}t||¦«}i}|�||d<|�||d<|rd|d <t ¦«5| |d |¬ ¦«ddd¦«n #1swxYwY| tj|¬ ¦«5}|  ¦«D]\}} |  || ¦«Œ|V—ddd¦«dS#1swxYwYdS) NÚ _experimentsÚrecord_sql_paramsFÚpyformatÚformatz db.paramsz db.paramstyleTzdb.executemanyÚquery)ÚmessageÚcategoryÚdata)ÚopÚ description) Úclientr@r?Ú _format_sqlrÚadd_breadcrumbÚ start_spanrÚDBÚitemsÚset_data) ÚhubÚcursorrGÚ params_listÚ paramstyleÚ executemanyrJÚspanr5Úvs rÚrecord_sql_queriesr[esøèè€ð „zð �c”jÔ(¨Ô8×<Ò<ؘUñôð ðð ˜k¨d¨VÒ3Ð3؈Kà ˜Ò #Ð #Ø!ˆJøàˆ ؈ å ˜ Ñ &Ô &€Eà €DØÐØ'ˆˆ[ÑØÐØ *ˆˆ_ÑØð&Ø!%ˆÐ Ñå $Ñ &Ô &ðGðGØ ×Ò 5°7ÀÐÑFÔFÐFðGðGðGñGôGðGðGðGðGðGðGøøøðGðGðGðGð �Š�2œ5¨eˆÑ 4Ô 4ð¸Ø—J’J‘L”Lð ð ‰DˆAˆqØ �MŠM˜!˜QÑ Ô Ð Ð Øˆ ˆ ˆ ðððñôðððððððøøøððððððs$Á=B"Â"B&Â)B&Ã5DÄDÄDcóB—|jtjkr%| |jdd|j¬¦«dS|jtjkr| dd|j¬¦«dS|jdkr%| dd|j|j¬¦«dSdS)NÚredis)rHÚtyperIrJÚhttpÚhttplib)r^rIrJÚ subprocess)r^rIrHrJ)rKrÚDB_REDISrOrLÚ_tagsÚ HTTP_CLIENTÚ_data)rTrYs rÚ"maybe_create_breadcrumbs_from_spanrf�sÇ€à „w•"”+ÒÐØ ×ÒØÔ$¨7¸WÈ4Ì:ð ñ ô ð ð ð 𠌕B”NÒ "Ð "Ø ×Ò °ÀÄÐÑLÔLÐLÐLÐLØ Œ�LÒ Ð Ø ×ÒØØ!ØÔ$Ø”ð ñ ô ð ð ð ð !Ð rcó’—|sdS| d¦«r| d¦«r |dd…}t |¦«}|sdS| ¦«\}}}d}|r#d t |d¦«¦«}|r#d t |d¦«¦«}|r|d k}|||d œS) zL Given a `sentry-trace` header string, return a dictionary of data. Nz00-z-00ééýÿÿÿz{:032x}éz{:016x}Ú0)Útrace_idÚparent_span_idÚparent_sampled)r3ÚendswithÚSENTRY_TRACE_REGEXÚmatchÚgroupsrFÚint)ÚheaderrqrlrmÚ sampled_strrns rÚextract_sentrytrace_datarv¡s÷€ð ð؈tà ×Ò˜ÑÔð F§O¢O°EÑ$:Ô$:ðØ˜˜"˜”ˆå × $Ò $ VÑ ,Ô ,€EØ ð؈tà,1¯LªL©N¬NÑ)€Hˆn˜kØ€Nàð7Ø×#Ò#¥C¨°"Ñ$5Ô$5Ñ6Ô6ˆØðCØ"×)Ò)­#¨n¸bÑ*AÔ*AÑBÔBˆØð,Ø$¨Ò+ˆðØ(Ø(ð ð ðrcó—d} t|d¦«rI| |¦«}t|t¦«r| |jj¦«}n#t$rd}YnwxYw|pt|¦«S)NÚmogrify) Úhasattrrxr1ÚbytesÚdecodeÚ connectionÚencodingÚ Exceptionr)rUÚsqlÚreal_sqls rrNrNÁs”€ð€Hð Ý �6˜9Ñ %Ô %ð GØ—~’~ cÑ*Ô*ˆHݘ(¥EÑ*Ô*ð GØ#Ÿ?š?¨6Ô+<Ô+EÑFÔF�øøÝ ðððØˆˆˆðøøøð Ð %•y ‘~”~Ð%s„AAÁ A-Á,A-có˜—eZdZdZdZejd¦«Z dd„Ze d„¦«Z e d„¦«Z e d „¦«Z d „Z d „Zdd „ZdS)ÚBaggage©Ú sentry_itemsÚthird_party_itemsÚmutablezsentry-z^sentry-ÚTcó0—||_||_||_dSrrƒ)rr„r…r†s rrzBaggage.__init__Ûs€ð )ˆÔØ!2ˆÔ؈Œ ˆ ˆ rcóâ—i}d}d}|r×| d¦«D]Á}d|vrŒt¦«5| ¦«}| d¦«\}}tj |¦«r=t | d¦«d¦«}t |¦«||<d}n ||rdnd|zz }ddd¦«n #1swxYwYŒÂt|||¦«S) zF freeze if incoming header already has sentry baggage r‡Tú,ú=r r(FN)ÚsplitrÚstripr‚ÚSENTRY_PREFIX_REGEXrqr ) Úclsrtr„r…r†Úitemr$ÚvalÚ baggage_keys rÚfrom_incoming_headerzBaggage.from_incoming_headeråsV€ð ˆ ØÐ؈à ð WØŸ š  SÑ)Ô)ð Wð W�ؘd�?�?Øå0Ñ2Ô2ðWðWØŸ:š:™<œ<�DØ#Ÿzšz¨#™œ‘H�C˜ÝÔ2×8Ò8¸Ñ=Ô=ðWÝ&-¨c¯iªi¸©n¬n¸QÔ.?Ñ&@Ô&@˜ Ý4;¸C±L´L˜  [Ñ1Ø"'˜˜à)Ð5FÐ.N¨c¨cÈBÐRVÑ-VÑVÐ)ðWðWðWñWôWðWðWðWðWðWðWøøøðWðWðWðWøõ�|Ð%6¸Ñ@Ô@Ð@s³BCÃC ÃC cóD—i}d}d}tjjj}|�|j€t |¦«S|j}|j}|�d|vr |d|d<| d¦«r |d|d<| d¦«r |d|d<| d¦«rt|d¦«j |d<| d¦«r |d|d <|r|j pi}| d ¦«r |d |d <t |||¦«S) Nr‡FrlÚ environmentÚreleaseÚdsnÚ public_keyr<Ú sample_rateÚsegmentÚ user_segment) Ú sentry_sdkÚHubÚcurrentrMÚ_propagation_contextr‚r@r?rr˜Ú_user) r�Úscoper„r…r†rMr@Úpropagation_contextÚusers rÚ from_optionszBaggage.from_optionssM€ðˆ ØÐ؈å”Ô'Ô.ˆà ˆ>˜UÔ7Ð?ݘ<Ñ(Ô(Ð (à”.ˆØ#Ô8Ðà Ð *¨zÐ=PÐ/PÐ/PØ':¸:Ô'FˆL˜Ñ $à �;Š;�}Ñ %Ô %ð AØ*1°-Ô*@ˆL˜Ñ 'à �;Š;�yÑ !Ô !ð 9Ø&-¨iÔ&8ˆL˜Ñ #à �;Š;�uÑ Ô ð HÝ),¨W°U¬^Ñ)<Ô)<Ô)GˆL˜Ñ &à �;Š;Ð+Ñ ,Ô ,ð HØ*1Ð2FÔ*GˆL˜Ñ 'àÐ%˜%œ+Ð,¨"ˆØ �8Š8�IÑ Ô ð ;Ø+/° ¬?ˆL˜Ñ (å�|Ð%6¸Ñ@Ô@Ð@rcó—|jptjj}|j}i}|st |¦«S|jpi}|jr |jjpi}|j |d<|  d¦«r |d|d<|  d¦«r |d|d<|  d¦«rt|d¦«j |d<|j r|jtvr |j |d<|  d¦«r |d|d<|j�t#|j¦«|d <|j�|jrd nd |d <|jr+|jjr| |jj¦«t |d¬¦«S)z� Populate fresh baggage entry with sentry_items and make it immutable if this is the head SDK which originates traces. rlr•r–r—r˜Ú transactionršr›Nr™ÚtrueÚfalseÚsampledF©r†)rTrœr�ržrMr‚r@r¡r rlr?rr˜ÚnameÚsourceÚLOW_QUALITY_TRANSACTION_SOURCESr™r2r©Ú_baggager„Úupdate)r�r¦rTrMr„r@r£s rÚpopulate_from_transactionz!Baggage.populate_from_transaction%s«€ðŒoÐ7¥¤Ô!7ˆØ”ˆØˆ àð )ݘ<Ñ(Ô(Ð (à”.Ð& BˆØ” Ð-˜cœiœoÐ4°"ˆà#.Ô#7ˆ �ZÑ à �;Š;�}Ñ %Ô %ð AØ*1°-Ô*@ˆL˜Ñ 'à �;Š;�yÑ !Ô !ð 9Ø&-¨iÔ&8ˆL˜Ñ #à �;Š;�uÑ Ô ð HÝ),¨W°U¬^Ñ)<Ô)<Ô)GˆL˜Ñ &ð Ô ð ;àÔ"Õ*IÐIÐIà*5Ô*:ˆL˜Ñ 'à �8Š8�IÑ Ô ð ;Ø+/° ¬?ˆL˜Ñ (à Ô "Ð .Ý*-¨kÔ.EÑ*FÔ*FˆL˜Ñ 'à Ô Ð *Ø0;Ô0CÐ&P f fȈL˜Ñ #ð Ô ð C KÔ$8Ô$Eð CØ × Ò   Ô 4Ô AÑ BÔ BÐ Bå�|¨UÐ3Ñ3Ô3Ð3rcó—d|_dS)NFrªr.s rÚfreezezBaggage.freezeXs €àˆŒ ˆ ˆ rcóH—i}t|j¦«D] \}}|||<Œ |Sr)r r„)rrtr$r�s rÚdynamic_sampling_contextz Baggage.dynamic_sampling_context\s5€àˆå" 4Ô#4Ñ5Ô5ð ð ‰IˆC�؈F�3‰KˆKàˆ rFcóŠ—g}t|j¦«D]|\}}t¦«5tjt |¦«zdzt t |¦«¦«z}| |¦«ddd¦«n #1swxYwYŒ}|r| |j¦«d  |¦«S)Nr‹rŠ) r r„rr‚Ú SENTRY_PREFIXr r2Úappendr…Újoin)rÚinclude_third_partyrRr$r‘r�s rÚ serializezBaggage.serializeesñ€àˆå! $Ô"3Ñ4Ô4ð #ð #‰HˆC�Ý,Ñ.Ô.ð #ð #ÝÔ,­u°S©z¬zÑ9¸CÑ?Å%ÍÈCÉÌÁ/Ä/ÑQ�Ø— ’ ˜TÑ"Ô"Ð"ð #ð #ð #ñ #ô #ð #ð #ð #ð #ð #ð #øøøð #ð #ð #ð #øð ð 1Ø �LŠL˜Ô/Ñ 0Ô 0Ð 0à�xŠx˜‰ŒÐsªABÂB ÂB N)r‡T)F)r7r8r9Ú __slots__r¶ÚreÚcompilerŽrÚ classmethodr“r¤r°r²r´rºr)rrr‚r‚Õs×€€€€€Ø@€Ià€MØ$˜"œ* ZÑ0Ô0Ðð Øð ðððððAðAñ„[ðAð4ð"Að"Añ„[ð"AðHð04ð04ñ„[ð04ðdðððððð ð ð ð ð ð rr‚có°—|j}|jd}|jr|jjr|jjj}nd}|o||v}|rdSt ||d¬¦«S)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_dsnÚnetlocr)rTÚurlrMrÀÚdsn_urlÚis_request_to_sentrys rÚshould_propagate_tracerÈtsx€ð ŒZ€FØ &¤Ð/JÔ KÐà Ôð˜FÔ,Ô7ðØÔ"Ô-Ô4ˆˆàˆà"Ð5 w°# ~ÐØð؈uå ˜CÐ!:ÈtÐ TÑ TÔ TÐTrcóÖ—i}| ¦«D]Q\}}| d¦«r |dd…}| dd¦« ¦«}|||<ŒR|S)z… Normalizes incoming data so the keys are all lowercase with dashes instead of underscores and stripped from known prefixes. réNr!r )rRr3r"Úlower)Ú incoming_datarJr$Úvalues rÚnormalize_incoming_datarΈsx€ð €DØ#×)Ò)Ñ+Ô+ðð‰ ˆˆUØ �>Š>˜'Ñ "Ô "ð Ø�a�b�b”'ˆCà�kŠk˜#˜sÑ#Ô#×)Ò)Ñ+Ô+ˆØˆˆS‰ ˆ à €Kr)r­),r¼Ú contextlibrœÚsentry_sdk.constsrÚsentry_sdk.utilsrrrrÚsentry_sdk._compatrr Úsentry_sdk._typesr Ú collectionsr Úurllibr r Úcollections.abcÚ urllib.parseÚtypingrrrrrr½rpÚbase64_strippedrrAÚcontextmanagerr[rfrvrNÚobjectr‚rÈrÎÚsentry_sdk.tracingr­r)rrúrÝs„ðØ € € € ØÐÐÐàÐÐÐØ Ð Ð Ð Ð Ð ððððððððððððð .Ð-Ð-Ð-Ð-Ð-Ð-Ð-Ø+Ð+Ð+Ð+Ð+Ð+àð,Ø#Ð#Ð#Ð#Ð#Ð#Ø%Ð%Ð%Ð%Ð%Ð%Ð%Ð%Ð%à'Ð'Ð'Ð'Ð'Ð'Ø+Ð+Ð+Ð+Ð+Ð+Ð+Ð+àðØ€M€M€MàÐÐÐÐÐØÐÐÐÐÐØ Ð Ð Ð Ð Ð ØÐÐÐÐÐØÐÐÐÐÐð �R”ZðñôÐððð(ð(ð(ð(ð(�Wñ(ô(ð(ð>ððð$ Ôð'ð'ñÔð'ðT ð ð ð"ððð@&ð&ð&ð(\ð\ð\ð\ð\ˆfñ\ô\ð\ð~UðUðUð( ð ð ð"?Ð>Ð>Ð>Ð>Ð>Ð>Ð>r