import sys | |
import sentry_sdk | |
from sentry_sdk.integrations import Integration | |
from sentry_sdk.scope import add_global_event_processor | |
from typing import TYPE_CHECKING | |
if TYPE_CHECKING: | |
from typing import Optional | |
from sentry_sdk._types import Event, Hint | |
class ArgvIntegration(Integration): | |
identifier = "argv" | |
def setup_once(): | |
# type: () -> None | |
def processor(event, hint): | |
# type: (Event, Optional[Hint]) -> Optional[Event] | |
if sentry_sdk.get_client().get_integration(ArgvIntegration) is not None: | |
extra = event.setdefault("extra", {}) | |
# If some event processor decided to set extra to e.g. an | |
# `int`, don't crash. Not here. | |
if isinstance(extra, dict): | |
extra["sys.argv"] = sys.argv | |
return event | |