From d962ecb11e929de1d9aa458b5d8e82270eff0039 Mon Sep 17 00:00:00 2001 From: Deepak Mallubhotla Date: Mon, 26 Aug 2024 03:34:57 -0500 Subject: [PATCH] feat: indexifier now has len --- deepdog/indexify/__init__.py | 4 ++++ tests/indexify/test_indexify.py | 9 +++++++++ 2 files changed, 13 insertions(+) diff --git a/deepdog/indexify/__init__.py b/deepdog/indexify/__init__.py index 4cad9d6..7c0e75f 100644 --- a/deepdog/indexify/__init__.py +++ b/deepdog/indexify/__init__.py @@ -36,6 +36,10 @@ class Indexifier: def indexify(self, n: int) -> typing.Dict[str, typing.Any]: return self.product_dict[n] + def __len__(self) -> int: + weights = [len(v) for v in self.dict.values()] + return math.prod(weights) + def _indexify_indices(self, n: int) -> typing.Sequence[int]: """ legacy indexify from old scripts, copypast. diff --git a/tests/indexify/test_indexify.py b/tests/indexify/test_indexify.py index ac4d487..6c1cb5e 100644 --- a/tests/indexify/test_indexify.py +++ b/tests/indexify/test_indexify.py @@ -10,3 +10,12 @@ def test_indexifier(): _logger.debug(f"setting up indexifier {indexifier}") assert indexifier.indexify(0) == {"key_1": 1, "key_2": "a"} assert indexifier.indexify(5) == {"key_1": 2, "key_2": "c"} + assert len(indexifier) == 9 + + +def test_indexifier_length_short(): + weight_dict = {"key_1": [1, 2, 3], "key_2": ["b", "c"]} + indexifier = deepdog.indexify.Indexifier(weight_dict) + _logger.debug(f"setting up indexifier {indexifier}") + + assert len(indexifier) == 6