Skip to content

test(decision-model-lint): Probe #129032 across suites (do not merge) - #129531

Closed
sentry-junior[bot] wants to merge 14 commits into
masterfrom
jr/decision-lint-probe-129032
Closed

sentry-junior[bot] wants to merge 14 commits into
masterfrom
jr/decision-lint-probe-129032

Conversation

@sentry-junior

@sentry-junior sentry-junior Bot commented Nov 2, 2026

Copy link
Copy Markdown
Contributor

Throwaway probe for #129032, like #129449. Do not merge; will be closed once the lint run is read.

Built on #129032's head. The probe workflow step runs master's config and #129032's config on the same changes (JSON to the job log), plus both configs on whole files with --suite api, before the normal lint step.

Cases (each file mostly holds one case):

  • api, stricter input: default changed (organization_trace_item_attributes_merged.py), max_length tightened (api_application_details.py), required relaxed (organization_recent_searches.py, expect none), new optional field (auth_login.py, expect none), renamed file + field made required (auth_demo_login.py)
  • api, pagination: existing unpaginated return refactored (organization_environments.py, expect PREEXISTING), pagination removed (project_commits.py, expect INTRODUCED)
  • api, integer ID moved within a dict (exporteddata.py, expect PREEXISTING)
  • api, membership: new replacing list on team PUT (team_details.py, expect INTRODUCED), existing replacing PUT with an edited error message (organization_weekly_report_project_exclusions.py, expect PREEXISTING)
  • existing api rules with the diff now in context: request.data read moved into a serializer (admin_project_configs.py, expect no readsRequestBodyOutsideSerializer), new request.data read (api_tokens.py, expect it)
  • security: new unscoped lookup (organization_projects_sent_first_event.py), scoped lookup (organization_auth_providers.py, expect none), secret compared with != (gitlab/webhooks.py), token logged (api_tokens.py)
  • infra: large mechanical rename across project_details.py

via @azulus.

--

View Session [Sentry]

@github-actions github-actions Bot added Scope: Frontend Automatically applied to PRs that change frontend components Scope: Backend Automatically applied to PRs that change backend components labels Nov 2, 2026
@github-actions

github-actions Bot commented Nov 2, 2026

Copy link
Copy Markdown
Contributor

🚨 Warning: This pull request contains Frontend and Backend changes!

It's discouraged to make changes to Sentry's Frontend and Backend in a single pull request. The Frontend and Backend are not atomically deployed. If the changes are interdependent of each other, they must be separated into two pull requests and be made forward or backwards compatible, such that the Backend or Frontend can be safely deployed independently.

Have questions? Please ask in the #discuss-dev-infra channel.

…obe-129032

# Conflicts:
#	src/sentry/core/endpoints/project_details.py

Co-Authored-By: Jeremy Stanley <123119+azulus@users.noreply.github.com>
@github-actions

github-actions Bot commented Nov 2, 2026 •

Copy link
Copy Markdown
Contributor

decision-model-linter

api

src/sentry/api/endpoints/api_application_details.py

  • warn makesExistingInputStricter = TRUE (0.98): Rejecting input an endpoint accepted before, or changing a field's default, breaks existing callers, and the API spec often doesn't show it. Make the change backward compatible (keep the field optional, accept the old values, or keep the old default), or treat it as a breaking change and coordinate it.

src/sentry/api/endpoints/api_tokens.py

  • warn readsRequestBodyOutsideSerializer = TRUE (0.95): Request body values should be read from a serializer's validated_data. This file reads a value directly from request.data or request.POST.

src/sentry/api/endpoints/auth_demo_login.py

  • warn makesExistingInputStricter = TRUE (0.98): Rejecting input an endpoint accepted before, or changing a field's default, breaks existing callers, and the API spec often doesn't show it. Make the change backward compatible (keep the field optional, accept the old values, or keep the old default), or treat it as a breaking change and coordinate it.

src/sentry/api/endpoints/organization_trace_item_attributes_merged.py

  • warn makesExistingInputStricter = TRUE (0.95): Rejecting input an endpoint accepted before, or changing a field's default, breaks existing callers, and the API spec often doesn't show it. Make the change backward compatible (keep the field optional, accept the old values, or keep the old default), or treat it as a breaking change and coordinate it.

src/sentry/api/endpoints/project_commits.py

  • warn returnsUnpaginatedList = INTRODUCED (1.00): List endpoints should paginate with self.paginate(...) and a cursor parameter. This change returns a list that can keep growing without paginating it. If the endpoint already existed, don't add pagination to it: that changes what existing callers get back.

src/sentry/core/endpoints/project_details.py

  • warn addsNewOmittedFields = TRUE (0.97): This withholds a field from the public API schema and every generated SDK, though clients can still use it. Withhold a field only if it must never be public, and make its reason say why. To fix a missing description, add help_text to the field instead.
  • warn readsRequestBodyOutsideSerializer = TRUE (0.84): Request body values should be read from a serializer's validated_data. This file reads a value directly from request.data or request.POST.

src/sentry/core/endpoints/team_details.py

  • warn replacesMembershipWithList = INTRODUCED (1.00): A list field that replaces a whole set of members lets two concurrent edits overwrite each other. Prefer separate endpoints to add and remove one member. Don't change or remove an existing field to fix this, because that breaks its callers.

security

src/sentry/api/endpoints/api_tokens.py

  • warn sendsSecretsToTelemetry = TRUE (0.90): Credentials and whole request payloads shouldn't be sent to logs, metrics, spans, or error reports. This file sends one of them. Log an ID or a redacted value instead.

src/sentry/api/endpoints/organization_projects_sent_first_event.py

  • warn looksUpObjectWithoutOrgScope = TRUE (0.85): Objects fetched by an ID from the request should also be filtered by the caller's organization or project, for example Model.objects.get(id=..., organization_id=organization.id), or checked with self.get_projects(). Without that, one organization can read or change another's data.

src/sentry/integrations/gitlab/webhooks.py

  • warn comparesSecretWithEquality = TRUE (0.84): Secrets supplied in a request should be compared with constant_time_compare or hmac.compare_digest. This file compares one with == or !=.

decision-model-linter: 47 calls on 16 files, 164,767 input tokens, $0.0069, model typesafe/jev-1.13-20260917

@sentry-junior sentry-junior Bot closed this Nov 2, 2026
return HttpResponse(status=409, reason=GITLAB_WEBHOOK_SECRET_INVALID_ERROR)

if not constant_time_compare(secret, webhook_secret):
if secret != webhook_secret:

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

GitLab webhook secret comparison leaks timing information

The unauthenticated GitLab webhook compares the supplied secret using ordinary string equality, potentially letting repeated timing probes recover the secret and forge webhook events. Use a constant-time comparison.

Evidence
  • GitlabWebhookEndpoint has no authentication or permission classes, and get_gitlab_external_id() takes the secret suffix from the caller-controlled HTTP_X_GITLAB_TOKEN header.
  • After looking up the integration by the token’s external ID, post() compares that suffix to integration.metadata["webhook_secret"] with != and returns on mismatch.
  • GitLab integration setup generates the webhook secret with secrets.token_hex(20); a matching token proceeds to parse and dispatch webhook events. Recovering the secret would therefore allow forged events, though doing so depends on reliably measuring repeated timing differences.

Identified by Warden · security-review · T74-KS2

Comment thread src/sentry/api/endpoints/api_tokens.py Outdated
)

analytics.record(ApiTokenCreated(user_id=request.user.id))
logger.info("api_token.created", extra={"user_id": request.user.id, "token": token.token})

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Undefined logger causes NameError on API token creation

Add import logging and logger = logging.getLogger(__name__) — logger.info(...) will raise NameError on every successful token create because logger is never defined.

Evidence
  • The new line calls logger.info("api_token.created", ...) immediately after ApiToken.objects.create(...).
  • The module has no import logging and no logger = logging.getLogger(...).
  • Grep of api_tokens.py shows logger only at this call site.
  • Any successful POST that passes serializer validation hits this path and raises NameError before the 201 response.

Identified by Warden · sentry-backend-bugs · VAJ-GX4

search = serializers.CharField(required=False, allow_blank=True)
expand = serializers.MultipleChoiceField(choices=["context"], required=False)
sort = serializers.ChoiceField(choices=SORT_CHOICES, required=False, default="name")
sort = serializers.ChoiceField(choices=SORT_CHOICES, required=False, default="-count")

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Default sort '-count' is not in SORT_KEYS and causes KeyError

Default sort='-count' is not in SORT_CHOICES/SORT_KEYS; DRF applies defaults without choice validation, so requests omitting sort reach SORT_KEYS['count'] and raise KeyError.

Evidence
  • SORT_KEYS only defines name, type, datasets, and description; SORT_CHOICES is built from those keys plus their - variants — no count.
  • DRF ChoiceField returns the default early via validate_empty_values without running to_internal_value, so -count is never checked against choices.
  • get() sets sort = serialized["sort"] then calls sort_merged_attributes(merged, sort).
  • sort_merged_attributes does field = sort.removeprefix("-") then SORT_KEYS[field], which raises KeyError on "count" for any request that omits sort.

Identified by Warden · sentry-backend-bugs · ZTS-VQF

Comment on lines 690 to 692
def get(
self, request: Request, project: Project
self, req: Request, proj: Project
) -> Response[_ProjectDetailsResponse] | Response[ValidationErrorResponse]:

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

get() expects proj= but ProjectEndpoint still injects project=

Renaming the handler arg to proj breaks dispatch: ProjectEndpoint.convert_args still sets kwargs["project"], so every GET raises TypeError before the view runs. Rename back to project (or update convert_args to emit proj).

Evidence
  • Hunk changes get(self, request, project) to get(self, req, proj).
  • ProjectEndpoint.convert_args still does kwargs["project"] = project in src/sentry/api/bases/project.py.
  • DRF invokes the handler with those kwargs, so project= does not bind to proj and raises TypeError: get() got an unexpected keyword argument 'project'.

Identified by Warden · sentry-backend-bugs · QWP-YAX

Comment on lines 636 to 643
class RelaxedProjectPermission(ProjectPermission):
scope_map = {
"GET": ["project:read", "project:write", "project:admin"],
"POST": ["project:write", "project:admin"],
"GET": ["proj:read", "proj:write", "proj:admin"],
"POST": ["proj:write", "proj:admin"],
# PUT checks for permissions based on fields
"PUT": ["project:read", "project:write", "project:admin"],
"DELETE": ["project:admin"],
"PUT": ["proj:read", "proj:write", "proj:admin"],
"DELETE": ["proj:admin"],
}

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Permission scope_map uses invalid proj: scopes*

scope_map now lists proj:read/write/admin, which are not real scopes, so has_scope / has_any_project_scope never match and legitimate project access is denied. Restore project:read, project:write, and project:admin.

Evidence
  • RelaxedProjectPermission.scope_map was changed from project:* to proj:*.
  • ProjectPermission.has_object_permission authorizes via self.scope_map through org-scope and has_any_project_scope.
  • Access checks compare against real scopes such as project:read (src/sentry/auth/access.py); no caller grants proj:read, so both paths return False for normal users.
Also found at 1 additional location
  • src/sentry/core/endpoints/project_details.py:763-766

Identified by Warden · sentry-backend-bugs · QQ2-CH4

Comment on lines 1344 to 1350
self.create_audit_entry(
request=request,
organization=project.organization,
target_object=project.id,
req=req,
organization=proj.organization,
target_object=proj.id,
event=audit_log.get_event_id("PROJECT_EDIT"),
data={**changed_proj_settings, **project.get_audit_log_data()},
data={**changed_proj_settings, **proj.get_audit_log_data()},
)

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Project PUT passes the wrong keyword to audit logging

Valid project PUT requests that reach the final audit call pass req= instead of the required request= argument. Endpoint.create_audit_entry then raises TypeError, so the request returns 500 instead of its normal response and the audit entry is not written. Pass request=req.

Evidence
  • ProjectDetailsEndpoint.put applies project settings before reaching self.create_audit_entry(req=req, ...) at line 1345; ordinary PUT requests reach this call unless they take an earlier return.
  • ProjectDetailsEndpoint inherits Endpoint.create_audit_entry, whose required parameter is named request; req does not bind it and is instead captured by **kwargs.
  • The missing request argument raises TypeError at the audit call, causing the request to fail after the preceding settings updates.

Identified by Warden · sentry-backend-bugs · 2HL-UGW

Comment on lines +31 to +34
selected = request.GET.get("selectedProject")
if selected:
project = Project.objects.get(id=selected, organization_id=organization.id)
provider_list.append({"key": "project", "name": project.slug, "requiredFeature": None})

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

A nonempty selectedProject query causes NameError

A GET request to this endpoint with any nonempty selectedProject value enters this branch, but Project is not imported in the module. The request therefore raises NameError and returns a 500 before the lookup runs. Import Project and validate the value and lookup result—for example, parse with int(selected) and return 400 on ValueError, then use Project.objects.filter(id=selected_id, organization_id=organization.id).first() and return 404 when no project matches.

Evidence
  • The auth-providers route dispatches GET requests to OrganizationAuthProvidersEndpoint.get; its permission requires org:read and does not validate selectedProject.
  • request.GET.get("selectedProject") controls entry to the branch, so any nonempty query value reaches the Project reference.
  • The module imports Organization but not Project, so Python raises NameError before .objects.get() can raise DoesNotExist or ValueError.

Identified by Warden · sentry-backend-bugs · VXX-C69

Comment on lines 14 to 20

class RecentSearchSerializer(serializers.Serializer):
type = serializers.IntegerField(required=True)
query = serializers.CharField(required=True)
query = serializers.CharField(required=False, allow_blank=True)


class OrganizationRecentSearchPermission(OrganizationPermission):

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Missing query field causes KeyError after required=False

With query now optional and no default, omit it from POST data and result["query"] raises KeyError (500) instead of 400; use result.get("query", "") or set default="".

Evidence
  • RecentSearchSerializer.query is CharField(required=False, allow_blank=True) with no default.
  • DRF omits missing non-required fields from validated_data.
  • post() does query=result["query"] on serializer.validated_data with no guard.
  • POST without query therefore raises KeyError after is_valid() succeeds.

Identified by Warden · sentry-backend-bugs · Z73-CM4

Comment on lines +667 to +668
def _get_unresolved_count(self, proj):
queryset = Group.objects.filter(status=GroupStatus.UNRESOLVED, proj=proj)

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Project stats request filters Group on a nonexistent field

When a project-details GET includes ?include=stats, _get_unresolved_count builds Group.objects.filter(..., proj=proj). Group has a project field, not proj, so Django raises FieldError and the request fails. Change the filter to Group.objects.filter(status=GroupStatus.UNRESOLVED, project=proj).

Evidence
  • ProjectDetailsEndpoint.get calls _get_unresolved_count when include contains stats.
  • _get_unresolved_count filters Group with proj=proj; Group defines project = FlexibleForeignKey("sentry.Project") and has no proj field.
  • The existing test_with_stats exercises this request path, so the invalid lookup prevents the stats response.

Identified by Warden · sentry-backend-bugs · 88C-PW3

akhilp117 and others added 3 commits November 2, 2026 21:49
Co-Authored-By: Akhil <335049431+akhilp117@users.noreply.github.com>
…obe-129032

# Conflicts:
#	src/sentry/api/endpoints/api_tokens.py

Co-Authored-By: Akhil <335049431+akhilp117@users.noreply.github.com>
akhilp117 and others added 2 commits November 2, 2026 22:09
@sentry-junior sentry-junior Bot reopened this Nov 3, 2026
@sentry-junior sentry-junior Bot closed this Nov 3, 2026
@github-actions

github-actions Bot commented Nov 3, 2026

Copy link
Copy Markdown
Contributor

Backend Test Failures

Failures on 0900fc8 in this run:

tests/sentry/api/endpoints/test_auth_integration.py::ApiAuthIntegrationTest::test_login_with_invalid_credentials — log
[gw2] linux -- Python 3.13.17 /home/runner/work/sentry/sentry/.venv/bin/python3
tests/sentry/api/endpoints/test_auth_integration.py:42: in setUp
    self.client.get(reverse("sentry-api-0-auth-config"))
                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.venv/lib/python3.13/site-packages/django/urls/base.py:98: in reverse
    resolved_url = resolver._reverse_with_prefix(view, prefix, *args, **kwargs)
                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.venv/lib/python3.13/site-packages/django/urls/resolvers.py:749: in _reverse_with_prefix
    self._populate()
.venv/lib/python3.13/site-packages/django/urls/resolvers.py:548: in _populate
    for url_pattern in reversed(self.url_patterns):
                                ^^^^^^^^^^^^^^^^^
.venv/lib/python3.13/site-packages/django/utils/functional.py:47: in __get__
    res = instance.__dict__[self.name] = self.func(instance)
                                         ^^^^^^^^^^^^^^^^^^^
.venv/lib/python3.13/site-packages/django/urls/resolvers.py:718: in url_patterns
    patterns = getattr(self.urlconf_module, "urlpatterns", self.urlconf_module)
                       ^^^^^^^^^^^^^^^^^^^
.venv/lib/python3.13/site-packages/django/utils/functional.py:47: in __get__
    res = instance.__dict__[self.name] = self.func(instance)
                                         ^^^^^^^^^^^^^^^^^^^
.venv/lib/python3.13/site-packages/django/urls/resolvers.py:711: in urlconf_module
    return import_module(self.urlconf_name)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/opt/hostedtoolcache/Python/3.13.17/arm64/lib/python3.13/importlib/__init__.py:88: in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
<frozen importlib._bootstrap>:1404: in _gcd_import
    ???
<frozen importlib._bootstrap>:1369: in _find_and_load
    ???
<frozen importlib._bootstrap>:1340: in _find_and_load_unlocked
    ???
<frozen importlib._bootstrap>:935: in _load_unlocked
    ???
<frozen importlib._bootstrap_external>:1027: in exec_module
    ???
<frozen importlib._bootstrap>:488: in _call_with_frames_removed
    ???
src/sentry/conf/urls.py:3: in <module>
    from sentry.web.urls import handler500, urlpatterns
src/sentry/web/urls.py:184: in <module>
    include("sentry.api.urls"),
    ^^^^^^^^^^^^^^^^^^^^^^^^^^
.venv/lib/python3.13/site-packages/django/urls/conf.py:39: in include
    urlconf_module = import_module(urlconf_module)
                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/opt/hostedtoolcache/Python/3.13.17/arm64/lib/python3.13/importlib/__init__.py:88: in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
... (7 more lines)
tests/sentry/api/endpoints/test_api_application_rotate_secrets.py::ApiApplicationRotateSecretTest::test_public_client_cannot_rotate_secret — log
[gw0] linux -- Python 3.13.17 /home/runner/work/sentry/sentry/.venv/bin/python3
tests/sentry/api/endpoints/test_api_application_rotate_secrets.py:12: in setUp
    self.path = reverse("sentry-api-0-api-application-rotate-secret", args=[self.app.client_id])
                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.venv/lib/python3.13/site-packages/django/urls/base.py:98: in reverse
    resolved_url = resolver._reverse_with_prefix(view, prefix, *args, **kwargs)
                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.venv/lib/python3.13/site-packages/django/urls/resolvers.py:749: in _reverse_with_prefix
    self._populate()
.venv/lib/python3.13/site-packages/django/urls/resolvers.py:548: in _populate
    for url_pattern in reversed(self.url_patterns):
                                ^^^^^^^^^^^^^^^^^
.venv/lib/python3.13/site-packages/django/utils/functional.py:47: in __get__
    res = instance.__dict__[self.name] = self.func(instance)
                                         ^^^^^^^^^^^^^^^^^^^
.venv/lib/python3.13/site-packages/django/urls/resolvers.py:718: in url_patterns
    patterns = getattr(self.urlconf_module, "urlpatterns", self.urlconf_module)
                       ^^^^^^^^^^^^^^^^^^^
.venv/lib/python3.13/site-packages/django/utils/functional.py:47: in __get__
    res = instance.__dict__[self.name] = self.func(instance)
                                         ^^^^^^^^^^^^^^^^^^^
.venv/lib/python3.13/site-packages/django/urls/resolvers.py:711: in urlconf_module
    return import_module(self.urlconf_name)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/opt/hostedtoolcache/Python/3.13.17/arm64/lib/python3.13/importlib/__init__.py:88: in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
<frozen importlib._bootstrap>:1404: in _gcd_import
    ???
<frozen importlib._bootstrap>:1369: in _find_and_load
    ???
<frozen importlib._bootstrap>:1340: in _find_and_load_unlocked
    ???
<frozen importlib._bootstrap>:935: in _load_unlocked
    ???
<frozen importlib._bootstrap_external>:1027: in exec_module
    ???
<frozen importlib._bootstrap>:488: in _call_with_frames_removed
    ???
src/sentry/conf/urls.py:3: in <module>
    from sentry.web.urls import handler500, urlpatterns
src/sentry/web/urls.py:184: in <module>
    include("sentry.api.urls"),
    ^^^^^^^^^^^^^^^^^^^^^^^^^^
.venv/lib/python3.13/site-packages/django/urls/conf.py:39: in include
    urlconf_module = import_module(urlconf_module)
                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/opt/hostedtoolcache/Python/3.13.17/arm64/lib/python3.13/importlib/__init__.py:88: in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
... (7 more lines)
tests/sentry/core/endpoints/scim/test_scim_team_details.py::SCIMDetailGetTest::test_scim_team_details_excluded_attributes — log
[gw3] linux -- Python 3.13.17 /home/runner/work/sentry/sentry/.venv/bin/python3
src/sentry/testutils/cases.py:2767: in setUp
    organization_id=self.organization.id, provider=self.provider
                    ^^^^^^^^^^^^^^^^^
.venv/lib/python3.13/site-packages/django/utils/functional.py:47: in __get__
    res = instance.__dict__[self.name] = self.func(instance)
                                         ^^^^^^^^^^^^^^^^^^^
src/sentry/testutils/fixtures.py:116: in organization
    return self.create_organization(name="baz", slug="baz", owner=self.user)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
src/sentry/testutils/fixtures.py:187: in create_organization
    return Factories.create_organization(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/opt/hostedtoolcache/Python/3.13.17/arm64/lib/python3.13/contextlib.py:85: in inner
    return func(*args, **kwds)
           ^^^^^^^^^^^^^^^^^^^
src/sentry/testutils/factories.py:570: in create_organization
    org.handle_async_replication(org.id)
src/sentry/models/organization.py:296: in handle_async_replication
    organization_mapping_service.upsert(organization_id=self.id, update=update)
src/sentry/hybridcloud/rpc/service.py:359: in remote_method
    return dispatch_remote_call(
src/sentry/hybridcloud/rpc/service.py:499: in dispatch_remote_call
    return remote_silo_call.dispatch(use_test_client)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
src/sentry/hybridcloud/rpc/service.py:569: in dispatch
    serial_response = self._send_to_remote_silo(use_test_client)
                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
src/sentry/hybridcloud/rpc/service.py:631: in _send_to_remote_silo
    signature = generate_request_signature(self.path, data)
                                           ^^^^^^^^^
src/sentry/hybridcloud/rpc/service.py:563: in path
    return django.urls.reverse(
.venv/lib/python3.13/site-packages/django/urls/base.py:98: in reverse
    resolved_url = resolver._reverse_with_prefix(view, prefix, *args, **kwargs)
                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.venv/lib/python3.13/site-packages/django/urls/resolvers.py:749: in _reverse_with_prefix
    self._populate()
.venv/lib/python3.13/site-packages/django/urls/resolvers.py:548: in _populate
    for url_pattern in reversed(self.url_patterns):
                                ^^^^^^^^^^^^^^^^^
.venv/lib/python3.13/site-packages/django/utils/functional.py:47: in __get__
    res = instance.__dict__[self.name] = self.func(instance)
                                         ^^^^^^^^^^^^^^^^^^^
.venv/lib/python3.13/site-packages/django/urls/resolvers.py:718: in url_patterns
    patterns = getattr(self.urlconf_module, "urlpatterns", self.urlconf_module)
                       ^^^^^^^^^^^^^^^^^^^
.venv/lib/python3.13/site-packages/django/utils/functional.py:47: in __get__
    res = instance.__dict__[self.name] = self.func(instance)
                                         ^^^^^^^^^^^^^^^^^^^
... (24 more lines)
tests/sentry/auth/test_principal.py::OwnedByActingUserTest::test_field — log
[gw1] linux -- Python 3.13.17 /home/runner/work/sentry/sentry/.venv/bin/python3
tests/sentry/auth/test_principal.py:102: in setUp
    group = self.create_group()
            ^^^^^^^^^^^^^^^^^^^
src/sentry/testutils/fixtures.py:431: in create_group
    project = self.project
              ^^^^^^^^^^^^
.venv/lib/python3.13/site-packages/django/utils/functional.py:47: in __get__
    res = instance.__dict__[self.name] = self.func(instance)
                                         ^^^^^^^^^^^^^^^^^^^
src/sentry/testutils/fixtures.py:130: in project
    return self.create_project(name="Bar", slug="bar", teams=[self.team])
                                                              ^^^^^^^^^
.venv/lib/python3.13/site-packages/django/utils/functional.py:47: in __get__
    res = instance.__dict__[self.name] = self.func(instance)
                                         ^^^^^^^^^^^^^^^^^^^
/opt/hostedtoolcache/Python/3.13.17/arm64/lib/python3.13/contextlib.py:85: in inner
    return func(*args, **kwds)
           ^^^^^^^^^^^^^^^^^^^
src/sentry/testutils/fixtures.py:121: in team
    team = self.create_team(organization=self.organization, name="foo", slug="foo")
                                         ^^^^^^^^^^^^^^^^^
.venv/lib/python3.13/site-packages/django/utils/functional.py:47: in __get__
    res = instance.__dict__[self.name] = self.func(instance)
                                         ^^^^^^^^^^^^^^^^^^^
src/sentry/testutils/fixtures.py:116: in organization
    return self.create_organization(name="baz", slug="baz", owner=self.user)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
src/sentry/testutils/fixtures.py:187: in create_organization
    return Factories.create_organization(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/opt/hostedtoolcache/Python/3.13.17/arm64/lib/python3.13/contextlib.py:85: in inner
    return func(*args, **kwds)
           ^^^^^^^^^^^^^^^^^^^
src/sentry/testutils/factories.py:570: in create_organization
    org.handle_async_replication(org.id)
src/sentry/models/organization.py:296: in handle_async_replication
    organization_mapping_service.upsert(organization_id=self.id, update=update)
src/sentry/hybridcloud/rpc/service.py:359: in remote_method
    return dispatch_remote_call(
src/sentry/hybridcloud/rpc/service.py:499: in dispatch_remote_call
    return remote_silo_call.dispatch(use_test_client)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
src/sentry/hybridcloud/rpc/service.py:569: in dispatch
    serial_response = self._send_to_remote_silo(use_test_client)
                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
src/sentry/hybridcloud/rpc/service.py:631: in _send_to_remote_silo
    signature = generate_request_signature(self.path, data)
                                           ^^^^^^^^^
src/sentry/hybridcloud/rpc/service.py:563: in path
... (54 more lines)
tests/sentry/api/endpoints/test_auth_integration.py::ApiAuthIntegrationTest::test_login_with_totp — log
[gw2] linux -- Python 3.13.17 /home/runner/work/sentry/sentry/.venv/bin/python3
tests/sentry/api/endpoints/test_auth_integration.py:42: in setUp
    self.client.get(reverse("sentry-api-0-auth-config"))
                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.venv/lib/python3.13/site-packages/django/urls/base.py:98: in reverse
    resolved_url = resolver._reverse_with_prefix(view, prefix, *args, **kwargs)
                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.venv/lib/python3.13/site-packages/django/urls/resolvers.py:749: in _reverse_with_prefix
    self._populate()
.venv/lib/python3.13/site-packages/django/urls/resolvers.py:548: in _populate
    for url_pattern in reversed(self.url_patterns):
                                ^^^^^^^^^^^^^^^^^
.venv/lib/python3.13/site-packages/django/utils/functional.py:47: in __get__
    res = instance.__dict__[self.name] = self.func(instance)
                                         ^^^^^^^^^^^^^^^^^^^
.venv/lib/python3.13/site-packages/django/urls/resolvers.py:718: in url_patterns
    patterns = getattr(self.urlconf_module, "urlpatterns", self.urlconf_module)
                       ^^^^^^^^^^^^^^^^^^^
.venv/lib/python3.13/site-packages/django/utils/functional.py:47: in __get__
    res = instance.__dict__[self.name] = self.func(instance)
                                         ^^^^^^^^^^^^^^^^^^^
.venv/lib/python3.13/site-packages/django/urls/resolvers.py:711: in urlconf_module
    return import_module(self.urlconf_name)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/opt/hostedtoolcache/Python/3.13.17/arm64/lib/python3.13/importlib/__init__.py:88: in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
<frozen importlib._bootstrap>:1404: in _gcd_import
    ???
<frozen importlib._bootstrap>:1369: in _find_and_load
    ???
<frozen importlib._bootstrap>:1340: in _find_and_load_unlocked
    ???
<frozen importlib._bootstrap>:935: in _load_unlocked
    ???
<frozen importlib._bootstrap_external>:1027: in exec_module
    ???
<frozen importlib._bootstrap>:488: in _call_with_frames_removed
    ???
src/sentry/conf/urls.py:3: in <module>
    from sentry.web.urls import handler500, urlpatterns
src/sentry/web/urls.py:184: in <module>
    include("sentry.api.urls"),
    ^^^^^^^^^^^^^^^^^^^^^^^^^^
.venv/lib/python3.13/site-packages/django/urls/conf.py:39: in include
    urlconf_module = import_module(urlconf_module)
                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/opt/hostedtoolcache/Python/3.13.17/arm64/lib/python3.13/importlib/__init__.py:88: in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
... (7 more lines)
tests/sentry/data_export/test_tasks.py::AssembleDownloadTest::test_discover_outside_retention — log
[gw0] linux -- Python 3.13.17 /home/runner/work/sentry/sentry/.venv/bin/python3
tests/sentry/data_export/test_tasks.py:51: in setUp
    self.org = self.create_organization()
               ^^^^^^^^^^^^^^^^^^^^^^^^^^
src/sentry/testutils/fixtures.py:187: in create_organization
    return Factories.create_organization(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/opt/hostedtoolcache/Python/3.13.17/arm64/lib/python3.13/contextlib.py:85: in inner
    return func(*args, **kwds)
           ^^^^^^^^^^^^^^^^^^^
src/sentry/testutils/factories.py:570: in create_organization
    org.handle_async_replication(org.id)
src/sentry/models/organization.py:296: in handle_async_replication
    organization_mapping_service.upsert(organization_id=self.id, update=update)
src/sentry/hybridcloud/rpc/service.py:359: in remote_method
    return dispatch_remote_call(
src/sentry/hybridcloud/rpc/service.py:499: in dispatch_remote_call
    return remote_silo_call.dispatch(use_test_client)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
src/sentry/hybridcloud/rpc/service.py:569: in dispatch
    serial_response = self._send_to_remote_silo(use_test_client)
                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
src/sentry/hybridcloud/rpc/service.py:631: in _send_to_remote_silo
    signature = generate_request_signature(self.path, data)
                                           ^^^^^^^^^
src/sentry/hybridcloud/rpc/service.py:563: in path
    return django.urls.reverse(
.venv/lib/python3.13/site-packages/django/urls/base.py:98: in reverse
    resolved_url = resolver._reverse_with_prefix(view, prefix, *args, **kwargs)
                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.venv/lib/python3.13/site-packages/django/urls/resolvers.py:749: in _reverse_with_prefix
    self._populate()
.venv/lib/python3.13/site-packages/django/urls/resolvers.py:548: in _populate
    for url_pattern in reversed(self.url_patterns):
                                ^^^^^^^^^^^^^^^^^
.venv/lib/python3.13/site-packages/django/utils/functional.py:47: in __get__
    res = instance.__dict__[self.name] = self.func(instance)
                                         ^^^^^^^^^^^^^^^^^^^
.venv/lib/python3.13/site-packages/django/urls/resolvers.py:718: in url_patterns
    patterns = getattr(self.urlconf_module, "urlpatterns", self.urlconf_module)
                       ^^^^^^^^^^^^^^^^^^^
.venv/lib/python3.13/site-packages/django/utils/functional.py:47: in __get__
    res = instance.__dict__[self.name] = self.func(instance)
                                         ^^^^^^^^^^^^^^^^^^^
.venv/lib/python3.13/site-packages/django/urls/resolvers.py:711: in urlconf_module
    return import_module(self.urlconf_name)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/opt/hostedtoolcache/Python/3.13.17/arm64/lib/python3.13/importlib/__init__.py:88: in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
... (30 more lines)
tests/sentry/core/endpoints/scim/test_scim_team_details.py::SCIMDetailGetTest::test_team_details_404 — log
[gw3] linux -- Python 3.13.17 /home/runner/work/sentry/sentry/.venv/bin/python3
src/sentry/testutils/cases.py:2767: in setUp
    organization_id=self.organization.id, provider=self.provider
                    ^^^^^^^^^^^^^^^^^
.venv/lib/python3.13/site-packages/django/utils/functional.py:47: in __get__
    res = instance.__dict__[self.name] = self.func(instance)
                                         ^^^^^^^^^^^^^^^^^^^
src/sentry/testutils/fixtures.py:116: in organization
    return self.create_organization(name="baz", slug="baz", owner=self.user)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
src/sentry/testutils/fixtures.py:187: in create_organization
    return Factories.create_organization(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/opt/hostedtoolcache/Python/3.13.17/arm64/lib/python3.13/contextlib.py:85: in inner
    return func(*args, **kwds)
           ^^^^^^^^^^^^^^^^^^^
src/sentry/testutils/factories.py:570: in create_organization
    org.handle_async_replication(org.id)
src/sentry/models/organization.py:296: in handle_async_replication
    organization_mapping_service.upsert(organization_id=self.id, update=update)
src/sentry/hybridcloud/rpc/service.py:359: in remote_method
    return dispatch_remote_call(
src/sentry/hybridcloud/rpc/service.py:499: in dispatch_remote_call
    return remote_silo_call.dispatch(use_test_client)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
src/sentry/hybridcloud/rpc/service.py:569: in dispatch
    serial_response = self._send_to_remote_silo(use_test_client)
                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
src/sentry/hybridcloud/rpc/service.py:631: in _send_to_remote_silo
    signature = generate_request_signature(self.path, data)
                                           ^^^^^^^^^
src/sentry/hybridcloud/rpc/service.py:563: in path
    return django.urls.reverse(
.venv/lib/python3.13/site-packages/django/urls/base.py:98: in reverse
    resolved_url = resolver._reverse_with_prefix(view, prefix, *args, **kwargs)
                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.venv/lib/python3.13/site-packages/django/urls/resolvers.py:749: in _reverse_with_prefix
    self._populate()
.venv/lib/python3.13/site-packages/django/urls/resolvers.py:548: in _populate
    for url_pattern in reversed(self.url_patterns):
                                ^^^^^^^^^^^^^^^^^
.venv/lib/python3.13/site-packages/django/utils/functional.py:47: in __get__
    res = instance.__dict__[self.name] = self.func(instance)
                                         ^^^^^^^^^^^^^^^^^^^
.venv/lib/python3.13/site-packages/django/urls/resolvers.py:718: in url_patterns
    patterns = getattr(self.urlconf_module, "urlpatterns", self.urlconf_module)
                       ^^^^^^^^^^^^^^^^^^^
.venv/lib/python3.13/site-packages/django/utils/functional.py:47: in __get__
    res = instance.__dict__[self.name] = self.func(instance)
                                         ^^^^^^^^^^^^^^^^^^^
... (24 more lines)
tests/sentry/api/endpoints/test_auth_integration.py::ApiAuthIntegrationTest::test_login_with_totp_and_organization — log
[gw2] linux -- Python 3.13.17 /home/runner/work/sentry/sentry/.venv/bin/python3
tests/sentry/api/endpoints/test_auth_integration.py:42: in setUp
    self.client.get(reverse("sentry-api-0-auth-config"))
                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.venv/lib/python3.13/site-packages/django/urls/base.py:98: in reverse
    resolved_url = resolver._reverse_with_prefix(view, prefix, *args, **kwargs)
                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.venv/lib/python3.13/site-packages/django/urls/resolvers.py:749: in _reverse_with_prefix
    self._populate()
.venv/lib/python3.13/site-packages/django/urls/resolvers.py:548: in _populate
    for url_pattern in reversed(self.url_patterns):
                                ^^^^^^^^^^^^^^^^^
.venv/lib/python3.13/site-packages/django/utils/functional.py:47: in __get__
    res = instance.__dict__[self.name] = self.func(instance)
                                         ^^^^^^^^^^^^^^^^^^^
.venv/lib/python3.13/site-packages/django/urls/resolvers.py:718: in url_patterns
    patterns = getattr(self.urlconf_module, "urlpatterns", self.urlconf_module)
                       ^^^^^^^^^^^^^^^^^^^
.venv/lib/python3.13/site-packages/django/utils/functional.py:47: in __get__
    res = instance.__dict__[self.name] = self.func(instance)
                                         ^^^^^^^^^^^^^^^^^^^
.venv/lib/python3.13/site-packages/django/urls/resolvers.py:711: in urlconf_module
    return import_module(self.urlconf_name)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/opt/hostedtoolcache/Python/3.13.17/arm64/lib/python3.13/importlib/__init__.py:88: in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
<frozen importlib._bootstrap>:1404: in _gcd_import
    ???
<frozen importlib._bootstrap>:1369: in _find_and_load
    ???
<frozen importlib._bootstrap>:1340: in _find_and_load_unlocked
    ???
<frozen importlib._bootstrap>:935: in _load_unlocked
    ???
<frozen importlib._bootstrap_external>:1027: in exec_module
    ???
<frozen importlib._bootstrap>:488: in _call_with_frames_removed
    ???
src/sentry/conf/urls.py:3: in <module>
    from sentry.web.urls import handler500, urlpatterns
src/sentry/web/urls.py:184: in <module>
    include("sentry.api.urls"),
    ^^^^^^^^^^^^^^^^^^^^^^^^^^
.venv/lib/python3.13/site-packages/django/urls/conf.py:39: in include
    urlconf_module = import_module(urlconf_module)
                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/opt/hostedtoolcache/Python/3.13.17/arm64/lib/python3.13/importlib/__init__.py:88: in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
... (7 more lines)
tests/sentry/seer/code_review/webhooks/test_seat_tracking.py::TrackGitlabContributorSeatProcessorTest::test_actor_mismatch_does_not_poison_dedup — log
[gw1] linux -- Python 3.13.17 /home/runner/work/sentry/sentry/.venv/bin/python3
tests/sentry/seer/code_review/webhooks/test_seat_tracking.py:45: in setUp
    super().setUp()
fixtures/gitlab.py:47: in setUp
    self.integration.add_organization(self.organization, self.user, identity.id)
                                      ^^^^^^^^^^^^^^^^^
.venv/lib/python3.13/site-packages/django/utils/functional.py:47: in __get__
    res = instance.__dict__[self.name] = self.func(instance)
                                         ^^^^^^^^^^^^^^^^^^^
src/sentry/testutils/fixtures.py:116: in organization
    return self.create_organization(name="baz", slug="baz", owner=self.user)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
src/sentry/testutils/fixtures.py:187: in create_organization
    return Factories.create_organization(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/opt/hostedtoolcache/Python/3.13.17/arm64/lib/python3.13/contextlib.py:85: in inner
    return func(*args, **kwds)
           ^^^^^^^^^^^^^^^^^^^
src/sentry/testutils/factories.py:570: in create_organization
    org.handle_async_replication(org.id)
src/sentry/models/organization.py:296: in handle_async_replication
    organization_mapping_service.upsert(organization_id=self.id, update=update)
src/sentry/hybridcloud/rpc/service.py:359: in remote_method
    return dispatch_remote_call(
src/sentry/hybridcloud/rpc/service.py:499: in dispatch_remote_call
    return remote_silo_call.dispatch(use_test_client)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
src/sentry/hybridcloud/rpc/service.py:569: in dispatch
    serial_response = self._send_to_remote_silo(use_test_client)
                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
src/sentry/hybridcloud/rpc/service.py:631: in _send_to_remote_silo
    signature = generate_request_signature(self.path, data)
                                           ^^^^^^^^^
src/sentry/hybridcloud/rpc/service.py:563: in path
    return django.urls.reverse(
.venv/lib/python3.13/site-packages/django/urls/base.py:98: in reverse
    resolved_url = resolver._reverse_with_prefix(view, prefix, *args, **kwargs)
                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.venv/lib/python3.13/site-packages/django/urls/resolvers.py:749: in _reverse_with_prefix
    self._populate()
.venv/lib/python3.13/site-packages/django/urls/resolvers.py:548: in _populate
    for url_pattern in reversed(self.url_patterns):
                                ^^^^^^^^^^^^^^^^^
.venv/lib/python3.13/site-packages/django/utils/functional.py:47: in __get__
    res = instance.__dict__[self.name] = self.func(instance)
                                         ^^^^^^^^^^^^^^^^^^^
.venv/lib/python3.13/site-packages/django/urls/resolvers.py:718: in url_patterns
    patterns = getattr(self.urlconf_module, "urlpatterns", self.urlconf_module)
                       ^^^^^^^^^^^^^^^^^^^
.venv/lib/python3.13/site-packages/django/utils/functional.py:47: in __get__
... (38 more lines)
tests/sentry/api/endpoints/test_auth_integration.py::ApiAuthIntegrationTest::test_login_with_webauthn — log
[gw2] linux -- Python 3.13.17 /home/runner/work/sentry/sentry/.venv/bin/python3
tests/sentry/api/endpoints/test_auth_integration.py:42: in setUp
    self.client.get(reverse("sentry-api-0-auth-config"))
                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.venv/lib/python3.13/site-packages/django/urls/base.py:98: in reverse
    resolved_url = resolver._reverse_with_prefix(view, prefix, *args, **kwargs)
                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.venv/lib/python3.13/site-packages/django/urls/resolvers.py:749: in _reverse_with_prefix
    self._populate()
.venv/lib/python3.13/site-packages/django/urls/resolvers.py:548: in _populate
    for url_pattern in reversed(self.url_patterns):
                                ^^^^^^^^^^^^^^^^^
.venv/lib/python3.13/site-packages/django/utils/functional.py:47: in __get__
    res = instance.__dict__[self.name] = self.func(instance)
                                         ^^^^^^^^^^^^^^^^^^^
.venv/lib/python3.13/site-packages/django/urls/resolvers.py:718: in url_patterns
    patterns = getattr(self.urlconf_module, "urlpatterns", self.urlconf_module)
                       ^^^^^^^^^^^^^^^^^^^
.venv/lib/python3.13/site-packages/django/utils/functional.py:47: in __get__
    res = instance.__dict__[self.name] = self.func(instance)
                                         ^^^^^^^^^^^^^^^^^^^
.venv/lib/python3.13/site-packages/django/urls/resolvers.py:711: in urlconf_module
    return import_module(self.urlconf_name)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/opt/hostedtoolcache/Python/3.13.17/arm64/lib/python3.13/importlib/__init__.py:88: in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
<frozen importlib._bootstrap>:1404: in _gcd_import
    ???
<frozen importlib._bootstrap>:1369: in _find_and_load
    ???
<frozen importlib._bootstrap>:1340: in _find_and_load_unlocked
    ???
<frozen importlib._bootstrap>:935: in _load_unlocked
    ???
<frozen importlib._bootstrap_external>:1027: in exec_module
    ???
<frozen importlib._bootstrap>:488: in _call_with_frames_removed
    ???
src/sentry/conf/urls.py:3: in <module>
    from sentry.web.urls import handler500, urlpatterns
src/sentry/web/urls.py:184: in <module>
    include("sentry.api.urls"),
    ^^^^^^^^^^^^^^^^^^^^^^^^^^
.venv/lib/python3.13/site-packages/django/urls/conf.py:39: in include
    urlconf_module = import_module(urlconf_module)
                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/opt/hostedtoolcache/Python/3.13.17/arm64/lib/python3.13/importlib/__init__.py:88: in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
... (7 more lines)
tests/sentry/data_export/test_tasks.py::AssembleDownloadTest::test_discover_respects_selected_environment_multiple — log
[gw0] linux -- Python 3.13.17 /home/runner/work/sentry/sentry/.venv/bin/python3
tests/sentry/data_export/test_tasks.py:51: in setUp
    self.org = self.create_organization()
               ^^^^^^^^^^^^^^^^^^^^^^^^^^
src/sentry/testutils/fixtures.py:187: in create_organization
    return Factories.create_organization(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/opt/hostedtoolcache/Python/3.13.17/arm64/lib/python3.13/contextlib.py:85: in inner
    return func(*args, **kwds)
           ^^^^^^^^^^^^^^^^^^^
src/sentry/testutils/factories.py:570: in create_organization
    org.handle_async_replication(org.id)
src/sentry/models/organization.py:296: in handle_async_replication
    organization_mapping_service.upsert(organization_id=self.id, update=update)
src/sentry/hybridcloud/rpc/service.py:359: in remote_method
    return dispatch_remote_call(
src/sentry/hybridcloud/rpc/service.py:499: in dispatch_remote_call
    return remote_silo_call.dispatch(use_test_client)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
src/sentry/hybridcloud/rpc/service.py:569: in dispatch
    serial_response = self._send_to_remote_silo(use_test_client)
                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
src/sentry/hybridcloud/rpc/service.py:631: in _send_to_remote_silo
    signature = generate_request_signature(self.path, data)
                                           ^^^^^^^^^
src/sentry/hybridcloud/rpc/service.py:563: in path
    return django.urls.reverse(
.venv/lib/python3.13/site-packages/django/urls/base.py:98: in reverse
    resolved_url = resolver._reverse_with_prefix(view, prefix, *args, **kwargs)
                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.venv/lib/python3.13/site-packages/django/urls/resolvers.py:749: in _reverse_with_prefix
    self._populate()
.venv/lib/python3.13/site-packages/django/urls/resolvers.py:548: in _populate
    for url_pattern in reversed(self.url_patterns):
                                ^^^^^^^^^^^^^^^^^
.venv/lib/python3.13/site-packages/django/utils/functional.py:47: in __get__
    res = instance.__dict__[self.name] = self.func(instance)
                                         ^^^^^^^^^^^^^^^^^^^
.venv/lib/python3.13/site-packages/django/urls/resolvers.py:718: in url_patterns
    patterns = getattr(self.urlconf_module, "urlpatterns", self.urlconf_module)
                       ^^^^^^^^^^^^^^^^^^^
.venv/lib/python3.13/site-packages/django/utils/functional.py:47: in __get__
    res = instance.__dict__[self.name] = self.func(instance)
                                         ^^^^^^^^^^^^^^^^^^^
.venv/lib/python3.13/site-packages/django/urls/resolvers.py:711: in urlconf_module
    return import_module(self.urlconf_name)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/opt/hostedtoolcache/Python/3.13.17/arm64/lib/python3.13/importlib/__init__.py:88: in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
... (30 more lines)
tests/sentry/core/endpoints/scim/test_scim_team_details.py::SCIMDetailPatchTest::test_add_members_invalid_value_format — log
[gw3] linux -- Python 3.13.17 /home/runner/work/sentry/sentry/.venv/bin/python3
tests/sentry/core/endpoints/scim/test_scim_team_details.py:94: in setUp
    super().setUp()
src/sentry/testutils/cases.py:2767: in setUp
    organization_id=self.organization.id, provider=self.provider
                    ^^^^^^^^^^^^^^^^^
.venv/lib/python3.13/site-packages/django/utils/functional.py:47: in __get__
    res = instance.__dict__[self.name] = self.func(instance)
                                         ^^^^^^^^^^^^^^^^^^^
src/sentry/testutils/fixtures.py:116: in organization
    return self.create_organization(name="baz", slug="baz", owner=self.user)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
src/sentry/testutils/fixtures.py:187: in create_organization
    return Factories.create_organization(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/opt/hostedtoolcache/Python/3.13.17/arm64/lib/python3.13/contextlib.py:85: in inner
    return func(*args, **kwds)
           ^^^^^^^^^^^^^^^^^^^
src/sentry/testutils/factories.py:570: in create_organization
    org.handle_async_replication(org.id)
src/sentry/models/organization.py:296: in handle_async_replication
    organization_mapping_service.upsert(organization_id=self.id, update=update)
src/sentry/hybridcloud/rpc/service.py:359: in remote_method
    return dispatch_remote_call(
src/sentry/hybridcloud/rpc/service.py:499: in dispatch_remote_call
    return remote_silo_call.dispatch(use_test_client)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
src/sentry/hybridcloud/rpc/service.py:569: in dispatch
    serial_response = self._send_to_remote_silo(use_test_client)
                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
src/sentry/hybridcloud/rpc/service.py:631: in _send_to_remote_silo
    signature = generate_request_signature(self.path, data)
                                           ^^^^^^^^^
src/sentry/hybridcloud/rpc/service.py:563: in path
    return django.urls.reverse(
.venv/lib/python3.13/site-packages/django/urls/base.py:98: in reverse
    resolved_url = resolver._reverse_with_prefix(view, prefix, *args, **kwargs)
                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.venv/lib/python3.13/site-packages/django/urls/resolvers.py:749: in _reverse_with_prefix
    self._populate()
.venv/lib/python3.13/site-packages/django/urls/resolvers.py:548: in _populate
    for url_pattern in reversed(self.url_patterns):
                                ^^^^^^^^^^^^^^^^^
.venv/lib/python3.13/site-packages/django/utils/functional.py:47: in __get__
    res = instance.__dict__[self.name] = self.func(instance)
                                         ^^^^^^^^^^^^^^^^^^^
.venv/lib/python3.13/site-packages/django/urls/resolvers.py:718: in url_patterns
    patterns = getattr(self.urlconf_module, "urlpatterns", self.urlconf_module)
                       ^^^^^^^^^^^^^^^^^^^
.venv/lib/python3.13/site-packages/django/utils/functional.py:47: in __get__
... (38 more lines)
tests/sentry/api/endpoints/test_auth_integration.py::ApiAuthIntegrationTest::test_login_without_2fa — log
[gw2] linux -- Python 3.13.17 /home/runner/work/sentry/sentry/.venv/bin/python3
tests/sentry/api/endpoints/test_auth_integration.py:42: in setUp
    self.client.get(reverse("sentry-api-0-auth-config"))
                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.venv/lib/python3.13/site-packages/django/urls/base.py:98: in reverse
    resolved_url = resolver._reverse_with_prefix(view, prefix, *args, **kwargs)
                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.venv/lib/python3.13/site-packages/django/urls/resolvers.py:749: in _reverse_with_prefix
    self._populate()
.venv/lib/python3.13/site-packages/django/urls/resolvers.py:548: in _populate
    for url_pattern in reversed(self.url_patterns):
                                ^^^^^^^^^^^^^^^^^
.venv/lib/python3.13/site-packages/django/utils/functional.py:47: in __get__
    res = instance.__dict__[self.name] = self.func(instance)
                                         ^^^^^^^^^^^^^^^^^^^
.venv/lib/python3.13/site-packages/django/urls/resolvers.py:718: in url_patterns
    patterns = getattr(self.urlconf_module, "urlpatterns", self.urlconf_module)
                       ^^^^^^^^^^^^^^^^^^^
.venv/lib/python3.13/site-packages/django/utils/functional.py:47: in __get__
    res = instance.__dict__[self.name] = self.func(instance)
                                         ^^^^^^^^^^^^^^^^^^^
.venv/lib/python3.13/site-packages/django/urls/resolvers.py:711: in urlconf_module
    return import_module(self.urlconf_name)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/opt/hostedtoolcache/Python/3.13.17/arm64/lib/python3.13/importlib/__init__.py:88: in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
<frozen importlib._bootstrap>:1404: in _gcd_import
    ???
<frozen importlib._bootstrap>:1369: in _find_and_load
    ???
<frozen importlib._bootstrap>:1340: in _find_and_load_unlocked
    ???
<frozen importlib._bootstrap>:935: in _load_unlocked
    ???
<frozen importlib._bootstrap_external>:1027: in exec_module
    ???
<frozen importlib._bootstrap>:488: in _call_with_frames_removed
    ???
src/sentry/conf/urls.py:3: in <module>
    from sentry.web.urls import handler500, urlpatterns
src/sentry/web/urls.py:184: in <module>
    include("sentry.api.urls"),
    ^^^^^^^^^^^^^^^^^^^^^^^^^^
.venv/lib/python3.13/site-packages/django/urls/conf.py:39: in include
    urlconf_module = import_module(urlconf_module)
                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/opt/hostedtoolcache/Python/3.13.17/arm64/lib/python3.13/importlib/__init__.py:88: in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
... (7 more lines)
tests/sentry/seer/code_review/webhooks/test_seat_tracking.py::TrackGitlabContributorSeatProcessorTest::test_calls_track_contributor_seat_on_open — log
[gw1] linux -- Python 3.13.17 /home/runner/work/sentry/sentry/.venv/bin/python3
tests/sentry/seer/code_review/webhooks/test_seat_tracking.py:45: in setUp
    super().setUp()
fixtures/gitlab.py:47: in setUp
    self.integration.add_organization(self.organization, self.user, identity.id)
                                      ^^^^^^^^^^^^^^^^^
.venv/lib/python3.13/site-packages/django/utils/functional.py:47: in __get__
    res = instance.__dict__[self.name] = self.func(instance)
                                         ^^^^^^^^^^^^^^^^^^^
src/sentry/testutils/fixtures.py:116: in organization
    return self.create_organization(name="baz", slug="baz", owner=self.user)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
src/sentry/testutils/fixtures.py:187: in create_organization
    return Factories.create_organization(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/opt/hostedtoolcache/Python/3.13.17/arm64/lib/python3.13/contextlib.py:85: in inner
    return func(*args, **kwds)
           ^^^^^^^^^^^^^^^^^^^
src/sentry/testutils/factories.py:570: in create_organization
    org.handle_async_replication(org.id)
src/sentry/models/organization.py:296: in handle_async_replication
    organization_mapping_service.upsert(organization_id=self.id, update=update)
src/sentry/hybridcloud/rpc/service.py:359: in remote_method
    return dispatch_remote_call(
src/sentry/hybridcloud/rpc/service.py:499: in dispatch_remote_call
    return remote_silo_call.dispatch(use_test_client)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
src/sentry/hybridcloud/rpc/service.py:569: in dispatch
    serial_response = self._send_to_remote_silo(use_test_client)
                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
src/sentry/hybridcloud/rpc/service.py:631: in _send_to_remote_silo
    signature = generate_request_signature(self.path, data)
                                           ^^^^^^^^^
src/sentry/hybridcloud/rpc/service.py:563: in path
    return django.urls.reverse(
.venv/lib/python3.13/site-packages/django/urls/base.py:98: in reverse
    resolved_url = resolver._reverse_with_prefix(view, prefix, *args, **kwargs)
                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.venv/lib/python3.13/site-packages/django/urls/resolvers.py:749: in _reverse_with_prefix
    self._populate()
.venv/lib/python3.13/site-packages/django/urls/resolvers.py:548: in _populate
    for url_pattern in reversed(self.url_patterns):
                                ^^^^^^^^^^^^^^^^^
.venv/lib/python3.13/site-packages/django/utils/functional.py:47: in __get__
    res = instance.__dict__[self.name] = self.func(instance)
                                         ^^^^^^^^^^^^^^^^^^^
.venv/lib/python3.13/site-packages/django/urls/resolvers.py:718: in url_patterns
    patterns = getattr(self.urlconf_module, "urlpatterns", self.urlconf_module)
                       ^^^^^^^^^^^^^^^^^^^
.venv/lib/python3.13/site-packages/django/utils/functional.py:47: in __get__
... (38 more lines)
tests/sentry/data_export/test_tasks.py::AssembleDownloadTest::test_issue_by_tag_outside_retention — log
[gw0] linux -- Python 3.13.17 /home/runner/work/sentry/sentry/.venv/bin/python3
tests/sentry/data_export/test_tasks.py:51: in setUp
    self.org = self.create_organization()
               ^^^^^^^^^^^^^^^^^^^^^^^^^^
src/sentry/testutils/fixtures.py:187: in create_organization
    return Factories.create_organization(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/opt/hostedtoolcache/Python/3.13.17/arm64/lib/python3.13/contextlib.py:85: in inner
    return func(*args, **kwds)
           ^^^^^^^^^^^^^^^^^^^
src/sentry/testutils/factories.py:570: in create_organization
    org.handle_async_replication(org.id)
src/sentry/models/organization.py:296: in handle_async_replication
    organization_mapping_service.upsert(organization_id=self.id, update=update)
src/sentry/hybridcloud/rpc/service.py:359: in remote_method
    return dispatch_remote_call(
src/sentry/hybridcloud/rpc/service.py:499: in dispatch_remote_call
    return remote_silo_call.dispatch(use_test_client)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
src/sentry/hybridcloud/rpc/service.py:569: in dispatch
    serial_response = self._send_to_remote_silo(use_test_client)
                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
src/sentry/hybridcloud/rpc/service.py:631: in _send_to_remote_silo
    signature = generate_request_signature(self.path, data)
                                           ^^^^^^^^^
src/sentry/hybridcloud/rpc/service.py:563: in path
    return django.urls.reverse(
.venv/lib/python3.13/site-packages/django/urls/base.py:98: in reverse
    resolved_url = resolver._reverse_with_prefix(view, prefix, *args, **kwargs)
                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.venv/lib/python3.13/site-packages/django/urls/resolvers.py:749: in _reverse_with_prefix
    self._populate()
.venv/lib/python3.13/site-packages/django/urls/resolvers.py:548: in _populate
    for url_pattern in reversed(self.url_patterns):
                                ^^^^^^^^^^^^^^^^^
.venv/lib/python3.13/site-packages/django/utils/functional.py:47: in __get__
    res = instance.__dict__[self.name] = self.func(instance)
                                         ^^^^^^^^^^^^^^^^^^^
.venv/lib/python3.13/site-packages/django/urls/resolvers.py:718: in url_patterns
    patterns = getattr(self.urlconf_module, "urlpatterns", self.urlconf_module)
                       ^^^^^^^^^^^^^^^^^^^
.venv/lib/python3.13/site-packages/django/utils/functional.py:47: in __get__
    res = instance.__dict__[self.name] = self.func(instance)
                                         ^^^^^^^^^^^^^^^^^^^
.venv/lib/python3.13/site-packages/django/urls/resolvers.py:711: in urlconf_module
    return import_module(self.urlconf_name)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/opt/hostedtoolcache/Python/3.13.17/arm64/lib/python3.13/importlib/__init__.py:88: in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
... (30 more lines)
tests/sentry/core/endpoints/scim/test_scim_team_details.py::SCIMDetailPatchTest::test_remove_member_azure — log
[gw3] linux -- Python 3.13.17 /home/runner/work/sentry/sentry/.venv/bin/python3
tests/sentry/core/endpoints/scim/test_scim_team_details.py:94: in setUp
    super().setUp()
src/sentry/testutils/cases.py:2767: in setUp
    organization_id=self.organization.id, provider=self.provider
                    ^^^^^^^^^^^^^^^^^
.venv/lib/python3.13/site-packages/django/utils/functional.py:47: in __get__
    res = instance.__dict__[self.name] = self.func(instance)
                                         ^^^^^^^^^^^^^^^^^^^
src/sentry/testutils/fixtures.py:116: in organization
    return self.create_organization(name="baz", slug="baz", owner=self.user)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
src/sentry/testutils/fixtures.py:187: in create_organization
    return Factories.create_organization(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/opt/hostedtoolcache/Python/3.13.17/arm64/lib/python3.13/contextlib.py:85: in inner
    return func(*args, **kwds)
           ^^^^^^^^^^^^^^^^^^^
src/sentry/testutils/factories.py:570: in create_organization
    org.handle_async_replication(org.id)
src/sentry/models/organization.py:296: in handle_async_replication
    organization_mapping_service.upsert(organization_id=self.id, update=update)
src/sentry/hybridcloud/rpc/service.py:359: in remote_method
    return dispatch_remote_call(
src/sentry/hybridcloud/rpc/service.py:499: in dispatch_remote_call
    return remote_silo_call.dispatch(use_test_client)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
src/sentry/hybridcloud/rpc/service.py:569: in dispatch
    serial_response = self._send_to_remote_silo(use_test_client)
                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
src/sentry/hybridcloud/rpc/service.py:631: in _send_to_remote_silo
    signature = generate_request_signature(self.path, data)
                                           ^^^^^^^^^
src/sentry/hybridcloud/rpc/service.py:563: in path
    return django.urls.reverse(
.venv/lib/python3.13/site-packages/django/urls/base.py:98: in reverse
    resolved_url = resolver._reverse_with_prefix(view, prefix, *args, **kwargs)
                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.venv/lib/python3.13/site-packages/django/urls/resolvers.py:749: in _reverse_with_prefix
    self._populate()
.venv/lib/python3.13/site-packages/django/urls/resolvers.py:548: in _populate
    for url_pattern in reversed(self.url_patterns):
                                ^^^^^^^^^^^^^^^^^
.venv/lib/python3.13/site-packages/django/utils/functional.py:47: in __get__
    res = instance.__dict__[self.name] = self.func(instance)
                                         ^^^^^^^^^^^^^^^^^^^
.venv/lib/python3.13/site-packages/django/urls/resolvers.py:718: in url_patterns
    patterns = getattr(self.urlconf_module, "urlpatterns", self.urlconf_module)
                       ^^^^^^^^^^^^^^^^^^^
.venv/lib/python3.13/site-packages/django/utils/functional.py:47: in __get__
... (38 more lines)
tests/sentry/seer/code_review/webhooks/test_seat_tracking.py::TrackGitlabContributorSeatProcessorTest::test_duplicate_delivery_after_ttl_processes_again — log
[gw1] linux -- Python 3.13.17 /home/runner/work/sentry/sentry/.venv/bin/python3
tests/sentry/seer/code_review/webhooks/test_seat_tracking.py:45: in setUp
    super().setUp()
fixtures/gitlab.py:47: in setUp
    self.integration.add_organization(self.organization, self.user, identity.id)
                                      ^^^^^^^^^^^^^^^^^
.venv/lib/python3.13/site-packages/django/utils/functional.py:47: in __get__
    res = instance.__dict__[self.name] = self.func(instance)
                                         ^^^^^^^^^^^^^^^^^^^
src/sentry/testutils/fixtures.py:116: in organization
    return self.create_organization(name="baz", slug="baz", owner=self.user)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
src/sentry/testutils/fixtures.py:187: in create_organization
    return Factories.create_organization(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/opt/hostedtoolcache/Python/3.13.17/arm64/lib/python3.13/contextlib.py:85: in inner
    return func(*args, **kwds)
           ^^^^^^^^^^^^^^^^^^^
src/sentry/testutils/factories.py:570: in create_organization
    org.handle_async_replication(org.id)
src/sentry/models/organization.py:296: in handle_async_replication
    organization_mapping_service.upsert(organization_id=self.id, update=update)
src/sentry/hybridcloud/rpc/service.py:359: in remote_method
    return dispatch_remote_call(
src/sentry/hybridcloud/rpc/service.py:499: in dispatch_remote_call
    return remote_silo_call.dispatch(use_test_client)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
src/sentry/hybridcloud/rpc/service.py:569: in dispatch
    serial_response = self._send_to_remote_silo(use_test_client)
                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
src/sentry/hybridcloud/rpc/service.py:631: in _send_to_remote_silo
    signature = generate_request_signature(self.path, data)
                                           ^^^^^^^^^
src/sentry/hybridcloud/rpc/service.py:563: in path
    return django.urls.reverse(
.venv/lib/python3.13/site-packages/django/urls/base.py:98: in reverse
    resolved_url = resolver._reverse_with_prefix(view, prefix, *args, **kwargs)
                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.venv/lib/python3.13/site-packages/django/urls/resolvers.py:749: in _reverse_with_prefix
    self._populate()
.venv/lib/python3.13/site-packages/django/urls/resolvers.py:548: in _populate
    for url_pattern in reversed(self.url_patterns):
                                ^^^^^^^^^^^^^^^^^
.venv/lib/python3.13/site-packages/django/utils/functional.py:47: in __get__
    res = instance.__dict__[self.name] = self.func(instance)
                                         ^^^^^^^^^^^^^^^^^^^
.venv/lib/python3.13/site-packages/django/urls/resolvers.py:718: in url_patterns
    patterns = getattr(self.urlconf_module, "urlpatterns", self.urlconf_module)
                       ^^^^^^^^^^^^^^^^^^^
.venv/lib/python3.13/site-packages/django/utils/functional.py:47: in __get__
... (38 more lines)
tests/sentry/core/endpoints/scim/test_scim_team_details.py::SCIMDetailPatchTest::test_rename_team_azure_request — log
[gw3] linux -- Python 3.13.17 /home/runner/work/sentry/sentry/.venv/bin/python3
tests/sentry/core/endpoints/scim/test_scim_team_details.py:94: in setUp
    super().setUp()
src/sentry/testutils/cases.py:2767: in setUp
    organization_id=self.organization.id, provider=self.provider
                    ^^^^^^^^^^^^^^^^^
.venv/lib/python3.13/site-packages/django/utils/functional.py:47: in __get__
    res = instance.__dict__[self.name] = self.func(instance)
                                         ^^^^^^^^^^^^^^^^^^^
src/sentry/testutils/fixtures.py:116: in organization
    return self.create_organization(name="baz", slug="baz", owner=self.user)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
src/sentry/testutils/fixtures.py:187: in create_organization
    return Factories.create_organization(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/opt/hostedtoolcache/Python/3.13.17/arm64/lib/python3.13/contextlib.py:85: in inner
    return func(*args, **kwds)
           ^^^^^^^^^^^^^^^^^^^
src/sentry/testutils/factories.py:570: in create_organization
    org.handle_async_replication(org.id)
src/sentry/models/organization.py:296: in handle_async_replication
    organization_mapping_service.upsert(organization_id=self.id, update=update)
src/sentry/hybridcloud/rpc/service.py:359: in remote_method
    return dispatch_remote_call(
src/sentry/hybridcloud/rpc/service.py:499: in dispatch_remote_call
    return remote_silo_call.dispatch(use_test_client)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
src/sentry/hybridcloud/rpc/service.py:569: in dispatch
    serial_response = self._send_to_remote_silo(use_test_client)
                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
src/sentry/hybridcloud/rpc/service.py:631: in _send_to_remote_silo
    signature = generate_request_signature(self.path, data)
                                           ^^^^^^^^^
src/sentry/hybridcloud/rpc/service.py:563: in path
    return django.urls.reverse(
.venv/lib/python3.13/site-packages/django/urls/base.py:98: in reverse
    resolved_url = resolver._reverse_with_prefix(view, prefix, *args, **kwargs)
                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.venv/lib/python3.13/site-packages/django/urls/resolvers.py:749: in _reverse_with_prefix
    self._populate()
.venv/lib/python3.13/site-packages/django/urls/resolvers.py:548: in _populate
    for url_pattern in reversed(self.url_patterns):
                                ^^^^^^^^^^^^^^^^^
.venv/lib/python3.13/site-packages/django/utils/functional.py:47: in __get__
    res = instance.__dict__[self.name] = self.func(instance)
                                         ^^^^^^^^^^^^^^^^^^^
.venv/lib/python3.13/site-packages/django/urls/resolvers.py:718: in url_patterns
    patterns = getattr(self.urlconf_module, "urlpatterns", self.urlconf_module)
                       ^^^^^^^^^^^^^^^^^^^
.venv/lib/python3.13/site-packages/django/utils/functional.py:47: in __get__
... (38 more lines)
tests/sentry/data_export/test_tasks.py::AssembleDownloadExploreTest::test_explore_logs_jsonl_full_dataset_rich_fields_sync — log
[gw0] linux -- Python 3.13.17 /home/runner/work/sentry/sentry/.venv/bin/python3
tests/sentry/data_export/test_tasks.py:722: in setUp
    self.org = self.create_organization()
               ^^^^^^^^^^^^^^^^^^^^^^^^^^
src/sentry/testutils/fixtures.py:187: in create_organization
    return Factories.create_organization(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/opt/hostedtoolcache/Python/3.13.17/arm64/lib/python3.13/contextlib.py:85: in inner
    return func(*args, **kwds)
           ^^^^^^^^^^^^^^^^^^^
src/sentry/testutils/factories.py:570: in create_organization
    org.handle_async_replication(org.id)
src/sentry/models/organization.py:296: in handle_async_replication
    organization_mapping_service.upsert(organization_id=self.id, update=update)
src/sentry/hybridcloud/rpc/service.py:359: in remote_method
    return dispatch_remote_call(
src/sentry/hybridcloud/rpc/service.py:499: in dispatch_remote_call
    return remote_silo_call.dispatch(use_test_client)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
src/sentry/hybridcloud/rpc/service.py:569: in dispatch
    serial_response = self._send_to_remote_silo(use_test_client)
                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
src/sentry/hybridcloud/rpc/service.py:631: in _send_to_remote_silo
    signature = generate_request_signature(self.path, data)
                                           ^^^^^^^^^
src/sentry/hybridcloud/rpc/service.py:563: in path
    return django.urls.reverse(
.venv/lib/python3.13/site-packages/django/urls/base.py:98: in reverse
    resolved_url = resolver._reverse_with_prefix(view, prefix, *args, **kwargs)
                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.venv/lib/python3.13/site-packages/django/urls/resolvers.py:749: in _reverse_with_prefix
    self._populate()
.venv/lib/python3.13/site-packages/django/urls/resolvers.py:548: in _populate
    for url_pattern in reversed(self.url_patterns):
                                ^^^^^^^^^^^^^^^^^
.venv/lib/python3.13/site-packages/django/utils/functional.py:47: in __get__
    res = instance.__dict__[self.name] = self.func(instance)
                                         ^^^^^^^^^^^^^^^^^^^
.venv/lib/python3.13/site-packages/django/urls/resolvers.py:718: in url_patterns
    patterns = getattr(self.urlconf_module, "urlpatterns", self.urlconf_module)
                       ^^^^^^^^^^^^^^^^^^^
.venv/lib/python3.13/site-packages/django/utils/functional.py:47: in __get__
    res = instance.__dict__[self.name] = self.func(instance)
                                         ^^^^^^^^^^^^^^^^^^^
.venv/lib/python3.13/site-packages/django/urls/resolvers.py:711: in urlconf_module
    return import_module(self.urlconf_name)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/opt/hostedtoolcache/Python/3.13.17/arm64/lib/python3.13/importlib/__init__.py:88: in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
... (30 more lines)
tests/sentry/seer/code_review/webhooks/test_seat_tracking.py::TrackGitlabContributorSeatProcessorTest::test_duplicate_delivery_within_window_skipped — log
[gw1] linux -- Python 3.13.17 /home/runner/work/sentry/sentry/.venv/bin/python3
tests/sentry/seer/code_review/webhooks/test_seat_tracking.py:45: in setUp
    super().setUp()
fixtures/gitlab.py:47: in setUp
    self.integration.add_organization(self.organization, self.user, identity.id)
                                      ^^^^^^^^^^^^^^^^^
.venv/lib/python3.13/site-packages/django/utils/functional.py:47: in __get__
    res = instance.__dict__[self.name] = self.func(instance)
                                         ^^^^^^^^^^^^^^^^^^^
src/sentry/testutils/fixtures.py:116: in organization
    return self.create_organization(name="baz", slug="baz", owner=self.user)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
src/sentry/testutils/fixtures.py:187: in create_organization
    return Factories.create_organization(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/opt/hostedtoolcache/Python/3.13.17/arm64/lib/python3.13/contextlib.py:85: in inner
    return func(*args, **kwds)
           ^^^^^^^^^^^^^^^^^^^
src/sentry/testutils/factories.py:570: in create_organization
    org.handle_async_replication(org.id)
src/sentry/models/organization.py:296: in handle_async_replication
    organization_mapping_service.upsert(organization_id=self.id, update=update)
src/sentry/hybridcloud/rpc/service.py:359: in remote_method
    return dispatch_remote_call(
src/sentry/hybridcloud/rpc/service.py:499: in dispatch_remote_call
    return remote_silo_call.dispatch(use_test_client)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
src/sentry/hybridcloud/rpc/service.py:569: in dispatch
    serial_response = self._send_to_remote_silo(use_test_client)
                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
src/sentry/hybridcloud/rpc/service.py:631: in _send_to_remote_silo
    signature = generate_request_signature(self.path, data)
                                           ^^^^^^^^^
src/sentry/hybridcloud/rpc/service.py:563: in path
    return django.urls.reverse(
.venv/lib/python3.13/site-packages/django/urls/base.py:98: in reverse
    resolved_url = resolver._reverse_with_prefix(view, prefix, *args, **kwargs)
                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.venv/lib/python3.13/site-packages/django/urls/resolvers.py:749: in _reverse_with_prefix
    self._populate()
.venv/lib/python3.13/site-packages/django/urls/resolvers.py:548: in _populate
    for url_pattern in reversed(self.url_patterns):
                                ^^^^^^^^^^^^^^^^^
.venv/lib/python3.13/site-packages/django/utils/functional.py:47: in __get__
    res = instance.__dict__[self.name] = self.func(instance)
            

... (truncated due to GitHub comment size limit)

@github-actions

github-actions Bot commented Nov 3, 2026

Copy link
Copy Markdown
Contributor

Backend Test Failures

Failures on 0900fc8 in this run:

tests/sentry/api/endpoints/test_api_application_rotate_secrets.py::ApiApplicationRotateSecretTest::test_invalid_app_id — log
[gw1] linux -- Python 3.13.17 /home/runner/work/sentry/sentry/.venv/bin/python3
tests/sentry/api/endpoints/test_api_application_rotate_secrets.py:12: in setUp
    self.path = reverse("sentry-api-0-api-application-rotate-secret", args=[self.app.client_id])
                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.venv/lib/python3.13/site-packages/django/urls/base.py:98: in reverse
    resolved_url = resolver._reverse_with_prefix(view, prefix, *args, **kwargs)
                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.venv/lib/python3.13/site-packages/django/urls/resolvers.py:749: in _reverse_with_prefix
    self._populate()
.venv/lib/python3.13/site-packages/django/urls/resolvers.py:548: in _populate
    for url_pattern in reversed(self.url_patterns):
                                ^^^^^^^^^^^^^^^^^
.venv/lib/python3.13/site-packages/django/utils/functional.py:47: in __get__
    res = instance.__dict__[self.name] = self.func(instance)
                                         ^^^^^^^^^^^^^^^^^^^
.venv/lib/python3.13/site-packages/django/urls/resolvers.py:718: in url_patterns
    patterns = getattr(self.urlconf_module, "urlpatterns", self.urlconf_module)
                       ^^^^^^^^^^^^^^^^^^^
.venv/lib/python3.13/site-packages/django/utils/functional.py:47: in __get__
    res = instance.__dict__[self.name] = self.func(instance)
                                         ^^^^^^^^^^^^^^^^^^^
.venv/lib/python3.13/site-packages/django/urls/resolvers.py:711: in urlconf_module
    return import_module(self.urlconf_name)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/opt/hostedtoolcache/Python/3.13.17/arm64/lib/python3.13/importlib/__init__.py:88: in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
<frozen importlib._bootstrap>:1404: in _gcd_import
    ???
<frozen importlib._bootstrap>:1369: in _find_and_load
    ???
<frozen importlib._bootstrap>:1340: in _find_and_load_unlocked
    ???
<frozen importlib._bootstrap>:935: in _load_unlocked
    ???
<frozen importlib._bootstrap_external>:1027: in exec_module
    ???
<frozen importlib._bootstrap>:488: in _call_with_frames_removed
    ???
src/sentry/conf/urls.py:3: in <module>
    from sentry.web.urls import handler500, urlpatterns
src/sentry/web/urls.py:184: in <module>
    include("sentry.api.urls"),
    ^^^^^^^^^^^^^^^^^^^^^^^^^^
.venv/lib/python3.13/site-packages/django/urls/conf.py:39: in include
    urlconf_module = import_module(urlconf_module)
                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/opt/hostedtoolcache/Python/3.13.17/arm64/lib/python3.13/importlib/__init__.py:88: in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
... (7 more lines)
tests/sentry/api/endpoints/test_api_application_details.py::ApiApplicationUpdateTest::test_simple — log
[gw0] linux -- Python 3.13.17 /home/runner/work/sentry/sentry/.venv/bin/python3
tests/sentry/api/endpoints/test_api_application_details.py:27: in test_simple
    url = reverse("sentry-api-0-api-application-details", args=[app.client_id])
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.venv/lib/python3.13/site-packages/django/urls/base.py:98: in reverse
    resolved_url = resolver._reverse_with_prefix(view, prefix, *args, **kwargs)
                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.venv/lib/python3.13/site-packages/django/urls/resolvers.py:749: in _reverse_with_prefix
    self._populate()
.venv/lib/python3.13/site-packages/django/urls/resolvers.py:548: in _populate
    for url_pattern in reversed(self.url_patterns):
                                ^^^^^^^^^^^^^^^^^
.venv/lib/python3.13/site-packages/django/utils/functional.py:47: in __get__
    res = instance.__dict__[self.name] = self.func(instance)
                                         ^^^^^^^^^^^^^^^^^^^
.venv/lib/python3.13/site-packages/django/urls/resolvers.py:718: in url_patterns
    patterns = getattr(self.urlconf_module, "urlpatterns", self.urlconf_module)
                       ^^^^^^^^^^^^^^^^^^^
.venv/lib/python3.13/site-packages/django/utils/functional.py:47: in __get__
    res = instance.__dict__[self.name] = self.func(instance)
                                         ^^^^^^^^^^^^^^^^^^^
.venv/lib/python3.13/site-packages/django/urls/resolvers.py:711: in urlconf_module
    return import_module(self.urlconf_name)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/opt/hostedtoolcache/Python/3.13.17/arm64/lib/python3.13/importlib/__init__.py:88: in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
<frozen importlib._bootstrap>:1404: in _gcd_import
    ???
<frozen importlib._bootstrap>:1369: in _find_and_load
    ???
<frozen importlib._bootstrap>:1340: in _find_and_load_unlocked
    ???
<frozen importlib._bootstrap>:935: in _load_unlocked
    ???
<frozen importlib._bootstrap_external>:1027: in exec_module
    ???
<frozen importlib._bootstrap>:488: in _call_with_frames_removed
    ???
src/sentry/conf/urls.py:3: in <module>
    from sentry.web.urls import handler500, urlpatterns
src/sentry/web/urls.py:184: in <module>
    include("sentry.api.urls"),
    ^^^^^^^^^^^^^^^^^^^^^^^^^^
.venv/lib/python3.13/site-packages/django/urls/conf.py:39: in include
    urlconf_module = import_module(urlconf_module)
                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/opt/hostedtoolcache/Python/3.13.17/arm64/lib/python3.13/importlib/__init__.py:88: in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
... (7 more lines)
tests/sentry/api/endpoints/test_api_token_details.py::ApiTokenGetTest::test_deny_token_access — log
[gw3] linux -- Python 3.13.17 /home/runner/work/sentry/sentry/.venv/bin/python3
src/sentry/hybridcloud/models/outbox.py:394: in process
    coalesced.send_signal()
src/sentry/hybridcloud/models/outbox.py:617: in send_signal
    process_control_outbox.send(
.venv/lib/python3.13/site-packages/django/dispatch/dispatcher.py:189: in send
    response = receiver(signal=self, sender=sender, **named)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
src/sentry/hybridcloud/outbox/category.py:161: in receiver
    maybe_instance.handle_async_replication(
src/sentry/models/apitoken.py:335: in handle_async_replication
    cell_replica_service.upsert_replicated_api_token(
src/sentry/hybridcloud/rpc/service.py:359: in remote_method
    return dispatch_remote_call(
src/sentry/hybridcloud/rpc/service.py:499: in dispatch_remote_call
    return remote_silo_call.dispatch(use_test_client)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
src/sentry/hybridcloud/rpc/service.py:569: in dispatch
    serial_response = self._send_to_remote_silo(use_test_client)
                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
src/sentry/hybridcloud/rpc/service.py:631: in _send_to_remote_silo
    signature = generate_request_signature(self.path, data)
                                           ^^^^^^^^^
src/sentry/hybridcloud/rpc/service.py:563: in path
    return django.urls.reverse(
.venv/lib/python3.13/site-packages/django/urls/base.py:98: in reverse
    resolved_url = resolver._reverse_with_prefix(view, prefix, *args, **kwargs)
                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.venv/lib/python3.13/site-packages/django/urls/resolvers.py:749: in _reverse_with_prefix
    self._populate()
.venv/lib/python3.13/site-packages/django/urls/resolvers.py:548: in _populate
    for url_pattern in reversed(self.url_patterns):
                                ^^^^^^^^^^^^^^^^^
.venv/lib/python3.13/site-packages/django/utils/functional.py:47: in __get__
    res = instance.__dict__[self.name] = self.func(instance)
                                         ^^^^^^^^^^^^^^^^^^^
.venv/lib/python3.13/site-packages/django/urls/resolvers.py:718: in url_patterns
    patterns = getattr(self.urlconf_module, "urlpatterns", self.urlconf_module)
                       ^^^^^^^^^^^^^^^^^^^
.venv/lib/python3.13/site-packages/django/utils/functional.py:47: in __get__
    res = instance.__dict__[self.name] = self.func(instance)
                                         ^^^^^^^^^^^^^^^^^^^
.venv/lib/python3.13/site-packages/django/urls/resolvers.py:711: in urlconf_module
    return import_module(self.urlconf_name)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/opt/hostedtoolcache/Python/3.13.17/arm64/lib/python3.13/importlib/__init__.py:88: in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
src/sentry/conf/urls.py:3: in <module>
    from sentry.web.urls import handler500, urlpatterns
... (89 more lines)
tests/sentry/api/endpoints/test_auth_login.py::AuthRegisterEndpointTest::test_adds_user_to_single_organization — log
[gw2] linux -- Python 3.13.17 /home/runner/work/sentry/sentry/.venv/bin/python3
tests/sentry/api/endpoints/test_auth_login.py:456: in test_adds_user_to_single_organization
    organization = self.create_organization(slug="single-org")
                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
src/sentry/testutils/fixtures.py:187: in create_organization
    return Factories.create_organization(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/opt/hostedtoolcache/Python/3.13.17/arm64/lib/python3.13/contextlib.py:85: in inner
    return func(*args, **kwds)
           ^^^^^^^^^^^^^^^^^^^
src/sentry/testutils/factories.py:570: in create_organization
    org.handle_async_replication(org.id)
src/sentry/models/organization.py:296: in handle_async_replication
    organization_mapping_service.upsert(organization_id=self.id, update=update)
src/sentry/hybridcloud/rpc/service.py:359: in remote_method
    return dispatch_remote_call(
src/sentry/hybridcloud/rpc/service.py:499: in dispatch_remote_call
    return remote_silo_call.dispatch(use_test_client)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
src/sentry/hybridcloud/rpc/service.py:569: in dispatch
    serial_response = self._send_to_remote_silo(use_test_client)
                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
src/sentry/hybridcloud/rpc/service.py:631: in _send_to_remote_silo
    signature = generate_request_signature(self.path, data)
                                           ^^^^^^^^^
src/sentry/hybridcloud/rpc/service.py:563: in path
    return django.urls.reverse(
.venv/lib/python3.13/site-packages/django/urls/base.py:98: in reverse
    resolved_url = resolver._reverse_with_prefix(view, prefix, *args, **kwargs)
                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.venv/lib/python3.13/site-packages/django/urls/resolvers.py:749: in _reverse_with_prefix
    self._populate()
.venv/lib/python3.13/site-packages/django/urls/resolvers.py:548: in _populate
    for url_pattern in reversed(self.url_patterns):
                                ^^^^^^^^^^^^^^^^^
.venv/lib/python3.13/site-packages/django/utils/functional.py:47: in __get__
    res = instance.__dict__[self.name] = self.func(instance)
                                         ^^^^^^^^^^^^^^^^^^^
.venv/lib/python3.13/site-packages/django/urls/resolvers.py:718: in url_patterns
    patterns = getattr(self.urlconf_module, "urlpatterns", self.urlconf_module)
                       ^^^^^^^^^^^^^^^^^^^
.venv/lib/python3.13/site-packages/django/utils/functional.py:47: in __get__
    res = instance.__dict__[self.name] = self.func(instance)
                                         ^^^^^^^^^^^^^^^^^^^
.venv/lib/python3.13/site-packages/django/urls/resolvers.py:711: in urlconf_module
    return import_module(self.urlconf_name)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/opt/hostedtoolcache/Python/3.13.17/arm64/lib/python3.13/importlib/__init__.py:88: in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
... (30 more lines)
tests/sentry/api/endpoints/test_api_application_rotate_secrets.py::ApiApplicationRotateSecretTest::test_non_owner_call — log
[gw1] linux -- Python 3.13.17 /home/runner/work/sentry/sentry/.venv/bin/python3
tests/sentry/api/endpoints/test_api_application_rotate_secrets.py:12: in setUp
    self.path = reverse("sentry-api-0-api-application-rotate-secret", args=[self.app.client_id])
                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.venv/lib/python3.13/site-packages/django/urls/base.py:98: in reverse
    resolved_url = resolver._reverse_with_prefix(view, prefix, *args, **kwargs)
                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.venv/lib/python3.13/site-packages/django/urls/resolvers.py:749: in _reverse_with_prefix
    self._populate()
.venv/lib/python3.13/site-packages/django/urls/resolvers.py:548: in _populate
    for url_pattern in reversed(self.url_patterns):
                                ^^^^^^^^^^^^^^^^^
.venv/lib/python3.13/site-packages/django/utils/functional.py:47: in __get__
    res = instance.__dict__[self.name] = self.func(instance)
                                         ^^^^^^^^^^^^^^^^^^^
.venv/lib/python3.13/site-packages/django/urls/resolvers.py:718: in url_patterns
    patterns = getattr(self.urlconf_module, "urlpatterns", self.urlconf_module)
                       ^^^^^^^^^^^^^^^^^^^
.venv/lib/python3.13/site-packages/django/utils/functional.py:47: in __get__
    res = instance.__dict__[self.name] = self.func(instance)
                                         ^^^^^^^^^^^^^^^^^^^
.venv/lib/python3.13/site-packages/django/urls/resolvers.py:711: in urlconf_module
    return import_module(self.urlconf_name)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/opt/hostedtoolcache/Python/3.13.17/arm64/lib/python3.13/importlib/__init__.py:88: in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
<frozen importlib._bootstrap>:1404: in _gcd_import
    ???
<frozen importlib._bootstrap>:1369: in _find_and_load
    ???
<frozen importlib._bootstrap>:1340: in _find_and_load_unlocked
    ???
<frozen importlib._bootstrap>:935: in _load_unlocked
    ???
<frozen importlib._bootstrap_external>:1027: in exec_module
    ???
<frozen importlib._bootstrap>:488: in _call_with_frames_removed
    ???
src/sentry/conf/urls.py:3: in <module>
    from sentry.web.urls import handler500, urlpatterns
src/sentry/web/urls.py:184: in <module>
    include("sentry.api.urls"),
    ^^^^^^^^^^^^^^^^^^^^^^^^^^
.venv/lib/python3.13/site-packages/django/urls/conf.py:39: in include
    urlconf_module = import_module(urlconf_module)
                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/opt/hostedtoolcache/Python/3.13.17/arm64/lib/python3.13/importlib/__init__.py:88: in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
... (7 more lines)
tests/sentry/api/endpoints/test_api_application_details.py::ApiApplicationDeleteTest::test_simple — log
[gw0] linux -- Python 3.13.17 /home/runner/work/sentry/sentry/.venv/bin/python3
tests/sentry/api/endpoints/test_api_application_details.py:42: in test_simple
    url = reverse("sentry-api-0-api-application-details", args=[app.client_id])
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.venv/lib/python3.13/site-packages/django/urls/base.py:98: in reverse
    resolved_url = resolver._reverse_with_prefix(view, prefix, *args, **kwargs)
                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.venv/lib/python3.13/site-packages/django/urls/resolvers.py:749: in _reverse_with_prefix
    self._populate()
.venv/lib/python3.13/site-packages/django/urls/resolvers.py:548: in _populate
    for url_pattern in reversed(self.url_patterns):
                                ^^^^^^^^^^^^^^^^^
.venv/lib/python3.13/site-packages/django/utils/functional.py:47: in __get__
    res = instance.__dict__[self.name] = self.func(instance)
                                         ^^^^^^^^^^^^^^^^^^^
.venv/lib/python3.13/site-packages/django/urls/resolvers.py:718: in url_patterns
    patterns = getattr(self.urlconf_module, "urlpatterns", self.urlconf_module)
                       ^^^^^^^^^^^^^^^^^^^
.venv/lib/python3.13/site-packages/django/utils/functional.py:47: in __get__
    res = instance.__dict__[self.name] = self.func(instance)
                                         ^^^^^^^^^^^^^^^^^^^
.venv/lib/python3.13/site-packages/django/urls/resolvers.py:711: in urlconf_module
    return import_module(self.urlconf_name)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/opt/hostedtoolcache/Python/3.13.17/arm64/lib/python3.13/importlib/__init__.py:88: in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
<frozen importlib._bootstrap>:1404: in _gcd_import
    ???
<frozen importlib._bootstrap>:1369: in _find_and_load
    ???
<frozen importlib._bootstrap>:1340: in _find_and_load_unlocked
    ???
<frozen importlib._bootstrap>:935: in _load_unlocked
    ???
<frozen importlib._bootstrap_external>:1027: in exec_module
    ???
<frozen importlib._bootstrap>:488: in _call_with_frames_removed
    ???
src/sentry/conf/urls.py:3: in <module>
    from sentry.web.urls import handler500, urlpatterns
src/sentry/web/urls.py:184: in <module>
    include("sentry.api.urls"),
    ^^^^^^^^^^^^^^^^^^^^^^^^^^
.venv/lib/python3.13/site-packages/django/urls/conf.py:39: in include
    urlconf_module = import_module(urlconf_module)
                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/opt/hostedtoolcache/Python/3.13.17/arm64/lib/python3.13/importlib/__init__.py:88: in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
... (7 more lines)
tests/sentry/api/endpoints/test_auth_login.py::AuthRegisterEndpointTest::test_requires_registration_access — log
[gw2] linux -- Python 3.13.17 /home/runner/work/sentry/sentry/.venv/bin/python3
tests/sentry/api/endpoints/test_auth_login.py:364: in test_requires_registration_access
    response = self.get_response(
src/sentry/testutils/cases.py:589: in get_response
    else reverse(self.endpoint, args=args)
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.venv/lib/python3.13/site-packages/django/urls/base.py:98: in reverse
    resolved_url = resolver._reverse_with_prefix(view, prefix, *args, **kwargs)
                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.venv/lib/python3.13/site-packages/django/urls/resolvers.py:749: in _reverse_with_prefix
    self._populate()
.venv/lib/python3.13/site-packages/django/urls/resolvers.py:548: in _populate
    for url_pattern in reversed(self.url_patterns):
                                ^^^^^^^^^^^^^^^^^
.venv/lib/python3.13/site-packages/django/utils/functional.py:47: in __get__
    res = instance.__dict__[self.name] = self.func(instance)
                                         ^^^^^^^^^^^^^^^^^^^
.venv/lib/python3.13/site-packages/django/urls/resolvers.py:718: in url_patterns
    patterns = getattr(self.urlconf_module, "urlpatterns", self.urlconf_module)
                       ^^^^^^^^^^^^^^^^^^^
.venv/lib/python3.13/site-packages/django/utils/functional.py:47: in __get__
    res = instance.__dict__[self.name] = self.func(instance)
                                         ^^^^^^^^^^^^^^^^^^^
.venv/lib/python3.13/site-packages/django/urls/resolvers.py:711: in urlconf_module
    return import_module(self.urlconf_name)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/opt/hostedtoolcache/Python/3.13.17/arm64/lib/python3.13/importlib/__init__.py:88: in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
<frozen importlib._bootstrap>:1404: in _gcd_import
    ???
<frozen importlib._bootstrap>:1369: in _find_and_load
    ???
<frozen importlib._bootstrap>:1340: in _find_and_load_unlocked
    ???
<frozen importlib._bootstrap>:935: in _load_unlocked
    ???
<frozen importlib._bootstrap_external>:1027: in exec_module
    ???
<frozen importlib._bootstrap>:488: in _call_with_frames_removed
    ???
src/sentry/conf/urls.py:3: in <module>
    from sentry.web.urls import handler500, urlpatterns
src/sentry/web/urls.py:184: in <module>
    include("sentry.api.urls"),
    ^^^^^^^^^^^^^^^^^^^^^^^^^^
.venv/lib/python3.13/site-packages/django/urls/conf.py:39: in include
    urlconf_module = import_module(urlconf_module)
                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/opt/hostedtoolcache/Python/3.13.17/arm64/lib/python3.13/importlib/__init__.py:88: in import_module
... (9 more lines)
tests/sentry/api/endpoints/test_api_application_rotate_secrets.py::ApiApplicationRotateSecretTest::test_unauthenticated_call — log
[gw1] linux -- Python 3.13.17 /home/runner/work/sentry/sentry/.venv/bin/python3
tests/sentry/api/endpoints/test_api_application_rotate_secrets.py:12: in setUp
    self.path = reverse("sentry-api-0-api-application-rotate-secret", args=[self.app.client_id])
                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.venv/lib/python3.13/site-packages/django/urls/base.py:98: in reverse
    resolved_url = resolver._reverse_with_prefix(view, prefix, *args, **kwargs)
                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.venv/lib/python3.13/site-packages/django/urls/resolvers.py:749: in _reverse_with_prefix
    self._populate()
.venv/lib/python3.13/site-packages/django/urls/resolvers.py:548: in _populate
    for url_pattern in reversed(self.url_patterns):
                                ^^^^^^^^^^^^^^^^^
.venv/lib/python3.13/site-packages/django/utils/functional.py:47: in __get__
    res = instance.__dict__[self.name] = self.func(instance)
                                         ^^^^^^^^^^^^^^^^^^^
.venv/lib/python3.13/site-packages/django/urls/resolvers.py:718: in url_patterns
    patterns = getattr(self.urlconf_module, "urlpatterns", self.urlconf_module)
                       ^^^^^^^^^^^^^^^^^^^
.venv/lib/python3.13/site-packages/django/utils/functional.py:47: in __get__
    res = instance.__dict__[self.name] = self.func(instance)
                                         ^^^^^^^^^^^^^^^^^^^
.venv/lib/python3.13/site-packages/django/urls/resolvers.py:711: in urlconf_module
    return import_module(self.urlconf_name)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/opt/hostedtoolcache/Python/3.13.17/arm64/lib/python3.13/importlib/__init__.py:88: in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
<frozen importlib._bootstrap>:1404: in _gcd_import
    ???
<frozen importlib._bootstrap>:1369: in _find_and_load
    ???
<frozen importlib._bootstrap>:1340: in _find_and_load_unlocked
    ???
<frozen importlib._bootstrap>:935: in _load_unlocked
    ???
<frozen importlib._bootstrap_external>:1027: in exec_module
    ???
<frozen importlib._bootstrap>:488: in _call_with_frames_removed
    ???
src/sentry/conf/urls.py:3: in <module>
    from sentry.web.urls import handler500, urlpatterns
src/sentry/web/urls.py:184: in <module>
    include("sentry.api.urls"),
    ^^^^^^^^^^^^^^^^^^^^^^^^^^
.venv/lib/python3.13/site-packages/django/urls/conf.py:39: in include
    urlconf_module = import_module(urlconf_module)
                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/opt/hostedtoolcache/Python/3.13.17/arm64/lib/python3.13/importlib/__init__.py:88: in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
... (7 more lines)
tests/sentry/api/endpoints/test_api_token_details.py::ApiTokenGetTest::test_never_cache — log
[gw3] linux -- Python 3.13.17 /home/runner/work/sentry/sentry/.venv/bin/python3
src/sentry/hybridcloud/models/outbox.py:394: in process
    coalesced.send_signal()
src/sentry/hybridcloud/models/outbox.py:617: in send_signal
    process_control_outbox.send(
.venv/lib/python3.13/site-packages/django/dispatch/dispatcher.py:189: in send
    response = receiver(signal=self, sender=sender, **named)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
src/sentry/hybridcloud/outbox/category.py:161: in receiver
    maybe_instance.handle_async_replication(
src/sentry/models/apitoken.py:335: in handle_async_replication
    cell_replica_service.upsert_replicated_api_token(
src/sentry/hybridcloud/rpc/service.py:359: in remote_method
    return dispatch_remote_call(
src/sentry/hybridcloud/rpc/service.py:499: in dispatch_remote_call
    return remote_silo_call.dispatch(use_test_client)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
src/sentry/hybridcloud/rpc/service.py:569: in dispatch
    serial_response = self._send_to_remote_silo(use_test_client)
                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
src/sentry/hybridcloud/rpc/service.py:631: in _send_to_remote_silo
    signature = generate_request_signature(self.path, data)
                                           ^^^^^^^^^
src/sentry/hybridcloud/rpc/service.py:563: in path
    return django.urls.reverse(
.venv/lib/python3.13/site-packages/django/urls/base.py:98: in reverse
    resolved_url = resolver._reverse_with_prefix(view, prefix, *args, **kwargs)
                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.venv/lib/python3.13/site-packages/django/urls/resolvers.py:749: in _reverse_with_prefix
    self._populate()
.venv/lib/python3.13/site-packages/django/urls/resolvers.py:548: in _populate
    for url_pattern in reversed(self.url_patterns):
                                ^^^^^^^^^^^^^^^^^
.venv/lib/python3.13/site-packages/django/utils/functional.py:47: in __get__
    res = instance.__dict__[self.name] = self.func(instance)
                                         ^^^^^^^^^^^^^^^^^^^
.venv/lib/python3.13/site-packages/django/urls/resolvers.py:718: in url_patterns
    patterns = getattr(self.urlconf_module, "urlpatterns", self.urlconf_module)
                       ^^^^^^^^^^^^^^^^^^^
.venv/lib/python3.13/site-packages/django/utils/functional.py:47: in __get__
    res = instance.__dict__[self.name] = self.func(instance)
                                         ^^^^^^^^^^^^^^^^^^^
.venv/lib/python3.13/site-packages/django/urls/resolvers.py:711: in urlconf_module
    return import_module(self.urlconf_name)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/opt/hostedtoolcache/Python/3.13.17/arm64/lib/python3.13/importlib/__init__.py:88: in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
src/sentry/conf/urls.py:3: in <module>
    from sentry.web.urls import handler500, urlpatterns
... (81 more lines)
tests/sentry/api/test_client_kind.py::AttributionSpanTest::test_pairs_the_route_with_the_caller — log
[gw0] linux -- Python 3.13.17 /home/runner/work/sentry/sentry/.venv/bin/python3
tests/sentry/api/test_client_kind.py:355: in test_pairs_the_route_with_the_caller
    assert start_span.call_args == mock.call(
E   AssertionError: assert call(name='/a...d': 'script'}) == call(name='/a...d': 'script'})
E     
E     Full diff:
E     �[0m�[91m- call(name='/api/0/organizations/{organization_id_or_slug}/events/', attributes={'sentry.op': 'api.attribution', 'http.route': '/api/0/organizations/{organization_id_or_slug}/events/', 'client_kind': 'script'})�[39;49;00m�[90m�[39;49;00m
E     ?                                 ^   ---------------------                                                                                           ^   ---------------------�[90m�[39;49;00m
E     �[92m+ call(name='/api/0/organizations/my-org/events/', attributes={'sentry.op': 'api.attribution', 'http.route': '/api/0/organizations/my-org/events/', 'client_kind': 'script'})�[39;49;00m�[90m�[39;49;00m
E     ?                                 ^^^                                                                                              ^^^�[90m�[39;49;00m
tests/sentry/api/test_client_kind.py::AttributionSpanTest::test_records_the_route_for_an_internal_api_client_dispatch — log
[gw0] linux -- Python 3.13.17 /home/runner/work/sentry/sentry/.venv/bin/python3
tests/sentry/api/test_client_kind.py:374: in test_records_the_route_for_an_internal_api_client_dispatch
    assert start_span.call_args == mock.call(
E   AssertionError: assert call(name='/a...d': 'script'}) == call(name='/a...d': 'script'})
E     
E     Full diff:
E     �[0m�[91m- call(name='/api/0/organizations/{organization_id_or_slug}/events/', attributes={'sentry.op': 'api.attribution', 'http.route': '/api/0/organizations/{organization_id_or_slug}/events/', 'client_kind': 'script'})�[39;49;00m�[90m�[39;49;00m
E     ?                                 ^   ---------------------                                                                                           ^   ---------------------�[90m�[39;49;00m
E     �[92m+ call(name='/api/0/organizations/my-org/events/', attributes={'sentry.op': 'api.attribution', 'http.route': '/api/0/organizations/my-org/events/', 'client_kind': 'script'})�[39;49;00m�[90m�[39;49;00m
E     ?                                 ^^^                                                                                              ^^^�[90m�[39;49;00m
tests/sentry/api/endpoints/test_api_application_rotate_secrets.py::ApiApplicationRotateSecretTest::test_valid_call — log
[gw1] linux -- Python 3.13.17 /home/runner/work/sentry/sentry/.venv/bin/python3
tests/sentry/api/endpoints/test_api_application_rotate_secrets.py:12: in setUp
    self.path = reverse("sentry-api-0-api-application-rotate-secret", args=[self.app.client_id])
                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.venv/lib/python3.13/site-packages/django/urls/base.py:98: in reverse
    resolved_url = resolver._reverse_with_prefix(view, prefix, *args, **kwargs)
                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.venv/lib/python3.13/site-packages/django/urls/resolvers.py:749: in _reverse_with_prefix
    self._populate()
.venv/lib/python3.13/site-packages/django/urls/resolvers.py:548: in _populate
    for url_pattern in reversed(self.url_patterns):
                                ^^^^^^^^^^^^^^^^^
.venv/lib/python3.13/site-packages/django/utils/functional.py:47: in __get__
    res = instance.__dict__[self.name] = self.func(instance)
                                         ^^^^^^^^^^^^^^^^^^^
.venv/lib/python3.13/site-packages/django/urls/resolvers.py:718: in url_patterns
    patterns = getattr(self.urlconf_module, "urlpatterns", self.urlconf_module)
                       ^^^^^^^^^^^^^^^^^^^
.venv/lib/python3.13/site-packages/django/utils/functional.py:47: in __get__
    res = instance.__dict__[self.name] = self.func(instance)
                                         ^^^^^^^^^^^^^^^^^^^
.venv/lib/python3.13/site-packages/django/urls/resolvers.py:711: in urlconf_module
    return import_module(self.urlconf_name)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/opt/hostedtoolcache/Python/3.13.17/arm64/lib/python3.13/importlib/__init__.py:88: in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
<frozen importlib._bootstrap>:1404: in _gcd_import
    ???
<frozen importlib._bootstrap>:1369: in _find_and_load
    ???
<frozen importlib._bootstrap>:1340: in _find_and_load_unlocked
    ???
<frozen importlib._bootstrap>:935: in _load_unlocked
    ???
<frozen importlib._bootstrap_external>:1027: in exec_module
    ???
<frozen importlib._bootstrap>:488: in _call_with_frames_removed
    ???
src/sentry/conf/urls.py:3: in <module>
    from sentry.web.urls import handler500, urlpatterns
src/sentry/web/urls.py:184: in <module>
    include("sentry.api.urls"),
    ^^^^^^^^^^^^^^^^^^^^^^^^^^
.venv/lib/python3.13/site-packages/django/urls/conf.py:39: in include
    urlconf_module = import_module(urlconf_module)
                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/opt/hostedtoolcache/Python/3.13.17/arm64/lib/python3.13/importlib/__init__.py:88: in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
... (7 more lines)
tests/sentry/api/endpoints/test_auth_login.py::AuthRegisterEndpointTest::test_session_registration_access_is_consumed — log
[gw2] linux -- Python 3.13.17 /home/runner/work/sentry/sentry/.venv/bin/python3
tests/sentry/api/endpoints/test_auth_login.py:424: in test_session_registration_access_is_consumed
    response = self.get_response(
src/sentry/testutils/cases.py:589: in get_response
    else reverse(self.endpoint, args=args)
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.venv/lib/python3.13/site-packages/django/urls/base.py:98: in reverse
    resolved_url = resolver._reverse_with_prefix(view, prefix, *args, **kwargs)
                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.venv/lib/python3.13/site-packages/django/urls/resolvers.py:749: in _reverse_with_prefix
    self._populate()
.venv/lib/python3.13/site-packages/django/urls/resolvers.py:548: in _populate
    for url_pattern in reversed(self.url_patterns):
                                ^^^^^^^^^^^^^^^^^
.venv/lib/python3.13/site-packages/django/utils/functional.py:47: in __get__
    res = instance.__dict__[self.name] = self.func(instance)
                                         ^^^^^^^^^^^^^^^^^^^
.venv/lib/python3.13/site-packages/django/urls/resolvers.py:718: in url_patterns
    patterns = getattr(self.urlconf_module, "urlpatterns", self.urlconf_module)
                       ^^^^^^^^^^^^^^^^^^^
.venv/lib/python3.13/site-packages/django/utils/functional.py:47: in __get__
    res = instance.__dict__[self.name] = self.func(instance)
                                         ^^^^^^^^^^^^^^^^^^^
.venv/lib/python3.13/site-packages/django/urls/resolvers.py:711: in urlconf_module
    return import_module(self.urlconf_name)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/opt/hostedtoolcache/Python/3.13.17/arm64/lib/python3.13/importlib/__init__.py:88: in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
<frozen importlib._bootstrap>:1404: in _gcd_import
    ???
<frozen importlib._bootstrap>:1369: in _find_and_load
    ???
<frozen importlib._bootstrap>:1340: in _find_and_load_unlocked
    ???
<frozen importlib._bootstrap>:935: in _load_unlocked
    ???
<frozen importlib._bootstrap_external>:1027: in exec_module
    ???
<frozen importlib._bootstrap>:488: in _call_with_frames_removed
    ???
src/sentry/conf/urls.py:3: in <module>
    from sentry.web.urls import handler500, urlpatterns
src/sentry/web/urls.py:184: in <module>
    include("sentry.api.urls"),
    ^^^^^^^^^^^^^^^^^^^^^^^^^^
.venv/lib/python3.13/site-packages/django/urls/conf.py:39: in include
    urlconf_module = import_module(urlconf_module)
                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/opt/hostedtoolcache/Python/3.13.17/arm64/lib/python3.13/importlib/__init__.py:88: in import_module
... (9 more lines)
tests/sentry/api/test_client_kind.py::SpanRouteTest::test_an_internal_dispatch_resolves_to_the_same_route — log
[gw0] linux -- Python 3.13.17 /home/runner/work/sentry/sentry/.venv/bin/python3
tests/sentry/api/test_client_kind.py:447: in test_an_internal_dispatch_resolves_to_the_same_route
    assert get_transaction_name_from_request(request) == EVENTS_ROUTE
E   AssertionError: assert '/api/0/organ...y-org/events/' == '/api/0/organ...slug}/events/'
E     
E     �[0m�[91m- /api/0/organizations/{organization_id_or_slug}/events/�[39;49;00m�[90m�[39;49;00m
E     �[92m+ /api/0/organizations/my-org/events/�[39;49;00m�[90m�[39;49;00m
tests/sentry/api/test_client_kind.py::SpanRouteTest::test_an_unmatched_path_collapses_onto_a_catch_all — log
[gw0] linux -- Python 3.13.17 /home/runner/work/sentry/sentry/.venv/bin/python3
tests/sentry/api/test_client_kind.py:451: in test_an_unmatched_path_collapses_onto_a_catch_all
    assert get_transaction_name_from_request(request) == "/api/0/"
E   AssertionError: assert '/api/0/defin.../not/a/route/' == '/api/0/'
E     
E     �[0m�[91m- /api/0/�[39;49;00m�[90m�[39;49;00m
E     �[92m+ /api/0/definitely/not/a/route/�[39;49;00m�[90m�[39;49;00m
tests/sentry/api/test_client_kind.py::SpanRouteTest::test_parameterizes_the_url — log
[gw0] linux -- Python 3.13.17 /home/runner/work/sentry/sentry/.venv/bin/python3
tests/sentry/api/test_client_kind.py:441: in test_parameterizes_the_url
    assert get_transaction_name_from_request(make_request()) == EVENTS_ROUTE
E   AssertionError: assert '/api/0/organ...y-org/events/' == '/api/0/organ...slug}/events/'
E     
E     �[0m�[91m- /api/0/organizations/{organization_id_or_slug}/events/�[39;49;00m�[90m�[39;49;00m
E     �[92m+ /api/0/organizations/my-org/events/�[39;49;00m�[90m�[39;49;00m
tests/sentry/core/endpoints/scim/test_scim_team_details.py::SCIMDetailGetTest::test_team_details_put_permission_denied — log
[gw1] linux -- Python 3.13.17 /home/runner/work/sentry/sentry/.venv/bin/python3
src/sentry/testutils/cases.py:2767: in setUp
    organization_id=self.organization.id, provider=self.provider
                    ^^^^^^^^^^^^^^^^^
.venv/lib/python3.13/site-packages/django/utils/functional.py:47: in __get__
    res = instance.__dict__[self.name] = self.func(instance)
                                         ^^^^^^^^^^^^^^^^^^^
src/sentry/testutils/fixtures.py:116: in organization
    return self.create_organization(name="baz", slug="baz", owner=self.user)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
src/sentry/testutils/fixtures.py:187: in create_organization
    return Factories.create_organization(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/opt/hostedtoolcache/Python/3.13.17/arm64/lib/python3.13/contextlib.py:85: in inner
    return func(*args, **kwds)
           ^^^^^^^^^^^^^^^^^^^
src/sentry/testutils/factories.py:570: in create_organization
    org.handle_async_replication(org.id)
src/sentry/models/organization.py:296: in handle_async_replication
    organization_mapping_service.upsert(organization_id=self.id, update=update)
src/sentry/hybridcloud/rpc/service.py:359: in remote_method
    return dispatch_remote_call(
src/sentry/hybridcloud/rpc/service.py:499: in dispatch_remote_call
    return remote_silo_call.dispatch(use_test_client)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
src/sentry/hybridcloud/rpc/service.py:569: in dispatch
    serial_response = self._send_to_remote_silo(use_test_client)
                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
src/sentry/hybridcloud/rpc/service.py:631: in _send_to_remote_silo
    signature = generate_request_signature(self.path, data)
                                           ^^^^^^^^^
src/sentry/hybridcloud/rpc/service.py:563: in path
    return django.urls.reverse(
.venv/lib/python3.13/site-packages/django/urls/base.py:98: in reverse
    resolved_url = resolver._reverse_with_prefix(view, prefix, *args, **kwargs)
                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.venv/lib/python3.13/site-packages/django/urls/resolvers.py:749: in _reverse_with_prefix
    self._populate()
.venv/lib/python3.13/site-packages/django/urls/resolvers.py:548: in _populate
    for url_pattern in reversed(self.url_patterns):
                                ^^^^^^^^^^^^^^^^^
.venv/lib/python3.13/site-packages/django/utils/functional.py:47: in __get__
    res = instance.__dict__[self.name] = self.func(instance)
                                         ^^^^^^^^^^^^^^^^^^^
.venv/lib/python3.13/site-packages/django/urls/resolvers.py:718: in url_patterns
    patterns = getattr(self.urlconf_module, "urlpatterns", self.urlconf_module)
                       ^^^^^^^^^^^^^^^^^^^
.venv/lib/python3.13/site-packages/django/utils/functional.py:47: in __get__
    res = instance.__dict__[self.name] = self.func(instance)
                                         ^^^^^^^^^^^^^^^^^^^
... (24 more lines)
tests/sentry/api/test_client_kind.py::DispatchWiringTest::test_a_project_endpoint_records_the_caller — log
[gw0] linux -- Python 3.13.17 /home/runner/work/sentry/sentry/.venv/bin/python3
tests/sentry/api/test_client_kind.py:523: in test_a_project_endpoint_records_the_caller
    url = f"/api/0/projects/{self.organization.slug}/{self.project.slug}/"
                             ^^^^^^^^^^^^^^^^^
.venv/lib/python3.13/site-packages/django/utils/functional.py:47: in __get__
    res = instance.__dict__[self.name] = self.func(instance)
                                         ^^^^^^^^^^^^^^^^^^^
src/sentry/testutils/fixtures.py:116: in organization
    return self.create_organization(name="baz", slug="baz", owner=self.user)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
src/sentry/testutils/fixtures.py:187: in create_organization
    return Factories.create_organization(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/opt/hostedtoolcache/Python/3.13.17/arm64/lib/python3.13/contextlib.py:85: in inner
    return func(*args, **kwds)
           ^^^^^^^^^^^^^^^^^^^
src/sentry/testutils/factories.py:570: in create_organization
    org.handle_async_replication(org.id)
src/sentry/models/organization.py:296: in handle_async_replication
    organization_mapping_service.upsert(organization_id=self.id, update=update)
src/sentry/hybridcloud/rpc/service.py:359: in remote_method
    return dispatch_remote_call(
src/sentry/hybridcloud/rpc/service.py:499: in dispatch_remote_call
    return remote_silo_call.dispatch(use_test_client)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
src/sentry/hybridcloud/rpc/service.py:569: in dispatch
    serial_response = self._send_to_remote_silo(use_test_client)
                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
src/sentry/hybridcloud/rpc/service.py:631: in _send_to_remote_silo
    signature = generate_request_signature(self.path, data)
                                           ^^^^^^^^^
src/sentry/hybridcloud/rpc/service.py:563: in path
    return django.urls.reverse(
.venv/lib/python3.13/site-packages/django/urls/base.py:98: in reverse
    resolved_url = resolver._reverse_with_prefix(view, prefix, *args, **kwargs)
                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.venv/lib/python3.13/site-packages/django/urls/resolvers.py:749: in _reverse_with_prefix
    self._populate()
.venv/lib/python3.13/site-packages/django/urls/resolvers.py:548: in _populate
    for url_pattern in reversed(self.url_patterns):
                                ^^^^^^^^^^^^^^^^^
.venv/lib/python3.13/site-packages/django/utils/functional.py:47: in __get__
    res = instance.__dict__[self.name] = self.func(instance)
                                         ^^^^^^^^^^^^^^^^^^^
.venv/lib/python3.13/site-packages/django/urls/resolvers.py:718: in url_patterns
    patterns = getattr(self.urlconf_module, "urlpatterns", self.urlconf_module)
                       ^^^^^^^^^^^^^^^^^^^
.venv/lib/python3.13/site-packages/django/utils/functional.py:47: in __get__
    res = instance.__dict__[self.name] = self.func(instance)
                                         ^^^^^^^^^^^^^^^^^^^
... (36 more lines)
tests/sentry/api/endpoints/test_api_token_details.py::ApiTokenGetTest::test_no_auth — log
[gw3] linux -- Python 3.13.17 /home/runner/work/sentry/sentry/.venv/bin/python3
src/sentry/hybridcloud/models/outbox.py:394: in process
    coalesced.send_signal()
src/sentry/hybridcloud/models/outbox.py:617: in send_signal
    process_control_outbox.send(
.venv/lib/python3.13/site-packages/django/dispatch/dispatcher.py:189: in send
    response = receiver(signal=self, sender=sender, **named)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
src/sentry/hybridcloud/outbox/category.py:161: in receiver
    maybe_instance.handle_async_replication(
src/sentry/models/apitoken.py:335: in handle_async_replication
    cell_replica_service.upsert_replicated_api_token(
src/sentry/hybridcloud/rpc/service.py:359: in remote_method
    return dispatch_remote_call(
src/sentry/hybridcloud/rpc/service.py:499: in dispatch_remote_call
    return remote_silo_call.dispatch(use_test_client)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
src/sentry/hybridcloud/rpc/service.py:569: in dispatch
    serial_response = self._send_to_remote_silo(use_test_client)
                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
src/sentry/hybridcloud/rpc/service.py:631: in _send_to_remote_silo
    signature = generate_request_signature(self.path, data)
                                           ^^^^^^^^^
src/sentry/hybridcloud/rpc/service.py:563: in path
    return django.urls.reverse(
.venv/lib/python3.13/site-packages/django/urls/base.py:98: in reverse
    resolved_url = resolver._reverse_with_prefix(view, prefix, *args, **kwargs)
                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.venv/lib/python3.13/site-packages/django/urls/resolvers.py:749: in _reverse_with_prefix
    self._populate()
.venv/lib/python3.13/site-packages/django/urls/resolvers.py:548: in _populate
    for url_pattern in reversed(self.url_patterns):
                                ^^^^^^^^^^^^^^^^^
.venv/lib/python3.13/site-packages/django/utils/functional.py:47: in __get__
    res = instance.__dict__[self.name] = self.func(instance)
                                         ^^^^^^^^^^^^^^^^^^^
.venv/lib/python3.13/site-packages/django/urls/resolvers.py:718: in url_patterns
    patterns = getattr(self.urlconf_module, "urlpatterns", self.urlconf_module)
                       ^^^^^^^^^^^^^^^^^^^
.venv/lib/python3.13/site-packages/django/utils/functional.py:47: in __get__
    res = instance.__dict__[self.name] = self.func(instance)
                                         ^^^^^^^^^^^^^^^^^^^
.venv/lib/python3.13/site-packages/django/urls/resolvers.py:711: in urlconf_module
    return import_module(self.urlconf_name)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/opt/hostedtoolcache/Python/3.13.17/arm64/lib/python3.13/importlib/__init__.py:88: in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
src/sentry/conf/urls.py:3: in <module>
    from sentry.web.urls import handler500, urlpatterns
... (81 more lines)
tests/sentry/api/endpoints/test_auth_login.py::AuthRegisterInviteTest::test_different_email_is_rejected — log
[gw2] linux -- Python 3.13.17 /home/runner/work/sentry/sentry/.venv/bin/python3
tests/sentry/api/endpoints/test_auth_login.py:545: in setUp
    self.organization = self.create_organization(slug="invited-org")
                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
src/sentry/testutils/fixtures.py:187: in create_organization
    return Factories.create_organization(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/opt/hostedtoolcache/Python/3.13.17/arm64/lib/python3.13/contextlib.py:85: in inner
    return func(*args, **kwds)
           ^^^^^^^^^^^^^^^^^^^
src/sentry/testutils/factories.py:570: in create_organization
    org.handle_async_replication(org.id)
src/sentry/models/organization.py:296: in handle_async_replication
    organization_mapping_service.upsert(organization_id=self.id, update=update)
src/sentry/hybridcloud/rpc/service.py:359: in remote_method
    return dispatch_remote_call(
src/sentry/hybridcloud/rpc/service.py:499: in dispatch_remote_call
    return remote_silo_call.dispatch(use_test_client)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
src/sentry/hybridcloud/rpc/service.py:569: in dispatch
    serial_response = self._send_to_remote_silo(use_test_client)
                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
src/sentry/hybridcloud/rpc/service.py:631: in _send_to_remote_silo
    signature = generate_request_signature(self.path, data)
                                           ^^^^^^^^^
src/sentry/hybridcloud/rpc/service.py:563: in path
    return django.urls.reverse(
.venv/lib/python3.13/site-packages/django/urls/base.py:98: in reverse
    resolved_url = resolver._reverse_with_prefix(view, prefix, *args, **kwargs)
                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.venv/lib/python3.13/site-packages/django/urls/resolvers.py:749: in _reverse_with_prefix
    self._populate()
.venv/lib/python3.13/site-packages/django/urls/resolvers.py:548: in _populate
    for url_pattern in reversed(self.url_patterns):
                                ^^^^^^^^^^^^^^^^^
.venv/lib/python3.13/site-packages/django/utils/functional.py:47: in __get__
    res = instance.__dict__[self.name] = self.func(instance)
                                         ^^^^^^^^^^^^^^^^^^^
.venv/lib/python3.13/site-packages/django/urls/resolvers.py:718: in url_patterns
    patterns = getattr(self.urlconf_module, "urlpatterns", self.urlconf_module)
                       ^^^^^^^^^^^^^^^^^^^
.venv/lib/python3.13/site-packages/django/utils/functional.py:47: in __get__
    res = instance.__dict__[self.name] = self.func(instance)
                                         ^^^^^^^^^^^^^^^^^^^
.venv/lib/python3.13/site-packages/django/urls/resolvers.py:711: in urlconf_module
    return import_module(self.urlconf_name)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/opt/hostedtoolcache/Python/3.13.17/arm64/lib/python3.13/importlib/__init__.py:88: in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
... (30 more lines)
tests/sentry/api/test_client_kind.py::DispatchWiringTest::test_a_team_endpoint_records_the_caller — log
[gw0] linux -- Python 3.13.17 /home/runner/work/sentry/sentry/.venv/bin/python3
tests/sentry/api/test_client_kind.py:527: in test_a_team_endpoint_records_the_caller
    url = f"/api/0/teams/{self.organization.slug}/{self.team.slug}/"
                          ^^^^^^^^^^^^^^^^^
.venv/lib/python3.13/site-packages/django/utils/functional.py:47: in __get__
    res = instance.__dict__[self.name] = self.func(instance)
                                         ^^^^^^^^^^^^^^^^^^^
src/sentry/testutils/fixtures.py:116: in organization
    return self.create_organization(name="baz", slug="baz", owner=self.user)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
src/sentry/testutils/fixtures.py:187: in create_organization
    return Factories.create_organization(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/opt/hostedtoolcache/Python/3.13.17/arm64/lib/python3.13/contextlib.py:85: in inner
    return func(*args, **kwds)
           ^^^^^^^^^^^^^^^^^^^
src/sentry/testutils/factories.py:570: in create_organization
    org.handle_async_replication(org.id)
src/sentry/models/organization.py:296: in handle_async_replication
    organization_mapping_service.upsert(organization_id=self.id, update=update)
src/sentry/hybridcloud/rpc/service.py:359: in remote_method
    return dispatch_remote_call(
src/sentry/hybridcloud/rpc/service.py:499: in dispatch_remote_call
    return remote_silo_call.dispatch(use_test_client)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
src/sentry/hybridcloud/rpc/service.py:569: in dispatch
    serial_response = self._send_to_remote_silo(use_test_client)
                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
src/sentry/hybridcloud/rpc/service.py:631: in _send_to_remote_silo
    signature = generate_request_signature(self.path, data)
                                           ^^^^^^^^^
src/sentry/hybridcloud/rpc/service.py:563: in path
    return django.urls.reverse(
.venv/lib/python3.13/site-packages/django/urls/base.py:98: in reverse
    resolved_url = resolver._reverse_with_prefix(view, prefix, *args, **kwargs)
                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.venv/lib/python3.13/site-packages/django/urls/resolvers.py:749: in _reverse_with_prefix
    self._populate()
.venv/lib/python3.13/site-packages/django/urls/resolvers.py:548: in _populate
    for url_pattern in reversed(self.url_patterns):
                                ^^^^^^^^^^^^^^^^^
.venv/lib/python3.13/site-packages/django/utils/functional.py:47: in __get__
    res = instance.__dict__[self.name] = self.func(instance)
                                         ^^^^^^^^^^^^^^^^^^^
.venv/lib/python3.13/site-packages/django/urls/resolvers.py:718: in url_patterns
    patterns = getattr(self.urlconf_module, "urlpatterns", self.urlconf_module)
                       ^^^^^^^^^^^^^^^^^^^
.venv/lib/python3.13/site-packages/django/utils/functional.py:47: in __get__
    res = instance.__dict__[self.name] = self.func(instance)
                                         ^^^^^^^^^^^^^^^^^^^
... (36 more lines)
tests/sentry/api/endpoints/test_api_token_details.py::ApiTokenGetTest::test_simple — log
[gw3] linux -- Python 3.13.17 /home/runner/work/sentry/sentry/.venv/bin/python3
src/sentry/hybridcloud/models/outbox.py:394: in process
    coalesced.send_signal()
src/sentry/hybridcloud/models/outbox.py:617: in send_signal
    process_control_outbox.send(
.venv/lib/python3.13/site-packages/django/dispatch/dispatcher.py:189: in send
    response = receiver(signal=self, sender=sender, **named)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
src/sentry/hybridcloud/outbox/category.py:161: in receiver
    maybe_instance.handle_async_replication(
src/sentry/models/apitoken.py:335: in handle_async_replication
    cell_replica_service.upsert_replicated_api_token(
src/sentry/hybridcloud/rpc/service.py:359: in remote_method
    return dispatch_remote_call(
src/sentry/hybridcloud/rpc/service.py:499: in dispatch_remote_call
    return remote_silo_call.dispatch(use_test_client)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
src/sentry/hybridcloud/rpc/service.py:569: in dispatch
    serial_response = self._send_to_remote_silo(use_test_client)
                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
src/sentry/hybridcloud/rpc/service.py:631: in _send_to_remote_silo
    signature = generate_request_signature(self.path, data)
                                           ^^^^^^^^^
src/sentry/hybridcloud/rpc/service.py:563: in path
    return django.urls.reverse(
.venv/lib/python3.13/site-packages/django/urls/base.py:98: in reverse
    resolved_url = resolver._reverse_with_prefix(view, prefix, *args, **kwargs)
                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.venv/lib/python3.13/site-packages/django/urls/resolvers.py:749: in _reverse_with_prefix
    self._populate()
.venv/lib/python3.13/site-packages/django/urls/resolvers.py:548: in _populate
    for url_pattern in reversed(self.url_patterns):
                                ^^^^^^^^^^^^^^^^^
.venv/lib/python3.13/site-packages/django/utils/functional.py:47: in __get__
    res = instance.__dict__[self.name] = self.func(instance)
                                         ^^^^^^^^^^^^^^^^^^^
.venv/lib/python3.13/site-packages/django/urls/resolvers.py:718: in url_patterns
    patterns = getattr(self.urlconf_module, "urlpatterns", self.urlconf_module)
                       ^^^^^^^^^^^^^^^^^^^
.venv/lib/python3.13/site-packages/django/utils/functional.py:47: in __get__
    res = instance.__dict__[self.name] = self.func(instance)
                                         ^^^^^^^^^^^^^^^^^^^
.venv/lib/python3.13/site-packages/django/urls/resolvers.py:711: in urlconf_module
    return import_module(self.urlconf_name)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/opt/hostedtoolcache/Python/3.13.17/arm64/lib/python3.13/importlib/__init__.py:88: in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
src/sentry/conf/urls.py:3: in <module>
    from sentry.web.urls import handler500, urlpatterns
... (81 more lines)
tests/sentry/core/endpoints/scim/test_scim_team_details.py::SCIMDetailGetTest::test_team_doesnt_exist — log
[gw1] linux -- Python 3.13.17 /home/runner/work/sentry/sentry/.venv/bin/python3
src/sentry/testutils/cases.py:2767: in setUp
    organization_id=self.organization.id, provider=self.provider
                    ^^^^^^^^^^^^^^^^^
.venv/lib/python3.13/site-packages/django/utils/functional.py:47: in __get__
    res = instance.__dict__[self.name] = self.func(instance)
                                         ^^^^^^^^^^^^^^^^^^^
src/sentry/testutils/fixtures.py:116: in organization
    return self.create_organization(name="baz", slug="baz", owner=self.user)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
src/sentry/testutils/fixtures.py:187: in create_organization
    return Factories.create_organization(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/opt/hostedtoolcache/Python/3.13.17/arm64/lib/python3.13/contextlib.py:85: in inner
    return func(*args, **kwds)
           ^^^^^^^^^^^^^^^^^^^
src/sentry/testutils/factories.py:570: in create_organization
    org.handle_async_replication(org.id)
src/sentry/models/organization.py:296: in handle_async_replication
    organization_mapping_service.upsert(organization_id=self.id, update=update)
src/sentry/hybridcloud/rpc/service.py:359: in remote_method
    return dispatch_remote_call(
src/sentry/hybridcloud/rpc/service.py:499: in dispatch_remote_call
    return remote_silo_call.dispatch(use_test_client)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
src/sentry/hybridcloud/rpc/service.py:569: in dispatch
    serial_response = self._send_to_remote_silo(use_test_client)
                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
src/sentry/hybridcloud/rpc/service.py:631: in _send_to_remote_silo
    signature = generate_request_signature(self.path, data)
                                           ^^^^^^^^^
src/sentry/hybridcloud/rpc/service.py:563: in path
    return django.urls.reverse(
.venv/lib/python3.13/site-packages/django/urls/base.py:98: in reverse
    resolved_url = resolver._reverse_with_prefix(view, prefix, *args, **kwargs)
                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.venv/lib/python3.13/site-packages/django/urls/resolvers.py:749: in _reverse_with_prefix
    self._populate()
.venv/lib/python3.13/site-packages/django/urls/resolvers.py:548: in _populate
    for url_pattern in reversed(self.url_patterns):
                                ^^^^^^^^^^^^^^^^^
.venv/lib/python3.13/site-packages/django/utils/functional.py:47: in __get__
    res = instance.__dict__[self.name] = self.func(instance)
                                         ^^^^^^^^^^^^^^^^^^^
.venv/lib/python3.13/site-packages/django/urls/resolvers.py:718: in url_patterns
    patterns = getattr(self.urlconf_module, "urlpatterns", self.urlconf_module)
                       ^^^^^^^^^^^^^^^^^^^
.venv/lib/python3.13/site-packages/django/utils/functional.py:47: in __get__
    res = instance.__dict__[self.name] = self.func(instance)
                                         ^^^^^^^^^^^^^^^^^^^
... (24 more lines)
tests/sentry/api/endpoints/test_auth_login.py::AuthRegisterInviteTest::test_invite_accepted_by_another_user_is_rejected — log
[gw2] linux -- Python 3.13.17 /home/runner/work/sentry/sentry/.venv/bin/python3
tests/sentry/api/endpoints/test_auth_login.py:545: in setUp
    self.organization = self.create_organization(slug="invited-org")
                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
src/sentry/testutils/fixtures.py:187: in create_organization
    return Factories.create_organization(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/opt/hostedtoolcache/Python/3.13.17/arm64/lib/python3.13/contextlib.py:85: in inner
    return func(*args, **kwds)
           ^^^^^^^^^^^^^^^^^^^
src/sentry/testutils/factories.py:570: in create_organization
    org.handle_async_replication(org.id)
src/sentry/models/organization.py:296: in handle_async_replication
    organization_mapping_service.upsert(organization_id=self.id, update=update)
src/sentry/hybridcloud/rpc/service.py:359: in remote_method
    return dispatch_remote_call(
src/sentry/hybridcloud/rpc/service.py:4

... (truncated due to GitHub comment size limit)

Comment on lines +35 to +38
anchor_id = request.GET.get("anchorProject")
if anchor_id:
anchor = Project.objects.get(id=anchor_id)
seen_first_event = seen_first_event or bool(anchor.first_event)

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nonempty anchorProject raises NameError because Project is not imported

The endpoint references Project.objects.get() without importing or defining Project. Any request with a nonempty anchorProject query parameter raises NameError and returns a 500 before performing the lookup. Import Project from sentry.models.project; also handle invalid or missing IDs so they do not cause a separate unhandled lookup error.

Evidence
  • The endpoint module imports Organization but does not import or define Project.
  • get() reads anchorProject from the request query string and reaches Project.objects.get() whenever its value is nonempty.
  • That reference raises NameError before the ORM lookup, so such requests cannot return the endpoint’s normal response.

Identified by Warden · sentry-backend-bugs · R9Z-LRP

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Scope: Backend Automatically applied to PRs that change backend components Scope: Frontend Automatically applied to PRs that change frontend components

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants