0iddlZddlmZddlmZmZddlmZmZddlm Z ddl m Z m Z m Z ddlmZmZmZmZmZddlmZer dd lmZdd lmZ dd lmZmZmZmZd gZGdd eZ dZ!dZ"dZ#y#e$r ed wxYw)N) start_span)OPSPANDATA) Integration DidNotEnable)BAGGAGE_HEADER_NAME)Baggageshould_propagate_traceadd_http_request_source)SENSITIVE_DATA_SUBSTITUTEcapture_internal_exceptionsensure_integration_enabledlogger parse_url) TYPE_CHECKING)MutableMapping)Any) AsyncClientClientRequestResponsezhttpx is not installedHttpxIntegrationc*eZdZdZdeZedZy)rhttpxz auto.http.c,tty)z httpx has its own transport layer and can be customized when needed, so patch Client.send and AsyncClient.send to support both synchronous and async interfaces. N)_install_httpx_client_install_httpx_async_clientL/opt/hc_python/lib/python3.12/site-packages/sentry_sdk/integrations/httpx.py setup_oncezHttpxIntegration.setup_once&s #%rN)__name__ __module__ __qualname__ identifierorigin staticmethodr!rrr rr"s%J* &F&&rcltjttfd}|t_y)Nc d}t5tt|jd}dddt t j |jd|r |jnttj5}|jtj|j|p|jd|j|jtj|j|jtj |j"t%t'j(t|jrt'j*j-D]e\}}t/j0dj3|||j|t4k(rt7|j8|W||j8|<g||fi|}|j;|j<|jd|j>dddt5tAdddS#1swYxYw#1swY6xYw#1swYSxYw) NFsanitize opnamer&urlE[Tracing] Adding `{key}` header {value} to outgoing request to {url}.keyvaluer0reason)!r rstrr0rr HTTP_CLIENTmethodr rr&set_datar HTTP_METHOD HTTP_QUERYquery HTTP_FRAGMENTfragmentr sentry_sdk get_clientget_current_scopeiter_trace_propagation_headersrdebugformatr_add_sentry_baggage_to_headersheadersset_http_status status_code reason_phraser selfrequestkwargs parsed_urlspanr3r4rv real_sends r sendz#_install_httpx_client..send5s ( *"3w{{#3eDJ+~~", 2KK $**  MM(.. ?% eZ^^4 h11:3C3CD h44j6I6IJ%j&;&;&=s7;;?OP 113RRTLL_ff #5gkkg 116wN/4,U43F3B   0 MM(B$4$4 5E H) * #D )+ U+ *  H+ s$!IFI- II II&)rrRrrrRrQs @r rr1s0 I 0)<-=-^FKrcFtjfd}|t_y)Nc Ktjjt||fi|d{Sd}t 5t t |jd}dddttj|jd|r |jnttj5}|jtj |j|p|jd|j|jtj"|j$|jtj&|j(t+tjt |jrtj,j/D]\}}t1j2dj5|||j|t6k(r:|j8j;t6r|j8|xxd|zz cc<z||j8|<||fi|d{}|j=|j>|jd |j@dddt 5tCdddS7q#1swYDxYw7s#1swY;xYw#1swYSxYww) NFr*r,r-r0r1r2,r5)"r?r@get_integrationrr rr6r0rrr7r8r r&r9rr:r;r<r=r>r rArBrrCrDrrFgetrGrHrIr rJs r rRz)_install_httpx_async_client..sendlsC  " 2 23C D L"4;F;; ; ( *"3w{{#3eDJ+~~", 2KK $**  MM(.. ?% eZ^^4 h11:3C3CD h44j6I6IJ%j&;&;&=s7;;?OP 113RRTLL_ff #5gkkg 11goo6I6I+7 ,e ;,/4,U!w9&99B   0 MM(B$4$4 5I L) * #D )+ _<+ *H:C  L+ sk5KJ)K !J,*AK=FJ;J9;J;K K K,J61K9J;;KKK K)rrRrSs @r rrhs  I2hKrc|jtd}tj|}t |dkDrdnd}||z|z|t<y)zAdd the Sentry baggage to the headers. This function directly mutates the provided headers. The provided sentry_baggage is appended to the existing baggage. If the baggage already contains Sentry items, they are stripped out first. rrVN)rXrr strip_sentry_baggagelen)rFsentry_baggageexisting_baggagestripped_existing_baggage separators r rErEsV{{#6; ' < <=M N459rI "I->  r)$r?rsentry_sdk.constsrrsentry_sdk.integrationsrrsentry_sdk.tracingrsentry_sdk.tracing_utilsr r r sentry_sdk.utilsr r rrrtypingrcollections.abcrrrrrrr ImportError__all__rrrrErrr rjs!*=2 !.1<<   &{ &4n8vO1 / 001s  A22B