diff --git a/src/sentry/api/bases/external_actor.py b/src/sentry/api/bases/external_actor.py index c3dd50ba9f740d..9a0463e1d075e3 100644 --- a/src/sentry/api/bases/external_actor.py +++ b/src/sentry/api/bases/external_actor.py @@ -16,13 +16,14 @@ validate_integration_id, ) from sentry.api.validators.integrations import validate_provider +from sentry.integrations.types import ExternalProviders +from sentry.integrations.utils.providers import get_provider_choices from sentry.models.integrations.external_actor import ExternalActor from sentry.models.organization import Organization from sentry.models.team import Team from sentry.services.hybrid_cloud.organization import organization_service from sentry.services.hybrid_cloud.user import RpcUser from sentry.services.hybrid_cloud.user.service import user_service -from sentry.types.integrations import ExternalProviders, get_provider_choices AVAILABLE_PROVIDERS = { ExternalProviders.GITHUB, diff --git a/src/sentry/api/endpoints/user_notification_settings_providers.py b/src/sentry/api/endpoints/user_notification_settings_providers.py index 478e0716dfa590..77ea107ee78d8e 100644 --- a/src/sentry/api/endpoints/user_notification_settings_providers.py +++ b/src/sentry/api/endpoints/user_notification_settings_providers.py @@ -10,12 +10,12 @@ from sentry.api.exceptions import ParameterValidationError from sentry.api.serializers import serialize from sentry.api.validators.notifications import validate_type +from sentry.integrations.types import PERSONAL_NOTIFICATION_PROVIDERS from sentry.models.notificationsettingprovider import NotificationSettingProvider from sentry.models.user import User from sentry.notifications.serializers import NotificationSettingsProviderSerializer from sentry.notifications.types import NotificationSettingsOptionEnum from sentry.notifications.validators import UserNotificationSettingsProvidersDetailsSerializer -from sentry.types.integrations import PERSONAL_NOTIFICATION_PROVIDERS @control_silo_endpoint diff --git a/src/sentry/api/serializers/models/external_actor.py b/src/sentry/api/serializers/models/external_actor.py index 7712401e54da8b..22e4d1ad75f681 100644 --- a/src/sentry/api/serializers/models/external_actor.py +++ b/src/sentry/api/serializers/models/external_actor.py @@ -2,9 +2,9 @@ from typing import Any, TypedDict from sentry.api.serializers import Serializer, register +from sentry.integrations.utils.providers import get_provider_string from sentry.models.integrations.external_actor import ExternalActor from sentry.models.user import User -from sentry.types.integrations import get_provider_string class ExternalActorResponseOptional(TypedDict, total=False): diff --git a/src/sentry/api/validators/external_actor.py b/src/sentry/api/validators/external_actor.py index bad9753144b88b..93853b58c18794 100644 --- a/src/sentry/api/validators/external_actor.py +++ b/src/sentry/api/validators/external_actor.py @@ -4,9 +4,9 @@ from sentry.api.exceptions import ParameterValidationError from sentry.api.validators.integrations import validate_provider +from sentry.integrations.types import ExternalProviders from sentry.models.organization import Organization from sentry.services.hybrid_cloud.integration import integration_service -from sentry.types.integrations import ExternalProviders EXTERNAL_ID_LENGTH_MIN = 1 EXTERNAL_ID_LENGTH_MAX = 64 diff --git a/src/sentry/api/validators/integrations.py b/src/sentry/api/validators/integrations.py index 7baba4f6cf3851..911d0ec51af59e 100644 --- a/src/sentry/api/validators/integrations.py +++ b/src/sentry/api/validators/integrations.py @@ -1,5 +1,6 @@ from sentry.api.exceptions import ParameterValidationError -from sentry.types.integrations import ExternalProviders, get_provider_enum +from sentry.integrations.types import ExternalProviders +from sentry.integrations.utils.providers import get_provider_enum def validate_provider( diff --git a/src/sentry/api/validators/project_codeowners.py b/src/sentry/api/validators/project_codeowners.py index 1581e52afdeef8..bdc623a14818ea 100644 --- a/src/sentry/api/validators/project_codeowners.py +++ b/src/sentry/api/validators/project_codeowners.py @@ -5,6 +5,7 @@ from django.db.models import Subquery +from sentry.integrations.types import ExternalProviders from sentry.models.integrations.external_actor import ExternalActor from sentry.models.organizationmember import OrganizationMember from sentry.models.organizationmemberteam import OrganizationMemberTeam @@ -12,7 +13,6 @@ from sentry.models.team import Team from sentry.ownership.grammar import parse_code_owners from sentry.services.hybrid_cloud.user.service import user_service -from sentry.types.integrations import ExternalProviders def validate_association_emails( diff --git a/src/sentry/digests/utils.py b/src/sentry/digests/utils.py index a7d12aaf9c409b..0b3d62bab94cd6 100644 --- a/src/sentry/digests/utils.py +++ b/src/sentry/digests/utils.py @@ -9,6 +9,7 @@ from sentry.digests import Digest, Record from sentry.eventstore.models import Event +from sentry.integrations.types import ExternalProviders from sentry.models.group import Group from sentry.models.project import Project from sentry.models.projectownership import ProjectOwnership @@ -17,7 +18,6 @@ from sentry.notifications.types import ActionTargetType, FallthroughChoiceType from sentry.notifications.utils.participants import get_send_to from sentry.types.actor import Actor -from sentry.types.integrations import ExternalProviders def get_digest_metadata( diff --git a/src/sentry/incidents/action_handlers.py b/src/sentry/incidents/action_handlers.py index 962c6f9abd4bc0..e407dfc9c78525 100644 --- a/src/sentry/incidents/action_handlers.py +++ b/src/sentry/incidents/action_handlers.py @@ -16,6 +16,7 @@ from sentry.incidents.charts import build_metric_alert_chart from sentry.incidents.models.alert_rule import AlertRuleThresholdType, AlertRuleTriggerAction from sentry.incidents.models.incident import INCIDENT_STATUS, IncidentStatus, TriggerStatus +from sentry.integrations.types import ExternalProviders from sentry.models.rulesnooze import RuleSnooze from sentry.models.user import User from sentry.notifications.types import NotificationSettingEnum @@ -25,7 +26,6 @@ from sentry.services.hybrid_cloud.user_option import RpcUserOption, user_option_service from sentry.snuba.metrics import format_mri_field, is_mri_field from sentry.types.actor import Actor, ActorType -from sentry.types.integrations import ExternalProviders from sentry.utils.email import MessageBuilder, get_email_addresses diff --git a/src/sentry/integrations/discord/message_builder/issues.py b/src/sentry/integrations/discord/message_builder/issues.py index 67a208674a9c6f..cc89abcd781636 100644 --- a/src/sentry/integrations/discord/message_builder/issues.py +++ b/src/sentry/integrations/discord/message_builder/issues.py @@ -17,11 +17,11 @@ get_color, get_title_link, ) +from sentry.integrations.types import ExternalProviders from sentry.models.group import Group, GroupStatus from sentry.models.project import Project from sentry.models.rule import Rule from sentry.notifications.notifications.base import ProjectNotification -from sentry.types.integrations import ExternalProviders from ..message_builder.base.component import DiscordComponentCustomIds as CustomIds diff --git a/src/sentry/integrations/discord/views/link_identity.py b/src/sentry/integrations/discord/views/link_identity.py index f85ed85ae7f66f..90f100aa3cdc1a 100644 --- a/src/sentry/integrations/discord/views/link_identity.py +++ b/src/sentry/integrations/discord/views/link_identity.py @@ -5,11 +5,11 @@ from django.views.decorators.cache import never_cache from sentry import analytics +from sentry.integrations.types import ExternalProviders from sentry.integrations.utils.identities import get_identity_or_404 from sentry.models.identity import Identity from sentry.services.hybrid_cloud.integration.model import RpcIntegration from sentry.types.actor import ActorType -from sentry.types.integrations import ExternalProviders from sentry.utils.http import absolute_uri from sentry.utils.signing import sign, unsign from sentry.web.frontend.base import BaseView, control_silo_view diff --git a/src/sentry/integrations/discord/views/unlink_identity.py b/src/sentry/integrations/discord/views/unlink_identity.py index 329ab4a5c2f572..302bca5be77124 100644 --- a/src/sentry/integrations/discord/views/unlink_identity.py +++ b/src/sentry/integrations/discord/views/unlink_identity.py @@ -6,11 +6,11 @@ from django.views.decorators.cache import never_cache from sentry import analytics +from sentry.integrations.types import ExternalProviders from sentry.integrations.utils.identities import get_identity_or_404 from sentry.models.identity import Identity from sentry.services.hybrid_cloud.integration.model import RpcIntegration from sentry.types.actor import ActorType -from sentry.types.integrations import ExternalProviders from sentry.utils.http import absolute_uri from sentry.utils.signing import sign, unsign from sentry.web.frontend.base import BaseView, control_silo_view diff --git a/src/sentry/integrations/github/client.py b/src/sentry/integrations/github/client.py index 275b7f99aaa75b..2dc83f527caf6a 100644 --- a/src/sentry/integrations/github/client.py +++ b/src/sentry/integrations/github/client.py @@ -17,6 +17,7 @@ ) from sentry.integrations.github.utils import get_jwt, get_next_link from sentry.integrations.mixins.commit_context import FileBlameInfo, SourceLineInfo +from sentry.integrations.types import EXTERNAL_PROVIDERS, ExternalProviders from sentry.integrations.utils.code_mapping import ( MAX_CONNECTION_ERRORS, Repo, @@ -31,7 +32,6 @@ from sentry.shared_integrations.client.proxy import IntegrationProxyClient from sentry.shared_integrations.exceptions import ApiError, ApiRateLimitedError from sentry.shared_integrations.response.mapping import MappingApiResponse -from sentry.types.integrations import EXTERNAL_PROVIDERS, ExternalProviders from sentry.utils import metrics from sentry.utils.cache import cache diff --git a/src/sentry/integrations/issue_alert_image_builder.py b/src/sentry/integrations/issue_alert_image_builder.py index 98379ad971810e..b3ce7e1ec79952 100644 --- a/src/sentry/integrations/issue_alert_image_builder.py +++ b/src/sentry/integrations/issue_alert_image_builder.py @@ -9,6 +9,7 @@ get_approx_start_time, get_relative_time, ) +from sentry.integrations.types import ExternalProviderEnum from sentry.issues.grouptype import ( PerformanceP95EndpointRegressionGroupType, ProfileFunctionRegressionType, @@ -16,7 +17,6 @@ from sentry.models.apikey import ApiKey from sentry.models.group import Group from sentry.snuba.referrer import Referrer -from sentry.types.integrations import ExternalProviderEnum from sentry.utils import metrics from sentry.utils.performance_issues.detectors.utils import escape_transaction diff --git a/src/sentry/integrations/jira/integration.py b/src/sentry/integrations/jira/integration.py index 52d9678ee2bbfe..65961b7b6536f6 100644 --- a/src/sentry/integrations/jira/integration.py +++ b/src/sentry/integrations/jira/integration.py @@ -37,7 +37,7 @@ IntegrationError, IntegrationFormError, ) -from sentry.tasks.integrations import migrate_issues +from sentry.tasks.integrations.migrate_issues import migrate_issues from sentry.utils.strings import truncatechars from .client import JiraCloudClient diff --git a/src/sentry/integrations/jira_server/integration.py b/src/sentry/integrations/jira_server/integration.py index 98d885564ac8a5..2963e7a01b01a9 100644 --- a/src/sentry/integrations/jira_server/integration.py +++ b/src/sentry/integrations/jira_server/integration.py @@ -44,7 +44,7 @@ IntegrationError, IntegrationFormError, ) -from sentry.tasks.integrations import migrate_issues +from sentry.tasks.integrations.migrate_issues import migrate_issues from sentry.utils.hashlib import sha1_text from sentry.utils.http import absolute_uri from sentry.web.helpers import render_to_response diff --git a/src/sentry/integrations/message_builder.py b/src/sentry/integrations/message_builder.py index a688b4690ffd50..e83a9f97a2b418 100644 --- a/src/sentry/integrations/message_builder.py +++ b/src/sentry/integrations/message_builder.py @@ -6,6 +6,7 @@ from sentry import features from sentry.eventstore.models import GroupEvent from sentry.integrations.slack.message_builder import LEVEL_TO_COLOR, SLACK_URL_FORMAT +from sentry.integrations.types import EXTERNAL_PROVIDERS, ExternalProviders from sentry.issues.grouptype import GroupCategory from sentry.models.environment import Environment from sentry.models.group import Group @@ -15,7 +16,6 @@ from sentry.notifications.notifications.base import BaseNotification from sentry.notifications.notifications.rules import AlertRuleNotification from sentry.services.hybrid_cloud.user import RpcUser -from sentry.types.integrations import EXTERNAL_PROVIDERS, ExternalProviders from sentry.utils.http import absolute_uri diff --git a/src/sentry/integrations/msteams/card_builder/notifications.py b/src/sentry/integrations/msteams/card_builder/notifications.py index 901630a316ed0c..26e0b23f3c5020 100644 --- a/src/sentry/integrations/msteams/card_builder/notifications.py +++ b/src/sentry/integrations/msteams/card_builder/notifications.py @@ -11,11 +11,11 @@ from sentry.integrations.msteams.card_builder import MSTEAMS_URL_FORMAT from sentry.integrations.msteams.card_builder.base import MSTeamsMessageBuilder from sentry.integrations.msteams.card_builder.block import OpenUrlAction +from sentry.integrations.types import ExternalProviders from sentry.notifications.notifications.activity.base import GroupActivityNotification from sentry.notifications.notifications.base import BaseNotification from sentry.notifications.utils.actions import MessageAction from sentry.types.actor import Actor -from sentry.types.integrations import ExternalProviders from .block import ( Action, diff --git a/src/sentry/integrations/msteams/link_identity.py b/src/sentry/integrations/msteams/link_identity.py index 058b4aed06a89c..c3ffeebd321cac 100644 --- a/src/sentry/integrations/msteams/link_identity.py +++ b/src/sentry/integrations/msteams/link_identity.py @@ -5,9 +5,9 @@ from django.views.decorators.cache import never_cache from rest_framework.request import Request +from sentry.integrations.types import ExternalProviders from sentry.integrations.utils import get_identity_or_404 from sentry.models.identity import Identity -from sentry.types.integrations import ExternalProviders from sentry.utils.http import absolute_uri from sentry.utils.signing import sign, unsign from sentry.web.frontend.base import BaseView, control_silo_view diff --git a/src/sentry/integrations/msteams/notifications.py b/src/sentry/integrations/msteams/notifications.py index 8cb567ae54d432..328049488fbfce 100644 --- a/src/sentry/integrations/msteams/notifications.py +++ b/src/sentry/integrations/msteams/notifications.py @@ -9,6 +9,7 @@ from sentry.integrations.msteams.card_builder.block import AdaptiveCard from sentry.integrations.msteams.utils import get_user_conversation_id from sentry.integrations.notifications import get_context, get_integrations_by_channel_by_recipient +from sentry.integrations.types import ExternalProviders from sentry.models.team import Team from sentry.models.user import User from sentry.notifications.notifications.activity.assigned import AssignedActivityNotification @@ -25,7 +26,6 @@ from sentry.notifications.notifications.rules import AlertRuleNotification from sentry.notifications.notify import register_notification_provider from sentry.types.actor import Actor -from sentry.types.integrations import ExternalProviders from sentry.utils import metrics from .card_builder.notifications import ( diff --git a/src/sentry/integrations/notifications.py b/src/sentry/integrations/notifications.py index 82f22be1706c57..c81c3f2d2d8da8 100644 --- a/src/sentry/integrations/notifications.py +++ b/src/sentry/integrations/notifications.py @@ -5,6 +5,7 @@ from typing import Any from sentry.constants import ObjectStatus +from sentry.integrations.types import EXTERNAL_PROVIDERS, ExternalProviders from sentry.models.integrations.external_actor import ExternalActor from sentry.models.organization import Organization from sentry.models.team import Team @@ -13,7 +14,6 @@ from sentry.services.hybrid_cloud.integration import RpcIntegration, integration_service from sentry.services.hybrid_cloud.user import RpcUser from sentry.types.actor import Actor -from sentry.types.integrations import EXTERNAL_PROVIDERS, ExternalProviders def get_context( diff --git a/src/sentry/integrations/pagerduty/actions/form.py b/src/sentry/integrations/pagerduty/actions/form.py index 942bcbbd0918f1..719616b4a27fe4 100644 --- a/src/sentry/integrations/pagerduty/actions/form.py +++ b/src/sentry/integrations/pagerduty/actions/form.py @@ -6,8 +6,8 @@ from django import forms from django.utils.translation import gettext_lazy as _ +from sentry.integrations.types import ExternalProviders from sentry.services.hybrid_cloud.integration import integration_service -from sentry.types.integrations import ExternalProviders def _validate_int_field(field: str, cleaned_data: Mapping[str, Any]) -> int | None: diff --git a/src/sentry/integrations/slack/client.py b/src/sentry/integrations/slack/client.py index 92304b50bdc506..e51ecce7e87aae 100644 --- a/src/sentry/integrations/slack/client.py +++ b/src/sentry/integrations/slack/client.py @@ -9,10 +9,10 @@ from sentry.constants import ObjectStatus from sentry.db.postgres.transactions import in_test_hide_transaction_boundary from sentry.integrations.client import ApiClient +from sentry.integrations.types import EXTERNAL_PROVIDERS, ExternalProviders from sentry.services.hybrid_cloud.integration import integration_service from sentry.shared_integrations.client import BaseApiResponse from sentry.shared_integrations.exceptions import ApiError -from sentry.types.integrations import EXTERNAL_PROVIDERS, ExternalProviders from sentry.utils import json, metrics SLACK_DATADOG_METRIC = "integrations.slack.http_response" diff --git a/src/sentry/integrations/slack/message_builder/image_block_builder.py b/src/sentry/integrations/slack/message_builder/image_block_builder.py index c82a1f8b0a6702..969fb1fdd94c8b 100644 --- a/src/sentry/integrations/slack/message_builder/image_block_builder.py +++ b/src/sentry/integrations/slack/message_builder/image_block_builder.py @@ -2,12 +2,12 @@ from sentry.integrations.issue_alert_image_builder import IssueAlertImageBuilder from sentry.integrations.slack.message_builder import SlackBlock from sentry.integrations.slack.message_builder.base.block import BlockSlackMessageBuilder +from sentry.integrations.types import ExternalProviderEnum from sentry.issues.grouptype import ( PerformanceP95EndpointRegressionGroupType, ProfileFunctionRegressionType, ) from sentry.models.group import Group -from sentry.types.integrations import ExternalProviderEnum IMAGE_ALT = { PerformanceP95EndpointRegressionGroupType: "P95(transaction.duration)", diff --git a/src/sentry/integrations/slack/message_builder/issues.py b/src/sentry/integrations/slack/message_builder/issues.py index 89e187a1b4540d..9d846820fea928 100644 --- a/src/sentry/integrations/slack/message_builder/issues.py +++ b/src/sentry/integrations/slack/message_builder/issues.py @@ -34,6 +34,7 @@ from sentry.integrations.slack.message_builder.image_block_builder import ImageBlockBuilder from sentry.integrations.slack.message_builder.time_utils import get_approx_start_time, time_since from sentry.integrations.slack.utils.escape import escape_slack_markdown_text, escape_slack_text +from sentry.integrations.types import ExternalProviders from sentry.issues.grouptype import ( GroupCategory, PerformanceP95EndpointRegressionGroupType, @@ -59,7 +60,6 @@ from sentry.snuba.referrer import Referrer from sentry.types.actor import Actor from sentry.types.group import SUBSTATUS_TO_STR -from sentry.types.integrations import ExternalProviders STATUSES = {"resolved": "resolved", "ignored": "ignored", "unresolved": "re-opened"} SUPPORTED_COMMIT_PROVIDERS = ( diff --git a/src/sentry/integrations/slack/message_builder/notifications/base.py b/src/sentry/integrations/slack/message_builder/notifications/base.py index 9640fccef7077f..91a8ccd4276cd8 100644 --- a/src/sentry/integrations/slack/message_builder/notifications/base.py +++ b/src/sentry/integrations/slack/message_builder/notifications/base.py @@ -8,9 +8,9 @@ from sentry.integrations.slack.message_builder import SlackBlock from sentry.integrations.slack.message_builder.base.block import BlockSlackMessageBuilder from sentry.integrations.slack.utils.escape import escape_slack_text +from sentry.integrations.types import ExternalProviders from sentry.notifications.notifications.base import BaseNotification from sentry.types.actor import Actor -from sentry.types.integrations import ExternalProviders class SlackNotificationsMessageBuilder(BlockSlackMessageBuilder): diff --git a/src/sentry/integrations/slack/message_builder/notifications/daily_summary.py b/src/sentry/integrations/slack/message_builder/notifications/daily_summary.py index 2e175d56529b3f..abee636aede790 100644 --- a/src/sentry/integrations/slack/message_builder/notifications/daily_summary.py +++ b/src/sentry/integrations/slack/message_builder/notifications/daily_summary.py @@ -11,12 +11,12 @@ from sentry.integrations.message_builder import build_attachment_text, build_attachment_title from sentry.integrations.slack.message_builder import SlackBlock from sentry.integrations.slack.utils.escape import escape_slack_text +from sentry.integrations.types import ExternalProviders from sentry.models.project import Project from sentry.models.release import Release from sentry.notifications.notifications.base import BaseNotification from sentry.tasks.summaries.utils import COMPARISON_PERIOD from sentry.types.actor import Actor -from sentry.types.integrations import ExternalProviders from sentry.utils.http import absolute_uri from .base import SlackNotificationsMessageBuilder diff --git a/src/sentry/integrations/slack/notifications.py b/src/sentry/integrations/slack/notifications.py index 0bdcd242bc360e..2fd6f20c1694f3 100644 --- a/src/sentry/integrations/slack/notifications.py +++ b/src/sentry/integrations/slack/notifications.py @@ -13,6 +13,7 @@ from sentry.integrations.slack.message_builder import SlackBlock from sentry.integrations.slack.message_builder.base.block import BlockSlackMessageBuilder from sentry.integrations.slack.message_builder.notifications import get_message_builder +from sentry.integrations.types import ExternalProviders from sentry.models.integrations.integration import Integration from sentry.notifications.additional_attachment_manager import get_additional_attachment from sentry.notifications.notifications.base import BaseNotification @@ -21,7 +22,6 @@ from sentry.silo.base import SiloMode from sentry.tasks.integrations.slack import post_message, post_message_control from sentry.types.actor import Actor -from sentry.types.integrations import ExternalProviders from sentry.utils import metrics logger = logging.getLogger("sentry.notifications") diff --git a/src/sentry/integrations/slack/service.py b/src/sentry/integrations/slack/service.py index 46abfcd0be9bf9..e379143acf1b6d 100644 --- a/src/sentry/integrations/slack/service.py +++ b/src/sentry/integrations/slack/service.py @@ -15,6 +15,7 @@ AssignedActivityNotification, ExternalIssueCreatedActivityNotification, ) +from sentry.integrations.types import ExternalProviderEnum from sentry.integrations.utils.common import get_active_integration_for_organization from sentry.models.activity import Activity from sentry.models.options.organization_option import OrganizationOption @@ -31,7 +32,6 @@ from sentry.notifications.notifications.activity.unassigned import UnassignedActivityNotification from sentry.notifications.notifications.activity.unresolved import UnresolvedActivityNotification from sentry.types.activity import ActivityType -from sentry.types.integrations import ExternalProviderEnum _default_logger = getLogger(__name__) diff --git a/src/sentry/integrations/slack/views/link_identity.py b/src/sentry/integrations/slack/views/link_identity.py index 991535a5a1c232..5388e76acf2a94 100644 --- a/src/sentry/integrations/slack/views/link_identity.py +++ b/src/sentry/integrations/slack/views/link_identity.py @@ -3,12 +3,12 @@ from django.utils.decorators import method_decorator from rest_framework.request import Request +from sentry.integrations.types import ExternalProviderEnum, ExternalProviders from sentry.integrations.utils import get_identity_or_404 from sentry.models.identity import Identity from sentry.notifications.notificationcontroller import NotificationController from sentry.notifications.notifications.integration_nudge import IntegrationNudgeNotification from sentry.services.hybrid_cloud.integration.model import RpcIntegration -from sentry.types.integrations import ExternalProviderEnum, ExternalProviders from sentry.utils.signing import unsign from sentry.web.frontend.base import BaseView, control_silo_view from sentry.web.helpers import render_to_response diff --git a/src/sentry/integrations/slack/views/link_team.py b/src/sentry/integrations/slack/views/link_team.py index bf55159a2e11ec..b5b2c04a18a954 100644 --- a/src/sentry/integrations/slack/views/link_team.py +++ b/src/sentry/integrations/slack/views/link_team.py @@ -11,6 +11,7 @@ from rest_framework.request import Request from sentry import analytics, features +from sentry.integrations.types import ExternalProviderEnum, ExternalProviders from sentry.models.integrations.external_actor import ExternalActor from sentry.models.integrations.integration import Integration from sentry.models.organizationmember import OrganizationMember @@ -19,7 +20,6 @@ from sentry.services.hybrid_cloud.identity import identity_service from sentry.services.hybrid_cloud.integration import RpcIntegration, integration_service from sentry.services.hybrid_cloud.notifications import notifications_service -from sentry.types.integrations import ExternalProviderEnum, ExternalProviders from sentry.utils.signing import unsign from sentry.web.frontend.base import BaseView, region_silo_view from sentry.web.helpers import render_to_response diff --git a/src/sentry/integrations/slack/views/unlink_identity.py b/src/sentry/integrations/slack/views/unlink_identity.py index 6d4ab26d2c35ef..fcf3fc19de3922 100644 --- a/src/sentry/integrations/slack/views/unlink_identity.py +++ b/src/sentry/integrations/slack/views/unlink_identity.py @@ -3,9 +3,9 @@ from django.http import Http404, HttpRequest, HttpResponse from django.utils.decorators import method_decorator +from sentry.integrations.types import ExternalProviders from sentry.integrations.utils import get_identity_or_404 from sentry.models.identity import Identity -from sentry.types.integrations import ExternalProviders from sentry.utils.signing import unsign from sentry.web.frontend.base import BaseView, control_silo_view from sentry.web.helpers import render_to_response diff --git a/src/sentry/integrations/slack/views/unlink_team.py b/src/sentry/integrations/slack/views/unlink_team.py index bf64652d1a9432..2ce4ac6c8d5cdc 100644 --- a/src/sentry/integrations/slack/views/unlink_team.py +++ b/src/sentry/integrations/slack/views/unlink_team.py @@ -5,12 +5,12 @@ from sentry.api.helpers.teams import is_team_admin from sentry.integrations.mixins import SUCCESS_UNLINKED_TEAM_MESSAGE, SUCCESS_UNLINKED_TEAM_TITLE +from sentry.integrations.types import EXTERNAL_PROVIDERS, ExternalProviders from sentry.models.integrations.external_actor import ExternalActor from sentry.models.integrations.integration import Integration from sentry.models.organizationmember import OrganizationMember from sentry.services.hybrid_cloud.identity import identity_service from sentry.services.hybrid_cloud.integration import integration_service -from sentry.types.integrations import EXTERNAL_PROVIDERS, ExternalProviders from sentry.utils.signing import unsign from sentry.web.frontend.base import BaseView, region_silo_view from sentry.web.helpers import render_to_response diff --git a/src/sentry/integrations/slack/webhooks/action.py b/src/sentry/integrations/slack/webhooks/action.py index 743080fe136703..1a7ae111e1107c 100644 --- a/src/sentry/integrations/slack/webhooks/action.py +++ b/src/sentry/integrations/slack/webhooks/action.py @@ -27,6 +27,7 @@ from sentry.integrations.slack.requests.base import SlackRequestError from sentry.integrations.slack.views.link_identity import build_linking_url from sentry.integrations.slack.views.unlink_identity import build_unlinking_url +from sentry.integrations.types import ExternalProviderEnum from sentry.integrations.utils.scope import bind_org_context_from_integration from sentry.models.activity import ActivityIntegration from sentry.models.group import Group @@ -38,7 +39,6 @@ from sentry.services.hybrid_cloud.organization import organization_service from sentry.services.hybrid_cloud.user import RpcUser from sentry.shared_integrations.exceptions import ApiError -from sentry.types.integrations import ExternalProviderEnum from ..utils import logger diff --git a/src/sentry/integrations/slack/webhooks/command.py b/src/sentry/integrations/slack/webhooks/command.py index 6f1367250f6a80..019171e2e58652 100644 --- a/src/sentry/integrations/slack/webhooks/command.py +++ b/src/sentry/integrations/slack/webhooks/command.py @@ -14,10 +14,10 @@ from sentry.integrations.slack.utils.auth import is_valid_role from sentry.integrations.slack.views.link_team import build_team_linking_url from sentry.integrations.slack.views.unlink_team import build_team_unlinking_url +from sentry.integrations.types import ExternalProviders from sentry.models.integrations.external_actor import ExternalActor from sentry.models.organization import Organization from sentry.models.organizationmember import OrganizationMember -from sentry.types.integrations import ExternalProviders from .base import SlackDMEndpoint diff --git a/src/sentry/integrations/utils/common.py b/src/sentry/integrations/utils/common.py index fd23196e293600..93714d9656e53d 100644 --- a/src/sentry/integrations/utils/common.py +++ b/src/sentry/integrations/utils/common.py @@ -1,8 +1,8 @@ import logging +from sentry.integrations.types import ExternalProviderEnum from sentry.models.organization import OrganizationStatus from sentry.services.hybrid_cloud.integration import RpcIntegration, integration_service -from sentry.types.integrations import ExternalProviderEnum _default_logger = logging.getLogger(__name__) diff --git a/src/sentry/integrations/utils/identities.py b/src/sentry/integrations/utils/identities.py index cc2b49a0e17498..38153db6e7c430 100644 --- a/src/sentry/integrations/utils/identities.py +++ b/src/sentry/integrations/utils/identities.py @@ -3,6 +3,7 @@ from django.http import Http404 from sentry.constants import ObjectStatus +from sentry.integrations.types import EXTERNAL_PROVIDERS, ExternalProviders from sentry.models.identity import Identity, IdentityProvider, IdentityStatus from sentry.models.integrations.integration import Integration from sentry.models.integrations.organization_integration import OrganizationIntegration @@ -10,7 +11,6 @@ from sentry.services.hybrid_cloud.organization import RpcOrganization, organization_service from sentry.services.hybrid_cloud.user.service import user_service from sentry.services.hybrid_cloud.util import control_silo_function -from sentry.types.integrations import EXTERNAL_PROVIDERS, ExternalProviders @control_silo_function diff --git a/src/sentry/mail/adapter.py b/src/sentry/mail/adapter.py index 1d19576e978354..2a8cc215e19e75 100644 --- a/src/sentry/mail/adapter.py +++ b/src/sentry/mail/adapter.py @@ -7,6 +7,7 @@ from sentry.digests import Digest from sentry.digests import get_option_key as get_digest_option_key from sentry.digests.notifications import event_to_record, unsplit_key +from sentry.integrations.types import ExternalProviders from sentry.models.options.project_option import ProjectOption from sentry.models.project import Project from sentry.notifications.notifications.activity import EMAIL_CLASSES_BY_TYPE @@ -22,7 +23,6 @@ from sentry.plugins.base.structs import Notification from sentry.tasks.digests import deliver_digest from sentry.types.actor import Actor, ActorType -from sentry.types.integrations import ExternalProviders from sentry.utils import metrics logger = logging.getLogger(__name__) diff --git a/src/sentry/mail/notifications.py b/src/sentry/mail/notifications.py index 7846d991ba780b..0b2b78888e92a1 100644 --- a/src/sentry/mail/notifications.py +++ b/src/sentry/mail/notifications.py @@ -9,6 +9,7 @@ from django.utils.encoding import force_str from sentry import options +from sentry.integrations.types import ExternalProviders from sentry.models.options.project_option import ProjectOption from sentry.models.project import Project from sentry.models.team import Team @@ -16,7 +17,6 @@ from sentry.notifications.notify import register_notification_provider from sentry.notifications.types import UnsubscribeContext from sentry.types.actor import Actor -from sentry.types.integrations import ExternalProviders from sentry.utils.email import MessageBuilder, group_id_to_email from sentry.utils.linksign import generate_signed_unsubscribe_link diff --git a/src/sentry/middleware/integrations/parsers/discord.py b/src/sentry/middleware/integrations/parsers/discord.py index 3330e23736aa09..285069c8308845 100644 --- a/src/sentry/middleware/integrations/parsers/discord.py +++ b/src/sentry/middleware/integrations/parsers/discord.py @@ -12,6 +12,7 @@ from sentry.integrations.discord.views.link_identity import DiscordLinkIdentityView from sentry.integrations.discord.views.unlink_identity import DiscordUnlinkIdentityView from sentry.integrations.discord.webhooks.base import DiscordInteractionsEndpoint +from sentry.integrations.types import EXTERNAL_PROVIDERS, ExternalProviders from sentry.middleware.integrations.parsers.base import ( BaseRequestParser, create_async_request_payload, @@ -20,7 +21,6 @@ from sentry.models.integrations import Integration from sentry.models.integrations.organization_integration import OrganizationIntegration from sentry.models.outbox import WebhookProviderIdentifier -from sentry.types.integrations import EXTERNAL_PROVIDERS, ExternalProviders from sentry.types.region import Region from sentry.web.frontend.discord_extension_configuration import DiscordExtensionConfigurationView diff --git a/src/sentry/middleware/integrations/parsers/github.py b/src/sentry/middleware/integrations/parsers/github.py index baa14228f15be5..45646396a131d5 100644 --- a/src/sentry/middleware/integrations/parsers/github.py +++ b/src/sentry/middleware/integrations/parsers/github.py @@ -11,12 +11,12 @@ GitHubIntegrationsWebhookEndpoint, get_github_external_id, ) +from sentry.integrations.types import EXTERNAL_PROVIDERS, ExternalProviders from sentry.middleware.integrations.parsers.base import BaseRequestParser from sentry.models.integrations.integration import Integration from sentry.models.integrations.organization_integration import OrganizationIntegration from sentry.models.outbox import WebhookProviderIdentifier from sentry.services.hybrid_cloud.util import control_silo_function -from sentry.types.integrations import EXTERNAL_PROVIDERS, ExternalProviders logger = logging.getLogger(__name__) diff --git a/src/sentry/middleware/integrations/parsers/gitlab.py b/src/sentry/middleware/integrations/parsers/gitlab.py index f8a0159aab6dc1..2552d5b8ffbe1a 100644 --- a/src/sentry/middleware/integrations/parsers/gitlab.py +++ b/src/sentry/middleware/integrations/parsers/gitlab.py @@ -8,13 +8,13 @@ from django.http.response import HttpResponseBase from sentry.integrations.gitlab.webhooks import GitlabWebhookEndpoint, GitlabWebhookMixin +from sentry.integrations.types import EXTERNAL_PROVIDERS, ExternalProviders from sentry.integrations.utils.scope import clear_tags_and_context from sentry.middleware.integrations.parsers.base import BaseRequestParser from sentry.models.integrations.integration import Integration from sentry.models.integrations.organization_integration import OrganizationIntegration from sentry.models.outbox import WebhookProviderIdentifier from sentry.services.hybrid_cloud.util import control_silo_function -from sentry.types.integrations import EXTERNAL_PROVIDERS, ExternalProviders from sentry.utils import metrics logger = logging.getLogger(__name__) diff --git a/src/sentry/middleware/integrations/parsers/msteams.py b/src/sentry/middleware/integrations/parsers/msteams.py index 27cd4469fa6dc5..fc688ba51b4ca8 100644 --- a/src/sentry/middleware/integrations/parsers/msteams.py +++ b/src/sentry/middleware/integrations/parsers/msteams.py @@ -14,12 +14,12 @@ MsTeamsWebhookEndpoint, MsTeamsWebhookMixin, ) +from sentry.integrations.types import EXTERNAL_PROVIDERS, ExternalProviders from sentry.middleware.integrations.parsers.base import BaseRequestParser from sentry.models.integrations.integration import Integration from sentry.models.integrations.organization_integration import OrganizationIntegration from sentry.models.outbox import WebhookProviderIdentifier from sentry.services.hybrid_cloud.util import control_silo_function -from sentry.types.integrations import EXTERNAL_PROVIDERS, ExternalProviders from sentry.types.region import Region, RegionResolutionError logger = logging.getLogger(__name__) diff --git a/src/sentry/middleware/integrations/parsers/slack.py b/src/sentry/middleware/integrations/parsers/slack.py index 93d79b57e8312f..6a5264c9cfce3f 100644 --- a/src/sentry/middleware/integrations/parsers/slack.py +++ b/src/sentry/middleware/integrations/parsers/slack.py @@ -24,11 +24,11 @@ from sentry.integrations.slack.webhooks.command import SlackCommandsEndpoint from sentry.integrations.slack.webhooks.event import SlackEventEndpoint from sentry.integrations.slack.webhooks.options_load import SlackOptionsLoadEndpoint +from sentry.integrations.types import EXTERNAL_PROVIDERS, ExternalProviders from sentry.middleware.integrations.tasks import convert_to_async_slack_response from sentry.models.integrations.integration import Integration from sentry.models.integrations.organization_integration import OrganizationIntegration from sentry.models.outbox import WebhookProviderIdentifier -from sentry.types.integrations import EXTERNAL_PROVIDERS, ExternalProviders from sentry.types.region import Region from sentry.utils.signing import unsign diff --git a/src/sentry/models/groupsubscription.py b/src/sentry/models/groupsubscription.py index 78dce75152aed3..1de9d6e841c70f 100644 --- a/src/sentry/models/groupsubscription.py +++ b/src/sentry/models/groupsubscription.py @@ -17,6 +17,7 @@ sane_repr, ) from sentry.db.models.fields.hybrid_cloud_foreign_key import HybridCloudForeignKey +from sentry.integrations.types import ExternalProviders from sentry.notifications.types import ( GroupSubscriptionReason, NotificationSettingEnum, @@ -25,7 +26,6 @@ from sentry.services.hybrid_cloud.notifications import notifications_service from sentry.services.hybrid_cloud.user import RpcUser from sentry.types.actor import Actor -from sentry.types.integrations import ExternalProviders if TYPE_CHECKING: from sentry.models.group import Group diff --git a/src/sentry/models/identity.py b/src/sentry/models/identity.py index bdd03fd144663a..2054042b705010 100644 --- a/src/sentry/models/identity.py +++ b/src/sentry/models/identity.py @@ -20,8 +20,8 @@ control_silo_model, ) from sentry.db.models.fields.jsonfield import JSONField +from sentry.integrations.types import ExternalProviders from sentry.services.hybrid_cloud.user import RpcUser -from sentry.types.integrations import ExternalProviders if TYPE_CHECKING: from sentry.identity.base import Provider diff --git a/src/sentry/models/integrations/__init__.py b/src/sentry/models/integrations/__init__.py index c5ea76a16da6b8..50cf56b3d7730d 100644 --- a/src/sentry/models/integrations/__init__.py +++ b/src/sentry/models/integrations/__init__.py @@ -16,7 +16,7 @@ ) # REQUIRED for migrations to run. -from sentry.types.integrations import ExternalProviders # NOQA +from sentry.integrations.types import ExternalProviders # NOQA from .doc_integration import DocIntegration from .external_actor import ExternalActor diff --git a/src/sentry/models/integrations/external_actor.py b/src/sentry/models/integrations/external_actor.py index 625ef184990a8d..6aa2f3efbbe769 100644 --- a/src/sentry/models/integrations/external_actor.py +++ b/src/sentry/models/integrations/external_actor.py @@ -9,10 +9,10 @@ from sentry.db.models import BoundedPositiveIntegerField, FlexibleForeignKey, region_silo_model from sentry.db.models.fields.hybrid_cloud_foreign_key import HybridCloudForeignKey from sentry.db.models.outboxes import ReplicatedRegionModel +from sentry.integrations.types import ExternalProviders from sentry.models.outbox import OutboxCategory from sentry.services.hybrid_cloud.notifications import notifications_service from sentry.services.hybrid_cloud.replica import control_replica_service -from sentry.types.integrations import ExternalProviders logger = logging.getLogger(__name__) diff --git a/src/sentry/models/notificationaction.py b/src/sentry/models/notificationaction.py index 75bbe5c71256a1..45560da7ed4b8a 100644 --- a/src/sentry/models/notificationaction.py +++ b/src/sentry/models/notificationaction.py @@ -12,9 +12,9 @@ from sentry.db.models import FlexibleForeignKey, Model, sane_repr from sentry.db.models.base import region_silo_model from sentry.db.models.fields.hybrid_cloud_foreign_key import HybridCloudForeignKey +from sentry.integrations.types import ExternalProviders from sentry.models.organization import Organization from sentry.services.hybrid_cloud.integration import RpcIntegration -from sentry.types.integrations import ExternalProviders logger = logging.getLogger(__name__) diff --git a/src/sentry/models/user.py b/src/sentry/models/user.py index 17d4c99b135836..e2e7444dae0b8e 100644 --- a/src/sentry/models/user.py +++ b/src/sentry/models/user.py @@ -38,6 +38,7 @@ sane_repr, ) from sentry.db.models.utils import unique_db_instance +from sentry.integrations.types import EXTERNAL_PROVIDERS, ExternalProviders from sentry.locks import locks from sentry.models.authenticator import Authenticator from sentry.models.avatars import UserAvatar @@ -47,7 +48,6 @@ from sentry.models.outbox import ControlOutboxBase, OutboxCategory, outbox_context from sentry.services.hybrid_cloud.organization import RpcRegionUser, organization_service from sentry.services.hybrid_cloud.user import RpcUser -from sentry.types.integrations import EXTERNAL_PROVIDERS, ExternalProviders from sentry.types.region import find_all_region_names, find_regions_for_user from sentry.utils.http import absolute_uri from sentry.utils.retries import TimedRetryPolicy diff --git a/src/sentry/notifications/additional_attachment_manager.py b/src/sentry/notifications/additional_attachment_manager.py index 1ec06f8735e1ea..c4e5fd1f185723 100644 --- a/src/sentry/notifications/additional_attachment_manager.py +++ b/src/sentry/notifications/additional_attachment_manager.py @@ -4,11 +4,11 @@ from sentry.api.validators.integrations import validate_provider from sentry.integrations.slack.message_builder import SlackAttachment +from sentry.integrations.types import ExternalProviders from sentry.models.integrations.integration import Integration from sentry.models.organization import Organization from sentry.services.hybrid_cloud.integration import RpcIntegration from sentry.services.hybrid_cloud.organization import RpcOrganization -from sentry.types.integrations import ExternalProviders GetAttachment = Callable[ [Integration | RpcIntegration, Organization | RpcOrganization], SlackAttachment diff --git a/src/sentry/notifications/defaults.py b/src/sentry/notifications/defaults.py index c92a40f70e37fa..220cfd886dd127 100644 --- a/src/sentry/notifications/defaults.py +++ b/src/sentry/notifications/defaults.py @@ -1,5 +1,5 @@ +from sentry.integrations.types import ExternalProviderEnum from sentry.notifications.types import NotificationSettingEnum, NotificationSettingsOptionEnum -from sentry.types.integrations import ExternalProviderEnum """ These mappings represents how to interpret the absence of a DB row for a given diff --git a/src/sentry/notifications/helpers.py b/src/sentry/notifications/helpers.py index 8ff6d744b6169b..4fa38a0cd45382 100644 --- a/src/sentry/notifications/helpers.py +++ b/src/sentry/notifications/helpers.py @@ -8,6 +8,8 @@ from django.db.models import Subquery from sentry.hybridcloud.models.externalactorreplica import ExternalActorReplica +from sentry.integrations.types import ExternalProviderEnum +from sentry.integrations.utils.providers import PERSONAL_NOTIFICATION_PROVIDERS_AS_INT from sentry.models.organizationmembermapping import OrganizationMemberMapping from sentry.models.organizationmemberteamreplica import OrganizationMemberTeamReplica from sentry.notifications.defaults import ( @@ -23,7 +25,6 @@ ) from sentry.services.hybrid_cloud.user.model import RpcUser from sentry.types.actor import Actor, ActorType -from sentry.types.integrations import PERSONAL_NOTIFICATION_PROVIDERS_AS_INT, ExternalProviderEnum if TYPE_CHECKING: from sentry.models.group import Group diff --git a/src/sentry/notifications/notificationcontroller.py b/src/sentry/notifications/notificationcontroller.py index 0043537410cb3a..e2b4aaa66c8e14 100644 --- a/src/sentry/notifications/notificationcontroller.py +++ b/src/sentry/notifications/notificationcontroller.py @@ -7,6 +7,12 @@ from django.db.models import Q from sentry import features +from sentry.integrations.types import ( + EXTERNAL_PROVIDERS_REVERSE_VALUES, + PERSONAL_NOTIFICATION_PROVIDERS, + ExternalProviderEnum, + ExternalProviders, +) from sentry.models.notificationsettingoption import NotificationSettingOption from sentry.models.notificationsettingprovider import NotificationSettingProvider from sentry.models.organizationmapping import OrganizationMapping @@ -29,12 +35,6 @@ from sentry.services.hybrid_cloud.organization_mapping.serial import serialize_organization_mapping from sentry.services.hybrid_cloud.user.model import RpcUser from sentry.types.actor import Actor, ActorType -from sentry.types.integrations import ( - EXTERNAL_PROVIDERS_REVERSE_VALUES, - PERSONAL_NOTIFICATION_PROVIDERS, - ExternalProviderEnum, - ExternalProviders, -) Recipient = Union[Actor, Team, RpcUser, User] TEAM_NOTIFICATION_PROVIDERS = [ExternalProviderEnum.SLACK] diff --git a/src/sentry/notifications/notifications/activity/assigned.py b/src/sentry/notifications/notifications/activity/assigned.py index d3fa56d45ce789..b8cb6c31bfe427 100644 --- a/src/sentry/notifications/notifications/activity/assigned.py +++ b/src/sentry/notifications/notifications/activity/assigned.py @@ -3,12 +3,12 @@ from collections.abc import Mapping from typing import Any +from sentry.integrations.types import ExternalProviders from sentry.models.activity import Activity from sentry.models.organization import Organization from sentry.models.team import Team from sentry.services.hybrid_cloud.user.model import RpcUser from sentry.services.hybrid_cloud.user.service import user_service -from sentry.types.integrations import ExternalProviders from .base import GroupActivityNotification diff --git a/src/sentry/notifications/notifications/activity/base.py b/src/sentry/notifications/notifications/activity/base.py index 8ea468c253c90b..f134311d3bcd5c 100644 --- a/src/sentry/notifications/notifications/activity/base.py +++ b/src/sentry/notifications/notifications/activity/base.py @@ -10,6 +10,7 @@ from django.utils.safestring import SafeString from sentry.db.models import Model +from sentry.integrations.types import ExternalProviders from sentry.notifications.helpers import get_reason_context from sentry.notifications.notifications.base import ProjectNotification from sentry.notifications.types import NotificationSettingEnum, UnsubscribeContext @@ -19,7 +20,6 @@ from sentry.services.hybrid_cloud.user import RpcUser from sentry.services.hybrid_cloud.user.service import user_service from sentry.types.actor import Actor -from sentry.types.integrations import ExternalProviders if TYPE_CHECKING: from sentry.models.activity import Activity diff --git a/src/sentry/notifications/notifications/activity/escalating.py b/src/sentry/notifications/notifications/activity/escalating.py index 9938ee9e61567d..5824f1aa76d3b8 100644 --- a/src/sentry/notifications/notifications/activity/escalating.py +++ b/src/sentry/notifications/notifications/activity/escalating.py @@ -3,8 +3,8 @@ from collections.abc import Mapping from typing import Any +from sentry.integrations.types import ExternalProviders from sentry.types.actor import Actor -from sentry.types.integrations import ExternalProviders from .base import GroupActivityNotification diff --git a/src/sentry/notifications/notifications/activity/new_processing_issues.py b/src/sentry/notifications/notifications/activity/new_processing_issues.py index 21620cd3fa69c9..4194a23cae1966 100644 --- a/src/sentry/notifications/notifications/activity/new_processing_issues.py +++ b/src/sentry/notifications/notifications/activity/new_processing_issues.py @@ -4,12 +4,12 @@ from typing import Any from urllib.parse import urlencode +from sentry.integrations.types import ExternalProviders from sentry.models.activity import Activity from sentry.notifications.types import GroupSubscriptionReason, NotificationSettingEnum from sentry.notifications.utils import summarize_issues from sentry.notifications.utils.participants import ParticipantMap, get_notification_recipients from sentry.types.actor import Actor, ActorType -from sentry.types.integrations import ExternalProviders from .base import ActivityNotification diff --git a/src/sentry/notifications/notifications/activity/note.py b/src/sentry/notifications/notifications/activity/note.py index b77556c672be5a..80c61ca0728f8a 100644 --- a/src/sentry/notifications/notifications/activity/note.py +++ b/src/sentry/notifications/notifications/activity/note.py @@ -6,9 +6,9 @@ from django.utils.html import format_html from django.utils.safestring import SafeString +from sentry.integrations.types import ExternalProviders from sentry.notifications.utils.avatar import avatar_as_html, get_user_avatar_url from sentry.types.actor import Actor -from sentry.types.integrations import ExternalProviders from .base import GroupActivityNotification diff --git a/src/sentry/notifications/notifications/activity/regression.py b/src/sentry/notifications/notifications/activity/regression.py index c5b7adbaedfb0b..0160d04d96441e 100644 --- a/src/sentry/notifications/notifications/activity/regression.py +++ b/src/sentry/notifications/notifications/activity/regression.py @@ -7,8 +7,8 @@ import orjson from sentry_relay.processing import parse_release +from sentry.integrations.types import ExternalProviders from sentry.models.activity import Activity -from sentry.types.integrations import ExternalProviders from .base import GroupActivityNotification diff --git a/src/sentry/notifications/notifications/activity/release.py b/src/sentry/notifications/notifications/activity/release.py index 14fa6b09663007..f5128bff43d4b5 100644 --- a/src/sentry/notifications/notifications/activity/release.py +++ b/src/sentry/notifications/notifications/activity/release.py @@ -7,6 +7,7 @@ import orjson from sentry_relay.processing import parse_release +from sentry.integrations.types import ExternalProviders from sentry.models.activity import Activity from sentry.models.commit import Commit from sentry.models.commitfilechange import CommitFileChange @@ -24,7 +25,6 @@ from sentry.notifications.utils.participants import ParticipantMap, get_participants_for_release from sentry.services.hybrid_cloud.user.service import user_service from sentry.types.actor import Actor -from sentry.types.integrations import ExternalProviders from .base import ActivityNotification diff --git a/src/sentry/notifications/notifications/activity/resolved_in_release.py b/src/sentry/notifications/notifications/activity/resolved_in_release.py index 09f3bbc38e9adc..757491c2ddf294 100644 --- a/src/sentry/notifications/notifications/activity/resolved_in_release.py +++ b/src/sentry/notifications/notifications/activity/resolved_in_release.py @@ -7,8 +7,8 @@ import orjson from sentry_relay.processing import parse_release +from sentry.integrations.types import ExternalProviders from sentry.models.activity import Activity -from sentry.types.integrations import ExternalProviders from .base import GroupActivityNotification diff --git a/src/sentry/notifications/notifications/activity/unassigned.py b/src/sentry/notifications/notifications/activity/unassigned.py index 8f798c0d970c15..55993bb2a76364 100644 --- a/src/sentry/notifications/notifications/activity/unassigned.py +++ b/src/sentry/notifications/notifications/activity/unassigned.py @@ -3,7 +3,7 @@ from collections.abc import Mapping from typing import Any -from sentry.types.integrations import ExternalProviders +from sentry.integrations.types import ExternalProviders from .base import GroupActivityNotification diff --git a/src/sentry/notifications/notifications/base.py b/src/sentry/notifications/notifications/base.py index bae6721118288c..ef429c547b0c67 100644 --- a/src/sentry/notifications/notifications/base.py +++ b/src/sentry/notifications/notifications/base.py @@ -10,11 +10,11 @@ from sentry import analytics from sentry.db.models import Model +from sentry.integrations.types import EXTERNAL_PROVIDERS, ExternalProviders from sentry.models.environment import Environment from sentry.notifications.types import FineTuningAPIKey, NotificationSettingEnum, UnsubscribeContext from sentry.notifications.utils.actions import MessageAction from sentry.types.actor import Actor -from sentry.types.integrations import EXTERNAL_PROVIDERS, ExternalProviders from sentry.utils.safe import safe_execute if TYPE_CHECKING: diff --git a/src/sentry/notifications/notifications/codeowners_auto_sync.py b/src/sentry/notifications/notifications/codeowners_auto_sync.py index 110643af8f62dd..c16129d0dda262 100644 --- a/src/sentry/notifications/notifications/codeowners_auto_sync.py +++ b/src/sentry/notifications/notifications/codeowners_auto_sync.py @@ -3,10 +3,10 @@ from collections.abc import Iterable, Mapping, MutableMapping from typing import TYPE_CHECKING, Any +from sentry.integrations.types import ExternalProviders from sentry.notifications.notifications.base import ProjectNotification from sentry.notifications.types import NotificationSettingEnum from sentry.types.actor import Actor -from sentry.types.integrations import ExternalProviders if TYPE_CHECKING: from sentry.db.models import Model diff --git a/src/sentry/notifications/notifications/daily_summary.py b/src/sentry/notifications/notifications/daily_summary.py index 42cde749301c7c..775fa20c168aa2 100644 --- a/src/sentry/notifications/notifications/daily_summary.py +++ b/src/sentry/notifications/notifications/daily_summary.py @@ -7,10 +7,10 @@ from django.urls import reverse from sentry.db.models import Model +from sentry.integrations.types import ExternalProviders from sentry.notifications.notifications.base import BaseNotification from sentry.tasks.summaries.utils import DailySummaryProjectContext from sentry.types.actor import Actor -from sentry.types.integrations import ExternalProviders if TYPE_CHECKING: from sentry.models.organization import Organization diff --git a/src/sentry/notifications/notifications/digest.py b/src/sentry/notifications/notifications/digest.py index 92c9f1f69a2b53..be187e522cfc72 100644 --- a/src/sentry/notifications/notifications/digest.py +++ b/src/sentry/notifications/notifications/digest.py @@ -16,6 +16,7 @@ should_get_personalized_digests, ) from sentry.eventstore.models import Event +from sentry.integrations.types import ExternalProviders from sentry.notifications.notifications.base import ProjectNotification from sentry.notifications.notify import notify from sentry.notifications.types import ActionTargetType, FallthroughChoiceType, UnsubscribeContext @@ -32,7 +33,6 @@ should_send_as_alert_notification, ) from sentry.types.actor import Actor -from sentry.types.integrations import ExternalProviders if TYPE_CHECKING: from sentry.models.organization import Organization diff --git a/src/sentry/notifications/notifications/integration_nudge.py b/src/sentry/notifications/notifications/integration_nudge.py index 15ab0ad8ffbeb5..db693556df54b5 100644 --- a/src/sentry/notifications/notifications/integration_nudge.py +++ b/src/sentry/notifications/notifications/integration_nudge.py @@ -6,10 +6,10 @@ from typing import TYPE_CHECKING, Any from sentry.db.models import Model +from sentry.integrations.types import ExternalProviders from sentry.notifications.notifications.base import BaseNotification from sentry.notifications.utils.actions import MessageAction from sentry.types.actor import Actor -from sentry.types.integrations import ExternalProviders if TYPE_CHECKING: from sentry.models.organization import Organization diff --git a/src/sentry/notifications/notifications/missing_members_nudge.py b/src/sentry/notifications/notifications/missing_members_nudge.py index 55e240f36cd03c..cdb92f80220d8c 100644 --- a/src/sentry/notifications/notifications/missing_members_nudge.py +++ b/src/sentry/notifications/notifications/missing_members_nudge.py @@ -4,6 +4,7 @@ from typing import Any from sentry.db.models.base import Model +from sentry.integrations.types import ExternalProviders from sentry.models.organization import Organization from sentry.notifications.notifications.base import BaseNotification from sentry.notifications.notifications.strategies.member_write_role_recipient_strategy import ( @@ -11,7 +12,6 @@ ) from sentry.notifications.types import NotificationSettingEnum from sentry.types.actor import Actor -from sentry.types.integrations import ExternalProviders PROVIDER_TO_URL = {"github": "https://github.com/"} diff --git a/src/sentry/notifications/notifications/organization_request/abstract_invite_request.py b/src/sentry/notifications/notifications/organization_request/abstract_invite_request.py index e42b81cc28ed99..ca7d436160139b 100644 --- a/src/sentry/notifications/notifications/organization_request/abstract_invite_request.py +++ b/src/sentry/notifications/notifications/organization_request/abstract_invite_request.py @@ -6,6 +6,7 @@ from django.urls import reverse +from sentry.integrations.types import ExternalProviders from sentry.models.organizationmember import OrganizationMember from sentry.notifications.notifications.organization_request import OrganizationRequestNotification from sentry.notifications.notifications.strategies.member_write_role_recipient_strategy import ( @@ -14,7 +15,6 @@ from sentry.notifications.utils.actions import MessageAction from sentry.services.hybrid_cloud.user.service import user_service from sentry.types.actor import Actor -from sentry.types.integrations import ExternalProviders if TYPE_CHECKING: from sentry.models.user import User diff --git a/src/sentry/notifications/notifications/organization_request/base.py b/src/sentry/notifications/notifications/organization_request/base.py index aa2d13efdbdc31..9cb120f067e741 100644 --- a/src/sentry/notifications/notifications/organization_request/base.py +++ b/src/sentry/notifications/notifications/organization_request/base.py @@ -6,13 +6,13 @@ from typing import TYPE_CHECKING, Any from sentry.db.models import Model +from sentry.integrations.types import ExternalProviders from sentry.notifications.notifications.base import BaseNotification from sentry.notifications.notifications.strategies.role_based_recipient_strategy import ( RoleBasedRecipientStrategy, ) from sentry.notifications.types import NotificationSettingEnum from sentry.types.actor import Actor -from sentry.types.integrations import ExternalProviders if TYPE_CHECKING: from sentry.models.organization import Organization diff --git a/src/sentry/notifications/notifications/organization_request/integration_request.py b/src/sentry/notifications/notifications/organization_request/integration_request.py index 94ca6956f188bc..8ccd37f0fbb117 100644 --- a/src/sentry/notifications/notifications/organization_request/integration_request.py +++ b/src/sentry/notifications/notifications/organization_request/integration_request.py @@ -3,6 +3,7 @@ from collections.abc import Mapping, MutableMapping, Sequence from typing import TYPE_CHECKING, Any +from sentry.integrations.types import ExternalProviders from sentry.notifications.class_manager import register from sentry.notifications.notifications.organization_request import OrganizationRequestNotification from sentry.notifications.notifications.strategies.owner_recipient_strategy import ( @@ -10,7 +11,6 @@ ) from sentry.notifications.utils.actions import MessageAction from sentry.types.actor import Actor -from sentry.types.integrations import ExternalProviders if TYPE_CHECKING: from sentry.models.organization import Organization diff --git a/src/sentry/notifications/notifications/organization_request/invite_request.py b/src/sentry/notifications/notifications/organization_request/invite_request.py index 0edce0fd2418dc..c94583c8c46239 100644 --- a/src/sentry/notifications/notifications/organization_request/invite_request.py +++ b/src/sentry/notifications/notifications/organization_request/invite_request.py @@ -1,8 +1,8 @@ from __future__ import annotations +from sentry.integrations.types import ExternalProviders from sentry.notifications.class_manager import register from sentry.types.actor import Actor -from sentry.types.integrations import ExternalProviders from .abstract_invite_request import AbstractInviteRequestNotification diff --git a/src/sentry/notifications/notifications/organization_request/join_request.py b/src/sentry/notifications/notifications/organization_request/join_request.py index 052283a535fc67..548dab49ae84e7 100644 --- a/src/sentry/notifications/notifications/organization_request/join_request.py +++ b/src/sentry/notifications/notifications/organization_request/join_request.py @@ -1,8 +1,8 @@ from __future__ import annotations +from sentry.integrations.types import ExternalProviders from sentry.notifications.class_manager import register from sentry.types.actor import Actor -from sentry.types.integrations import ExternalProviders from .abstract_invite_request import AbstractInviteRequestNotification diff --git a/src/sentry/notifications/notifications/rules.py b/src/sentry/notifications/notifications/rules.py index c402170395c3c6..8baefeb0751fba 100644 --- a/src/sentry/notifications/notifications/rules.py +++ b/src/sentry/notifications/notifications/rules.py @@ -10,6 +10,7 @@ from sentry import analytics, features from sentry.db.models import Model from sentry.eventstore.models import GroupEvent +from sentry.integrations.types import ExternalProviders from sentry.issues.grouptype import GROUP_CATEGORIES_CUSTOM_EMAIL, GroupCategory from sentry.models.group import Group from sentry.notifications.notifications.base import ProjectNotification @@ -38,7 +39,6 @@ from sentry.services.hybrid_cloud.user_option.service import get_option_from_list from sentry.types.actor import Actor from sentry.types.group import GroupSubStatus -from sentry.types.integrations import ExternalProviders from sentry.utils import metrics from sentry.utils.http import absolute_uri diff --git a/src/sentry/notifications/notifications/user_report.py b/src/sentry/notifications/notifications/user_report.py index 2807aa24172544..b1b68ee6ca1501 100644 --- a/src/sentry/notifications/notifications/user_report.py +++ b/src/sentry/notifications/notifications/user_report.py @@ -7,6 +7,7 @@ from django.utils.encoding import force_str from sentry.db.models import Model +from sentry.integrations.types import ExternalProviders from sentry.models.group import Group from sentry.models.groupsubscription import GroupSubscription from sentry.notifications.helpers import get_reason_context @@ -14,7 +15,6 @@ from sentry.notifications.utils import send_activity_notification from sentry.notifications.utils.participants import ParticipantMap from sentry.types.actor import Actor -from sentry.types.integrations import ExternalProviders if TYPE_CHECKING: from sentry.models.project import Project diff --git a/src/sentry/notifications/notify.py b/src/sentry/notifications/notify.py index fef0dca493a9c2..30c0b7c8ea2fd4 100644 --- a/src/sentry/notifications/notify.py +++ b/src/sentry/notifications/notify.py @@ -3,9 +3,9 @@ from collections.abc import Callable, Iterable, Mapping, MutableMapping from typing import Any, Optional, TypeVar +from sentry.integrations.types import ExternalProviders from sentry.notifications.notifications.base import BaseNotification from sentry.types.actor import Actor -from sentry.types.integrations import ExternalProviders # Shortcut so that types don't explode. NotifyCallable = Callable[ diff --git a/src/sentry/notifications/utils/participants.py b/src/sentry/notifications/utils/participants.py index a40601d977dfae..705b080f28261f 100644 --- a/src/sentry/notifications/utils/participants.py +++ b/src/sentry/notifications/utils/participants.py @@ -8,6 +8,8 @@ from django.db.models import Q from sentry import features +from sentry.integrations.types import ExternalProviders +from sentry.integrations.utils.providers import get_provider_enum_from_string from sentry.models.commit import Commit from sentry.models.group import Group from sentry.models.groupassignee import GroupAssignee @@ -34,7 +36,6 @@ from sentry.services.hybrid_cloud.user.service import user_service from sentry.services.hybrid_cloud.user_option import get_option_from_list, user_option_service from sentry.types.actor import Actor, ActorType -from sentry.types.integrations import ExternalProviders, get_provider_enum_from_string from sentry.utils import json, metrics from sentry.utils.committers import AuthorCommitsSerialized, get_serialized_event_file_committers diff --git a/src/sentry/notifications/validators.py b/src/sentry/notifications/validators.py index cc356a98055c5f..106c847fa8ad8c 100644 --- a/src/sentry/notifications/validators.py +++ b/src/sentry/notifications/validators.py @@ -3,8 +3,8 @@ from sentry.api.exceptions import ParameterValidationError from sentry.api.serializers.rest_framework.base import CamelSnakeSerializer from sentry.api.validators.notifications import validate_scope_type, validate_type, validate_value +from sentry.integrations.types import PERSONAL_NOTIFICATION_PROVIDERS from sentry.notifications.types import NOTIFICATION_SETTING_CHOICES, NotificationScopeEnum -from sentry.types.integrations import PERSONAL_NOTIFICATION_PROVIDERS class UserNotificationSettingsOptionsDetailsSerializer(CamelSnakeSerializer): diff --git a/src/sentry/plugins/bases/notify.py b/src/sentry/plugins/bases/notify.py index 122e97d24f7e6c..13d328cd9cfd0e 100644 --- a/src/sentry/plugins/bases/notify.py +++ b/src/sentry/plugins/bases/notify.py @@ -7,13 +7,13 @@ from sentry import digests, ratelimits from sentry.exceptions import InvalidIdentity, PluginError +from sentry.integrations.types import ExternalProviders from sentry.notifications.types import NotificationSettingEnum from sentry.plugins.base import Notification, Plugin from sentry.plugins.base.configuration import react_plugin_config from sentry.services.hybrid_cloud.notifications.service import notifications_service from sentry.shared_integrations.exceptions import ApiError from sentry.types.actor import Actor, ActorType -from sentry.types.integrations import ExternalProviders class NotificationConfigurationForm(forms.Form): diff --git a/src/sentry/services/hybrid_cloud/notifications/impl.py b/src/sentry/services/hybrid_cloud/notifications/impl.py index 6c7e74a34835b5..53961b54fc710a 100644 --- a/src/sentry/services/hybrid_cloud/notifications/impl.py +++ b/src/sentry/services/hybrid_cloud/notifications/impl.py @@ -4,6 +4,7 @@ from django.db import router, transaction +from sentry.integrations.types import EXTERNAL_PROVIDERS, ExternalProviderEnum, ExternalProviders from sentry.models.notificationsettingoption import NotificationSettingOption from sentry.models.notificationsettingprovider import NotificationSettingProvider from sentry.models.user import User @@ -17,7 +18,6 @@ from sentry.services.hybrid_cloud.notifications.model import RpcSubscriptionStatus from sentry.services.hybrid_cloud.user.service import user_service from sentry.types.actor import Actor, ActorType -from sentry.types.integrations import EXTERNAL_PROVIDERS, ExternalProviderEnum, ExternalProviders class DatabaseBackedNotificationsService(NotificationsService): diff --git a/src/sentry/services/hybrid_cloud/notifications/model.py b/src/sentry/services/hybrid_cloud/notifications/model.py index 5e0c9f3b20ea38..6ea70d7a0b8aae 100644 --- a/src/sentry/services/hybrid_cloud/notifications/model.py +++ b/src/sentry/services/hybrid_cloud/notifications/model.py @@ -4,8 +4,8 @@ # defined, because we want to reflect on type annotations and avoid forward references. +from sentry.integrations.types import ExternalProviders from sentry.services.hybrid_cloud import RpcModel -from sentry.types.integrations import ExternalProviders class RpcExternalActor(RpcModel): diff --git a/src/sentry/services/hybrid_cloud/notifications/service.py b/src/sentry/services/hybrid_cloud/notifications/service.py index 79bd3eddbc18e4..7657fe7c841df3 100644 --- a/src/sentry/services/hybrid_cloud/notifications/service.py +++ b/src/sentry/services/hybrid_cloud/notifications/service.py @@ -5,6 +5,7 @@ from abc import abstractmethod from collections.abc import Mapping, MutableMapping +from sentry.integrations.types import ExternalProviderEnum, ExternalProviders from sentry.notifications.types import ( NotificationScopeEnum, NotificationSettingEnum, @@ -14,7 +15,6 @@ from sentry.services.hybrid_cloud.rpc import RpcService, rpc_method from sentry.silo.base import SiloMode from sentry.types.actor import Actor, ActorType -from sentry.types.integrations import ExternalProviderEnum, ExternalProviders class NotificationsService(RpcService): diff --git a/src/sentry/tasks/integrations/__init__.py b/src/sentry/tasks/integrations/__init__.py index d1957057975d46..598b47f8c3d6e5 100644 --- a/src/sentry/tasks/integrations/__init__.py +++ b/src/sentry/tasks/integrations/__init__.py @@ -54,7 +54,6 @@ def should_comment_sync( from .create_comment import create_comment from .kick_off_status_syncs_impl import kick_off_status_syncs -from .migrate_issues import migrate_issues from .migrate_opsgenie_plugins import migrate_opsgenie_plugin from .migrate_repo import migrate_repo from .sync_assignee_outbound_impl import sync_assignee_outbound diff --git a/src/sentry/tasks/summaries/daily_summary.py b/src/sentry/tasks/summaries/daily_summary.py index 09f064cbb4983c..9f9d28e497055a 100644 --- a/src/sentry/tasks/summaries/daily_summary.py +++ b/src/sentry/tasks/summaries/daily_summary.py @@ -11,6 +11,7 @@ from sentry import features from sentry.constants import DataCategory +from sentry.integrations.types import ExternalProviders from sentry.models.activity import Activity from sentry.models.group import Group from sentry.models.organization import Organization, OrganizationStatus @@ -40,7 +41,6 @@ from sentry.types.activity import ActivityType from sentry.types.actor import Actor from sentry.types.group import GroupSubStatus -from sentry.types.integrations import ExternalProviders from sentry.utils import json from sentry.utils.dates import to_datetime from sentry.utils.outcomes import Outcome diff --git a/src/sentry/testutils/factories.py b/src/sentry/testutils/factories.py index 3ad317f0f27cc8..8be38bcf4efe34 100644 --- a/src/sentry/testutils/factories.py +++ b/src/sentry/testutils/factories.py @@ -56,6 +56,7 @@ TriggerStatus, ) from sentry.incidents.utils.types import AlertRuleActivationConditionType +from sentry.integrations.types import ExternalProviders from sentry.issues.grouptype import get_group_type_by_type_id from sentry.mediators.token_exchange.grant_exchanger import GrantExchanger from sentry.models.activity import Activity @@ -150,7 +151,6 @@ from sentry.testutils.outbox import outbox_runner from sentry.testutils.silo import assume_test_silo_mode from sentry.types.activity import ActivityType -from sentry.types.integrations import ExternalProviders from sentry.types.region import Region, get_local_region, get_region_by_name from sentry.types.token import AuthTokenType from sentry.utils import loremipsum diff --git a/src/sentry/testutils/helpers/notifications.py b/src/sentry/testutils/helpers/notifications.py index 533d9c794094ae..880d31f8f71944 100644 --- a/src/sentry/testutils/helpers/notifications.py +++ b/src/sentry/testutils/helpers/notifications.py @@ -5,6 +5,7 @@ from datetime import UTC, datetime from typing import Any +from sentry.integrations.types import ExternalProviders from sentry.issues.grouptype import ( FeedbackGroup, PerformanceNPlusOneAPICallsGroupType, @@ -21,7 +22,6 @@ from sentry.notifications.utils.actions import MessageAction from sentry.services.hybrid_cloud.user import RpcUser from sentry.types.actor import Actor -from sentry.types.integrations import ExternalProviders class DummyNotification(BaseNotification): diff --git a/src/sentry/testutils/helpers/slack.py b/src/sentry/testutils/helpers/slack.py index 466c9b2066ad03..baa99cc52bb290 100644 --- a/src/sentry/testutils/helpers/slack.py +++ b/src/sentry/testutils/helpers/slack.py @@ -3,6 +3,7 @@ import responses from sentry.integrations.slack.message_builder import SlackBody +from sentry.integrations.types import EXTERNAL_PROVIDERS, ExternalProviders from sentry.models.identity import Identity, IdentityProvider, IdentityStatus from sentry.models.integrations.external_actor import ExternalActor from sentry.models.integrations.integration import Integration @@ -12,7 +13,6 @@ from sentry.models.user import User from sentry.silo.base import SiloMode from sentry.testutils.silo import assume_test_silo_mode -from sentry.types.integrations import EXTERNAL_PROVIDERS, ExternalProviders from sentry.utils import json diff --git a/tests/acceptance/test_link_team.py b/tests/acceptance/test_link_team.py index d90182978f1e02..2cce7e3f8bab3c 100644 --- a/tests/acceptance/test_link_team.py +++ b/tests/acceptance/test_link_team.py @@ -3,11 +3,11 @@ from selenium.webdriver.common.by import By from sentry.integrations.slack.views.link_team import build_team_linking_url +from sentry.integrations.types import ExternalProviders from sentry.models.identity import Identity, IdentityStatus from sentry.models.integrations.external_actor import ExternalActor from sentry.testutils.cases import AcceptanceTestCase from sentry.testutils.silo import no_silo_test -from sentry.types.integrations import ExternalProviders @no_silo_test diff --git a/tests/sentry/api/endpoints/test_external_team.py b/tests/sentry/api/endpoints/test_external_team.py index 3f784d3d5ace1a..99118d74a03c80 100644 --- a/tests/sentry/api/endpoints/test_external_team.py +++ b/tests/sentry/api/endpoints/test_external_team.py @@ -1,6 +1,6 @@ +from sentry.integrations.utils.providers import get_provider_string from sentry.models.integrations.external_actor import ExternalActor from sentry.testutils.cases import APITestCase -from sentry.types.integrations import get_provider_string class ExternalTeamTest(APITestCase): diff --git a/tests/sentry/api/endpoints/test_organization_teams.py b/tests/sentry/api/endpoints/test_organization_teams.py index 4e06cb1e09a693..2a73efe6d01448 100644 --- a/tests/sentry/api/endpoints/test_organization_teams.py +++ b/tests/sentry/api/endpoints/test_organization_teams.py @@ -2,13 +2,13 @@ from django.urls import reverse +from sentry.integrations.utils.providers import get_provider_string from sentry.models.organizationmember import OrganizationMember from sentry.models.organizationmemberteam import OrganizationMemberTeam from sentry.models.projectteam import ProjectTeam from sentry.models.team import Team from sentry.slug.errors import DEFAULT_SLUG_ERROR_MESSAGE from sentry.testutils.cases import APITestCase -from sentry.types.integrations import get_provider_string class OrganizationTeamsListTest(APITestCase): diff --git a/tests/sentry/api/endpoints/test_user_notification_settings_providers.py b/tests/sentry/api/endpoints/test_user_notification_settings_providers.py index 16bce8b7829294..7a4acbc2e746dd 100644 --- a/tests/sentry/api/endpoints/test_user_notification_settings_providers.py +++ b/tests/sentry/api/endpoints/test_user_notification_settings_providers.py @@ -1,5 +1,6 @@ from rest_framework import status +from sentry.integrations.types import ExternalProviderEnum from sentry.models.notificationsettingprovider import NotificationSettingProvider from sentry.notifications.types import ( NotificationScopeEnum, @@ -8,7 +9,6 @@ ) from sentry.testutils.cases import APITestCase from sentry.testutils.silo import control_silo_test -from sentry.types.integrations import ExternalProviderEnum class UserNotificationSettingsProvidersBaseTest(APITestCase): diff --git a/tests/sentry/api/serializers/test_external_actor.py b/tests/sentry/api/serializers/test_external_actor.py index f9fea47a5f912c..39a80b4bea6c65 100644 --- a/tests/sentry/api/serializers/test_external_actor.py +++ b/tests/sentry/api/serializers/test_external_actor.py @@ -4,9 +4,10 @@ ExternalUserSerializer, ) from sentry.api.serializers import serialize +from sentry.integrations.types import ExternalProviders +from sentry.integrations.utils.providers import get_provider_name from sentry.models.integrations.external_actor import ExternalActor from sentry.testutils.cases import TestCase -from sentry.types.integrations import ExternalProviders, get_provider_name class ExternalActorSerializerTest(TestCase): diff --git a/tests/sentry/api/serializers/test_group.py b/tests/sentry/api/serializers/test_group.py index de3464abdaf4cb..e7770e0e0cf1cd 100644 --- a/tests/sentry/api/serializers/test_group.py +++ b/tests/sentry/api/serializers/test_group.py @@ -4,6 +4,7 @@ from django.utils import timezone from sentry.api.serializers import serialize +from sentry.integrations.types import ExternalProviderEnum from sentry.models.group import Group, GroupStatus from sentry.models.grouplink import GroupLink from sentry.models.groupresolution import GroupResolution @@ -21,7 +22,6 @@ from sentry.testutils.cases import PerformanceIssueTestCase, TestCase from sentry.testutils.silo import assume_test_silo_mode from sentry.testutils.skips import requires_snuba -from sentry.types.integrations import ExternalProviderEnum pytestmark = [requires_snuba] diff --git a/tests/sentry/hybridcloud/test_integration.py b/tests/sentry/hybridcloud/test_integration.py index 3e830a7b3e895c..003b6ced150cdd 100644 --- a/tests/sentry/hybridcloud/test_integration.py +++ b/tests/sentry/hybridcloud/test_integration.py @@ -5,6 +5,7 @@ from sentry.constants import ObjectStatus from sentry.integrations.base import IntegrationFeatures from sentry.integrations.pagerduty.utils import add_service +from sentry.integrations.types import ExternalProviders from sentry.models.integrations.integration import Integration from sentry.models.integrations.organization_integration import OrganizationIntegration from sentry.services.hybrid_cloud.integration import ( @@ -20,7 +21,6 @@ from sentry.testutils.cases import TestCase from sentry.testutils.helpers.datetime import freeze_time from sentry.testutils.silo import all_silo_test, assume_test_silo_mode -from sentry.types.integrations import ExternalProviders class BaseIntegrationServiceTest(TestCase): diff --git a/tests/sentry/integrations/discord/test_issue_alert.py b/tests/sentry/integrations/discord/test_issue_alert.py index 694e3b42346dae..21fc578b1ee9a8 100644 --- a/tests/sentry/integrations/discord/test_issue_alert.py +++ b/tests/sentry/integrations/discord/test_issue_alert.py @@ -11,6 +11,7 @@ from sentry.integrations.discord.message_builder import LEVEL_TO_COLOR from sentry.integrations.discord.message_builder.base.component import DiscordComponentCustomIds from sentry.integrations.message_builder import build_attachment_title, build_footer, get_title_link +from sentry.integrations.types import ExternalProviders from sentry.models.group import GroupStatus from sentry.models.release import Release from sentry.services.hybrid_cloud.integration import integration_service @@ -18,7 +19,6 @@ from sentry.testutils.cases import RuleTestCase, TestCase from sentry.testutils.helpers.datetime import before_now, iso_format from sentry.testutils.skips import requires_snuba -from sentry.types.integrations import ExternalProviders pytestmark = [requires_snuba] diff --git a/tests/sentry/integrations/slack/notifications/test_assigned.py b/tests/sentry/integrations/slack/notifications/test_assigned.py index 14b73654ec01ac..c5a46351732b59 100644 --- a/tests/sentry/integrations/slack/notifications/test_assigned.py +++ b/tests/sentry/integrations/slack/notifications/test_assigned.py @@ -3,6 +3,7 @@ import responses +from sentry.integrations.types import ExternalProviders from sentry.models.activity import Activity from sentry.notifications.notifications.activity.assigned import AssignedActivityNotification from sentry.testutils.cases import PerformanceIssueTestCase, SlackActivityNotificationTest @@ -10,7 +11,6 @@ from sentry.testutils.helpers.slack import get_blocks_and_fallback_text from sentry.testutils.skips import requires_snuba from sentry.types.activity import ActivityType -from sentry.types.integrations import ExternalProviders pytestmark = [requires_snuba] diff --git a/tests/sentry/integrations/slack/notifications/test_issue_alert.py b/tests/sentry/integrations/slack/notifications/test_issue_alert.py index feba6bf1ffd3a9..8c82fc8a207931 100644 --- a/tests/sentry/integrations/slack/notifications/test_issue_alert.py +++ b/tests/sentry/integrations/slack/notifications/test_issue_alert.py @@ -12,6 +12,7 @@ from sentry.digests.backends.redis import RedisBackend from sentry.digests.notifications import event_to_record from sentry.integrations.slack.message_builder.issues import get_tags +from sentry.integrations.types import ExternalProviders from sentry.issues.grouptype import MonitorIncidentType from sentry.issues.issue_occurrence import IssueEvidence, IssueOccurrence from sentry.models.identity import Identity, IdentityStatus @@ -34,7 +35,6 @@ from sentry.testutils.helpers.slack import get_blocks_and_fallback_text from sentry.testutils.silo import assume_test_silo_mode from sentry.testutils.skips import requires_snuba -from sentry.types.integrations import ExternalProviders pytestmark = [requires_snuba] diff --git a/tests/sentry/integrations/slack/notifications/test_nudge.py b/tests/sentry/integrations/slack/notifications/test_nudge.py index 1be4602623b61a..9b4674d5df261e 100644 --- a/tests/sentry/integrations/slack/notifications/test_nudge.py +++ b/tests/sentry/integrations/slack/notifications/test_nudge.py @@ -3,13 +3,13 @@ import orjson import responses +from sentry.integrations.types import ExternalProviders from sentry.notifications.notifications.integration_nudge import ( MESSAGE_LIBRARY, IntegrationNudgeNotification, ) from sentry.testutils.cases import SlackActivityNotificationTest from sentry.testutils.helpers.slack import get_blocks_and_fallback_text -from sentry.types.integrations import ExternalProviders SEED = 0 diff --git a/tests/sentry/integrations/slack/test_link_team.py b/tests/sentry/integrations/slack/test_link_team.py index f4ec34e62c00d9..dfc588d4e3517b 100644 --- a/tests/sentry/integrations/slack/test_link_team.py +++ b/tests/sentry/integrations/slack/test_link_team.py @@ -10,6 +10,7 @@ from sentry.integrations.slack.views.link_team import build_team_linking_url from sentry.integrations.slack.views.unlink_team import build_team_unlinking_url +from sentry.integrations.types import ExternalProviders from sentry.models.integrations.external_actor import ExternalActor from sentry.models.notificationsettingprovider import NotificationSettingProvider from sentry.models.organization import Organization @@ -19,7 +20,6 @@ from sentry.testutils.helpers import add_identity, get_response_text, install_slack, link_team from sentry.testutils.helpers.features import with_feature from sentry.testutils.silo import assume_test_silo_mode -from sentry.types.integrations import ExternalProviders class SlackIntegrationLinkTeamTestBase(TestCase): diff --git a/tests/sentry/integrations/slack/test_notifications.py b/tests/sentry/integrations/slack/test_notifications.py index a8399f15460cff..f7494228e728e7 100644 --- a/tests/sentry/integrations/slack/test_notifications.py +++ b/tests/sentry/integrations/slack/test_notifications.py @@ -5,10 +5,10 @@ import responses from sentry.integrations.slack.notifications import send_notification_as_slack +from sentry.integrations.types import ExternalProviders from sentry.notifications.additional_attachment_manager import manager from sentry.testutils.cases import SlackActivityNotificationTest from sentry.testutils.helpers.notifications import DummyNotification -from sentry.types.integrations import ExternalProviders def additional_attachment_generator_block_kit(integration, organization): diff --git a/tests/sentry/integrations/slack/test_notify_action.py b/tests/sentry/integrations/slack/test_notify_action.py index d20be9c2bbdcfa..1e4a19da756445 100644 --- a/tests/sentry/integrations/slack/test_notify_action.py +++ b/tests/sentry/integrations/slack/test_notify_action.py @@ -7,12 +7,12 @@ from sentry.constants import ObjectStatus from sentry.integrations.slack import SlackNotifyServiceAction from sentry.integrations.slack.utils import SLACK_RATE_LIMITED_MESSAGE +from sentry.integrations.types import ExternalProviders from sentry.notifications.additional_attachment_manager import manager from sentry.silo.base import SiloMode from sentry.testutils.cases import RuleTestCase from sentry.testutils.silo import assume_test_silo_mode from sentry.testutils.skips import requires_snuba -from sentry.types.integrations import ExternalProviders from tests.sentry.integrations.slack.test_notifications import ( additional_attachment_generator_block_kit, ) diff --git a/tests/sentry/integrations/slack/webhooks/commands/__init__.py b/tests/sentry/integrations/slack/webhooks/commands/__init__.py index 58385c15311b4f..04594807a18632 100644 --- a/tests/sentry/integrations/slack/webhooks/commands/__init__.py +++ b/tests/sentry/integrations/slack/webhooks/commands/__init__.py @@ -11,13 +11,13 @@ from sentry import options from sentry.integrations.slack.utils import set_signing_secret +from sentry.integrations.types import EXTERNAL_PROVIDERS, ExternalProviders from sentry.models.identity import Identity from sentry.models.team import Team from sentry.silo.base import SiloMode from sentry.testutils.cases import APITestCase, TestCase from sentry.testutils.helpers import find_identity, install_slack, link_team, link_user from sentry.testutils.silo import assume_test_silo_mode -from sentry.types.integrations import EXTERNAL_PROVIDERS, ExternalProviders class SlackCommandsTest(APITestCase, TestCase): diff --git a/tests/sentry/integrations/test_notification_utilities.py b/tests/sentry/integrations/test_notification_utilities.py index a71242c378cf6f..0762895e24eddd 100644 --- a/tests/sentry/integrations/test_notification_utilities.py +++ b/tests/sentry/integrations/test_notification_utilities.py @@ -3,6 +3,7 @@ from collections.abc import Mapping from sentry.integrations.notifications import get_integrations_by_channel_by_recipient +from sentry.integrations.types import ExternalProviders from sentry.models.integrations.integration import Integration from sentry.models.user import User from sentry.services.hybrid_cloud.integration import RpcIntegration @@ -11,7 +12,6 @@ from sentry.testutils.helpers.notifications import DummyNotification from sentry.testutils.silo import control_silo_test from sentry.types.actor import Actor -from sentry.types.integrations import ExternalProviders @control_silo_test diff --git a/tests/sentry/mail/activity/test_note.py b/tests/sentry/mail/activity/test_note.py index ffe5d4f3c4cca6..50de95b0b3ec16 100644 --- a/tests/sentry/mail/activity/test_note.py +++ b/tests/sentry/mail/activity/test_note.py @@ -1,3 +1,4 @@ +from sentry.integrations.types import ExternalProviders from sentry.models.activity import Activity from sentry.models.notificationsettingoption import NotificationSettingOption from sentry.models.options.user_option import UserOption @@ -8,7 +9,6 @@ from sentry.testutils.silo import assume_test_silo_mode from sentry.types.activity import ActivityType from sentry.types.actor import Actor -from sentry.types.integrations import ExternalProviders class NoteTestCase(ActivityTestCase): diff --git a/tests/sentry/mail/activity/test_release.py b/tests/sentry/mail/activity/test_release.py index 93d45852f953bd..9dc8db36fab278 100644 --- a/tests/sentry/mail/activity/test_release.py +++ b/tests/sentry/mail/activity/test_release.py @@ -1,5 +1,6 @@ from django.core import mail +from sentry.integrations.types import ExternalProviderEnum, ExternalProviders from sentry.models.activity import Activity from sentry.models.environment import Environment from sentry.models.notificationsettingoption import NotificationSettingOption @@ -19,7 +20,6 @@ from sentry.testutils.silo import assume_test_silo_mode from sentry.types.activity import ActivityType from sentry.types.actor import Actor -from sentry.types.integrations import ExternalProviderEnum, ExternalProviders class ReleaseTestCase(ActivityTestCase): diff --git a/tests/sentry/models/test_groupsubscription.py b/tests/sentry/models/test_groupsubscription.py index 61d79649819124..5b30027f5c2cff 100644 --- a/tests/sentry/models/test_groupsubscription.py +++ b/tests/sentry/models/test_groupsubscription.py @@ -2,6 +2,7 @@ from collections.abc import Mapping +from sentry.integrations.types import ExternalProviderEnum, ExternalProviders from sentry.models.group import Group from sentry.models.groupsubscription import GroupSubscription from sentry.models.notificationsettingoption import NotificationSettingOption @@ -21,7 +22,6 @@ from sentry.testutils.helpers.slack import link_team from sentry.testutils.silo import assume_test_silo_mode from sentry.types.actor import Actor -from sentry.types.integrations import ExternalProviderEnum, ExternalProviders class SubscribeTest(TestCase): diff --git a/tests/sentry/models/test_project.py b/tests/sentry/models/test_project.py index 93fe4b200a37d3..c4c894f1e5a4fe 100644 --- a/tests/sentry/models/test_project.py +++ b/tests/sentry/models/test_project.py @@ -1,6 +1,7 @@ from collections.abc import Iterable from unittest.mock import patch +from sentry.integrations.types import ExternalProviders from sentry.models.environment import Environment, EnvironmentProject from sentry.models.grouplink import GroupLink from sentry.models.integrations.external_issue import ExternalIssue @@ -28,7 +29,6 @@ from sentry.testutils.outbox import outbox_runner from sentry.testutils.silo import assume_test_silo_mode, control_silo_test from sentry.types.actor import Actor -from sentry.types.integrations import ExternalProviders class ProjectTest(APITestCase, TestCase): diff --git a/tests/sentry/notifications/notifications/test_organization_request.py b/tests/sentry/notifications/notifications/test_organization_request.py index 1e83774874534b..7045dfac37e351 100644 --- a/tests/sentry/notifications/notifications/test_organization_request.py +++ b/tests/sentry/notifications/notifications/test_organization_request.py @@ -1,3 +1,4 @@ +from sentry.integrations.types import ExternalProviders from sentry.models.organizationmember import OrganizationMember from sentry.notifications.notifications.organization_request import OrganizationRequestNotification from sentry.notifications.notifications.strategies.role_based_recipient_strategy import ( @@ -5,7 +6,6 @@ ) from sentry.testutils.cases import TestCase from sentry.types.actor import Actor -from sentry.types.integrations import ExternalProviders class DummyRoleBasedRecipientStrategy(RoleBasedRecipientStrategy): diff --git a/tests/sentry/notifications/test_notificationcontroller.py b/tests/sentry/notifications/test_notificationcontroller.py index ae4636d9524027..8b85a59060e1a3 100644 --- a/tests/sentry/notifications/test_notificationcontroller.py +++ b/tests/sentry/notifications/test_notificationcontroller.py @@ -1,3 +1,4 @@ +from sentry.integrations.types import ExternalProviderEnum, ExternalProviders from sentry.models.integrations.external_actor import ExternalActor from sentry.models.notificationsettingoption import NotificationSettingOption from sentry.models.notificationsettingprovider import NotificationSettingProvider @@ -15,7 +16,6 @@ from sentry.testutils.helpers.slack import link_team from sentry.testutils.silo import assume_test_silo_mode, control_silo_test from sentry.types.actor import Actor, ActorType -from sentry.types.integrations import ExternalProviderEnum, ExternalProviders def add_notification_setting_option( diff --git a/tests/sentry/notifications/utils/test_participants.py b/tests/sentry/notifications/utils/test_participants.py index 5ec5944e89dd6b..0f50c66713dbdb 100644 --- a/tests/sentry/notifications/utils/test_participants.py +++ b/tests/sentry/notifications/utils/test_participants.py @@ -8,6 +8,7 @@ from django.utils import timezone from sentry.eventstore.models import Event +from sentry.integrations.types import ExternalProviders from sentry.models.commit import Commit from sentry.models.groupassignee import GroupAssignee from sentry.models.groupowner import GroupOwner, GroupOwnerType @@ -41,7 +42,6 @@ from sentry.testutils.silo import assume_test_silo_mode from sentry.testutils.skips import requires_snuba from sentry.types.actor import Actor -from sentry.types.integrations import ExternalProviders from sentry.utils.cache import cache from tests.sentry.mail import make_event_data diff --git a/tests/sentry/tasks/test_daily_summary.py b/tests/sentry/tasks/test_daily_summary.py index 547d3033500b06..0fddf67d018674 100644 --- a/tests/sentry/tasks/test_daily_summary.py +++ b/tests/sentry/tasks/test_daily_summary.py @@ -8,6 +8,7 @@ from django.conf import settings from sentry.constants import DataCategory +from sentry.integrations.types import ExternalProviders from sentry.issues.grouptype import PerformanceNPlusOneGroupType from sentry.models.activity import Activity from sentry.models.group import GroupStatus @@ -33,7 +34,6 @@ from sentry.testutils.helpers.slack import get_blocks_and_fallback_text from sentry.types.activity import ActivityType from sentry.types.group import GroupSubStatus -from sentry.types.integrations import ExternalProviders from sentry.utils.outcomes import Outcome