JFIFxxC      C  " }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3RbrJFIFxxC      C  " }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3Rbr 0i|ddlZddlZddlZddlmZmZddlmZmZmZm Z m Z ddl m Z m Z ddlmZmZmZe rddlmZGddZy) N)datetimetimezone)OptionalListCallable TYPE_CHECKINGAny)format_timestamp safe_repr)EnvelopeItem PayloadRef)LogcReZdZdZdZdZdZdZdZdZ dZ d Z e d Z d Zy ) LogBatcherdig@cg|_||_||_d|_t j |_t j|_d|_ d|_ y)NT) _log_buffer _capture_func_record_lost_func_running threadingLock_lockEvent _flush_event_flusher _flusher_pid)self capture_funcrecord_lost_funcs F/opt/hc_python/lib/python3.12/site-packages/sentry_sdk/_log_batcher.py__init__zLogBatcher.__init__sO )!1 ^^% %OO-  c|jsytj}|j|k(ry|j5|j|k(r dddy||_t j |j|_d|j_ |jj dddy#t$rd|_YdddywxYw#1swYyxYw)zFor forking processes we might need to restart this thread. This ensures that our process actually has that thread running. FTN)target) rosgetpidrrrThread _flush_looprdaemonstart RuntimeError)rpids r"_ensure_threadzLogBatcher._ensure_thread$s }}iik    # ZZ  C' Z !$D %,,D4D4DEDM#'DMM   ##%&   !& #Z &s/C=CB::C CCCC!c|jrr|jj|jt jz|jj |j |jrqyyN)rrwaitFLUSH_WAIT_TIMErandomclear_flushrs r"r*zLogBatcher._flush_loopEsRmm    " "4#7#7&--/#I J    # # % KKMmmr$c|jr |jy|j5t|j|j k\r|j ddd dddy|jj|t|j|jk\r|jjdddy#1swYyxYw)Nqueue_overflowlog_item)reason data_categoryquantity) r/rrlenrMAX_LOGS_BEFORE_DROPrappendMAX_LOGS_BEFORE_FLUSHrset)rlogs r"addzLogBatcher.addLs ""$ (= ZZ4##$(A(AA&&+",' Z    # #C (4##$(B(BB!!%%'ZZs8C +AC  Ccn|jyd|_|jjd|_y)NF)rrrrCr7s r"killzLogBatcher.killas/ ==    r$c$|jyr1)r6r7s r"flushzLogBatcher.flushjs  r$c 4d}d|dvr |d|dd<d|dvr |d|dd<t|ddz |jd d t|dt|d |djDcic]\}}|||c}}d }|Scc}}w) Nct|tr|ddSt|tr|ddSt|tr|ddSt|tr|ddSt |ddS)Nboolean)valuetypeintegerdoublestring) isinstanceboolintfloatstrr )vals r"format_attributez=LogBatcher._log_to_transport_format..format_attributeqse#t$!$i88#s#!$i88#u%!$h77#s#!$h77&s^X> >r$zsentry.severity_number attributesseverity_numberzsentry.severity_text severity_texttime_unix_nanogeAtrace_idz$00000000-0000-0000-0000-000000000000body) timestampr]levelr^rY)rTgetrVitems)rDrXkvress r"_log_to_transport_formatz#LogBatcher._log_to_transport_formatns ? $3|+< <:=>O:PC 6 7 !\): :8;O8LC 4 5S!123e; ,RS_-.F $585F5L5L5N5N6Aq#A&&5N   s9Bc(tdttjtj i}|j 5t|jdk(r dddy|jtdddt|jitd|jDcgc]}|j|c}i |jjddd|j||Scc}w#1swY!xYw) Nsent_at)headersrrDz%application/vnd.sentry.items.log+json item_countrb)json)rN content_typeripayload)r r rnowrutcrr?radd_itemr rrfr5r)renveloperDs r"r6zLogBatcher._flushs 0hll1K LM ZZ4##$)Z   !H$c$*:*:&;'#+/+;+;&+;C!% = =c B+;&  "    " " $+. 8$&Zs$D(r$r)r'r4rrrtypingrrrrr sentry_sdk.utilsr r sentry_sdk.enveloper r rsentry_sdk._typesrrrvr$r"r{s2 '??8::%^^r$