From d1ffacd14bd18cc81d2b7ec296f58a9ffde88f1e Mon Sep 17 00:00:00 2001 From: Frost Ming Date: Sun, 29 Jan 2023 16:17:18 +0800 Subject: [PATCH] fix: unwrap() for container children values --- CHANGELOG.md | 6 ++++++ tomlkit/container.py | 2 +- tomlkit/items.py | 11 +++++++---- 3 files changed, 14 insertions(+), 5 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 95ecfc53..7bef089b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,12 @@ ## [Unreleased] + +### Fixed + +- Parse empty table name if it is quoted. ([#258](https://github.com/sdispater/tomlkit/issues/258)) +- Fix the `unwrap()` method for `Container` children values which sometimes returns an internal object if the table is an out-of-order table. ([#264](https://github.com/sdispater/tomlkit/issues/264)) + ## [0.11.6] - 2022-10-27 ### Fixed diff --git a/tomlkit/container.py b/tomlkit/container.py index 4b40a13b..137333bb 100644 --- a/tomlkit/container.py +++ b/tomlkit/container.py @@ -55,7 +55,7 @@ def unwrap(self) -> Dict[str, Any]: if isinstance(k, Key): k = k.key - if isinstance(v, Item): + if hasattr(v, "unwrap"): v = v.unwrap() if k in unwrapped: diff --git a/tomlkit/items.py b/tomlkit/items.py index 14a44423..5efb15e2 100644 --- a/tomlkit/items.py +++ b/tomlkit/items.py @@ -1166,7 +1166,7 @@ def _group_values(self, value: List[Item]) -> List[_ArrayItemGroup]: def unwrap(self) -> List[Any]: unwrapped = [] for v in self: - if isinstance(v, Item): + if hasattr(v, "unwrap"): unwrapped.append(v.unwrap()) else: unwrapped.append(v) @@ -1317,7 +1317,10 @@ def __len__(self) -> int: return list.__len__(self) def __getitem__(self, key: Union[int, slice]) -> Any: - return list.__getitem__(self, key) + rv = cast(Item, list.__getitem__(self, key)) + if rv.is_boolean(): + return bool(rv) + return rv def __setitem__(self, key: Union[int, slice], value: Any) -> Any: it = item(value, _parent=self) @@ -1438,7 +1441,7 @@ def unwrap(self) -> Dict[str, Any]: for k, v in self.items(): if isinstance(k, Key): k = k.key - if isinstance(v, Item): + if hasattr(v, "unwrap"): v = v.unwrap() unwrapped[k] = v @@ -1835,7 +1838,7 @@ def __init__( def unwrap(self) -> List[Dict[str, Any]]: unwrapped = [] for t in self._body: - if isinstance(t, Item): + if hasattr(t, "unwrap"): unwrapped.append(t.unwrap()) else: unwrapped.append(t)