0i(ddlZddlZddlZddlmZddlmZmZddlm Z e r,ddlm Z ddlm Z ddlm Z ddlm Z dd lmZdd lmZdd lmZmZd ZGd dZGddZGddZy)N)Session) json_dumpscapture_internal_exceptions) TYPE_CHECKING)Any)Optional)Union)Dict)List)Iterator)EventEventDataCategorycpt|tr|jdd}tj|S)Nutf-8replace) isinstancebytesdecodejsonloads)datas B/opt/hc_python/lib/python3.12/site-packages/sentry_sdk/envelope.py parse_jsonrs-${{7I. ::d ceZdZdZ ddZedZdZdZdZ dZ d Z d Z d Z d Zd ZdZdZdZdZedZedZdZy)Envelopea. Represents a Sentry Envelope. The calling code is responsible for adhering to the constraints documented in the Sentry docs: https://develop.sentry.dev/sdk/envelopes/#data-model. In particular, each envelope may have at most one Item with type "event" or "transaction" (but not both). Ncp| t|}|xsi|_| g}||_yt|}||_yN)dictheaderslistitems)selfr r"s r__init__zEnvelope.__init__$sC  7mG}" =E KE rczdt|jddjd|jDdS)Nzenvelope with z items (z, c34K|]}|jywr) data_category).0xs r z'Envelope.description..8s:z!aoozs))lenr"joinr#s r descriptionzEnvelope.description3s/  O II:tzz: :  rcP|jtt|dy)Nreventpayloadtypeadd_itemItem PayloadRef)r#r2s r add_eventzEnvelope.add_event;s d:5#9HIrcP|jtt|dy)Nr1 transactionr3r6)r#r<s radd_transactionzEnvelope.add_transactionBs d:;#?mTUrcP|jtt|dy)Nr1profiler3r6)r#r?s r add_profilezEnvelope.add_profileIs d:7#;)LMrc v|jtt|dd|jddiy)Nr1 profile_chunkplatformpython)r4r5r )r7r8r9get)r#rBs radd_profile_chunkzEnvelope.add_profile_chunkPs8 " 6$#]%6%6z8%LM  rcP|jtt|dy)Nr1check_inr3r6)r#checkins r add_checkinzEnvelope.add_checkin]s d:7#;*MNrct|tr|j}|jt t |dy)Nr1sessionr3)rrto_jsonr7r8r9)r#rLs r add_sessionzEnvelope.add_sessionds2 gw 'oo'G d:7#;)LMrcP|jtt|dy)Nr1sessionsr3r6)r#rPs r add_sessionszEnvelope.add_sessionsms d:8#<:NOrc:|jj|yr)r"append)r#items rr7zEnvelope.add_itemts $rcR|jD]}|j}||cSyr)r" get_event)r#r"r2s rrVzEnvelope.get_event{s,ZZEOO%E   rcR|jD]}|j}||cSyr)r"get_transaction_event)r#rTr2s rrXzEnvelope.get_transaction_events.JJD..0E  rc,t|jSr)iterr"r.s r__iter__zEnvelope.__iter__sDJJrc|jt|j|jd|jD]}|j |y)N )writerr r"serialize_into)r#frTs rr_zEnvelope.serialize_intos@  4<<() JJD    "rcltj}|j||jSrioBytesIOr_getvaluer#outs r serializezEnvelope.serialize'jjl C ||~rct|j}g} tj|}|n|j |*|||S)Nr r")rreadliner8deserialize_fromrS)clsr`r r"rTs rrmzEnvelope.deserialize_fromsT QZZ\*((+D| LL   7%00rcJ|jtj|Srrmrcrdrnrs r deserializezEnvelope.deserialize ##BJJu$566rc<d|jd|jdS)Nzrkr.s r__repr__zEnvelope.__repr__s37<<LLr)NN)__name__ __module__ __qualname____doc__r$propertyr/r:r=r@rFrJrNrQr7rVrXr[r_rh classmethodrmrrrvrrrrs   JVN  ONP  #  1 177Mrrc6eZdZ ddZdZedZdZy)r9Nc.||_||_||_yr)rrpath)r#rrrs rr$zPayloadRef.__init__s   rc^|jz|jHt5t|jd5}|j |_ddddddn&|j t |j |_|jxsdS#1swYHxYw#1swY%xYw)Nrbr)rrropenreadrr)r#r`s r get_byteszPayloadRef.get_bytess :: yy$02dii.!%&VVX /32&' 2 zz S /.32s"B#BB#B B##B,c|jy|jJ|j}t|tr|j dd}t j |d}|r|Sy)Nzapplication/jsonrrrzapplication/octet-stream)rrrrr mimetypes guess_type)r#rtys rinferred_content_typez PayloadRef.inferred_content_types^ 99 % YY "99D$&{{7I6%%d+A.B )rc"d|jdS)Nz rr9ceZdZ d dZdZedZedZdZdZ dZ d Z d Z e d Ze d Zy)r8Nc:| t|}n|i}||_t|tr t |}n.t|t rt |j d}n|}|||d<|||d<| ||d<||_yd|vr|j|d<||_y)N)rrfilenamer5 content_type) rr rrr9strencoderr4)r#r4r r5rrs rr$z Item.__init__s  7mG _G gu % w/G  % w~~g'>?GG  "*GJ   "GFO  #&2GN # 7 *&-&C&CGN # rcVd|jd|jd|jdS)Nz !! ? " 9_ ? "" : rc6|jjSr)r4rr.s rrzItem.get_bytes-s||%%''rcz|jdk(r,|jj|jjSy)z9 Returns an error event if there is one. r2Nr5r4rr.s rrVzItem.get_event1s2 99 DLL$5$5$A<<$$ $rcz|jdk(r,|jj|jjSy)Nr<rr.s rrXzItem.get_transaction_event:s0 99 %$,,*;*;*G<<$$ $rct|j}|j}t||d<|j t ||j d|j ||j dy)Nlengthr])rr rr,r^r)r#r`r rs rr_zItem.serialize_into@s^ t||$ J  7#$   rcltj}|j||jSrrbrfs rrhzItem.serializeMrirc~|jj}|syt|}|jd}|"|j |}|jn|jjd}|jddvr||t t|}|S|||}|S)Nrr]r5)r2r<r1)r r4)rlrstriprrErr9)rnr`liner rr4rvs rrmzItem.deserialize_fromSs zz|""$T"X&  ffVnG JJLjjl))%0G ;;v ": :Wjj>Q.RSB Wg6B rcJ|jtj|Srrprqs rrrzItem.deserializekrsr)NNNN)rwrxryr$rvr{r5r'rrVrXr_rhr|rmrrr}rrr8r8s  > ((4(  .77rr8)rcrrsentry_sdk.sessionrsentry_sdk.utilsrrtypingrrrr r r r sentry_sdk._typesr rrrr9r8r}rrrsZ &D :[M[M|'>'>TL7L7r