Skip to content
This repository was archived by the owner on Aug 19, 2025. It is now read-only.

Commit 758adaf

Browse files
skewtylovelydinosaur
authored andcommitted
Avoid double lookups in Schema.__getitem__ (#78)
Fixes #73
1 parent ecf40f7 commit 758adaf

1 file changed

Lines changed: 7 additions & 5 deletions

File tree

typesystem/schemas.py

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -173,11 +173,13 @@ def __eq__(self, other: typing.Any) -> bool:
173173
return True
174174

175175
def __getitem__(self, key: typing.Any) -> typing.Any:
176-
if key not in self.fields or not hasattr(self, key):
177-
raise KeyError(key)
178-
field = self.fields[key]
179-
value = getattr(self, key)
180-
return field.serialize(value)
176+
try:
177+
field = self.fields[key]
178+
value = getattr(self, key)
179+
except (KeyError, AttributeError):
180+
raise KeyError(key) from None
181+
else:
182+
return field.serialize(value)
181183

182184
def __iter__(self) -> typing.Iterator[str]:
183185
for key in self.fields:

0 commit comments

Comments
 (0)