From 4f9383ee3373f0ffa9bc9b5b982316c5501f42a3 Mon Sep 17 00:00:00 2001 From: Griatch Date: Sat, 14 Feb 2026 20:33:31 +0100 Subject: [PATCH] CI: PostgreSQL fails unless tag integers are always strings --- evennia/typeclasses/managers.py | 14 +++++++++++--- evennia/typeclasses/tests.py | 5 +++++ 2 files changed, 16 insertions(+), 3 deletions(-) diff --git a/evennia/typeclasses/managers.py b/evennia/typeclasses/managers.py index 7a48e94866..7b2df77069 100644 --- a/evennia/typeclasses/managers.py +++ b/evennia/typeclasses/managers.py @@ -278,7 +278,7 @@ class TypedObjectManager(idmapper.manager.SharedMemoryManager): than `key`. """ - if not (key or category): + if key is None and category is None: return [] global _Tag @@ -287,8 +287,16 @@ class TypedObjectManager(idmapper.manager.SharedMemoryManager): anymatch = "any" == kwargs.get("match", "all").lower().strip() - keys = make_iter(key) if key else [] - categories = make_iter(category) if category else [] + _normalize_tag_value = lambda value: ( + str(value).strip().lower() if value is not None else None + ) + + keys = [_normalize_tag_value(val) for val in make_iter(key)] if key is not None else [] + categories = ( + [_normalize_tag_value(val) for val in make_iter(category)] + if category is not None + else [] + ) n_keys = len(keys) n_categories = len(categories) unique_categories = set(categories) diff --git a/evennia/typeclasses/tests.py b/evennia/typeclasses/tests.py index f76344feab..5259ea0c52 100644 --- a/evennia/typeclasses/tests.py +++ b/evennia/typeclasses/tests.py @@ -204,6 +204,11 @@ class TestTypedObjectManager(BaseEvenniaTest): [], ) + def test_get_by_tag_with_integer_key_and_category(self): + self.obj1.tags.add(123, 456) + self.assertEqual(self._manager("get_by_tag", 123, 456), [self.obj1]) + self.assertEqual(self._manager("get_by_tag", "123", "456"), [self.obj1]) + def test_batch_add(self): tags = ["tag1", ("tag2", "category2"), "tag3", ("tag4", "category4", "data4")] self.obj1.tags.batch_add(*tags)