Skip to content

Commit 7007dd2

Browse files
committed
feat: add .item() method to retrieve the item object
Signed-off-by: Frost Ming <[email protected]>
1 parent c484446 commit 7007dd2

File tree

2 files changed

+12
-3
lines changed

2 files changed

+12
-3
lines changed

tests/test_items.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -915,6 +915,8 @@ def test_booleans_comparison():
915915
"""
916916

917917
content = parse(s)
918+
assert content["foo"]["value"] is False
919+
assert isinstance(content["foo"].item("value"), Bool)
918920

919921
assert {"foo": {"value": False}} == content
920922
assert {"value": False} == content["foo"]

tomlkit/items.py

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1313,10 +1313,14 @@ def clear(self) -> None:
13131313
def __len__(self) -> int:
13141314
return list.__len__(self)
13151315

1316+
def item(self, index: int) -> Item:
1317+
rv = list.__getitem__(self, index)
1318+
return cast(Item, rv)
1319+
13161320
def __getitem__(self, key: int | slice) -> Any:
1317-
rv = cast(Item, list.__getitem__(self, key))
1318-
if rv.is_boolean():
1319-
return bool(rv)
1321+
rv = list.__getitem__(self, key)
1322+
if isinstance(rv, Bool):
1323+
return rv.value
13201324
return rv
13211325

13221326
def __setitem__(self, key: int | slice, value: Any) -> Any:
@@ -1479,6 +1483,9 @@ def remove(self: AT, key: Key | str) -> AT:
14791483

14801484
return self
14811485

1486+
def item(self, key: Key | str) -> Item:
1487+
return self._value.item(key)
1488+
14821489
def setdefault(self, key: Key | str, default: Any) -> Any:
14831490
super().setdefault(key, default)
14841491
return self[key]

0 commit comments

Comments
 (0)