Просмотр исходного кода

ref: fix typing for tsdb / tagstore base (#62290)

<!-- Describe your PR here. -->
anthony sottile 1 год назад
Родитель
Сommit
3e31bad6ca
3 измененных файлов с 7 добавлено и 10 удалено
  1. 0 2
      pyproject.toml
  2. 4 5
      src/sentry/tsdb/base.py
  3. 3 3
      src/sentry/utils/services.py

+ 0 - 2
pyproject.toml

@@ -526,7 +526,6 @@ module = [
     "sentry.snuba.spans_metrics",
     "sentry.snuba.tasks",
     "sentry.stacktraces.functions",
-    "sentry.tagstore.base",
     "sentry.tagstore.snuba.backend",
     "sentry.tagstore.types",
     "sentry.tasks.auth",
@@ -563,7 +562,6 @@ module = [
     "sentry.testutils.helpers.task_runner",
     "sentry.testutils.performance_issues.span_builder",
     "sentry.testutils.performance_issues.store_transaction",
-    "sentry.tsdb.base",
     "sentry.tsdb.dummy",
     "sentry.tsdb.inmemory",
     "sentry.tsdb.redis",

+ 4 - 5
src/sentry/tsdb/base.py

@@ -1,5 +1,4 @@
-from collections.abc import Callable
-from datetime import timedelta
+from datetime import datetime, timedelta
 from enum import Enum
 
 from django.conf import settings
@@ -184,7 +183,7 @@ class BaseTSDB(Service):
     def get_rollups(self):
         return self.rollups
 
-    def normalize_to_epoch(self, timestamp, seconds):
+    def normalize_to_epoch(self, timestamp: datetime, seconds: int) -> int:
         """
         Given a ``timestamp`` (datetime object) normalize to an epoch timestamp.
 
@@ -271,7 +270,7 @@ class BaseTSDB(Service):
         return rollups
 
     def make_series(self, default, start, end=None, rollup=None):
-        f = default if isinstance(default, Callable) else lambda timestamp: default
+        f = default if callable(default) else lambda timestamp: default
         return [
             (timestamp, f(timestamp))
             for timestamp in self.get_optimal_rollup_series(start, end, rollup)[1]
@@ -415,7 +414,7 @@ class BaseTSDB(Service):
         using the ``rollup`` time (in seconds).
         """
         normalize_ts_to_epoch = self.normalize_ts_to_epoch
-        result = {}
+        result: dict[int, list[list[float]]] = {}
         for key, points in values.items():
             result[key] = []
             last_new_ts = None

+ 3 - 3
src/sentry/utils/services.py

@@ -11,6 +11,7 @@ from typing import (
     Any,
     Callable,
     Dict,
+    Iterable,
     Mapping,
     MutableMapping,
     Optional,
@@ -18,7 +19,6 @@ from typing import (
     Tuple,
     Type,
     TypeVar,
-    cast,
 )
 
 from django.utils.functional import LazyObject, empty
@@ -36,7 +36,7 @@ STATUS_SUCCESS = "success"
 
 
 class Service:
-    __all__: Tuple[str, ...] = ()
+    __all__: Iterable[str] = ()
 
     def validate(self) -> None:
         """
@@ -133,7 +133,7 @@ def resolve_callable(value: str | AnyCallable) -> AnyCallable:
     if callable(value):
         return value
     elif isinstance(value, str):
-        return cast(Callable[..., Any], import_string(value))
+        return import_string(value)
     else:
         raise TypeError("Expected callable or string")