Skip to content

Commit 28761e4

Browse files
Implement keys() and items() for AttrDict
1 parent 2e22e0a commit 28761e4

File tree

4 files changed

+14
-2
lines changed

4 files changed

+14
-2
lines changed

elasticsearch_dsl/utils.py

+6
Original file line numberDiff line numberDiff line change
@@ -184,6 +184,12 @@ def __iter__(self):
184184
def to_dict(self):
185185
return self._d_
186186

187+
def keys(self):
188+
return self._d_.keys()
189+
190+
def items(self):
191+
return self._d_.items()
192+
187193

188194
class DslMeta(type):
189195
"""

tests/test_integration/_async/test_document.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -219,7 +219,7 @@ async def test_update_object_field(async_write_client):
219219
)
220220
await w.save()
221221

222-
assert "updated" == await w.update(owner=[{"name": "Honza"}, {"name": "Nick"}])
222+
assert "updated" == await w.update(owner=[{"name": "Honza"}, User(name="Nick")])
223223
assert w.owner[0].name == "Honza"
224224
assert w.owner[1].name == "Nick"
225225

tests/test_integration/_sync/test_document.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -219,7 +219,7 @@ def test_update_object_field(write_client):
219219
)
220220
w.save()
221221

222-
assert "updated" == w.update(owner=[{"name": "Honza"}, {"name": "Nick"}])
222+
assert "updated" == w.update(owner=[{"name": "Honza"}, User(name="Nick")])
223223
assert w.owner[0].name == "Honza"
224224
assert w.owner[1].name == "Nick"
225225

tests/test_utils.py

+6
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,12 @@ class MyAttrDict(utils.AttrDict):
4444
assert isinstance(l[:][0], MyAttrDict)
4545

4646

47+
def test_attrdict_keys_items():
48+
a = utils.AttrDict({"a": {"b": 42, "c": 47}, "d": "e"})
49+
assert list(a.keys()) == ["a", "d"]
50+
assert list(a.items()) == [("a", {"b": 42, "c": 47}), ("d", "e")]
51+
52+
4753
def test_merge():
4854
a = utils.AttrDict({"a": {"b": 42, "c": 47}})
4955
b = {"a": {"b": 123, "d": -12}, "e": [1, 2, 3]}

0 commit comments

Comments
 (0)