Commit 86308b6b by Martin Mokry Committed by Bjorn Neergaard

drop flatdict dependency

parent 10957d5a
...@@ -490,17 +490,6 @@ docs = ["furo (>=2022.9.29)", "sphinx (>=5.3)", "sphinx-autodoc-typehints (>=1.1 ...@@ -490,17 +490,6 @@ docs = ["furo (>=2022.9.29)", "sphinx (>=5.3)", "sphinx-autodoc-typehints (>=1.1
testing = ["covdefaults (>=2.2.2)", "coverage (>=6.5)", "pytest (>=7.2)", "pytest-cov (>=4)", "pytest-timeout (>=2.1)"] testing = ["covdefaults (>=2.2.2)", "coverage (>=6.5)", "pytest (>=7.2)", "pytest-cov (>=4)", "pytest-timeout (>=2.1)"]
[[package]] [[package]]
name = "flatdict"
version = "4.0.1"
description = "Python module for interacting with nested dicts as a single level dict with delimited keys."
category = "dev"
optional = false
python-versions = "*"
files = [
{file = "flatdict-4.0.1.tar.gz", hash = "sha256:cd32f08fd31ed21eb09ebc76f06b6bd12046a24f77beb1fd0281917e47f26742"},
]
[[package]]
name = "html5lib" name = "html5lib"
version = "1.1" version = "1.1"
description = "HTML parser based on the WHATWG HTML specification" description = "HTML parser based on the WHATWG HTML specification"
...@@ -1792,4 +1781,4 @@ testing = ["flake8 (<5)", "func-timeout", "jaraco.functools", "jaraco.itertools" ...@@ -1792,4 +1781,4 @@ testing = ["flake8 (<5)", "func-timeout", "jaraco.functools", "jaraco.itertools"
[metadata] [metadata]
lock-version = "2.0" lock-version = "2.0"
python-versions = "^3.7" python-versions = "^3.7"
content-hash = "0ec7c852f1ac947add292b5e4d33f8d7ad79358ca6da3661480c94608fd4c4a6" content-hash = "39120ecbb0a8005ab2bab602a5f36ca178588521343d56c87ea2596f14c1c88a"
...@@ -89,7 +89,6 @@ pre-commit = "^2.6" ...@@ -89,7 +89,6 @@ pre-commit = "^2.6"
# Cachy frozen to test backwards compatibility for `poetry.utils.cache`. # Cachy frozen to test backwards compatibility for `poetry.utils.cache`.
cachy = "0.3.0" cachy = "0.3.0"
deepdiff = "^6.2" deepdiff = "^6.2"
flatdict = "^4.0.1"
httpretty = "^1.0" httpretty = "^1.0"
pytest = "^7.1" pytest = "^7.1"
pytest-cov = "^4.0" pytest-cov = "^4.0"
......
...@@ -8,11 +8,10 @@ from typing import TYPE_CHECKING ...@@ -8,11 +8,10 @@ from typing import TYPE_CHECKING
import pytest import pytest
from flatdict import FlatDict
from poetry.config.config import Config from poetry.config.config import Config
from poetry.config.config import boolean_normalizer from poetry.config.config import boolean_normalizer
from poetry.config.config import int_normalizer from poetry.config.config import int_normalizer
from tests.helpers import flatten_dict
if TYPE_CHECKING: if TYPE_CHECKING:
...@@ -21,7 +20,7 @@ if TYPE_CHECKING: ...@@ -21,7 +20,7 @@ if TYPE_CHECKING:
def get_options_based_on_normalizer(normalizer: Callable) -> str: def get_options_based_on_normalizer(normalizer: Callable) -> str:
flattened_config = FlatDict(Config.default_config, delimiter=".") flattened_config = flatten_dict(obj=Config.default_config, delimiter=".")
for k in flattened_config: for k in flattened_config:
if Config._get_normalizer(k) == normalizer: if Config._get_normalizer(k) == normalizer:
......
...@@ -9,7 +9,6 @@ import urllib.parse ...@@ -9,7 +9,6 @@ import urllib.parse
from pathlib import Path from pathlib import Path
from typing import TYPE_CHECKING from typing import TYPE_CHECKING
from typing import Any
from poetry.core.packages.package import Package from poetry.core.packages.package import Package
from poetry.core.packages.utils.link import Link from poetry.core.packages.utils.link import Link
...@@ -28,6 +27,8 @@ from poetry.utils._compat import metadata ...@@ -28,6 +27,8 @@ from poetry.utils._compat import metadata
if TYPE_CHECKING: if TYPE_CHECKING:
from collections.abc import Iterator from collections.abc import Iterator
from typing import Any
from typing import Mapping
from poetry.core.constraints.version import Version from poetry.core.constraints.version import Version
from poetry.core.packages.dependency import Dependency from poetry.core.packages.dependency import Dependency
...@@ -284,3 +285,33 @@ def mock_metadata_entry_points( ...@@ -284,3 +285,33 @@ def mock_metadata_entry_points(
"entry_points", "entry_points",
return_value=[make_entry_point_from_plugin(name, cls, dist)], return_value=[make_entry_point_from_plugin(name, cls, dist)],
) )
def flatten_dict(obj: Mapping[str, Any], delimiter: str = ".") -> Mapping[str, Any]:
"""
Flatten a nested dict.
A flatdict replacement.
:param obj: A nested dict to be flattened
:delimiter str: A delimiter used in the key path
:return: Flattened dict
"""
def recurse_keys(obj: Mapping[str, Any]) -> Iterator[tuple[list[str], Any]]:
"""
A recursive generator to yield key paths and their values
:param obj: A nested dict to be flattened
:return: dict
"""
if isinstance(obj, dict):
for key in obj.keys():
for leaf in recurse_keys(obj[key]):
leaf_path, leaf_value = leaf
leaf_path.insert(0, key)
yield (leaf_path, leaf_value)
else:
yield ([], obj)
return {delimiter.join(path): value for path, value in recurse_keys(obj)}
from __future__ import annotations
from tests.helpers import flatten_dict
def test_flatten_dict() -> None:
orig_dict = {
"a": 1,
"b": 2,
"c": {
"x": 8,
"y": 9,
},
}
flattened_dict = {
"a": 1,
"b": 2,
"c:x": 8,
"c:y": 9,
}
assert flattened_dict == flatten_dict(orig_dict, delimiter=":")
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment