SILENT KILLERPanel

Current Path: > > opt > > hc_python > > lib > python3.12 > site-packages > > sentry_sdk > integrations


Operation   : Linux premium131.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
Software     : Apache
Server IP    : 162.0.232.56 | Your IP: 216.73.216.111
Domains      : 1034 Domain(s)
Permission   : [ 0755 ]

Files and Folders in: //opt//hc_python//lib/python3.12/site-packages//sentry_sdk/integrations

NameTypeSizeLast ModifiedActions
__pycache__ Directory - -
celery Directory - -
django Directory - -
grpc Directory - -
opentelemetry Directory - -
redis Directory - -
spark Directory - -
__init__.py File 10218 bytes May 23 2025 10:34:44.
_asgi_common.py File 3187 bytes May 23 2025 10:34:44.
_wsgi_common.py File 7558 bytes May 23 2025 10:34:44.
aiohttp.py File 12895 bytes May 23 2025 10:34:44.
anthropic.py File 9426 bytes May 23 2025 10:34:44.
argv.py File 911 bytes May 23 2025 10:34:44.
ariadne.py File 5834 bytes May 23 2025 10:34:44.
arq.py File 7857 bytes May 23 2025 10:34:44.
asgi.py File 12779 bytes May 23 2025 10:34:44.
asyncio.py File 4034 bytes May 23 2025 10:34:44.
asyncpg.py File 6521 bytes May 23 2025 10:34:44.
atexit.py File 1652 bytes May 23 2025 10:34:44.
aws_lambda.py File 17954 bytes May 23 2025 10:34:44.
beam.py File 5182 bytes May 23 2025 10:34:44.
boto3.py File 4411 bytes May 23 2025 10:34:44.
bottle.py File 6615 bytes May 23 2025 10:34:44.
chalice.py File 4699 bytes May 23 2025 10:34:44.
clickhouse_driver.py File 5247 bytes May 23 2025 10:34:44.
cloud_resource_context.py File 7780 bytes May 23 2025 10:34:44.
cohere.py File 9333 bytes May 23 2025 10:34:44.
dedupe.py File 1418 bytes May 23 2025 10:34:44.
dramatiq.py File 5583 bytes May 23 2025 10:34:44.
excepthook.py File 2408 bytes May 23 2025 10:34:44.
executing.py File 1994 bytes May 23 2025 10:34:44.
falcon.py File 9501 bytes May 23 2025 10:34:44.
fastapi.py File 4718 bytes May 23 2025 10:34:44.
flask.py File 8740 bytes May 23 2025 10:34:44.
gcp.py File 8274 bytes May 23 2025 10:34:44.
gnu_backtrace.py File 2894 bytes May 23 2025 10:34:44.
gql.py File 4179 bytes May 23 2025 10:34:44.
graphene.py File 5042 bytes May 23 2025 10:34:44.
httpx.py File 5866 bytes May 23 2025 10:34:44.
huey.py File 5443 bytes May 23 2025 10:34:44.
huggingface_hub.py File 6551 bytes May 23 2025 10:34:44.
langchain.py File 17718 bytes May 23 2025 10:34:44.
launchdarkly.py File 1935 bytes May 23 2025 10:34:44.
litestar.py File 11569 bytes May 23 2025 10:34:44.
logging.py File 13506 bytes May 23 2025 10:34:44.
loguru.py File 3620 bytes May 23 2025 10:34:44.
modules.py File 820 bytes May 23 2025 10:34:44.
openai.py File 15585 bytes May 23 2025 10:34:44.
openfeature.py File 1235 bytes May 23 2025 10:34:44.
pure_eval.py File 4581 bytes May 23 2025 10:34:44.
pymongo.py File 6380 bytes May 23 2025 10:34:44.
pyramid.py File 7364 bytes May 23 2025 10:34:44.
quart.py File 7437 bytes May 23 2025 10:34:44.
ray.py File 4162 bytes May 23 2025 10:34:44.
rq.py File 5307 bytes May 23 2025 10:34:44.
rust_tracing.py File 9078 bytes May 23 2025 10:34:44.
sanic.py File 12960 bytes May 23 2025 10:34:44.
serverless.py File 1804 bytes May 23 2025 10:34:44.
socket.py File 3169 bytes May 23 2025 10:34:44.
sqlalchemy.py File 4372 bytes May 23 2025 10:34:44.
starlette.py File 26413 bytes May 23 2025 10:34:44.
starlite.py File 10620 bytes May 23 2025 10:34:44.
statsig.py File 1227 bytes May 23 2025 10:34:44.
stdlib.py File 8831 bytes May 23 2025 10:34:44.
strawberry.py File 14126 bytes May 23 2025 10:34:44.
sys_exit.py File 2493 bytes May 23 2025 10:34:44.
threading.py File 5392 bytes May 23 2025 10:34:44.
tornado.py File 7222 bytes May 23 2025 10:34:44.
trytond.py File 1651 bytes May 23 2025 10:34:44.
typer.py File 1815 bytes May 23 2025 10:34:44.
unleash.py File 1058 bytes May 23 2025 10:34:44.
wsgi.py File 10747 bytes May 23 2025 10:34:44.

Reading File: //opt//hc_python//lib/python3.12/site-packages//sentry_sdk/integrations/huey.py

import sys
from datetime import datetime

import sentry_sdk
from sentry_sdk.api import continue_trace, get_baggage, get_traceparent
from sentry_sdk.consts import OP, SPANSTATUS
from sentry_sdk.integrations import DidNotEnable, Integration
from sentry_sdk.scope import should_send_default_pii
from sentry_sdk.tracing import (
    BAGGAGE_HEADER_NAME,
    SENTRY_TRACE_HEADER_NAME,
    TransactionSource,
)
from sentry_sdk.utils import (
    capture_internal_exceptions,
    ensure_integration_enabled,
    event_from_exception,
    SENSITIVE_DATA_SUBSTITUTE,
    reraise,
)

from typing import TYPE_CHECKING

if TYPE_CHECKING:
    from typing import Any, Callable, Optional, Union, TypeVar

    from sentry_sdk._types import EventProcessor, Event, Hint
    from sentry_sdk.utils import ExcInfo

    F = TypeVar("F", bound=Callable[..., Any])

try:
    from huey.api import Huey, Result, ResultGroup, Task, PeriodicTask
    from huey.exceptions import CancelExecution, RetryTask, TaskLockedException
except ImportError:
    raise DidNotEnable("Huey is not installed")


HUEY_CONTROL_FLOW_EXCEPTIONS = (CancelExecution, RetryTask, TaskLockedException)


class HueyIntegration(Integration):
    identifier = "huey"
    origin = f"auto.queue.{identifier}"

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


def patch_enqueue():
    # type: () -> None
    old_enqueue = Huey.enqueue

    @ensure_integration_enabled(HueyIntegration, old_enqueue)
    def _sentry_enqueue(self, task):
        # type: (Huey, Task) -> Optional[Union[Result, ResultGroup]]
        with sentry_sdk.start_span(
            op=OP.QUEUE_SUBMIT_HUEY,
            name=task.name,
            origin=HueyIntegration.origin,
        ):
            if not isinstance(task, PeriodicTask):
                # Attach trace propagation data to task kwargs. We do
                # not do this for periodic tasks, as these don't
                # really have an originating transaction.
                task.kwargs["sentry_headers"] = {
                    BAGGAGE_HEADER_NAME: get_baggage(),
                    SENTRY_TRACE_HEADER_NAME: get_traceparent(),
                }
            return old_enqueue(self, task)

    Huey.enqueue = _sentry_enqueue


def _make_event_processor(task):
    # type: (Any) -> EventProcessor
    def event_processor(event, hint):
        # type: (Event, Hint) -> Optional[Event]

        with capture_internal_exceptions():
            tags = event.setdefault("tags", {})
            tags["huey_task_id"] = task.id
            tags["huey_task_retry"] = task.default_retries > task.retries
            extra = event.setdefault("extra", {})
            extra["huey-job"] = {
                "task": task.name,
                "args": (
                    task.args
                    if should_send_default_pii()
                    else SENSITIVE_DATA_SUBSTITUTE
                ),
                "kwargs": (
                    task.kwargs
                    if should_send_default_pii()
                    else SENSITIVE_DATA_SUBSTITUTE
                ),
                "retry": (task.default_retries or 0) - task.retries,
            }

        return event

    return event_processor


def _capture_exception(exc_info):
    # type: (ExcInfo) -> None
    scope = sentry_sdk.get_current_scope()

    if exc_info[0] in HUEY_CONTROL_FLOW_EXCEPTIONS:
        scope.transaction.set_status(SPANSTATUS.ABORTED)
        return

    scope.transaction.set_status(SPANSTATUS.INTERNAL_ERROR)
    event, hint = event_from_exception(
        exc_info,
        client_options=sentry_sdk.get_client().options,
        mechanism={"type": HueyIntegration.identifier, "handled": False},
    )
    scope.capture_event(event, hint=hint)


def _wrap_task_execute(func):
    # type: (F) -> F

    @ensure_integration_enabled(HueyIntegration, func)
    def _sentry_execute(*args, **kwargs):
        # type: (*Any, **Any) -> Any
        try:
            result = func(*args, **kwargs)
        except Exception:
            exc_info = sys.exc_info()
            _capture_exception(exc_info)
            reraise(*exc_info)

        return result

    return _sentry_execute  # type: ignore


def patch_execute():
    # type: () -> None
    old_execute = Huey._execute

    @ensure_integration_enabled(HueyIntegration, old_execute)
    def _sentry_execute(self, task, timestamp=None):
        # type: (Huey, Task, Optional[datetime]) -> Any
        with sentry_sdk.isolation_scope() as scope:
            with capture_internal_exceptions():
                scope._name = "huey"
                scope.clear_breadcrumbs()
                scope.add_event_processor(_make_event_processor(task))

            sentry_headers = task.kwargs.pop("sentry_headers", None)

            transaction = continue_trace(
                sentry_headers or {},
                name=task.name,
                op=OP.QUEUE_TASK_HUEY,
                source=TransactionSource.TASK,
                origin=HueyIntegration.origin,
            )
            transaction.set_status(SPANSTATUS.OK)

            if not getattr(task, "_sentry_is_patched", False):
                task.execute = _wrap_task_execute(task.execute)
                task._sentry_is_patched = True

            with sentry_sdk.start_transaction(transaction):
                return old_execute(self, task, timestamp)

    Huey._execute = _sentry_execute

SILENT KILLER Tool