Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

ref: fix types for sentry.integrations when BaseManager is typechecked #72812

Merged
merged 1 commit into from
Jun 17, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 2 additions & 3 deletions src/sentry/integrations/bitbucket/search.py
Original file line number Diff line number Diff line change
Expand Up @@ -38,9 +38,8 @@ def get(self, request: Request, organization, integration_id, **kwds) -> Respons
if not query:
return Response({"detail": "query is a required parameter"}, status=400)

installation: BitbucketIntegration = integration.get_installation(
organization_id=organization.id
)
installation = integration.get_installation(organization_id=organization.id)
assert isinstance(installation, BitbucketIntegration), installation

if field == "externalIssue":
repo = request.GET.get("repo")
Expand Down
1 change: 1 addition & 0 deletions src/sentry/integrations/github/installation.py
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,7 @@ def get(self, request: Request, installation_id):
if "sender" not in integration.metadata:
return HttpResponse(status=404)

assert integration.date_added is not None
time_elapsed_since_added = time.time() - integration.date_added.timestamp()
if time_elapsed_since_added > INSTALLATION_EXPOSURE_MAX_TIME:
return HttpResponse(status=404)
Expand Down
8 changes: 6 additions & 2 deletions src/sentry/integrations/github/search.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,8 @@
from sentry.api.api_publish_status import ApiPublishStatus
from sentry.api.base import control_silo_endpoint
from sentry.api.bases.integration import IntegrationEndpoint
from sentry.integrations.github.integration import build_repository_query
from sentry.integrations.github.integration import GitHubIntegration, build_repository_query
from sentry.integrations.github_enterprise.integration import GitHubEnterpriseIntegration
from sentry.models.integrations.integration import Integration
from sentry.services.hybrid_cloud.organization import RpcOrganization
from sentry.shared_integrations.exceptions import ApiError
Expand Down Expand Up @@ -40,13 +41,16 @@ def get(
return Response({"detail": "query is a required parameter"}, status=400)

installation = integration.get_installation(organization.id)
assert isinstance(
installation, (GitHubIntegration, GitHubEnterpriseIntegration)
), installation
if field == "externalIssue":
repo = request.GET.get("repo")
if repo is None:
return Response({"detail": "repo is a required parameter"}, status=400)

try:
response = installation.search_issues(query=(f"repo:{repo} {query}").encode())
response = installation.search_issues(query=f"repo:{repo} {query}")
except ApiError as err:
if err.code == 403:
return Response({"detail": "Rate limit exceeded"}, status=429)
Expand Down
2 changes: 2 additions & 0 deletions src/sentry/integrations/gitlab/search.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
from sentry.api.api_publish_status import ApiPublishStatus
from sentry.api.base import control_silo_endpoint
from sentry.api.bases.integration import IntegrationEndpoint
from sentry.integrations.gitlab.integration import GitlabIntegration
from sentry.models.integrations.integration import Integration
from sentry.services.hybrid_cloud.organization import RpcOrganization
from sentry.shared_integrations.exceptions import ApiError
Expand Down Expand Up @@ -39,6 +40,7 @@ def get(
return Response({"detail": "query is a required parameter"}, status=400)

installation = integration.get_installation(organization.id)
assert isinstance(installation, GitlabIntegration), installation

if field == "externalIssue":
project = request.GET.get("project")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -142,9 +142,7 @@ def get(self, request: Request, issue_key, *args, **kwargs) -> Response:
external_issue = ExternalIssue.objects.get(
integration_id=integration.id, key=issue_key
)
organization = Organization.objects.filter(
id=external_issue.organization_id
).first()
organization = Organization.objects.get(id=external_issue.organization_id)
if (
integration_service.get_organization_integration(
organization_id=external_issue.organization_id,
Expand Down
3 changes: 2 additions & 1 deletion src/sentry/integrations/slack/sdk_client.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
from sentry.integrations.request_buffer import IntegrationRequestBuffer
from sentry.models.integrations import Integration
from sentry.services.hybrid_cloud.integration import integration_service
from sentry.services.hybrid_cloud.integration.model import RpcIntegration
from sentry.silo.base import SiloMode
from sentry.utils import metrics

Expand Down Expand Up @@ -104,7 +105,7 @@ class SlackSdkClient(WebClient, metaclass=MetaClass):
def __init__(self, integration_id: int):
self.integration_id = integration_id

integration = None
integration: Integration | RpcIntegration | None
if SiloMode.get_current_mode() == SiloMode.REGION:
integration = integration_service.get_integration(integration_id=integration_id)
else: # control or monolith (local)
Expand Down
Loading