GRAYBYTE WORDPRESS FILE MANAGER9320

Server IP : 198.54.121.189 / Your IP : 216.73.216.112
System : Linux premium69.web-hosting.com 4.18.0-553.44.1.lve.el8.x86_64 #1 SMP Thu Mar 13 14:29:12 UTC 2025 x86_64
PHP Version : 7.4.33
Disable Function : NONE
cURL : ON | WGET : ON | Sudo : OFF | Pkexec : OFF
Directory : /opt/hc_python/lib/python3.12/site-packages/sentry_sdk/integrations/
Upload Files :
Current_dir [ Not Writeable ] Document_root [ Writeable ]

Command :


Current File : /opt/hc_python/lib/python3.12/site-packages/sentry_sdk/integrations//fastapi.py
import asyncio
from copy import deepcopy
from functools import wraps

import sentry_sdk
from sentry_sdk.integrations import DidNotEnable
from sentry_sdk.scope import should_send_default_pii
from sentry_sdk.tracing import SOURCE_FOR_STYLE, TransactionSource
from sentry_sdk.utils import (
    transaction_from_function,
    logger,
)

from typing import TYPE_CHECKING

if TYPE_CHECKING:
    from typing import Any, Callable, Dict
    from sentry_sdk._types import Event

try:
    from sentry_sdk.integrations.starlette import (
        StarletteIntegration,
        StarletteRequestExtractor,
    )
except DidNotEnable:
    raise DidNotEnable("Starlette is not installed")

try:
    import fastapi  # type: ignore
except ImportError:
    raise DidNotEnable("FastAPI is not installed")


_DEFAULT_TRANSACTION_NAME = "generic FastAPI request"


class FastApiIntegration(StarletteIntegration):
    identifier = "fastapi"

    @staticmethod
    def setup_once():
        # type: () -> None
        patch_get_request_handler()


def _set_transaction_name_and_source(scope, transaction_style, request):
    # type: (sentry_sdk.Scope, str, Any) -> None
    name = ""

    if transaction_style == "endpoint":
        endpoint = request.scope.get("endpoint")
        if endpoint:
            name = transaction_from_function(endpoint) or ""

    elif transaction_style == "url":
        route = request.scope.get("route")
        if route:
            path = getattr(route, "path", None)
            if path is not None:
                name = path

    if not name:
        name = _DEFAULT_TRANSACTION_NAME
        source = TransactionSource.ROUTE
    else:
        source = SOURCE_FOR_STYLE[transaction_style]

    scope.set_transaction_name(name, source=source)
    logger.debug(
        "[FastAPI] Set transaction name and source on scope: %s / %s", name, source
    )


def patch_get_request_handler():
    # type: () -> None
    old_get_request_handler = fastapi.routing.get_request_handler

    def _sentry_get_request_handler(*args, **kwargs):
        # type: (*Any, **Any) -> Any
        dependant = kwargs.get("dependant")
        if (
            dependant
            and dependant.call is not None
            and not asyncio.iscoroutinefunction(dependant.call)
        ):
            old_call = dependant.call

            @wraps(old_call)
            def _sentry_call(*args, **kwargs):
                # type: (*Any, **Any) -> Any
                current_scope = sentry_sdk.get_current_scope()
                if current_scope.transaction is not None:
                    current_scope.transaction.update_active_thread()

                sentry_scope = sentry_sdk.get_isolation_scope()
                if sentry_scope.profile is not None:
                    sentry_scope.profile.update_active_thread_id()

                return old_call(*args, **kwargs)

            dependant.call = _sentry_call

        old_app = old_get_request_handler(*args, **kwargs)

        async def _sentry_app(*args, **kwargs):
            # type: (*Any, **Any) -> Any
            integration = sentry_sdk.get_client().get_integration(FastApiIntegration)
            if integration is None:
                return await old_app(*args, **kwargs)

            request = args[0]

            _set_transaction_name_and_source(
                sentry_sdk.get_current_scope(), integration.transaction_style, request
            )
            sentry_scope = sentry_sdk.get_isolation_scope()
            extractor = StarletteRequestExtractor(request)
            info = await extractor.extract_request_info()

            def _make_request_event_processor(req, integration):
                # type: (Any, Any) -> Callable[[Event, Dict[str, Any]], Event]
                def event_processor(event, hint):
                    # type: (Event, Dict[str, Any]) -> Event

                    # Extract information from request
                    request_info = event.get("request", {})
                    if info:
                        if "cookies" in info and should_send_default_pii():
                            request_info["cookies"] = info["cookies"]
                        if "data" in info:
                            request_info["data"] = info["data"]
                    event["request"] = deepcopy(request_info)

                    return event

                return event_processor

            sentry_scope._name = FastApiIntegration.identifier
            sentry_scope.add_event_processor(
                _make_request_event_processor(request, integration)
            )

            return await old_app(*args, **kwargs)

        return _sentry_app

    fastapi.routing.get_request_handler = _sentry_get_request_handler

[ Back ]
Name
Size
Last Modified
Owner / Group
Permissions
Options
..
--
May 23 2025 08:31:28
root / root
0755
__pycache__
--
May 23 2025 08:31:28
root / root
0755
celery
--
May 23 2025 08:31:28
root / root
0755
django
--
May 23 2025 08:31:28
root / root
0755
grpc
--
May 23 2025 08:31:28
root / root
0755
opentelemetry
--
May 23 2025 08:31:28
root / root
0755
redis
--
May 23 2025 08:31:28
root / root
0755
spark
--
May 23 2025 08:31:28
root / root
0755
__init__.py
9.979 KB
May 23 2025 08:31:28
root / root
0644
_asgi_common.py
3.112 KB
May 23 2025 08:31:28
root / root
0644
_wsgi_common.py
7.381 KB
May 23 2025 08:31:28
root / root
0644
aiohttp.py
12.593 KB
May 23 2025 08:31:28
root / root
0644
anthropic.py
9.205 KB
May 23 2025 08:31:28
root / root
0644
argv.py
0.89 KB
May 23 2025 08:31:28
root / root
0644
ariadne.py
5.697 KB
May 23 2025 08:31:28
root / root
0644
arq.py
7.673 KB
May 23 2025 08:31:28
root / root
0644
asgi.py
12.479 KB
May 23 2025 08:31:28
root / root
0644
asyncio.py
3.939 KB
May 23 2025 08:31:28
root / root
0644
asyncpg.py
6.368 KB
May 23 2025 08:31:28
root / root
0644
atexit.py
1.613 KB
May 23 2025 08:31:28
root / root
0644
aws_lambda.py
17.533 KB
May 23 2025 08:31:28
root / root
0644
beam.py
5.061 KB
May 23 2025 08:31:28
root / root
0644
boto3.py
4.308 KB
May 23 2025 08:31:28
root / root
0644
bottle.py
6.46 KB
May 23 2025 08:31:28
root / root
0644
chalice.py
4.589 KB
May 23 2025 08:31:28
root / root
0644
clickhouse_driver.py
5.124 KB
May 23 2025 08:31:28
root / root
0644
cloud_resource_context.py
7.598 KB
May 23 2025 08:31:28
root / root
0644
cohere.py
9.114 KB
May 23 2025 08:31:28
root / root
0644
dedupe.py
1.385 KB
May 23 2025 08:31:28
root / root
0644
dramatiq.py
5.452 KB
May 23 2025 08:31:28
root / root
0644
excepthook.py
2.352 KB
May 23 2025 08:31:28
root / root
0644
executing.py
1.947 KB
May 23 2025 08:31:28
root / root
0644
falcon.py
9.278 KB
May 23 2025 08:31:28
root / root
0644
fastapi.py
4.607 KB
May 23 2025 08:31:28
root / root
0644
flask.py
8.535 KB
May 23 2025 08:31:28
root / root
0644
gcp.py
8.08 KB
May 23 2025 08:31:28
root / root
0644
gnu_backtrace.py
2.826 KB
May 23 2025 08:31:28
root / root
0644
gql.py
4.081 KB
May 23 2025 08:31:28
root / root
0644
graphene.py
4.924 KB
May 23 2025 08:31:28
root / root
0644
httpx.py
5.729 KB
May 23 2025 08:31:28
root / root
0644
huey.py
5.315 KB
May 23 2025 08:31:28
root / root
0644
huggingface_hub.py
6.397 KB
May 23 2025 08:31:28
root / root
0644
langchain.py
17.303 KB
May 23 2025 08:31:28
root / root
0644
launchdarkly.py
1.89 KB
May 23 2025 08:31:28
root / root
0644
litestar.py
11.298 KB
May 23 2025 08:31:28
root / root
0644
logging.py
13.189 KB
May 23 2025 08:31:28
root / root
0644
loguru.py
3.535 KB
May 23 2025 08:31:28
root / root
0644
modules.py
0.801 KB
May 23 2025 08:31:28
root / root
0644
openai.py
15.22 KB
May 23 2025 08:31:28
root / root
0644
openfeature.py
1.206 KB
May 23 2025 08:31:28
root / root
0644
pure_eval.py
4.474 KB
May 23 2025 08:31:28
root / root
0644
pymongo.py
6.23 KB
May 23 2025 08:31:28
root / root
0644
pyramid.py
7.191 KB
May 23 2025 08:31:28
root / root
0644
quart.py
7.263 KB
May 23 2025 08:31:28
root / root
0644
ray.py
4.064 KB
May 23 2025 08:31:28
root / root
0644
rq.py
5.183 KB
May 23 2025 08:31:28
root / root
0644
rust_tracing.py
8.865 KB
May 23 2025 08:31:28
root / root
0644
sanic.py
12.656 KB
May 23 2025 08:31:28
root / root
0644
serverless.py
1.762 KB
May 23 2025 08:31:28
root / root
0644
socket.py
3.095 KB
May 23 2025 08:31:28
root / root
0644
sqlalchemy.py
4.27 KB
May 23 2025 08:31:28
root / root
0644
starlette.py
25.794 KB
May 23 2025 08:31:28
root / root
0644
starlite.py
10.371 KB
May 23 2025 08:31:28
root / root
0644
statsig.py
1.198 KB
May 23 2025 08:31:28
root / root
0644
stdlib.py
8.624 KB
May 23 2025 08:31:28
root / root
0644
strawberry.py
13.795 KB
May 23 2025 08:31:28
root / root
0644
sys_exit.py
2.435 KB
May 23 2025 08:31:28
root / root
0644
threading.py
5.266 KB
May 23 2025 08:31:28
root / root
0644
tornado.py
7.053 KB
May 23 2025 08:31:28
root / root
0644
trytond.py
1.612 KB
May 23 2025 08:31:28
root / root
0644
typer.py
1.772 KB
May 23 2025 08:31:28
root / root
0644
unleash.py
1.033 KB
May 23 2025 08:31:28
root / root
0644
wsgi.py
10.495 KB
May 23 2025 08:31:28
root / root
0644

GRAYBYTE WORDPRESS FILE MANAGER @ 2025
CONTACT ME
Static GIF