Fix ModelOutput instantiation form dictionaries (#13067)

* Fix ModelOutput instantiation form dictionaries

* Style
This commit is contained in:
Sylvain Gugger
2021-08-10 12:20:04 +02:00
committed by GitHub
parent 3157fa3c53
commit 0454e4bd8b
2 changed files with 14 additions and 4 deletions

View File

@@ -1850,6 +1850,10 @@ class ModelOutput(OrderedDict):
other_fields_are_none = all(getattr(self, field.name) is None for field in class_fields[1:]) other_fields_are_none = all(getattr(self, field.name) is None for field in class_fields[1:])
if other_fields_are_none and not is_tensor(first_field): if other_fields_are_none and not is_tensor(first_field):
if isinstance(first_field, dict):
iterator = first_field.items()
first_field_iterator = True
else:
try: try:
iterator = iter(first_field) iterator = iter(first_field)
first_field_iterator = True first_field_iterator = True

View File

@@ -101,3 +101,9 @@ class ModelOutputTester(unittest.TestCase):
x["a"] = 10 x["a"] = 10
self.assertEqual(x.a, 10) self.assertEqual(x.a, 10)
self.assertEqual(x["a"], 10) self.assertEqual(x["a"], 10)
def test_instantiate_from_dict(self):
x = ModelOutputTest({"a": 30, "b": 10})
self.assertEqual(list(x.keys()), ["a", "b"])
self.assertEqual(x.a, 30)
self.assertEqual(x.b, 10)