X7ROOT File Manager
Current Path:
/opt/hc_python/lib/python3.12/site-packages/sentry_sdk/integrations
opt
/
hc_python
/
lib
/
python3.12
/
site-packages
/
sentry_sdk
/
integrations
/
??
..
??
__init__.py
(12.51 KB)
??
__pycache__
??
_asgi_common.py
(4 KB)
??
_wsgi_common.py
(7.28 KB)
??
aiohttp.py
(19.28 KB)
??
aiomysql.py
(9.09 KB)
??
anthropic.py
(39 KB)
??
argv.py
(876 B)
??
ariadne.py
(5.7 KB)
??
arq.py
(9.23 KB)
??
asgi.py
(20.06 KB)
??
asyncio.py
(9.28 KB)
??
asyncpg.py
(9.68 KB)
??
atexit.py
(1.51 KB)
??
aws_lambda.py
(17.41 KB)
??
beam.py
(4.91 KB)
??
boto3.py
(6.2 KB)
??
bottle.py
(7.21 KB)
??
celery
??
chalice.py
(4.51 KB)
??
clickhouse_driver.py
(5.85 KB)
??
cloud_resource_context.py
(7.49 KB)
??
cohere.py
(10.44 KB)
??
dedupe.py
(1.86 KB)
??
django
??
dramatiq.py
(8.02 KB)
??
excepthook.py
(2.25 KB)
??
executing.py
(1.93 KB)
??
falcon.py
(9.04 KB)
??
fastapi.py
(5.28 KB)
??
flask.py
(8.27 KB)
??
gcp.py
(10.57 KB)
??
gnu_backtrace.py
(2.72 KB)
??
google_genai
??
gql.py
(4.93 KB)
??
graphene.py
(5.71 KB)
??
grpc
??
httpx.py
(9.79 KB)
??
httpx2.py
(9.8 KB)
??
huey.py
(8.19 KB)
??
huggingface_hub.py
(15.28 KB)
??
langchain.py
(48.31 KB)
??
langgraph.py
(18.13 KB)
??
launchdarkly.py
(1.87 KB)
??
litellm.py
(13.03 KB)
??
litestar.py
(11.46 KB)
??
logging.py
(15.69 KB)
??
loguru.py
(6.35 KB)
??
mcp.py
(23.12 KB)
??
modules.py
(787 B)
??
openai.py
(53.38 KB)
??
openai_agents
??
openfeature.py
(1.08 KB)
??
opentelemetry
??
otlp.py
(7.99 KB)
??
pure_eval.py
(4.41 KB)
??
pydantic_ai
??
pymongo.py
(8.21 KB)
??
pyramid.py
(7.42 KB)
??
pyreqwest.py
(6.82 KB)
??
quart.py
(7.32 KB)
??
ray.py
(5.75 KB)
??
redis
??
rq.py
(7.81 KB)
??
rust_tracing.py
(9.44 KB)
??
sanic.py
(15.25 KB)
??
serverless.py
(1.58 KB)
??
socket.py
(5.02 KB)
??
spark
??
sqlalchemy.py
(5.24 KB)
??
starlette.py
(27.93 KB)
??
starlite.py
(11.04 KB)
??
statsig.py
(1.19 KB)
??
stdlib.py
(14.01 KB)
??
strawberry.py
(17.39 KB)
??
sys_exit.py
(2.35 KB)
??
threading.py
(6.88 KB)
??
tornado.py
(10.79 KB)
??
trytond.py
(1.67 KB)
??
typer.py
(1.72 KB)
??
unleash.py
(1.02 KB)
??
unraisablehook.py
(1.65 KB)
??
wsgi.py
(15.03 KB)
Editing: httpx2.py
from typing import TYPE_CHECKING import sentry_sdk from sentry_sdk.consts import OP, SPANDATA from sentry_sdk.integrations import DidNotEnable, Integration from sentry_sdk.tracing import BAGGAGE_HEADER_NAME from sentry_sdk.tracing_utils import ( add_http_request_source, add_sentry_baggage_to_headers, has_span_streaming_enabled, should_propagate_trace, ) from sentry_sdk.utils import ( SENSITIVE_DATA_SUBSTITUTE, capture_internal_exceptions, ensure_integration_enabled, logger, parse_url, ) if TYPE_CHECKING: from typing import Any from sentry_sdk._types import Attributes try: from httpx2 import AsyncClient, Client, Request, Response except ImportError: raise DidNotEnable("httpx2 is not installed") __all__ = ["Httpx2Integration"] class Httpx2Integration(Integration): identifier = "httpx2" origin = f"auto.http.{identifier}" @staticmethod def setup_once() -> None: """ httpx2 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. """ _install_httpx2_client() _install_httpx2_async_client() def _install_httpx2_client() -> None: real_send = Client.send @ensure_integration_enabled(Httpx2Integration, real_send) def send(self: "Client", request: "Request", **kwargs: "Any") -> "Response": client = sentry_sdk.get_client() is_span_streaming_enabled = has_span_streaming_enabled(client.options) parsed_url = None with capture_internal_exceptions(): parsed_url = parse_url(str(request.url), sanitize=False) if is_span_streaming_enabled: with sentry_sdk.traces.start_span( name="%s %s" % ( request.method, parsed_url.url if parsed_url else SENSITIVE_DATA_SUBSTITUTE, ), attributes={ "sentry.op": OP.HTTP_CLIENT, "sentry.origin": Httpx2Integration.origin, "http.request.method": request.method, }, ) as streamed_span: attributes: "Attributes" = {} if parsed_url is not None: attributes["url.full"] = parsed_url.url if parsed_url.query: attributes["url.query"] = parsed_url.query if parsed_url.fragment: attributes["url.fragment"] = parsed_url.fragment if should_propagate_trace(client, str(request.url)): for ( key, value, ) in ( sentry_sdk.get_current_scope().iter_trace_propagation_headers() ): logger.debug( f"[Tracing] Adding `{key}` header {value} to outgoing request to {request.url}." ) if key == BAGGAGE_HEADER_NAME: add_sentry_baggage_to_headers(request.headers, value) else: request.headers[key] = value try: rv = real_send(self, request, **kwargs) streamed_span.status = "error" if rv.status_code >= 400 else "ok" attributes["http.response.status_code"] = rv.status_code finally: streamed_span.set_attributes(attributes) # Needs to happen within the context manager as we want to attach the # final data before the span finishes and is sent for ingesting. with capture_internal_exceptions(): add_http_request_source(streamed_span) else: with sentry_sdk.start_span( op=OP.HTTP_CLIENT, name="%s %s" % ( request.method, parsed_url.url if parsed_url else SENSITIVE_DATA_SUBSTITUTE, ), origin=Httpx2Integration.origin, ) as span: span.set_data(SPANDATA.HTTP_METHOD, request.method) if parsed_url is not None: span.set_data("url", parsed_url.url) span.set_data(SPANDATA.HTTP_QUERY, parsed_url.query) span.set_data(SPANDATA.HTTP_FRAGMENT, parsed_url.fragment) if should_propagate_trace(client, str(request.url)): for ( key, value, ) in ( sentry_sdk.get_current_scope().iter_trace_propagation_headers() ): logger.debug( f"[Tracing] Adding `{key}` header {value} to outgoing request to {request.url}." ) if key == BAGGAGE_HEADER_NAME: add_sentry_baggage_to_headers(request.headers, value) else: request.headers[key] = value rv = real_send(self, request, **kwargs) span.set_http_status(rv.status_code) span.set_data("reason", rv.reason_phrase) with capture_internal_exceptions(): add_http_request_source(span) return rv Client.send = send # type: ignore def _install_httpx2_async_client() -> None: real_send = AsyncClient.send async def send( self: "AsyncClient", request: "Request", **kwargs: "Any" ) -> "Response": client = sentry_sdk.get_client() if client.get_integration(Httpx2Integration) is None: return await real_send(self, request, **kwargs) is_span_streaming_enabled = has_span_streaming_enabled(client.options) parsed_url = None with capture_internal_exceptions(): parsed_url = parse_url(str(request.url), sanitize=False) if is_span_streaming_enabled: with sentry_sdk.traces.start_span( name="%s %s" % ( request.method, parsed_url.url if parsed_url else SENSITIVE_DATA_SUBSTITUTE, ), attributes={ "sentry.op": OP.HTTP_CLIENT, "sentry.origin": Httpx2Integration.origin, "http.request.method": request.method, }, ) as streamed_span: attributes: "Attributes" = {} if parsed_url is not None: attributes["url.full"] = parsed_url.url if parsed_url.query: attributes["url.query"] = parsed_url.query if parsed_url.fragment: attributes["url.fragment"] = parsed_url.fragment if should_propagate_trace(client, str(request.url)): for ( key, value, ) in ( sentry_sdk.get_current_scope().iter_trace_propagation_headers() ): logger.debug( f"[Tracing] Adding `{key}` header {value} to outgoing request to {request.url}." ) if key == BAGGAGE_HEADER_NAME: add_sentry_baggage_to_headers(request.headers, value) else: request.headers[key] = value try: rv = await real_send(self, request, **kwargs) streamed_span.status = "error" if rv.status_code >= 400 else "ok" attributes["http.response.status_code"] = rv.status_code finally: streamed_span.set_attributes(attributes) # Needs to happen within the context manager as we want to attach the # final data before the span finishes and is sent for ingesting. with capture_internal_exceptions(): add_http_request_source(streamed_span) else: with sentry_sdk.start_span( op=OP.HTTP_CLIENT, name="%s %s" % ( request.method, parsed_url.url if parsed_url else SENSITIVE_DATA_SUBSTITUTE, ), origin=Httpx2Integration.origin, ) as span: span.set_data(SPANDATA.HTTP_METHOD, request.method) if parsed_url is not None: span.set_data("url", parsed_url.url) span.set_data(SPANDATA.HTTP_QUERY, parsed_url.query) span.set_data(SPANDATA.HTTP_FRAGMENT, parsed_url.fragment) if should_propagate_trace(client, str(request.url)): for ( key, value, ) in ( sentry_sdk.get_current_scope().iter_trace_propagation_headers() ): logger.debug( f"[Tracing] Adding `{key}` header {value} to outgoing request to {request.url}." ) if key == BAGGAGE_HEADER_NAME: add_sentry_baggage_to_headers(request.headers, value) else: request.headers[key] = value rv = await real_send(self, request, **kwargs) span.set_http_status(rv.status_code) span.set_data("reason", rv.reason_phrase) with capture_internal_exceptions(): add_http_request_source(span) return rv AsyncClient.send = send # type: ignore
Upload File
Create Folder