U 췀gJ@sddlZddlmZddlZddlmZmZmZddlmZm Z ddl m Z m Z ddl mZddlmZmZmZddlmZmZmZmZmZdd lmZerdd lmZmZmZmZmZdd l m!Z!m"Z"m#Z#dd lm$Z$ed edefdZ%z4ddl&m'Z'm(Z(m)Z)m*Z*m+Z+ddl,m-Z-m.Z.m/Z/Wne0k r>e dYnXe-e.e/fZ1Gddde Z2ddZ3ddZ4ddZ5ddZ6ddZ7dS)N)datetime)continue_trace get_baggageget_traceparent)OP SPANSTATUS) DidNotEnable Integration)should_send_default_pii)BAGGAGE_HEADER_NAMESENTRY_TRACE_HEADER_NAMETRANSACTION_SOURCE_TASK)capture_internal_exceptionsensure_integration_enabledevent_from_exceptionSENSITIVE_DATA_SUBSTITUTEreraise) TYPE_CHECKING)AnyCallableOptionalUnionTypeVar)EventProcessorEventHint)ExcInfoF.)bound)HueyResult ResultGroupTask PeriodicTask)CancelExecution RetryTaskTaskLockedExceptionzHuey is not installedc@s&eZdZdZdeZeddZdS)HueyIntegrationhueyz auto.queue.cCsttdSN) patch_enqueue patch_executer,r,J/opt/hc_python/lib/python3.8/site-packages/sentry_sdk/integrations/huey.py setup_once.szHueyIntegration.setup_onceN)__name__ __module__ __qualname__ identifierorigin staticmethodr.r,r,r,r-r'*s r'cs&tjttfdd}|t_dS)Nc sXtjtj|jtjd8t|ts8t t t t i|j d<||W5QRSQRXdS)N)opnamer3sentry_headers) sentry_sdkZ start_spanrZQUEUE_SUBMIT_HUEYr6r'r3 isinstancer#r rr rkwargs)selftaskZ old_enqueuer,r-_sentry_enqueue9s  z&patch_enqueue.._sentry_enqueue)renqueuerr')r>r,r=r-r*5sr*csfdd}|S)Nc stp|di}j|d<jjk|d<|di}jtrJjnttrXj ntjpbdjd|d<W5QRX|S)NtagsZ huey_task_idZhuey_task_retryextrar)r<argsr:retryzhuey-job) r setdefaultidZdefault_retriesretriesr6r rBrr:)eventhintr@rAr<r,r-event_processorPs   z._make_event_processor..event_processorr,)r<rJr,rIr-_make_event_processorNs rKcCsft}|dtkr&|jtjdS|jtjt|t j t j ddd\}}|j ||ddS)NrF)typeZhandled)Zclient_optionsZ mechanism)rH)r8Zget_current_scopeHUEY_CONTROL_FLOW_EXCEPTIONS transaction set_statusrZABORTEDINTERNAL_ERRORrZ get_clientoptionsr'r2Z capture_event)exc_infoscoperGrHr,r,r-_capture_exceptionls  rTcsttfdd}|S)Ncs@z||}Wn,tk r:t}t|t|YnX|Sr)) ExceptionsysrRrTr)rBr:resultrRfuncr,r-_sentry_executesz+_wrap_task_execute.._sentry_execute)rr')rYrZr,rXr-_wrap_task_execute}s r[cs(tjttdfdd }|t_dS)Nc st}t"d|_||t|W5QRX|jdd}t |pNi|j t j t tjd}|tjt|ddst|j|_d|_t|&|||W5QRW5QRSQRXW5QRXdS)Nr(r7)r6r5sourcer3_sentry_is_patchedFT)r8Zisolation_scoper_nameZclear_breadcrumbsZadd_event_processorrKr:poprr6rZQUEUE_TASK_HUEYr r'r3rOrOKgetattrr[executer]Zstart_transaction)r;r< timestamprSr7rNZ old_executer,r-rZs&     z&patch_execute.._sentry_execute)N)rZ_executerr')rZr,rdr-r+sr+)8rVrr8Zsentry_sdk.apirrrZsentry_sdk.constsrrZsentry_sdk.integrationsrr Zsentry_sdk.scoper Zsentry_sdk.tracingr r r Zsentry_sdk.utilsrrrrrtypingrrrrrrZsentry_sdk._typesrrrrrZhuey.apirr r!r"r#Zhuey.exceptionsr$r%r& ImportErrorrMr'r*rKrTr[r+r,r,r,r-s4