Skip to content

Commit

Permalink
Merge pull request #18 from predictive-analytics-lab/flatten-dict
Browse files Browse the repository at this point in the history
flatten dict
  • Loading branch information
MylesBartlett authored Mar 25, 2021
2 parents 00bcfa2 + 329eb38 commit 828de66
Show file tree
Hide file tree
Showing 5 changed files with 37 additions and 22 deletions.
1 change: 1 addition & 0 deletions kit/__init__.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
from .hydra import *
from .logging import *
from .misc import *
from .typing import *
13 changes: 0 additions & 13 deletions kit/hydra.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,25 +15,12 @@
__all__ = [
"GroupRegistration",
"SchemaRegistration",
"flatten_dict",
"as_pretty_dict",
"reconstruct_cmd",
"recursively_instantiate",
]


def flatten_dict(d: MutableMapping, parent_key: str = "", sep: str = ".") -> dict:
"""Flatten a nested dictionary by separating the keys with `sep`."""
items: list[tuple[Any, Any]] = []
for k, v in d.items():
new_key = parent_key + sep + k if parent_key else k
if isinstance(v, MutableMapping):
items.extend(flatten_dict(v, new_key, sep=sep).items())
else:
items.append((new_key, v))
return dict(items)


def _clean_up_dict(obj: Any) -> Any:
"""Convert enums to strings and filter out _target_."""
if isinstance(obj, MutableMapping):
Expand Down
18 changes: 18 additions & 0 deletions kit/misc.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
from __future__ import annotations
from typing import Any, MutableMapping

__all__ = ["flatten_dict"]


def flatten_dict(
d: MutableMapping[str, Any], parent_key: str = "", sep: str = "."
) -> dict[str, Any]:
"""Flatten a nested dictionary by separating the keys with `sep`."""
items = []
for k, v in d.items():
new_key = parent_key + sep + k if parent_key else k
if isinstance(v, MutableMapping):
items.extend(flatten_dict(v, new_key, sep=sep).items())
else:
items.append((new_key, v))
return dict(items)
25 changes: 17 additions & 8 deletions poetry.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,7 @@ readme="README.md"

[tool.poetry.dependencies]
python = ">=3.7,<4.0"
hydra-core = "1.1.0.dev4"
hydra-core = "^1.1.0.dev4"
numpy = "^1.20.1"
torch = { version = "^1.8", optional = true }

Expand Down

0 comments on commit 828de66

Please sign in to comment.