Skip to content

Conversation

@aliu39
Copy link
Member

@aliu39 aliu39 commented Nov 24, 2025

No description provided.

@aliu39 aliu39 requested a review from a team as a code owner November 24, 2025 22:27
@github-actions github-actions bot added the Scope: Backend Automatically applied to PRs that change backend components label Nov 24, 2025
Copy link
Member

@roaga roaga left a comment

Choose a reason for hiding this comment

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

probably needs to be removed from seer_rpc.py too, and any tests

@codecov
Copy link

codecov bot commented Nov 24, 2025

❌ 13 Tests Failed:

Tests completed Failed Passed Skipped
114 13 101 2
View the top 3 failed test(s) by shortest run time
::tests.sentry.api.endpoints.secret_scanning.test_github
Stack Traces | 0s run time
#x1B[31mImportError while importing test module '.../endpoints/secret_scanning/test_github.py'.
Hint: make sure your test modules/packages have valid Python names.
Traceback:
#x1B[1m#x1B[.../hostedtoolcache/Python/3.13.1........./x64/lib/python3.13/importlib/__init__.py#x1B[0m:88: in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
#x1B[1m#x1B[.../endpoints/secret_scanning/test_github.py#x1B[0m:18: in <module>
    class SecretScanningGitHubTest(TestCase):
#x1B[1m#x1B[.../endpoints/secret_scanning/test_github.py#x1B[0m:19: in SecretScanningGitHubTest
    path = reverse("sentry-api-0-secret-scanning-github")
#x1B[1m#x1B[31m.venv/lib/python3.13.../django/urls/base.py#x1B[0m:98: in reverse
    resolved_url = resolver._reverse_with_prefix(view, prefix, *args, **kwargs)
#x1B[1m#x1B[31m.venv/lib/python3.13.../django/urls/resolvers.py#x1B[0m:749: in _reverse_with_prefix
    self._populate()
#x1B[1m#x1B[31m.venv/lib/python3.13.../django/urls/resolvers.py#x1B[0m:548: in _populate
    for url_pattern in reversed(self.url_patterns):
#x1B[1m#x1B[31m.venv/lib/python3.13.../django/utils/functional.py#x1B[0m:47: in __get__
    res = instance.__dict__[self.name] = self.func(instance)
#x1B[1m#x1B[31m.venv/lib/python3.13.../django/urls/resolvers.py#x1B[0m:718: in url_patterns
    patterns = getattr(self.urlconf_module, "urlpatterns", self.urlconf_module)
#x1B[1m#x1B[31m.venv/lib/python3.13.../django/utils/functional.py#x1B[0m:47: in __get__
    res = instance.__dict__[self.name] = self.func(instance)
#x1B[1m#x1B[31m.venv/lib/python3.13.../django/urls/resolvers.py#x1B[0m:711: in urlconf_module
    return import_module(self.urlconf_name)
#x1B[1m#x1B[.../hostedtoolcache/Python/3.13.1........./x64/lib/python3.13/importlib/__init__.py#x1B[0m:88: in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
#x1B[1m#x1B[.../sentry/conf/urls.py#x1B[0m:3: in <module>
    from sentry.web.urls import urlpatterns
#x1B[1m#x1B[.../sentry/web/urls.py#x1B[0m:168: in <module>
    include("sentry.api.urls"),
#x1B[1m#x1B[31m.venv/lib/python3.13.../django/urls/conf.py#x1B[0m:39: in include
    urlconf_module = import_module(urlconf_module)
#x1B[1m#x1B[.../hostedtoolcache/Python/3.13.1........./x64/lib/python3.13/importlib/__init__.py#x1B[0m:88: in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
#x1B[1m#x1B[.../sentry/api/urls.py#x1B[0m:531: in <module>
    from sentry.seer.endpoints.seer_rpc import SeerRpcServiceEndpoint
#x1B[1m#x1B[.../seer/endpoints/seer_rpc.py#x1B[0m:89: in <module>
    from sentry.seer.explorer.tools import (
#x1B[1m#x1B[31mE   ImportError: cannot import name 'get_issue_details' from 'sentry.seer.explorer.tools' (.../seer/explorer/tools.py)#x1B[0m#x1B[0m
::tests.sentry.api.endpoints.test_api_tokens
Stack Traces | 0s run time
#x1B[31mImportError while importing test module '.../api/endpoints/test_api_tokens.py'.
Hint: make sure your test modules/packages have valid Python names.
Traceback:
#x1B[1m#x1B[.../hostedtoolcache/Python/3.13.1........./x64/lib/python3.13/importlib/__init__.py#x1B[0m:88: in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
#x1B[1m#x1B[.../api/endpoints/test_api_tokens.py#x1B[0m:160: in <module>
    class ApiTokensSuperuserTest(APITestCase):
#x1B[1m#x1B[.../api/endpoints/test_api_tokens.py#x1B[0m:161: in ApiTokensSuperuserTest
    url = reverse("sentry-api-0-api-tokens")
#x1B[1m#x1B[31m.venv/lib/python3.13.../django/urls/base.py#x1B[0m:98: in reverse
    resolved_url = resolver._reverse_with_prefix(view, prefix, *args, **kwargs)
#x1B[1m#x1B[31m.venv/lib/python3.13.../django/urls/resolvers.py#x1B[0m:749: in _reverse_with_prefix
    self._populate()
#x1B[1m#x1B[31m.venv/lib/python3.13.../django/urls/resolvers.py#x1B[0m:548: in _populate
    for url_pattern in reversed(self.url_patterns):
#x1B[1m#x1B[31m.venv/lib/python3.13.../django/utils/functional.py#x1B[0m:47: in __get__
    res = instance.__dict__[self.name] = self.func(instance)
#x1B[1m#x1B[31m.venv/lib/python3.13.../django/urls/resolvers.py#x1B[0m:718: in url_patterns
    patterns = getattr(self.urlconf_module, "urlpatterns", self.urlconf_module)
#x1B[1m#x1B[31m.venv/lib/python3.13.../django/utils/functional.py#x1B[0m:47: in __get__
    res = instance.__dict__[self.name] = self.func(instance)
#x1B[1m#x1B[31m.venv/lib/python3.13.../django/urls/resolvers.py#x1B[0m:711: in urlconf_module
    return import_module(self.urlconf_name)
#x1B[1m#x1B[.../hostedtoolcache/Python/3.13.1........./x64/lib/python3.13/importlib/__init__.py#x1B[0m:88: in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
#x1B[1m#x1B[.../sentry/conf/urls.py#x1B[0m:3: in <module>
    from sentry.web.urls import urlpatterns
#x1B[1m#x1B[.../sentry/web/urls.py#x1B[0m:168: in <module>
    include("sentry.api.urls"),
#x1B[1m#x1B[31m.venv/lib/python3.13.../django/urls/conf.py#x1B[0m:39: in include
    urlconf_module = import_module(urlconf_module)
#x1B[1m#x1B[.../hostedtoolcache/Python/3.13.1........./x64/lib/python3.13/importlib/__init__.py#x1B[0m:88: in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
#x1B[1m#x1B[.../sentry/api/urls.py#x1B[0m:531: in <module>
    from sentry.seer.endpoints.seer_rpc import SeerRpcServiceEndpoint
#x1B[1m#x1B[.../seer/endpoints/seer_rpc.py#x1B[0m:89: in <module>
    from sentry.seer.explorer.tools import (
#x1B[1m#x1B[31mE   ImportError: cannot import name 'get_issue_details' from 'sentry.seer.explorer.tools' (.../seer/explorer/tools.py)#x1B[0m#x1B[0m
::tests.sentry.api.endpoints.test_system_options
Stack Traces | 0s run time
#x1B[31mImportError while importing test module '.../api/endpoints/test_system_options.py'.
Hint: make sure your test modules/packages have valid Python names.
Traceback:
#x1B[1m#x1B[.../hostedtoolcache/Python/3.13.1........./x64/lib/python3.13/importlib/__init__.py#x1B[0m:88: in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
#x1B[1m#x1B[.../api/endpoints/test_system_options.py#x1B[0m:9: in <module>
    class SystemOptionsTest(APITestCase):
#x1B[1m#x1B[.../api/endpoints/test_system_options.py#x1B[0m:10: in SystemOptionsTest
    url = reverse("sentry-api-0-system-options")
#x1B[1m#x1B[31m.venv/lib/python3.13.../django/urls/base.py#x1B[0m:98: in reverse
    resolved_url = resolver._reverse_with_prefix(view, prefix, *args, **kwargs)
#x1B[1m#x1B[31m.venv/lib/python3.13.../django/urls/resolvers.py#x1B[0m:749: in _reverse_with_prefix
    self._populate()
#x1B[1m#x1B[31m.venv/lib/python3.13.../django/urls/resolvers.py#x1B[0m:548: in _populate
    for url_pattern in reversed(self.url_patterns):
#x1B[1m#x1B[31m.venv/lib/python3.13.../django/utils/functional.py#x1B[0m:47: in __get__
    res = instance.__dict__[self.name] = self.func(instance)
#x1B[1m#x1B[31m.venv/lib/python3.13.../django/urls/resolvers.py#x1B[0m:718: in url_patterns
    patterns = getattr(self.urlconf_module, "urlpatterns", self.urlconf_module)
#x1B[1m#x1B[31m.venv/lib/python3.13.../django/utils/functional.py#x1B[0m:47: in __get__
    res = instance.__dict__[self.name] = self.func(instance)
#x1B[1m#x1B[31m.venv/lib/python3.13.../django/urls/resolvers.py#x1B[0m:711: in urlconf_module
    return import_module(self.urlconf_name)
#x1B[1m#x1B[.../hostedtoolcache/Python/3.13.1........./x64/lib/python3.13/importlib/__init__.py#x1B[0m:88: in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
#x1B[1m#x1B[.../sentry/conf/urls.py#x1B[0m:3: in <module>
    from sentry.web.urls import urlpatterns
#x1B[1m#x1B[.../sentry/web/urls.py#x1B[0m:168: in <module>
    include("sentry.api.urls"),
#x1B[1m#x1B[31m.venv/lib/python3.13.../django/urls/conf.py#x1B[0m:39: in include
    urlconf_module = import_module(urlconf_module)
#x1B[1m#x1B[.../hostedtoolcache/Python/3.13.1........./x64/lib/python3.13/importlib/__init__.py#x1B[0m:88: in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
#x1B[1m#x1B[.../sentry/api/urls.py#x1B[0m:531: in <module>
    from sentry.seer.endpoints.seer_rpc import SeerRpcServiceEndpoint
#x1B[1m#x1B[.../seer/endpoints/seer_rpc.py#x1B[0m:89: in <module>
    from sentry.seer.explorer.tools import (
#x1B[1m#x1B[31mE   ImportError: cannot import name 'get_issue_details' from 'sentry.seer.explorer.tools' (.../seer/explorer/tools.py)#x1B[0m#x1B[0m
::tests.sentry.hybridcloud.apigateway.test_apigateway
Stack Traces | 0s run time
#x1B[31mImportError while importing test module '.../hybridcloud/apigateway/test_apigateway.py'.
Hint: make sure your test modules/packages have valid Python names.
Traceback:
#x1B[1m#x1B[.../hostedtoolcache/Python/3.13.1.../x64/lib/python3.13/importlib/__init__.py#x1B[0m:88: in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
#x1B[1m#x1B[.../hybridcloud/apigateway/test_apigateway.py#x1B[0m:11: in <module>
    from sentry.testutils.helpers.apigateway import ApiGatewayTestCase, verify_request_params
#x1B[1m#x1B[.../testutils/helpers/apigateway.py#x1B[0m:14: in <module>
    import sentry.api.urls as api_urls
#x1B[1m#x1B[.../sentry/api/urls.py#x1B[0m:531: in <module>
    from sentry.seer.endpoints.seer_rpc import SeerRpcServiceEndpoint
#x1B[1m#x1B[.../seer/endpoints/seer_rpc.py#x1B[0m:89: in <module>
    from sentry.seer.explorer.tools import (
#x1B[1m#x1B[31mE   ImportError: cannot import name 'get_issue_details' from 'sentry.seer.explorer.tools' (.../seer/explorer/tools.py)#x1B[0m#x1B[0m
::tests.sentry.hybridcloud.apigateway.test_apigateway_helpers
Stack Traces | 0s run time
#x1B[31mImportError while importing test module '.../hybridcloud/apigateway/test_apigateway_helpers.py'.
Hint: make sure your test modules/packages have valid Python names.
Traceback:
#x1B[1m#x1B[.../hostedtoolcache/Python/3.13.1.../x64/lib/python3.13/importlib/__init__.py#x1B[0m:88: in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
#x1B[1m#x1B[.../hybridcloud/apigateway/test_apigateway_helpers.py#x1B[0m:6: in <module>
    from sentry.testutils.helpers.apigateway import ApiGatewayTestCase, verify_request_body
#x1B[1m#x1B[.../testutils/helpers/apigateway.py#x1B[0m:14: in <module>
    import sentry.api.urls as api_urls
#x1B[1m#x1B[.../sentry/api/urls.py#x1B[0m:531: in <module>
    from sentry.seer.endpoints.seer_rpc import SeerRpcServiceEndpoint
#x1B[1m#x1B[.../seer/endpoints/seer_rpc.py#x1B[0m:89: in <module>
    from sentry.seer.explorer.tools import (
#x1B[1m#x1B[31mE   ImportError: cannot import name 'get_issue_details' from 'sentry.seer.explorer.tools' (.../seer/explorer/tools.py)#x1B[0m#x1B[0m
::tests.sentry.hybridcloud.apigateway.test_proxy
Stack Traces | 0s run time
#x1B[31mImportError while importing test module '.../hybridcloud/apigateway/test_proxy.py'.
Hint: make sure your test modules/packages have valid Python names.
Traceback:
#x1B[1m#x1B[.../hostedtoolcache/Python/3.13.1.../x64/lib/python3.13/importlib/__init__.py#x1B[0m:88: in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
#x1B[1m#x1B[.../hybridcloud/apigateway/test_proxy.py#x1B[0m:9: in <module>
    from sentry.testutils.helpers.apigateway import (
#x1B[1m#x1B[.../testutils/helpers/apigateway.py#x1B[0m:14: in <module>
    import sentry.api.urls as api_urls
#x1B[1m#x1B[.../sentry/api/urls.py#x1B[0m:531: in <module>
    from sentry.seer.endpoints.seer_rpc import SeerRpcServiceEndpoint
#x1B[1m#x1B[.../seer/endpoints/seer_rpc.py#x1B[0m:89: in <module>
    from sentry.seer.explorer.tools import (
#x1B[1m#x1B[31mE   ImportError: cannot import name 'get_issue_details' from 'sentry.seer.explorer.tools' (.../seer/explorer/tools.py)#x1B[0m#x1B[0m
::tests.sentry.integrations.msteams.test_webhook
Stack Traces | 0s run time
#x1B[31mImportError while importing test module '.../integrations/msteams/test_webhook.py'.
Hint: make sure your test modules/packages have valid Python names.
Traceback:
#x1B[1m#x1B[.../hostedtoolcache/Python/3.13.1........./x64/lib/python3.13/importlib/__init__.py#x1B[0m:88: in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
#x1B[1m#x1B[.../integrations/msteams/test_webhook.py#x1B[0m:35: in <module>
    webhook_url = reverse("sentry-integration-msteams-webhooks")
#x1B[1m#x1B[31m.venv/lib/python3.13.../django/urls/base.py#x1B[0m:98: in reverse
    resolved_url = resolver._reverse_with_prefix(view, prefix, *args, **kwargs)
#x1B[1m#x1B[31m.venv/lib/python3.13.../django/urls/resolvers.py#x1B[0m:749: in _reverse_with_prefix
    self._populate()
#x1B[1m#x1B[31m.venv/lib/python3.13.../django/urls/resolvers.py#x1B[0m:548: in _populate
    for url_pattern in reversed(self.url_patterns):
#x1B[1m#x1B[31m.venv/lib/python3.13.../django/utils/functional.py#x1B[0m:47: in __get__
    res = instance.__dict__[self.name] = self.func(instance)
#x1B[1m#x1B[31m.venv/lib/python3.13.../django/urls/resolvers.py#x1B[0m:718: in url_patterns
    patterns = getattr(self.urlconf_module, "urlpatterns", self.urlconf_module)
#x1B[1m#x1B[31m.venv/lib/python3.13.../django/utils/functional.py#x1B[0m:47: in __get__
    res = instance.__dict__[self.name] = self.func(instance)
#x1B[1m#x1B[31m.venv/lib/python3.13.../django/urls/resolvers.py#x1B[0m:711: in urlconf_module
    return import_module(self.urlconf_name)
#x1B[1m#x1B[.../hostedtoolcache/Python/3.13.1........./x64/lib/python3.13/importlib/__init__.py#x1B[0m:88: in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
#x1B[1m#x1B[.../sentry/conf/urls.py#x1B[0m:3: in <module>
    from sentry.web.urls import urlpatterns
#x1B[1m#x1B[.../sentry/web/urls.py#x1B[0m:168: in <module>
    include("sentry.api.urls"),
#x1B[1m#x1B[31m.venv/lib/python3.13.../django/urls/conf.py#x1B[0m:39: in include
    urlconf_module = import_module(urlconf_module)
#x1B[1m#x1B[.../hostedtoolcache/Python/3.13.1........./x64/lib/python3.13/importlib/__init__.py#x1B[0m:88: in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
#x1B[1m#x1B[.../sentry/api/urls.py#x1B[0m:531: in <module>
    from sentry.seer.endpoints.seer_rpc import SeerRpcServiceEndpoint
#x1B[1m#x1B[.../seer/endpoints/seer_rpc.py#x1B[0m:89: in <module>
    from sentry.seer.explorer.tools import (
#x1B[1m#x1B[31mE   ImportError: cannot import name 'get_issue_details' from 'sentry.seer.explorer.tools' (.../seer/explorer/tools.py)#x1B[0m#x1B[0m
::tests.sentry.middleware.integrations.parsers.test_github
Stack Traces | 0s run time
#x1B[31mImportError while importing test module '.../integrations/parsers/test_github.py'.
Hint: make sure your test modules/packages have valid Python names.
Traceback:
#x1B[1m#x1B[.../hostedtoolcache/Python/3.13.1........./x64/lib/python3.13/importlib/__init__.py#x1B[0m:88: in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
#x1B[1m#x1B[.../integrations/parsers/test_github.py#x1B[0m:29: in <module>
    class GithubRequestParserTest(TestCase):
#x1B[1m#x1B[.../integrations/parsers/test_github.py#x1B[0m:31: in GithubRequestParserTest
    path = reverse("sentry-integration-github-webhook")
#x1B[1m#x1B[31m.venv/lib/python3.13.../django/urls/base.py#x1B[0m:98: in reverse
    resolved_url = resolver._reverse_with_prefix(view, prefix, *args, **kwargs)
#x1B[1m#x1B[31m.venv/lib/python3.13.../django/urls/resolvers.py#x1B[0m:749: in _reverse_with_prefix
    self._populate()
#x1B[1m#x1B[31m.venv/lib/python3.13.../django/urls/resolvers.py#x1B[0m:548: in _populate
    for url_pattern in reversed(self.url_patterns):
#x1B[1m#x1B[31m.venv/lib/python3.13.../django/utils/functional.py#x1B[0m:47: in __get__
    res = instance.__dict__[self.name] = self.func(instance)
#x1B[1m#x1B[31m.venv/lib/python3.13.../django/urls/resolvers.py#x1B[0m:718: in url_patterns
    patterns = getattr(self.urlconf_module, "urlpatterns", self.urlconf_module)
#x1B[1m#x1B[31m.venv/lib/python3.13.../django/utils/functional.py#x1B[0m:47: in __get__
    res = instance.__dict__[self.name] = self.func(instance)
#x1B[1m#x1B[31m.venv/lib/python3.13.../django/urls/resolvers.py#x1B[0m:711: in urlconf_module
    return import_module(self.urlconf_name)
#x1B[1m#x1B[.../hostedtoolcache/Python/3.13.1........./x64/lib/python3.13/importlib/__init__.py#x1B[0m:88: in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
#x1B[1m#x1B[.../sentry/conf/urls.py#x1B[0m:3: in <module>
    from sentry.web.urls import urlpatterns
#x1B[1m#x1B[.../sentry/web/urls.py#x1B[0m:168: in <module>
    include("sentry.api.urls"),
#x1B[1m#x1B[31m.venv/lib/python3.13.../django/urls/conf.py#x1B[0m:39: in include
    urlconf_module = import_module(urlconf_module)
#x1B[1m#x1B[.../hostedtoolcache/Python/3.13.1........./x64/lib/python3.13/importlib/__init__.py#x1B[0m:88: in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
#x1B[1m#x1B[.../sentry/api/urls.py#x1B[0m:531: in <module>
    from sentry.seer.endpoints.seer_rpc import SeerRpcServiceEndpoint
#x1B[1m#x1B[.../seer/endpoints/seer_rpc.py#x1B[0m:89: in <module>
    from sentry.seer.explorer.tools import (
#x1B[1m#x1B[31mE   ImportError: cannot import name 'get_issue_details' from 'sentry.seer.explorer.tools' (.../seer/explorer/tools.py)#x1B[0m#x1B[0m
::tests.sentry.middleware.integrations.parsers.test_github_enterprise
Stack Traces | 0s run time
#x1B[31mImportError while importing test module '.../integrations/parsers/test_github_enterprise.py'.
Hint: make sure your test modules/packages have valid Python names.
Traceback:
#x1B[1m#x1B[.../hostedtoolcache/Python/3.13.1........./x64/lib/python3.13/importlib/__init__.py#x1B[0m:88: in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
#x1B[1m#x1B[.../integrations/parsers/test_github_enterprise.py#x1B[0m:23: in <module>
    class GithubEnterpriseRequestParserTest(TestCase):
#x1B[1m#x1B[.../integrations/parsers/test_github_enterprise.py#x1B[0m:25: in GithubEnterpriseRequestParserTest
    path = reverse("sentry-integration-github-enterprise-webhook")
#x1B[1m#x1B[31m.venv/lib/python3.13.../django/urls/base.py#x1B[0m:98: in reverse
    resolved_url = resolver._reverse_with_prefix(view, prefix, *args, **kwargs)
#x1B[1m#x1B[31m.venv/lib/python3.13.../django/urls/resolvers.py#x1B[0m:749: in _reverse_with_prefix
    self._populate()
#x1B[1m#x1B[31m.venv/lib/python3.13.../django/urls/resolvers.py#x1B[0m:548: in _populate
    for url_pattern in reversed(self.url_patterns):
#x1B[1m#x1B[31m.venv/lib/python3.13.../django/utils/functional.py#x1B[0m:47: in __get__
    res = instance.__dict__[self.name] = self.func(instance)
#x1B[1m#x1B[31m.venv/lib/python3.13.../django/urls/resolvers.py#x1B[0m:718: in url_patterns
    patterns = getattr(self.urlconf_module, "urlpatterns", self.urlconf_module)
#x1B[1m#x1B[31m.venv/lib/python3.13.../django/utils/functional.py#x1B[0m:47: in __get__
    res = instance.__dict__[self.name] = self.func(instance)
#x1B[1m#x1B[31m.venv/lib/python3.13.../django/urls/resolvers.py#x1B[0m:711: in urlconf_module
    return import_module(self.urlconf_name)
#x1B[1m#x1B[.../hostedtoolcache/Python/3.13.1........./x64/lib/python3.13/importlib/__init__.py#x1B[0m:88: in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
#x1B[1m#x1B[.../sentry/conf/urls.py#x1B[0m:3: in <module>
    from sentry.web.urls import urlpatterns
#x1B[1m#x1B[.../sentry/web/urls.py#x1B[0m:168: in <module>
    include("sentry.api.urls"),
#x1B[1m#x1B[31m.venv/lib/python3.13.../django/urls/conf.py#x1B[0m:39: in include
    urlconf_module = import_module(urlconf_module)
#x1B[1m#x1B[.../hostedtoolcache/Python/3.13.1........./x64/lib/python3.13/importlib/__init__.py#x1B[0m:88: in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
#x1B[1m#x1B[.../sentry/api/urls.py#x1B[0m:531: in <module>
    from sentry.seer.endpoints.seer_rpc import SeerRpcServiceEndpoint
#x1B[1m#x1B[.../seer/endpoints/seer_rpc.py#x1B[0m:89: in <module>
    from sentry.seer.explorer.tools import (
#x1B[1m#x1B[31mE   ImportError: cannot import name 'get_issue_details' from 'sentry.seer.explorer.tools' (.../seer/explorer/tools.py)#x1B[0m#x1B[0m
::tests.sentry.middleware.integrations.parsers.test_vercel
Stack Traces | 0s run time
#x1B[31mImportError while importing test module '.../integrations/parsers/test_vercel.py'.
Hint: make sure your test modules/packages have valid Python names.
Traceback:
#x1B[1m#x1B[.../hostedtoolcache/Python/3.13.1........./x64/lib/python3.13/importlib/__init__.py#x1B[0m:88: in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
#x1B[1m#x1B[.../integrations/parsers/test_vercel.py#x1B[0m:13: in <module>
    class VercelRequestParserTest(TestCase):
#x1B[1m#x1B[.../integrations/parsers/test_vercel.py#x1B[0m:16: in VercelRequestParserTest
    factory.get(reverse("sentry-extensions-vercel-configure")),
#x1B[1m#x1B[31m.venv/lib/python3.13.../django/urls/base.py#x1B[0m:98: in reverse
    resolved_url = resolver._reverse_with_prefix(view, prefix, *args, **kwargs)
#x1B[1m#x1B[31m.venv/lib/python3.13.../django/urls/resolvers.py#x1B[0m:749: in _reverse_with_prefix
    self._populate()
#x1B[1m#x1B[31m.venv/lib/python3.13.../django/urls/resolvers.py#x1B[0m:548: in _populate
    for url_pattern in reversed(self.url_patterns):
#x1B[1m#x1B[31m.venv/lib/python3.13.../django/utils/functional.py#x1B[0m:47: in __get__
    res = instance.__dict__[self.name] = self.func(instance)
#x1B[1m#x1B[31m.venv/lib/python3.13.../django/urls/resolvers.py#x1B[0m:718: in url_patterns
    patterns = getattr(self.urlconf_module, "urlpatterns", self.urlconf_module)
#x1B[1m#x1B[31m.venv/lib/python3.13.../django/utils/functional.py#x1B[0m:47: in __get__
    res = instance.__dict__[self.name] = self.func(instance)
#x1B[1m#x1B[31m.venv/lib/python3.13.../django/urls/resolvers.py#x1B[0m:711: in urlconf_module
    return import_module(self.urlconf_name)
#x1B[1m#x1B[.../hostedtoolcache/Python/3.13.1........./x64/lib/python3.13/importlib/__init__.py#x1B[0m:88: in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
#x1B[1m#x1B[.../sentry/conf/urls.py#x1B[0m:3: in <module>
    from sentry.web.urls import urlpatterns
#x1B[1m#x1B[.../sentry/web/urls.py#x1B[0m:168: in <module>
    include("sentry.api.urls"),
#x1B[1m#x1B[31m.venv/lib/python3.13.../django/urls/conf.py#x1B[0m:39: in include
    urlconf_module = import_module(urlconf_module)
#x1B[1m#x1B[.../hostedtoolcache/Python/3.13.1........./x64/lib/python3.13/importlib/__init__.py#x1B[0m:88: in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
#x1B[1m#x1B[.../sentry/api/urls.py#x1B[0m:531: in <module>
    from sentry.seer.endpoints.seer_rpc import SeerRpcServiceEndpoint
#x1B[1m#x1B[.../seer/endpoints/seer_rpc.py#x1B[0m:89: in <module>
    from sentry.seer.explorer.tools import (
#x1B[1m#x1B[31mE   ImportError: cannot import name 'get_issue_details' from 'sentry.seer.explorer.tools' (.../seer/explorer/tools.py)#x1B[0m#x1B[0m
::tests.sentry.seer.endpoints.test_seer_rpc
Stack Traces | 0s run time
#x1B[31mImportError while importing test module '.../seer/endpoints/test_seer_rpc.py'.
Hint: make sure your test modules/packages have valid Python names.
Traceback:
#x1B[1m#x1B[.../hostedtoolcache/Python/3.13.1.../x64/lib/python3.13/importlib/__init__.py#x1B[0m:88: in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
#x1B[1m#x1B[.../seer/endpoints/test_seer_rpc.py#x1B[0m:19: in <module>
    from sentry.seer.endpoints.seer_rpc import (
#x1B[1m#x1B[.../seer/endpoints/seer_rpc.py#x1B[0m:89: in <module>
    from sentry.seer.explorer.tools import (
#x1B[1m#x1B[31mE   ImportError: cannot import name 'get_issue_details' from 'sentry.seer.explorer.tools' (.../seer/explorer/tools.py)#x1B[0m#x1B[0m
::tests.sentry.seer.explorer.test_tools
Stack Traces | 0s run time
#x1B[31mImportError while importing test module '.../seer/explorer/test_tools.py'.
Hint: make sure your test modules/packages have valid Python names.
Traceback:
#x1B[1m#x1B[.../hostedtoolcache/Python/3.13.1.../x64/lib/python3.13/importlib/__init__.py#x1B[0m:88: in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
#x1B[1m#x1B[.../seer/explorer/test_tools.py#x1B[0m:15: in <module>
    from sentry.seer.endpoints.seer_rpc import get_organization_project_ids
#x1B[1m#x1B[.../seer/endpoints/seer_rpc.py#x1B[0m:89: in <module>
    from sentry.seer.explorer.tools import (
#x1B[1m#x1B[31mE   ImportError: cannot import name 'get_issue_details' from 'sentry.seer.explorer.tools' (.../seer/explorer/tools.py)#x1B[0m#x1B[0m
::tests.snuba.api.endpoints.test_seer_attributes
Stack Traces | 0s run time
#x1B[31mImportError while importing test module '.../api/endpoints/test_seer_attributes.py'.
Hint: make sure your test modules/packages have valid Python names.
Traceback:
#x1B[1m#x1B[.../hostedtoolcache/Python/3.13.1.../x64/lib/python3.13/importlib/__init__.py#x1B[0m:88: in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
#x1B[1m#x1B[.../api/endpoints/test_seer_attributes.py#x1B[0m:8: in <module>
    from sentry.seer.endpoints.seer_rpc import get_attributes_and_values, get_spans
#x1B[1m#x1B[.../seer/endpoints/seer_rpc.py#x1B[0m:89: in <module>
    from sentry.seer.explorer.tools import (
#x1B[1m#x1B[31mE   ImportError: cannot import name 'get_issue_details' from 'sentry.seer.explorer.tools' (.../seer/explorer/tools.py)#x1B[0m#x1B[0m

To view more test analytics, go to the Test Analytics Dashboard
📋 Got 3 mins? Take this short survey to help us improve Test Analytics.

@aliu39 aliu39 enabled auto-merge (squash) November 25, 2025 21:05
Copy link
Contributor

@cursor cursor bot left a comment

Choose a reason for hiding this comment

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

Bug: Frontend references orphaned RPC method

The get_issue_details RPC method is removed from the backend registry, but the frontend still references it in static/app/views/seerExplorer/utils.tsx (lines 65 and 417). When Seer attempts to call this method or the frontend tries to handle responses from it, the RPC endpoint will return "Unknown method" errors. The frontend code needs updating to use get_issue_and_event_details or remove the get_issue_details cases entirely.

src/sentry/seer/endpoints/seer_rpc.py#L1032-L1033

"get_trace_waterfall": rpc_get_trace_waterfall,
"get_issue_and_event_details": get_issue_and_event_details,

Fix in Cursor Fix in Web


@aliu39
Copy link
Member Author

aliu39 commented Nov 25, 2025

Bug: Frontend references orphaned RPC method

The get_issue_details RPC method is removed from the backend registry, but the frontend still references it in static/app/views/seerExplorer/utils.tsx (lines 65 and 417). When Seer attempts to call this method or the frontend tries to handle responses from it, the RPC endpoint will return "Unknown method" errors. The frontend code needs updating to use get_issue_and_event_details or remove the get_issue_details cases entirely.

src/sentry/seer/endpoints/seer_rpc.py#L1032-L1033

"get_trace_waterfall": rpc_get_trace_waterfall,
"get_issue_and_event_details": get_issue_and_event_details,

frontend uses seer tool call name, which is still called the same thing

@aliu39 aliu39 merged commit 26b4f5a into master Nov 25, 2025
66 checks passed
@aliu39 aliu39 deleted the aliu/issue-det-copy branch November 25, 2025 21:29
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

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants