diff --git a/helpor/dict_ordering.py b/helpor/dict_ordering.py index b2cf03e..719455d 100644 --- a/helpor/dict_ordering.py +++ b/helpor/dict_ordering.py @@ -2,7 +2,8 @@ def add_orderings(target: dict) -> dict: next_ordering = 0 for value in target.values(): if isinstance(value, dict): - value['ordering'] = next_ordering - next_ordering += 1 + if 'type' in value and isinstance(value['type'], str): + value['ordering'] = next_ordering + next_ordering += 1 add_orderings(value) return target diff --git a/pyproject.toml b/pyproject.toml index 7eaf58a..cc55bb1 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -4,6 +4,6 @@ build-backend = "hatchling.build" [project] name = 'helpor' -version = '0.1.3' +version = '0.1.4' requires-python = '>= 3.7' diff --git a/tests/test_dict_ordering.py b/tests/test_dict_ordering.py index 3c42d17..c532603 100644 --- a/tests/test_dict_ordering.py +++ b/tests/test_dict_ordering.py @@ -13,7 +13,7 @@ def test_dict_with_one_level(self): original = { 'nope': None, 'first': { - 'go': 'not deep' + 'type': 'string' }, 'second': {}, 'last': 1234 @@ -21,12 +21,10 @@ def test_dict_with_one_level(self): expected = { 'nope': None, 'first': { - 'go': 'not deep', + 'type': 'string', 'ordering': 0 }, - 'second': { - 'ordering': 1 - }, + 'second': {}, 'last': 1234 } self.assertEqual(expected, add_orderings(original)) @@ -45,7 +43,11 @@ def test_deeper_dict(self): 'hello': 'world' }, 'object2': { + 'type': 'string', 'this is': 'deep enough' + }, + 'type': { + 'type': 'number' } } } @@ -71,13 +73,16 @@ def test_deeper_dict(self): 'deeper': { 'object1': { 'hello': 'world', - 'ordering': 0 }, 'object2': { + 'type': 'string', 'this is': 'deep enough', - 'ordering': 1 + 'ordering': 0 }, - 'ordering': 0 + 'type': { + 'type': 'number', + 'ordering': 1 + } }, 'ordering': 1 },