123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557 |
- [tool.black]
- # File filtering is taken care of in pre-commit.
- line-length = 100
- target-version = ['py312']
- [tool.isort]
- profile = "black"
- line_length = 100
- lines_between_sections = 1
- known_first_party = "sentry"
- skip = "migrations"
- [tool.pytest.ini_options]
- python_files = "test_*.py sentry/testutils/*"
- # note: When updating the traceback format, make sure to update .github/pytest.json
- # We don't use the celery pytest plugin.
- addopts = "--tb=short -p no:celery --nomigrations"
- # TODO: --import-mode=importlib will become the default soon,
- # currently we have a few relative imports that don't work with that.
- markers = [
- "snuba: test requires access to snuba",
- "snuba_ci: test is run in snuba ci",
- "sentry_metrics: test requires access to sentry metrics",
- "symbolicator: test requires access to symbolicator",
- "querybuilder: smoke tests for QueryBuilders",
- ]
- filterwarnings = [
- # Consider all warnings to be errors other than the ignored ones.
- "error",
- # phabricator uses `pkg_resources` apis
- "ignore:pkg_resources is deprecated as an API",
- # this warning in protobuf causes a segfault in 3.12+ protocolbuffers/protobuf#15077
- "ignore:Type google\\._upb.*",
- # TODO: we should fix these, but for now there's a lot
- "ignore:datetime.datetime.utcfromtimestamp\\(\\) is deprecated.*",
- "ignore:datetime.datetime.utcnow\\(\\) is deprecated.*",
- # The following warning filters are for pytest only.
- "ignore:.*sentry.digests.backends.dummy.DummyBackend.*:sentry.utils.warnings.UnsupportedBackend",
- # pytest has not yet implemented the replacement for this yet
- "ignore:The --looponfail command line argument.*",
- ]
- looponfailroots = ["src", "tests"]
- [tool.mypy]
- python_version = "3.12"
- mypy_path = ["fixtures/stubs-for-mypy"]
- plugins = [
- "pydantic.mypy",
- "mypy_django_plugin.main",
- "tools.mypy_helpers.plugin",
- ]
- files = ["."]
- exclude = ["^.venv/", "^venv/", "^self-hosted/"]
- # minimal strictness settings
- check_untyped_defs = true
- no_implicit_reexport = true
- warn_unreachable = true
- warn_unused_configs = true
- warn_unused_ignores = true
- warn_redundant_casts = true
- enable_error_code = ["ignore-without-code", "redundant-self"]
- [tool.django-stubs]
- django_settings_module = "sentry.conf.server_mypy"
- # these have py.typed but incorrect types
- [[tool.mypy.overrides]]
- module = [
- # TODO: these cause type errors when followed
- "snuba_sdk.*",
- ]
- follow_imports = "skip"
- # python3 -m tools.mypy_helpers.make_stub_ignores
- # begin: missing 3rd party stubs
- # - add .pyi files to fixtures/stubs-for-mypy
- # - or find a 3rd party stub
- [[tool.mypy.overrides]]
- module = [
- "boto3.*",
- "botocore.client.*",
- "botocore.exceptions.*",
- "celery.*",
- "confluent_kafka.*",
- "cssselect.*",
- "django_zero_downtime_migrations.backends.postgres.schema.*",
- "docker.*",
- "fido2.*",
- "google.auth.*",
- "google.cloud.*",
- "google.resumable_media.common.*",
- "google.rpc.status_pb2.*",
- "kombu.*",
- "mistune.*",
- "onelogin.saml2.auth.*",
- "onelogin.saml2.constants.*",
- "onelogin.saml2.idp_metadata_parser.*",
- "phabricator.*",
- "rb.*",
- "requests_oauthlib.*",
- "sqlparse.*",
- "statsd.*",
- "u2flib_server.model.*",
- "unidiff.*",
- ]
- ignore_missing_imports = true
- # end: missing 3rd party stubs
- # python3 -m tools.mypy_helpers.make_module_ignores
- # begin: sentry modules with typing issues
- # - remove the module from the list and fix the issues!
- # - python3 -m tools.mypy_helpers.find_easiest_modules
- [[tool.mypy.overrides]]
- module = [
- "sentry.api.base",
- "sentry.api.bases.organization_events",
- "sentry.api.bases.organizationmember",
- "sentry.api.bases.project",
- "sentry.api.bases.team",
- "sentry.api.endpoints.accept_organization_invite",
- "sentry.api.endpoints.auth_config",
- "sentry.api.endpoints.codeowners",
- "sentry.api.endpoints.codeowners.index",
- "sentry.api.endpoints.event_attachments",
- "sentry.api.endpoints.group_integration_details",
- "sentry.api.endpoints.group_integrations",
- "sentry.api.endpoints.index",
- "sentry.api.endpoints.internal.mail",
- "sentry.api.endpoints.organization_details",
- "sentry.api.endpoints.organization_events",
- "sentry.api.endpoints.organization_events_facets_performance",
- "sentry.api.endpoints.organization_events_meta",
- "sentry.api.endpoints.organization_events_spans_performance",
- "sentry.api.endpoints.organization_index",
- "sentry.api.endpoints.organization_issues_count",
- "sentry.api.endpoints.organization_member.details",
- "sentry.api.endpoints.organization_member.index",
- "sentry.api.endpoints.organization_member.requests.invite.details",
- "sentry.api.endpoints.organization_onboarding_continuation_email",
- "sentry.api.endpoints.organization_projects",
- "sentry.api.endpoints.organization_releases",
- "sentry.api.endpoints.organization_request_project_creation",
- "sentry.api.endpoints.organization_search_details",
- "sentry.api.endpoints.organization_sessions",
- "sentry.api.endpoints.organization_stats",
- "sentry.api.endpoints.project_index",
- "sentry.api.endpoints.project_ownership",
- "sentry.api.endpoints.project_release_files",
- "sentry.api.endpoints.project_repo_path_parsing",
- "sentry.api.endpoints.project_rule_preview",
- "sentry.api.endpoints.project_rules_configuration",
- "sentry.api.endpoints.project_servicehook_stats",
- "sentry.api.endpoints.project_transaction_names",
- "sentry.api.endpoints.team_details",
- "sentry.api.endpoints.team_release_count",
- "sentry.api.endpoints.user_subscriptions",
- "sentry.api.event_search",
- "sentry.api.helpers.group_index.index",
- "sentry.api.helpers.group_index.update",
- "sentry.api.invite_helper",
- "sentry.api.issue_search",
- "sentry.api.paginator",
- "sentry.api.permissions",
- "sentry.api.serializers.models.auth_provider",
- "sentry.api.serializers.models.dashboard",
- "sentry.api.serializers.models.environment",
- "sentry.api.serializers.models.event",
- "sentry.api.serializers.models.group",
- "sentry.api.serializers.models.group_stream",
- "sentry.api.serializers.models.organization",
- "sentry.api.serializers.models.plugin",
- "sentry.api.serializers.models.project",
- "sentry.api.serializers.models.role",
- "sentry.api.serializers.models.rule",
- "sentry.api.serializers.models.team",
- "sentry.api.serializers.rest_framework.mentions",
- "sentry.api.serializers.rest_framework.notification_action",
- "sentry.auth.helper",
- "sentry.auth.provider",
- "sentry.auth.system",
- "sentry.db.mixin",
- "sentry.db.postgres.base",
- "sentry.discover.endpoints.discover_key_transactions",
- "sentry.eventstore.models",
- "sentry.grouping.strategies.legacy",
- "sentry.identity.bitbucket.provider",
- "sentry.identity.github_enterprise.provider",
- "sentry.identity.gitlab.provider",
- "sentry.identity.oauth2",
- "sentry.identity.pipeline",
- "sentry.identity.providers.dummy",
- "sentry.identity.slack.provider",
- "sentry.incidents.endpoints.bases",
- "sentry.incidents.endpoints.organization_alert_rule_details",
- "sentry.incidents.endpoints.organization_alert_rule_index",
- "sentry.incidents.endpoints.organization_incident_comment_details",
- "sentry.incidents.endpoints.organization_incident_index",
- "sentry.incidents.subscription_processor",
- "sentry.incidents.tasks",
- "sentry.integrations.api.bases.integration",
- "sentry.integrations.aws_lambda.integration",
- "sentry.integrations.bitbucket.client",
- "sentry.integrations.bitbucket.installed",
- "sentry.integrations.bitbucket.integration",
- "sentry.integrations.bitbucket.issues",
- "sentry.integrations.bitbucket.uninstalled",
- "sentry.integrations.bitbucket_server.client",
- "sentry.integrations.bitbucket_server.integration",
- "sentry.integrations.example.integration",
- "sentry.integrations.example.repository",
- "sentry.integrations.github.client",
- "sentry.integrations.github.integration",
- "sentry.integrations.github.issues",
- "sentry.integrations.github_enterprise.integration",
- "sentry.integrations.gitlab.client",
- "sentry.integrations.gitlab.integration",
- "sentry.integrations.gitlab.issues",
- "sentry.integrations.jira.actions.form",
- "sentry.integrations.jira.client",
- "sentry.integrations.jira.integration",
- "sentry.integrations.jira.views.base",
- "sentry.integrations.jira.webhooks.base",
- "sentry.integrations.jira.webhooks.issue_updated",
- "sentry.integrations.jira_server.client",
- "sentry.integrations.jira_server.integration",
- "sentry.integrations.metric_alerts",
- "sentry.integrations.msteams.actions.form",
- "sentry.integrations.msteams.client",
- "sentry.integrations.msteams.integration",
- "sentry.integrations.msteams.notifications",
- "sentry.integrations.notifications",
- "sentry.integrations.pagerduty.actions.form",
- "sentry.integrations.pagerduty.client",
- "sentry.integrations.pagerduty.integration",
- "sentry.integrations.pipeline",
- "sentry.integrations.slack.actions.form",
- "sentry.integrations.slack.integration",
- "sentry.integrations.slack.message_builder.notifications.issues",
- "sentry.integrations.slack.notifications",
- "sentry.integrations.slack.unfurl.discover",
- "sentry.integrations.slack.utils.channel",
- "sentry.integrations.slack.utils.users",
- "sentry.integrations.slack.webhooks.command",
- "sentry.integrations.slack.webhooks.event",
- "sentry.integrations.utils.commit_context",
- "sentry.integrations.utils.sync",
- "sentry.integrations.vercel.client",
- "sentry.integrations.vercel.integration",
- "sentry.integrations.vercel.webhook",
- "sentry.integrations.vsts.client",
- "sentry.integrations.vsts.integration",
- "sentry.integrations.vsts.issues",
- "sentry.integrations.vsts.repository",
- "sentry.integrations.vsts_extension.integration",
- "sentry.issues.search",
- "sentry.middleware.auth",
- "sentry.middleware.ratelimit",
- "sentry.middleware.superuser",
- "sentry.models.organizationaccessrequest",
- "sentry.monitors.consumers.monitor_consumer",
- "sentry.monitors.endpoints.base",
- "sentry.monitors.endpoints.monitor_ingest_checkin_attachment",
- "sentry.monitors.endpoints.organization_monitor_index",
- "sentry.net.http",
- "sentry.net.socket",
- "sentry.notifications.notifications.activity.base",
- "sentry.notifications.notifications.activity.release",
- "sentry.notifications.notifications.integration_nudge",
- "sentry.pipeline.base",
- "sentry.pipeline.views.base",
- "sentry.pipeline.views.nested",
- "sentry.plugins.bases.data_forwarding",
- "sentry.plugins.bases.issue",
- "sentry.plugins.bases.issue2",
- "sentry.plugins.bases.notify",
- "sentry.plugins.config",
- "sentry.plugins.endpoints",
- "sentry.receivers.releases",
- "sentry.release_health.metrics_sessions_v2",
- "sentry.replays.endpoints.project_replay_clicks_index",
- "sentry.replays.lib.query",
- "sentry.rules.actions.integrations.base",
- "sentry.rules.actions.integrations.create_ticket.form",
- "sentry.rules.actions.integrations.create_ticket.utils",
- "sentry.rules.filters.assigned_to",
- "sentry.rules.history.preview",
- "sentry.scim.endpoints.members",
- "sentry.scim.endpoints.teams",
- "sentry.scim.endpoints.utils",
- "sentry.search.events.builder.errors",
- "sentry.search.events.builder.metrics",
- "sentry.search.events.datasets.discover",
- "sentry.search.events.datasets.filter_aliases",
- "sentry.search.events.datasets.function_aliases",
- "sentry.search.events.datasets.metrics",
- "sentry.search.events.datasets.metrics_layer",
- "sentry.search.events.fields",
- "sentry.search.events.filter",
- "sentry.search.snuba.executors",
- "sentry.search.utils",
- "sentry.sentry_apps.installations",
- "sentry.sentry_metrics.indexer.postgres.postgres_v2",
- "sentry.shared_integrations.client.proxy",
- "sentry.snuba.errors",
- "sentry.snuba.issue_platform",
- "sentry.snuba.metrics.datasource",
- "sentry.snuba.metrics.fields.base",
- "sentry.snuba.metrics.query_builder",
- "sentry.snuba.sessions_v2",
- "sentry.snuba.spans_indexed",
- "sentry.snuba.spans_metrics",
- "sentry.tagstore.snuba.backend",
- "sentry.tagstore.types",
- "sentry.tasks.auth",
- "sentry.tasks.base",
- "sentry.testutils.cases",
- "sentry.testutils.fixtures",
- "sentry.testutils.helpers.notifications",
- "sentry.utils.auth",
- "sentry.utils.committers",
- "sentry.utils.services",
- "sentry.web.forms.accounts",
- "sentry.web.frontend.auth_login",
- "sentry.web.frontend.auth_organization_login",
- "sentry.web.frontend.base",
- "sentry.web.frontend.oauth_authorize",
- "sentry.web.frontend.oauth_token",
- "sentry.web.frontend.react_page",
- "sentry.web.frontend.setup_wizard",
- "sentry.web.frontend.shared_group_details",
- "sentry.web.frontend.twofactor",
- "sentry_plugins.bitbucket.client",
- "sentry_plugins.bitbucket.mixins",
- "sentry_plugins.github.plugin",
- "sentry_plugins.jira.plugin",
- "tests.sentry.api.bases.test_organization",
- "tests.sentry.api.bases.test_project",
- "tests.sentry.api.bases.test_team",
- "tests.sentry.api.endpoints.notifications.test_notification_actions_details",
- "tests.sentry.api.endpoints.notifications.test_notification_actions_index",
- "tests.sentry.api.endpoints.test_event_attachment_details",
- "tests.sentry.api.helpers.test_group_index",
- "tests.sentry.api.test_authentication",
- "tests.sentry.api.test_base",
- "tests.sentry.api.test_event_search",
- "tests.sentry.eventstore.test_base",
- "tests.sentry.issues.test_utils",
- ]
- disable_error_code = [
- "arg-type",
- "assignment",
- "attr-defined",
- "call-arg",
- "call-overload",
- "dict-item",
- "index",
- "misc",
- "operator",
- "override",
- "return-value",
- "typeddict-item",
- "typeddict-unknown-key",
- "union-attr",
- "unreachable",
- "var-annotated",
- ]
- # end: sentry modules with typing issues
- # begin: stronger typing
- [[tool.mypy.overrides]]
- module = [
- "sentry.api.endpoints.project_backfill_similar_issues_embeddings_records",
- "sentry.api.helpers.deprecation",
- "sentry.api.helpers.source_map_helper",
- "sentry.auth.services.*",
- "sentry.auth.view",
- "sentry.buffer.*",
- "sentry.build.*",
- "sentry.db.models.fields.citext",
- "sentry.db.models.fields.foreignkey",
- "sentry.db.models.fields.hybrid_cloud_foreign_key",
- "sentry.db.models.fields.types",
- "sentry.db.models.manager.*",
- "sentry.db.models.paranoia",
- "sentry.db.models.utils",
- "sentry.deletions.*",
- "sentry.digests.notifications",
- "sentry.eventstore.reprocessing.redis",
- "sentry.eventtypes.error",
- "sentry.grouping.component",
- "sentry.grouping.fingerprinting",
- "sentry.grouping.ingest.*",
- "sentry.grouping.parameterization",
- "sentry.hybridcloud.*",
- "sentry.ingest.slicing",
- "sentry.integrations.models.integration_feature",
- "sentry.issues",
- "sentry.issues.analytics",
- "sentry.issues.apps",
- "sentry.issues.constants",
- "sentry.issues.endpoints",
- "sentry.issues.endpoints.group_activities",
- "sentry.issues.endpoints.group_event_details",
- "sentry.issues.endpoints.group_events",
- "sentry.issues.endpoints.group_participants",
- "sentry.issues.endpoints.organization_group_index_stats",
- "sentry.issues.endpoints.organization_group_search_views",
- "sentry.issues.endpoints.organization_release_previous_commits",
- "sentry.issues.endpoints.organization_searches",
- "sentry.issues.endpoints.project_events",
- "sentry.issues.endpoints.project_stacktrace_link",
- "sentry.issues.endpoints.related_issues",
- "sentry.issues.endpoints.shared_group_details",
- "sentry.issues.endpoints.team_groups_old",
- "sentry.issues.escalating_group_forecast",
- "sentry.issues.escalating_issues_alg",
- "sentry.issues.forecasts",
- "sentry.issues.ignored",
- "sentry.issues.ingest",
- "sentry.issues.issue_occurrence",
- "sentry.issues.json_schemas",
- "sentry.issues.merge",
- "sentry.issues.occurrence_consumer",
- "sentry.issues.ongoing",
- "sentry.issues.priority",
- "sentry.issues.producer",
- "sentry.issues.query",
- "sentry.issues.receivers",
- "sentry.issues.related.*",
- "sentry.issues.run",
- "sentry.issues.status_change",
- "sentry.issues.status_change_consumer",
- "sentry.issues.status_change_message",
- "sentry.issues.update_inbox",
- "sentry.lang.java.processing",
- "sentry.llm.*",
- "sentry.migrations.*",
- "sentry.models.event",
- "sentry.models.eventattachment",
- "sentry.models.groupsubscription",
- "sentry.monkey",
- "sentry.nodestore.base",
- "sentry.nodestore.bigtable.backend",
- "sentry.nodestore.django.backend",
- "sentry.nodestore.django.models",
- "sentry.nodestore.filesystem.backend",
- "sentry.nodestore.models",
- "sentry.organizations.*",
- "sentry.ownership.*",
- "sentry.plugins.base.response",
- "sentry.plugins.base.view",
- "sentry.profiles.*",
- "sentry.projects.services.*",
- "sentry.ratelimits.leaky_bucket",
- "sentry.relay.config.metric_extraction",
- "sentry.reprocessing2",
- "sentry.runner.*",
- "sentry.search.snuba.backend",
- "sentry.sentry_metrics.consumers.indexer.slicing_router",
- "sentry.snuba.metrics.extraction",
- "sentry.stacktraces.platform",
- "sentry.tasks.beacon",
- "sentry.tasks.commit_context",
- "sentry.tasks.on_demand_metrics",
- "sentry.tasks.reprocessing2",
- "sentry.tasks.store",
- "sentry.taskworker.*",
- "sentry.testutils.helpers.task_runner",
- "sentry.types.actor",
- "sentry.types.region",
- "sentry.users.*",
- "sentry.utils.arroyo",
- "sentry.utils.assets",
- "sentry.utils.audit",
- "sentry.utils.celery",
- "sentry.utils.codeowners",
- "sentry.utils.colors",
- "sentry.utils.email.*",
- "sentry.utils.env",
- "sentry.utils.event",
- "sentry.utils.files",
- "sentry.utils.function_cache",
- "sentry.utils.geo",
- "sentry.utils.imports",
- "sentry.utils.iterators",
- "sentry.utils.javascript",
- "sentry.utils.lazy_service_wrapper",
- "sentry.utils.locking.*",
- "sentry.utils.migrations",
- "sentry.utils.numbers",
- "sentry.utils.otp",
- "sentry.utils.performance_issues.detectors.*",
- "sentry.utils.performance_issues.performance_detection",
- "sentry.utils.pubsub",
- "sentry.utils.redis",
- "sentry.utils.redis_metrics",
- "sentry.utils.sentry_apps.*",
- "sentry.utils.sms",
- "sentry.utils.snowflake",
- "sentry.utils.urls",
- "sentry.utils.uwsgi",
- "sentry.utils.zip",
- "sentry.web.frontend.auth_provider_login",
- "sentry.web.frontend.cli",
- "sentry.web.frontend.csv",
- "sentry_plugins.base",
- "tests.sentry.deletions.test_group",
- "tests.sentry.event_manager.test_event_manager",
- "tests.sentry.grouping.ingest.test_seer",
- "tests.sentry.grouping.test_fingerprinting",
- "tests.sentry.hybridcloud.*",
- "tests.sentry.issues",
- "tests.sentry.issues.endpoints",
- "tests.sentry.issues.endpoints.test_actionable_items",
- "tests.sentry.issues.endpoints.test_organization_group_search_views",
- "tests.sentry.issues.endpoints.test_organization_searches",
- "tests.sentry.issues.endpoints.test_project_stacktrace_link",
- "tests.sentry.issues.endpoints.test_related_issues",
- "tests.sentry.issues.endpoints.test_source_map_debug",
- "tests.sentry.issues.test_attributes",
- "tests.sentry.issues.test_escalating",
- "tests.sentry.issues.test_escalating_issues_alg",
- "tests.sentry.issues.test_group_attributes_dataset",
- "tests.sentry.issues.test_grouptype",
- "tests.sentry.issues.test_ignored",
- "tests.sentry.issues.test_ingest",
- "tests.sentry.issues.test_issue_occurrence",
- "tests.sentry.issues.test_issue_velocity",
- "tests.sentry.issues.test_json_schemas",
- "tests.sentry.issues.test_merge",
- "tests.sentry.issues.test_occurrence_consumer",
- "tests.sentry.issues.test_ongoing",
- "tests.sentry.issues.test_priority",
- "tests.sentry.issues.test_producer",
- "tests.sentry.issues.test_run",
- "tests.sentry.issues.test_search_issues_dataset",
- "tests.sentry.issues.test_status_change",
- "tests.sentry.issues.test_status_change_consumer",
- "tests.sentry.issues.test_update_inbox",
- "tests.sentry.ownership.*",
- "tests.sentry.ratelimits.test_leaky_bucket",
- "tests.sentry.relay.config.test_metric_extraction",
- "tests.sentry.tasks.test_on_demand_metrics",
- "tests.sentry.types.test_actor",
- "tests.sentry.types.test_region",
- "tests.sentry.web.frontend.test_cli",
- "tools.*",
- ]
- disallow_any_generics = true
- disallow_untyped_defs = true
- # end: stronger typing
|