Skip to content

Commit 24ef2be

Browse files
committed
several fixes
1 parent 615891e commit 24ef2be

File tree

3 files changed

+9
-15
lines changed

3 files changed

+9
-15
lines changed

packages/celery-library/src/celery_library/backends/redis.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@
1111
Task,
1212
TaskID,
1313
TaskInfoStore,
14-
Wildcard,
1514
)
1615
from servicelib.redis import RedisClientSDK, handle_redis_returns_union_types
1716

@@ -87,7 +86,7 @@ async def get_task_progress(self, task_id: TaskID) -> ProgressReport | None:
8786

8887
async def list_tasks(self, task_filter: OwnerMetadata) -> list[Task]:
8988
search_key = _CELERY_TASK_INFO_PREFIX + task_filter.create_task_id(
90-
task_uuid=Wildcard()
89+
task_uuid="*"
9190
)
9291

9392
keys: list[str] = []

packages/celery-library/tests/unit/test_tasks.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -251,7 +251,7 @@ class MyFilter(OwnerMetadata):
251251

252252
search_filter = MyFilter(
253253
user_id=user_id,
254-
product_name=Wildcard(),
254+
product_name="*",
255255
owner=_owner,
256256
)
257257
tasks = await celery_task_manager.list_tasks(search_filter)

packages/service-library/src/servicelib/celery/models.py

Lines changed: 7 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import datetime
22
from enum import StrEnum
3-
from typing import Annotated, Any, Final, Protocol, Self, TypeAlias, TypeVar
3+
from typing import Annotated, Any, Final, Literal, Protocol, Self, TypeAlias, TypeVar
44
from uuid import UUID
55

66
from models_library.progress_bar import ProgressReport
@@ -15,13 +15,10 @@
1515
]
1616
TaskUUID: TypeAlias = UUID
1717
_TASK_ID_KEY_DELIMITATOR: Final[str] = ":"
18-
_WILDCARD: Final[str] = "*"
19-
_FORBIDDEN_CHARS = (_WILDCARD, _TASK_ID_KEY_DELIMITATOR, "=")
18+
_FORBIDDEN_KEYS = ("*", _TASK_ID_KEY_DELIMITATOR, "=")
19+
_FORBIDDEN_VALUES = (_TASK_ID_KEY_DELIMITATOR, "=")
2020

21-
22-
class Wildcard(BaseModel):
23-
def __str__(self) -> str:
24-
return _WILDCARD
21+
Wildcard: TypeAlias = Literal["*"]
2522

2623

2724
class OwnerMetadata(BaseModel):
@@ -38,7 +35,7 @@ class StorageOwnerMetadata(OwnerMetadata):
3835
product_name: int | Wildcard
3936
owner = "storage-service"
4037
41-
Listing tasks using the filter `StorageOwnerMetadata(user_id=123, product_name=Wildcard())` will return all tasks with
38+
Listing tasks using the filter `StorageOwnerMetadata(user_id=123, product_name="*")` will return all tasks with
4239
user_id 123, any product_name submitted from storage-service.
4340
4441
If the metadata schema is known, the class allows deserializing the metadata (recreate_as_model). I.e. one can recover the metadata from the task:
@@ -52,12 +49,10 @@ class StorageOwnerMetadata(OwnerMetadata):
5249
def _check_valid_filters(self) -> Self:
5350
for key, value in self.model_dump().items():
5451
# forbidden keys
55-
if any(x in key for x in _FORBIDDEN_CHARS):
52+
if any(x in key for x in _FORBIDDEN_KEYS):
5653
raise ValueError(f"Invalid filter key: '{key}'")
5754
# forbidden values
58-
if not isinstance(value, Wildcard) and any(
59-
x in f"{value}" for x in _FORBIDDEN_CHARS
60-
):
55+
if any(x in f"{value}" for x in _FORBIDDEN_VALUES):
6156
raise ValueError(f"Invalid filter value for key '{key}': '{value}'")
6257
return self
6358

0 commit comments

Comments
 (0)