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: graphene.py
from contextlib import contextmanager import sentry_sdk from sentry_sdk.consts import OP from sentry_sdk.integrations import DidNotEnable, Integration, _check_minimum_version from sentry_sdk.scope import should_send_default_pii from sentry_sdk.tracing_utils import has_span_streaming_enabled from sentry_sdk.utils import ( capture_internal_exceptions, ensure_integration_enabled, event_from_exception, package_version, ) try: from graphene.types import schema as graphene_schema # type: ignore except ImportError: raise DidNotEnable("graphene is not installed") from typing import TYPE_CHECKING if TYPE_CHECKING: from collections.abc import Generator from typing import Any, Dict, Union from graphene.language.source import Source # type: ignore from graphql.execution import ExecutionResult from graphql.type import GraphQLSchema from sentry_sdk._types import Event class GrapheneIntegration(Integration): identifier = "graphene" @staticmethod def setup_once() -> None: version = package_version("graphene") _check_minimum_version(GrapheneIntegration, version) _patch_graphql() def _patch_graphql() -> None: old_graphql_sync = graphene_schema.graphql_sync old_graphql_async = graphene_schema.graphql @ensure_integration_enabled(GrapheneIntegration, old_graphql_sync) def _sentry_patched_graphql_sync( schema: "GraphQLSchema", source: "Union[str, Source]", *args: "Any", **kwargs: "Any", ) -> "ExecutionResult": scope = sentry_sdk.get_isolation_scope() scope.add_event_processor(_event_processor) with graphql_span(schema, source, kwargs): result = old_graphql_sync(schema, source, *args, **kwargs) with capture_internal_exceptions(): client = sentry_sdk.get_client() for error in result.errors or []: event, hint = event_from_exception( error, client_options=client.options, mechanism={ "type": GrapheneIntegration.identifier, "handled": False, }, ) sentry_sdk.capture_event(event, hint=hint) return result async def _sentry_patched_graphql_async( schema: "GraphQLSchema", source: "Union[str, Source]", *args: "Any", **kwargs: "Any", ) -> "ExecutionResult": integration = sentry_sdk.get_client().get_integration(GrapheneIntegration) if integration is None: return await old_graphql_async(schema, source, *args, **kwargs) scope = sentry_sdk.get_isolation_scope() scope.add_event_processor(_event_processor) with graphql_span(schema, source, kwargs): result = await old_graphql_async(schema, source, *args, **kwargs) with capture_internal_exceptions(): client = sentry_sdk.get_client() for error in result.errors or []: event, hint = event_from_exception( error, client_options=client.options, mechanism={ "type": GrapheneIntegration.identifier, "handled": False, }, ) sentry_sdk.capture_event(event, hint=hint) return result graphene_schema.graphql_sync = _sentry_patched_graphql_sync graphene_schema.graphql = _sentry_patched_graphql_async def _event_processor(event: "Event", hint: "Dict[str, Any]") -> "Event": if should_send_default_pii(): request_info = event.setdefault("request", {}) request_info["api_target"] = "graphql" elif event.get("request", {}).get("data"): del event["request"]["data"] return event @contextmanager def graphql_span( schema: "GraphQLSchema", source: "Union[str, Source]", kwargs: "Dict[str, Any]" ) -> "Generator[None, None, None]": operation_name = kwargs.get("operation_name") or "<unknown graphql operation>" operation_type = "query" op = OP.GRAPHQL_QUERY if source.strip().startswith("mutation"): operation_type = "mutation" op = OP.GRAPHQL_MUTATION elif source.strip().startswith("subscription"): operation_type = "subscription" op = OP.GRAPHQL_SUBSCRIPTION sentry_sdk.add_breadcrumb( crumb={ "data": { "operation_name": operation_name, "operation_type": operation_type, }, "category": "graphql.operation", }, ) is_span_streaming_enabled = has_span_streaming_enabled( sentry_sdk.get_client().options ) if is_span_streaming_enabled: additional_attributes = {} if should_send_default_pii(): additional_attributes["graphql.document"] = source _graphql_span = sentry_sdk.traces.start_span( name=operation_name, attributes={ "sentry.op": op, "graphql.operation.name": operation_name, "graphql.operation.type": operation_type, **additional_attributes, }, ) else: _graphql_span = sentry_sdk.start_span(op=op, name=operation_name) if should_send_default_pii(): _graphql_span.set_data("graphql.document", source) _graphql_span.set_data("graphql.operation.name", operation_name) _graphql_span.set_data("graphql.operation.type", operation_type) _graphql_span.__enter__() try: yield finally: if is_span_streaming_enabled: _graphql_span.end() # type: ignore else: _graphql_span.__exit__(None, None, None)
Upload File
Create Folder