✘✘ GRAYBYTE WORDPRESS FILE MANAGER ✘✘

​🇳​​🇦​​🇲​​🇪♯➤ server366.web-hosting.com ​🇻​♯➤ 4.18.0-553.50.1.lve.el8.x86_64 #1 SMP 🇾​♯➤ 2025

𝗛𝗢𝗠𝗘 𝗜𝗗 ♯➤ 67.223.118.204 ♯➤ 𝗔𝗗𝗠𝗜𝗡 𝗜𝗗 216.73.216.52
𝗢𝗣𝗧𝗜𝗢𝗡𝗦 ♯ CRL ♯➤ 𝗢𝗞 ┃ WGT ♯➤ 𝗢𝗞 ┃ SDO ♯➤ 𝗢𝗙𝗙 ┃ PKEX ♯➤ 𝗢𝗙𝗙
𝗗𝗘𝗔𝗖𝗧𝗜𝗩𝗔𝗧𝗘𝗗 ♯➤ 𝗔𝗟𝗟 𝗪𝗢𝗥𝗞𝗜𝗡𝗚....

𝗛𝗢𝗠𝗘
𝗖𝗨𝗥𝗥𝗘𝗡𝗧 𝗙𝗜𝗟𝗘 : /opt/hc_python/lib/python3.12/site-packages/sentry_sdk/integrations//otlp.py
from sentry_sdk import capture_event, get_client
from sentry_sdk.consts import VERSION, EndpointType
from sentry_sdk.integrations import DidNotEnable, Integration
from sentry_sdk.scope import register_external_propagation_context
from sentry_sdk.tracing import (
    BAGGAGE_HEADER_NAME,
    SENTRY_TRACE_HEADER_NAME,
)
from sentry_sdk.tracing_utils import Baggage
from sentry_sdk.utils import (
    Dsn,
    capture_internal_exceptions,
    event_from_exception,
    logger,
)

try:
    from opentelemetry.context import (
        Context,
        get_current,
        get_value,
    )
    from opentelemetry.exporter.otlp.proto.http.trace_exporter import OTLPSpanExporter
    from opentelemetry.propagate import set_global_textmap
    from opentelemetry.propagators.textmap import (
        CarrierT,
        Setter,
        default_setter,
    )
    from opentelemetry.sdk.trace import Span, TracerProvider
    from opentelemetry.sdk.trace.export import BatchSpanProcessor
    from opentelemetry.trace import (
        INVALID_SPAN_ID,
        INVALID_TRACE_ID,
        SpanContext,
        format_span_id,
        format_trace_id,
        get_current_span,
        get_tracer_provider,
        set_tracer_provider,
    )

    from sentry_sdk.integrations.opentelemetry.consts import SENTRY_BAGGAGE_KEY
    from sentry_sdk.integrations.opentelemetry.propagator import SentryPropagator
except ImportError:
    raise DidNotEnable("opentelemetry-distro[otlp] is not installed")

from typing import TYPE_CHECKING

if TYPE_CHECKING:
    from typing import Any, Dict, Optional, Tuple


def otel_propagation_context() -> "Optional[Tuple[str, str]]":
    """
    Get the (trace_id, span_id) from opentelemetry if exists.
    """
    ctx = get_current_span().get_span_context()

    if ctx.trace_id == INVALID_TRACE_ID or ctx.span_id == INVALID_SPAN_ID:
        return None

    return (format_trace_id(ctx.trace_id), format_span_id(ctx.span_id))


def setup_otlp_traces_exporter(
    dsn: "Optional[str]" = None, collector_url: "Optional[str]" = None
) -> None:
    tracer_provider = get_tracer_provider()

    if not isinstance(tracer_provider, TracerProvider):
        logger.debug("[OTLP] No TracerProvider configured by user, creating a new one")
        tracer_provider = TracerProvider()
        set_tracer_provider(tracer_provider)

    endpoint = None
    headers = None
    if collector_url:
        endpoint = collector_url
        logger.debug(f"[OTLP] Sending traces to collector at {endpoint}")
    elif dsn:
        auth = Dsn(dsn).to_auth(f"sentry.python/{VERSION}")
        endpoint = auth.get_api_url(EndpointType.OTLP_TRACES)
        headers = {"X-Sentry-Auth": auth.to_header()}
        logger.debug(f"[OTLP] Sending traces to {endpoint}")

    otlp_exporter = OTLPSpanExporter(endpoint=endpoint, headers=headers)
    span_processor = BatchSpanProcessor(otlp_exporter)
    tracer_provider.add_span_processor(span_processor)


_sentry_patched_exception = False


def setup_capture_exceptions() -> None:
    """
    Intercept otel's Span.record_exception to automatically capture those exceptions in Sentry.
    """
    global _sentry_patched_exception
    _original_record_exception = Span.record_exception

    if _sentry_patched_exception:
        return

    def _sentry_patched_record_exception(
        self: "Span", exception: "BaseException", *args: "Any", **kwargs: "Any"
    ) -> None:
        otlp_integration = get_client().get_integration(OTLPIntegration)
        if otlp_integration and otlp_integration.capture_exceptions:
            with capture_internal_exceptions():
                event, hint = event_from_exception(
                    exception,
                    client_options=get_client().options,
                    mechanism={"type": OTLPIntegration.identifier, "handled": False},
                )
                capture_event(event, hint=hint)

        _original_record_exception(self, exception, *args, **kwargs)

    Span.record_exception = _sentry_patched_record_exception  # type: ignore[method-assign]
    _sentry_patched_exception = True


class SentryOTLPPropagator(SentryPropagator):
    """
    We need to override the inject of the older propagator since that
    is SpanProcessor based.

    !!! Note regarding baggage:
    We cannot meaningfully populate a new baggage as a head SDK
    when we are using OTLP since we don't have any sort of transaction semantic to
    track state across a group of spans.

    For incoming baggage, we just pass it on as is so that case is correctly handled.
    """

    def inject(
        self,
        carrier: "CarrierT",
        context: "Optional[Context]" = None,
        setter: "Setter[CarrierT]" = default_setter,
    ) -> None:
        otlp_integration = get_client().get_integration(OTLPIntegration)
        if otlp_integration is None:
            return

        if context is None:
            context = get_current()

        current_span = get_current_span(context)
        current_span_context = current_span.get_span_context()

        if not current_span_context.is_valid:
            return

        sentry_trace = _to_traceparent(current_span_context)
        setter.set(carrier, SENTRY_TRACE_HEADER_NAME, sentry_trace)

        baggage = get_value(SENTRY_BAGGAGE_KEY, context)
        if baggage is not None and isinstance(baggage, Baggage):
            baggage_data = baggage.serialize()
            if baggage_data:
                setter.set(carrier, BAGGAGE_HEADER_NAME, baggage_data)


def _to_traceparent(span_context: "SpanContext") -> str:
    """
    Helper method to generate the sentry-trace header.
    """
    span_id = format_span_id(span_context.span_id)
    trace_id = format_trace_id(span_context.trace_id)
    sampled = span_context.trace_flags.sampled

    return f"{trace_id}-{span_id}-{'1' if sampled else '0'}"


class OTLPIntegration(Integration):
    """
    Automatically setup OTLP ingestion from the DSN.

    :param setup_otlp_traces_exporter: Automatically configure an Exporter to send OTLP traces from the DSN, defaults to True.
        Set to False to setup the TracerProvider manually.
    :param collector_url: URL of your own OpenTelemetry collector, defaults to None.
        When set, the exporter will send traces to this URL instead of the Sentry OTLP endpoint derived from the DSN.
    :param setup_propagator: Automatically configure the Sentry Propagator for Distributed Tracing, defaults to True.
        Set to False to configure propagators manually or to disable propagation.
    :param capture_exceptions: Intercept and capture exceptions on the OpenTelemetry Span in Sentry as well, defaults to False.
        Set to True to turn on capturing but be aware that since Sentry captures most exceptions, duplicate exceptions might be dropped by DedupeIntegration in many cases.
    """

    identifier = "otlp"

    def __init__(
        self,
        setup_otlp_traces_exporter: bool = True,
        collector_url: "Optional[str]" = None,
        setup_propagator: bool = True,
        capture_exceptions: bool = False,
    ) -> None:
        self.setup_otlp_traces_exporter = setup_otlp_traces_exporter
        self.collector_url = collector_url
        self.setup_propagator = setup_propagator
        self.capture_exceptions = capture_exceptions

    @staticmethod
    def setup_once() -> None:
        logger.debug("[OTLP] Setting up trace linking for all events")
        register_external_propagation_context(otel_propagation_context)

    def setup_once_with_options(
        self, options: "Optional[Dict[str, Any]]" = None
    ) -> None:
        if self.setup_otlp_traces_exporter:
            logger.debug("[OTLP] Setting up OTLP exporter")
            dsn: "Optional[str]" = options.get("dsn") if options else None
            setup_otlp_traces_exporter(dsn, collector_url=self.collector_url)

        if self.setup_propagator:
            logger.debug("[OTLP] Setting up propagator for distributed tracing")
            # TODO-neel better propagator support, chain with existing ones if possible instead of replacing
            set_global_textmap(SentryOTLPPropagator())

        setup_capture_exceptions()


Current_dir [ 𝗡𝗢𝗧 𝗪𝗥𝗜𝗧𝗘𝗔𝗕𝗟𝗘 ] Document_root [ 𝗪𝗥𝗜𝗧𝗘𝗔𝗕𝗟𝗘 ]


[ Back ]
𝗡𝗔𝗠𝗘
𝗦𝗜𝗭𝗘
𝗟𝗔𝗦𝗧 𝗧𝗢𝗨𝗖𝗛
𝗨𝗦𝗘𝗥
𝗦𝗧𝗔𝗧𝗨𝗦
𝗙𝗨𝗡𝗖𝗧𝗜𝗢𝗡𝗦
..
--
11 Jun 2026 5.00 AM
root / root
0755
__pycache__
--
11 Jun 2026 5.00 AM
root / root
0755
celery
--
11 Jun 2026 5.00 AM
root / root
0755
django
--
11 Jun 2026 5.00 AM
root / root
0755
google_genai
--
11 Jun 2026 5.00 AM
root / root
0755
grpc
--
11 Jun 2026 5.00 AM
root / root
0755
openai_agents
--
11 Jun 2026 5.00 AM
root / root
0755
opentelemetry
--
11 Jun 2026 5.00 AM
root / root
0755
pydantic_ai
--
11 Jun 2026 5.00 AM
root / root
0755
redis
--
11 Jun 2026 5.00 AM
root / root
0755
spark
--
11 Jun 2026 5.00 AM
root / root
0755
__init__.py
12.511 KB
11 Jun 2026 5.00 AM
root / root
0644
_asgi_common.py
4.003 KB
11 Jun 2026 5.00 AM
root / root
0644
_wsgi_common.py
7.281 KB
11 Jun 2026 5.00 AM
root / root
0644
aiohttp.py
19.277 KB
11 Jun 2026 5.00 AM
root / root
0644
aiomysql.py
9.09 KB
11 Jun 2026 5.00 AM
root / root
0644
anthropic.py
39 KB
11 Jun 2026 5.00 AM
root / root
0644
argv.py
0.855 KB
11 Jun 2026 5.00 AM
root / root
0644
ariadne.py
5.698 KB
11 Jun 2026 5.00 AM
root / root
0644
arq.py
9.229 KB
11 Jun 2026 5.00 AM
root / root
0644
asgi.py
20.061 KB
11 Jun 2026 5.00 AM
root / root
0644
asyncio.py
9.275 KB
11 Jun 2026 5.00 AM
root / root
0644
asyncpg.py
9.68 KB
11 Jun 2026 5.00 AM
root / root
0644
atexit.py
1.509 KB
11 Jun 2026 5.00 AM
root / root
0644
aws_lambda.py
17.41 KB
11 Jun 2026 5.00 AM
root / root
0644
beam.py
4.907 KB
11 Jun 2026 5.00 AM
root / root
0644
boto3.py
6.198 KB
11 Jun 2026 5.00 AM
root / root
0644
bottle.py
7.208 KB
11 Jun 2026 5.00 AM
root / root
0644
chalice.py
4.506 KB
11 Jun 2026 5.00 AM
root / root
0644
clickhouse_driver.py
5.846 KB
11 Jun 2026 5.00 AM
root / root
0644
cloud_resource_context.py
7.488 KB
11 Jun 2026 5.00 AM
root / root
0644
cohere.py
10.44 KB
11 Jun 2026 5.00 AM
root / root
0644
dedupe.py
1.857 KB
11 Jun 2026 5.00 AM
root / root
0644
dramatiq.py
8.016 KB
11 Jun 2026 5.00 AM
root / root
0644
excepthook.py
2.249 KB
11 Jun 2026 5.00 AM
root / root
0644
executing.py
1.935 KB
11 Jun 2026 5.00 AM
root / root
0644
falcon.py
9.04 KB
11 Jun 2026 5.00 AM
root / root
0644
fastapi.py
5.281 KB
11 Jun 2026 5.00 AM
root / root
0644
flask.py
8.274 KB
11 Jun 2026 5.00 AM
root / root
0644
gcp.py
10.57 KB
11 Jun 2026 5.00 AM
root / root
0644
gnu_backtrace.py
2.724 KB
11 Jun 2026 5.00 AM
root / root
0644
gql.py
4.927 KB
11 Jun 2026 5.00 AM
root / root
0644
graphene.py
5.707 KB
11 Jun 2026 5.00 AM
root / root
0644
httpx.py
9.788 KB
11 Jun 2026 5.00 AM
root / root
0644
httpx2.py
9.804 KB
11 Jun 2026 5.00 AM
root / root
0644
huey.py
8.189 KB
11 Jun 2026 5.00 AM
root / root
0644
huggingface_hub.py
15.282 KB
11 Jun 2026 5.00 AM
root / root
0644
langchain.py
48.313 KB
11 Jun 2026 5.00 AM
root / root
0644
langgraph.py
18.125 KB
11 Jun 2026 5.00 AM
root / root
0644
launchdarkly.py
1.873 KB
11 Jun 2026 5.00 AM
root / root
0644
litellm.py
13.033 KB
11 Jun 2026 5.00 AM
root / root
0644
litestar.py
11.464 KB
11 Jun 2026 5.00 AM
root / root
0644
logging.py
15.692 KB
11 Jun 2026 5.00 AM
root / root
0644
loguru.py
6.352 KB
11 Jun 2026 5.00 AM
root / root
0644
mcp.py
23.121 KB
11 Jun 2026 5.00 AM
root / root
0644
modules.py
0.769 KB
11 Jun 2026 5.00 AM
root / root
0644
openai.py
53.385 KB
11 Jun 2026 5.00 AM
root / root
0644
openfeature.py
1.076 KB
11 Jun 2026 5.00 AM
root / root
0644
otlp.py
7.99 KB
11 Jun 2026 5.00 AM
root / root
0644
pure_eval.py
4.413 KB
11 Jun 2026 5.00 AM
root / root
0644
pymongo.py
8.212 KB
11 Jun 2026 5.00 AM
root / root
0644
pyramid.py
7.416 KB
11 Jun 2026 5.00 AM
root / root
0644
pyreqwest.py
6.824 KB
11 Jun 2026 5.00 AM
root / root
0644
quart.py
7.318 KB
11 Jun 2026 5.00 AM
root / root
0644
ray.py
5.747 KB
11 Jun 2026 5.00 AM
root / root
0644
rq.py
7.807 KB
11 Jun 2026 5.00 AM
root / root
0644
rust_tracing.py
9.436 KB
11 Jun 2026 5.00 AM
root / root
0644
sanic.py
15.252 KB
11 Jun 2026 5.00 AM
root / root
0644
serverless.py
1.583 KB
11 Jun 2026 5.00 AM
root / root
0644
socket.py
5.018 KB
11 Jun 2026 5.00 AM
root / root
0644
sqlalchemy.py
5.242 KB
11 Jun 2026 5.00 AM
root / root
0644
starlette.py
27.935 KB
11 Jun 2026 5.00 AM
root / root
0644
starlite.py
11.037 KB
11 Jun 2026 5.00 AM
root / root
0644
statsig.py
1.186 KB
11 Jun 2026 5.00 AM
root / root
0644
stdlib.py
14.007 KB
11 Jun 2026 5.00 AM
root / root
0644
strawberry.py
17.391 KB
11 Jun 2026 5.00 AM
root / root
0644
sys_exit.py
2.352 KB
11 Jun 2026 5.00 AM
root / root
0644
threading.py
6.875 KB
11 Jun 2026 5.00 AM
root / root
0644
tornado.py
10.789 KB
11 Jun 2026 5.00 AM
root / root
0644
trytond.py
1.675 KB
11 Jun 2026 5.00 AM
root / root
0644
typer.py
1.725 KB
11 Jun 2026 5.00 AM
root / root
0644
unleash.py
1.021 KB
11 Jun 2026 5.00 AM
root / root
0644
unraisablehook.py
1.654 KB
11 Jun 2026 5.00 AM
root / root
0644
wsgi.py
15.031 KB
11 Jun 2026 5.00 AM
root / root
0644

✘✘ GRAYBYTE WORDPRESS FILE MANAGER @ 2026 CONTACT ME ✘✘
Static GIF Static GIF