Skip to content

Commit

Permalink
First draft for dict ordering
Browse files Browse the repository at this point in the history
  • Loading branch information
knokko committed Dec 2, 2024
1 parent 51e4e99 commit 982887f
Show file tree
Hide file tree
Showing 4 changed files with 92 additions and 14 deletions.
10 changes: 8 additions & 2 deletions helpor/dict_ordering.py
Original file line number Diff line number Diff line change
@@ -1,2 +1,8 @@
def add_orderings(meta: dict):
print('hello', meta)
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
add_orderings(value)
return target
3 changes: 1 addition & 2 deletions pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,5 @@ build-backend = "hatchling.build"

[project]
name = 'helpor'
version = '0.1.1'
version = '0.1.2'
requires-python = '>= 3.9'

6 changes: 0 additions & 6 deletions tests/context.py

This file was deleted.

87 changes: 83 additions & 4 deletions tests/test_dict_ordering.py
Original file line number Diff line number Diff line change
@@ -1,8 +1,87 @@
import unittest
from .context import helpor
from helpor.dict_ordering import add_orderings


class TestDictOrdering(unittest.TestCase):
def test_something(self):
helpor.dict_ordering.add_orderings({"hello": "world"})
self.assertEqual(True, False)
def test_empty_dict(self):
self.assertEqual({}, add_orderings({}))

def test_dict_without_nesting(self):
self.assertEqual({'hello': 'world', 'counter': 1}, add_orderings({'hello': 'world', 'counter': 1}))

def test_dict_with_one_level(self):
original = {
'nope': None,
'first': {
'go': 'not deep'
},
'second': {},
'last': 1234
}
expected = {
'nope': None,
'first': {
'go': 'not deep',
'ordering': 0
},
'second': {
'ordering': 1
},
'last': 1234
}
self.assertEqual(expected, add_orderings(original))

def test_deeper_dict(self):
original = {
'counter1': {'type': 'number'},
'counter2': {'type': 'number'},
'lets': {
'type': 'list',
'counter3': {'type': 'number'},
'go': {
'type': 'object',
'deeper': {
'object1': {
'hello': 'world'
},
'object2': {
'this is': 'deep enough'
}
}
}
}
}
expected = {
'counter1': {
'type': 'number',
'ordering': 0
},
'counter2': {
'type': 'number',
'ordering': 1
},
'lets': {
'type': 'list',
'counter3': {
'type': 'number',
'ordering': 0
},
'go': {
'type': 'object',
'deeper': {
'object1': {
'hello': 'world',
'ordering': 0
},
'object2': {
'this is': 'deep enough',
'ordering': 1
},
'ordering': 0
},
'ordering': 1
},
'ordering': 2
}
}
self.assertEqual(expected, add_orderings(original))

0 comments on commit 982887f

Please sign in to comment.