Skip to content

Commit 371eb74

Browse files
authored
refactor(dataclass): follow the order of dataclass field on assign (#176)
1 parent 85fa4b4 commit 371eb74

File tree

2 files changed

+7
-11
lines changed

2 files changed

+7
-11
lines changed

docarray/base.py

Lines changed: 5 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -32,10 +32,9 @@ def __init__(
3232
if field_resolver:
3333
kwargs = {field_resolver.get(k, k): v for k, v in kwargs.items()}
3434

35+
_fields = fields(self._data_class)
3536
_unknown_kwargs = None
36-
_unresolved = set(kwargs.keys()).difference(
37-
{f.name for f in fields(self._data_class)}
38-
)
37+
_unresolved = set(kwargs.keys()).difference({f.name for f in _fields})
3938

4039
if _unresolved:
4140
if unknown_fields_handler == 'raise':
@@ -47,12 +46,9 @@ def __init__(
4746

4847
self._data = self._data_class(self)
4948

50-
# ``id`` need to be set at the first place, since some other attributes would depends on it.
51-
if 'id' in kwargs:
52-
setattr(self._data, 'id', kwargs.pop('id'))
53-
54-
for k, v in kwargs.items():
55-
setattr(self._data, k, v)
49+
for field in _fields:
50+
if field.name in kwargs:
51+
setattr(self._data, field.name, kwargs[field.name])
5652

5753
if _unknown_kwargs and unknown_fields_handler == 'catch':
5854
getattr(self, self._unresolved_fields_dest).update(_unknown_kwargs)

tests/unit/document/test_converters.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -181,9 +181,9 @@ def test_convert_uri_to_text(uri, mimetype):
181181

182182
def test_convert_text_to_uri_and_back():
183183
text_from_file = open(__file__).read()
184-
doc = Document(content=text_from_file, mime_type='text/x-python')
184+
doc = Document(content=text_from_file)
185185
assert doc.text
186-
assert doc.mime_type == 'text/x-python'
186+
assert doc.mime_type == 'text/plain'
187187
doc.convert_text_to_datauri()
188188
doc.load_uri_to_text()
189189
assert doc.mime_type == 'text/plain'

0 commit comments

Comments
 (0)