"""Sentry Client. Provides sentry_client attribute for ad hoc capturing of messages and errors. https://docs.getsentry.com/hosted/clients/python/usage/ """ import sentry_sdk from sentry_sdk.integrations.flask import FlaskIntegration from sentry_sdk.integrations.logging import ignore_logger from sentry_sdk.integrations.sqlalchemy import SqlalchemyIntegration from carveouts import config sentry_client = None def init_sentry(sentry_dsn: str) -> None: """Init Sentry with provided DSN url.""" global sentry_client if sentry_dsn: sentry_sdk.init( dsn=sentry_dsn, environment=config.ENVIRONMENT, debug=False, integrations=[ # https://docs.sentry.io/platforms/python/flask/#options FlaskIntegration(transaction_style="url"), # https://docs.sentry.io/platforms/python/sqlalchemy/ SqlalchemyIntegration(), ], max_value_length=2048, traces_sample_rate=1.0, ) ignore_logger("ddtrace.internal.*") sentry_client = sentry_sdk.client