Skip to content

Commit 0eaf264

Browse files
authored
✨ Add get to mimic dict (#468)
1 parent e3757c1 commit 0eaf264

2 files changed

Lines changed: 19 additions & 0 deletions

File tree

bibtexparser/model.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -318,6 +318,13 @@ def pop(self, key: str, default=None) -> Optional[Field]:
318318
self._fields = [f for f in self._fields if f.key != key]
319319
return field
320320

321+
def get(self, key: str, default=None) -> Optional[Field]:
322+
"""Returns the field with the given key, or the default value if it does not exist.
323+
324+
:param key: The key of the field.
325+
:param default: The value to return if the field does not exist."""
326+
return self.fields_dict.get(key, default)
327+
321328
def __contains__(self, key: str) -> bool:
322329
"""Dict-mimicking ``in`` operator."""
323330
return key in self.fields_dict

tests/test_model.py

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,18 @@ def test_entry_deepcopy():
7777
assert entry_1.fields_dict["field"] == entry_2.fields_dict["field"]
7878

7979

80+
def test_entry_get():
81+
entry1 = Entry(
82+
"article", "key", [Field("field", "value", 1), Field("foo", "bar", 2)], 1, "raw"
83+
)
84+
entry2 = Entry(
85+
"article", "key", [Field("field", "value", 1), Field("foo", "bar", 2)], 1, "raw"
86+
)
87+
assert entry1.get("other", "default") == "default"
88+
assert entry1.get("foo") == Field("foo", "bar", 2)
89+
assert entry1 == entry2
90+
91+
8092
def test_entry_pop():
8193
entry1 = Entry(
8294
"article", "key", [Field("field", "value", 1), Field("foo", "bar", 2)], 1, "raw"

0 commit comments

Comments
 (0)