Skip to content

Commit eea8c76

Browse files
author
Joan Fontanals Martinez
committed
fix: skip annotations if not in __fields__
Signed-off-by: Joan Fontanals Martinez <[email protected]>
1 parent 189ff63 commit eea8c76

File tree

2 files changed

+9
-1
lines changed

2 files changed

+9
-1
lines changed

docarray/utils/create_dynamic_doc_class.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,8 @@ class MyDoc(BaseDoc):
5151
"""
5252
fields: Dict[str, Any] = {}
5353
for field_name, field in model.__annotations__.items():
54+
if field_name not in model.__fields__:
55+
continue
5456
field_info = model.__fields__[field_name].field_info
5557
try:
5658
if safe_issubclass(field, DocList):

tests/units/util/test_create_dynamic_code_class.py

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
from typing import Any, Dict, List, Optional, Union
1+
from typing import Any, Dict, List, Optional, Union, ClassVar
22

33
import numpy as np
44
import pytest
@@ -17,9 +17,11 @@
1717
def test_create_pydantic_model_from_schema(transformation):
1818
class Nested2Doc(BaseDoc):
1919
value: str
20+
classvar: ClassVar[str] = 'classvar2'
2021

2122
class Nested1Doc(BaseDoc):
2223
nested: Nested2Doc
24+
classvar: ClassVar[str] = 'classvar1'
2325

2426
class CustomDoc(BaseDoc):
2527
tensor: Optional[AnyTensor]
@@ -34,6 +36,7 @@ class CustomDoc(BaseDoc):
3436
lu: List[Union[str, int]] = [0, 1, 2]
3537
tags: Optional[Dict[str, Any]] = None
3638
nested: Nested1Doc
39+
classvar: ClassVar[str] = 'classvar'
3740

3841
CustomDocCopy = create_pure_python_type_model(CustomDoc)
3942
new_custom_doc_model = create_base_doc_from_schema(
@@ -87,6 +90,9 @@ class CustomDoc(BaseDoc):
8790
assert custom_partial_da[0].single_text.text == 'single hey ha'
8891
assert custom_partial_da[0].single_text.embedding.shape == (2,)
8992
assert original_back[0].nested.nested.value == 'hello world'
93+
assert original_back[0].classvar == 'classvar'
94+
assert original_back[0].nested.classvar == 'classvar1'
95+
assert original_back[0].nested.nested.classvar == 'classvar2'
9096

9197
assert len(original_back) == 1
9298
assert original_back[0].url == 'photo.jpg'

0 commit comments

Comments
 (0)