Skip to content

Commit bd7650b

Browse files
ref: fix types for sentry.integrations when BaseManager is typechecked (#72812)
<!-- Describe your PR here. -->
1 parent 7635a15 commit bd7650b

File tree

6 files changed

+14
-9
lines changed

6 files changed

+14
-9
lines changed

src/sentry/integrations/bitbucket/search.py

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -38,9 +38,8 @@ def get(self, request: Request, organization, integration_id, **kwds) -> Respons
3838
if not query:
3939
return Response({"detail": "query is a required parameter"}, status=400)
4040

41-
installation: BitbucketIntegration = integration.get_installation(
42-
organization_id=organization.id
43-
)
41+
installation = integration.get_installation(organization_id=organization.id)
42+
assert isinstance(installation, BitbucketIntegration), installation
4443

4544
if field == "externalIssue":
4645
repo = request.GET.get("repo")

src/sentry/integrations/github/installation.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@ def get(self, request: Request, installation_id):
4444
if "sender" not in integration.metadata:
4545
return HttpResponse(status=404)
4646

47+
assert integration.date_added is not None
4748
time_elapsed_since_added = time.time() - integration.date_added.timestamp()
4849
if time_elapsed_since_added > INSTALLATION_EXPOSURE_MAX_TIME:
4950
return HttpResponse(status=404)

src/sentry/integrations/github/search.py

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,8 @@
77
from sentry.api.api_publish_status import ApiPublishStatus
88
from sentry.api.base import control_silo_endpoint
99
from sentry.api.bases.integration import IntegrationEndpoint
10-
from sentry.integrations.github.integration import build_repository_query
10+
from sentry.integrations.github.integration import GitHubIntegration, build_repository_query
11+
from sentry.integrations.github_enterprise.integration import GitHubEnterpriseIntegration
1112
from sentry.models.integrations.integration import Integration
1213
from sentry.services.hybrid_cloud.organization import RpcOrganization
1314
from sentry.shared_integrations.exceptions import ApiError
@@ -40,13 +41,16 @@ def get(
4041
return Response({"detail": "query is a required parameter"}, status=400)
4142

4243
installation = integration.get_installation(organization.id)
44+
assert isinstance(
45+
installation, (GitHubIntegration, GitHubEnterpriseIntegration)
46+
), installation
4347
if field == "externalIssue":
4448
repo = request.GET.get("repo")
4549
if repo is None:
4650
return Response({"detail": "repo is a required parameter"}, status=400)
4751

4852
try:
49-
response = installation.search_issues(query=(f"repo:{repo} {query}").encode())
53+
response = installation.search_issues(query=f"repo:{repo} {query}")
5054
except ApiError as err:
5155
if err.code == 403:
5256
return Response({"detail": "Rate limit exceeded"}, status=429)

src/sentry/integrations/gitlab/search.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
from sentry.api.api_publish_status import ApiPublishStatus
88
from sentry.api.base import control_silo_endpoint
99
from sentry.api.bases.integration import IntegrationEndpoint
10+
from sentry.integrations.gitlab.integration import GitlabIntegration
1011
from sentry.models.integrations.integration import Integration
1112
from sentry.services.hybrid_cloud.organization import RpcOrganization
1213
from sentry.shared_integrations.exceptions import ApiError
@@ -39,6 +40,7 @@ def get(
3940
return Response({"detail": "query is a required parameter"}, status=400)
4041

4142
installation = integration.get_installation(organization.id)
43+
assert isinstance(installation, GitlabIntegration), installation
4244

4345
if field == "externalIssue":
4446
project = request.GET.get("project")

src/sentry/integrations/jira/views/sentry_issue_details.py

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -142,9 +142,7 @@ def get(self, request: Request, issue_key, *args, **kwargs) -> Response:
142142
external_issue = ExternalIssue.objects.get(
143143
integration_id=integration.id, key=issue_key
144144
)
145-
organization = Organization.objects.filter(
146-
id=external_issue.organization_id
147-
).first()
145+
organization = Organization.objects.get(id=external_issue.organization_id)
148146
if (
149147
integration_service.get_organization_integration(
150148
organization_id=external_issue.organization_id,

src/sentry/integrations/slack/sdk_client.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
from sentry.integrations.request_buffer import IntegrationRequestBuffer
1111
from sentry.models.integrations import Integration
1212
from sentry.services.hybrid_cloud.integration import integration_service
13+
from sentry.services.hybrid_cloud.integration.model import RpcIntegration
1314
from sentry.silo.base import SiloMode
1415
from sentry.utils import metrics
1516

@@ -104,7 +105,7 @@ class SlackSdkClient(WebClient, metaclass=MetaClass):
104105
def __init__(self, integration_id: int):
105106
self.integration_id = integration_id
106107

107-
integration = None
108+
integration: Integration | RpcIntegration | None
108109
if SiloMode.get_current_mode() == SiloMode.REGION:
109110
integration = integration_service.get_integration(integration_id=integration_id)
110111
else: # control or monolith (local)

0 commit comments

Comments
 (0)