[metadata]
name = sentry
version = 25.3.0.dev0
description = A realtime logging and aggregation server.
long_description = file: README.md
long_description_content_type = text/markdown
url = https://sentry.io
author = Sentry
author_email = oss@sentry.io
license = FSL-1.0-Apache-2.0
license_files = LICENSE.md
classifiers =
    Framework :: Django
    Intended Audience :: Developers
    Intended Audience :: System Administrators
    License :: Other/Proprietary License
    Operating System :: POSIX :: Linux
    Programming Language :: Python :: 3
    Programming Language :: Python :: 3 :: Only
    Topic :: Software Development

[options]
packages = find:
python_requires = >=3.13
include_package_data = True
package_dir =
    =src
zip_safe = False

[options.packages.find]
where = src

[options.entry_points]
console_scripts =
    sentry = sentry.__main__:main
sentry.apps =
    # TODO: This can be removed once the getsentry tests no longer check for this app
    auth_activedirectory = sentry.auth.providers.saml2.activedirectory
    auth_auth0 = sentry.auth.providers.saml2.auth0
    auth_github = sentry.auth.providers.github
    auth_jumpcloud = sentry.auth.providers.saml2.jumpcloud
    auth_okta = sentry.auth.providers.saml2.okta
    auth_onelogin = sentry.auth.providers.saml2.onelogin
    auth_rippling = sentry.auth.providers.saml2.rippling
    auth_saml2 = sentry.auth.providers.saml2.generic
    jira = sentry_plugins.jira
    opsgenie = sentry_plugins.opsgenie
    redmine = sentry_plugins.redmine
    sessionstack = sentry_plugins.sessionstack
    trello = sentry_plugins.trello
    twilio = sentry_plugins.twilio
sentry.plugins =
    amazon_sqs = sentry_plugins.amazon_sqs.plugin:AmazonSQSPlugin
    asana = sentry_plugins.asana.plugin:AsanaPlugin
    bitbucket = sentry_plugins.bitbucket.plugin:BitbucketPlugin
    github = sentry_plugins.github.plugin:GitHubPlugin
    gitlab = sentry_plugins.gitlab.plugin:GitLabPlugin
    heroku = sentry_plugins.heroku.plugin:HerokuPlugin
    jira = sentry_plugins.jira.plugin:JiraPlugin
    opsgenie = sentry_plugins.opsgenie.plugin:OpsGeniePlugin
    pagerduty = sentry_plugins.pagerduty.plugin:PagerDutyPlugin
    pivotal = sentry_plugins.pivotal.plugin:PivotalPlugin
    pushover = sentry_plugins.pushover.plugin:PushoverPlugin
    redmine = sentry_plugins.redmine.plugin:RedminePlugin
    segment = sentry_plugins.segment.plugin:SegmentPlugin
    sessionstack = sentry_plugins.sessionstack.plugin:SessionStackPlugin
    slack = sentry_plugins.slack.plugin:SlackPlugin
    splunk = sentry_plugins.splunk.plugin:SplunkPlugin
    trello = sentry_plugins.trello.plugin:TrelloPlugin
    twilio = sentry_plugins.twilio.plugin:TwilioPlugin
    victorops = sentry_plugins.victorops.plugin:VictorOpsPlugin

[options.package_data]
sentry =
    static/sentry/dist/**
    static/sentry/images/**
    static/sentry/js/**
    static/sentry/vendor/**

[options.exclude_package_data]
sentry =
    static/sentry/app/**
    static/sentry/fonts/**
    static/sentry/less/**

[flake8]
# File filtering is taken care of in pre-commit.
# E203 false positive, see https://github.com/PyCQA/pycodestyle/issues/373
# B011 We don't use PYTHONOPTIMIZE.

# XXX: E501 is ignored, which disables line length checking.
# Currently, the black formatter doesn't wrap long strings: https://github.com/psf/black/issues/182#issuecomment-385325274
# We already have a lot of E501's - these are lines black didn't wrap.
# But rather than append # noqa: E501 to all of them, we just ignore E501 for now.
extend-ignore = E203,E501,E402,E731,B007,B009,B010,B011,B020,B023,B024,B026,B027

per-file-ignores =
    # these scripts must have minimal dependencies so opt out of the usual sentry rules
    .github/*: S
    devenv/sync.py: S
    src/sentry/build/*: S
    tools/*: S
    # testing the options manager itself
    src/sentry/testutils/helpers/options.py, tests/sentry/options/test_manager.py: S011

[flake8:local-plugins]
paths = .
extension =
    S=tools.flake8_plugin:SentryCheck

[coverage:run]
omit =
    src/sentry/migrations/*
plugins =
    covdefaults
    sentry_covdefaults_disable_branch_coverage

[coverage:report]
# Setting this to 0 makes it falsy, and it gets ignored, so we set it to
# a value we'll never fall below. (0 is the default, but it's changed to 100 by
# covdefaults, so this just changes it back.)
fail_under = 0.01