From 0c697e4f35c17263c2828cc6bbbc77c3fa9c9d33 Mon Sep 17 00:00:00 2001 From: marcosbodio Date: Tue, 8 Nov 2022 11:48:46 +0000 Subject: [PATCH 1/2] chore(document): change type hint for tags --- docarray/document/data.py | 4 +-- docarray/document/mixins/_property.py | 37 ++++++++++----------------- scripts/gen_doc_property_mixin.py | 7 +++-- 3 files changed, 19 insertions(+), 29 deletions(-) diff --git a/docarray/document/data.py b/docarray/document/data.py index b052b6eea86..604f057b516 100644 --- a/docarray/document/data.py +++ b/docarray/document/data.py @@ -2,7 +2,7 @@ import os from collections import defaultdict from dataclasses import dataclass, field, fields -from typing import TYPE_CHECKING, Dict, List, Optional, Tuple, Union +from typing import TYPE_CHECKING, Dict, List, Optional, Tuple, Union, Any from docarray.math.ndarray import check_arraylike_equality @@ -70,7 +70,7 @@ class DocumentData: content: Optional['DocumentContentType'] = None weight: Optional[float] = None uri: Optional[str] = None - tags: Optional[Dict[str, 'StructValueType']] = None + tags: Optional[Dict[str, Any]] = None _metadata: Optional[Dict[str, 'StructValueType']] = None offset: Optional[float] = None location: Optional[List[float]] = None diff --git a/docarray/document/mixins/_property.py b/docarray/document/mixins/_property.py index ea2f56e348f..8995c2e8cb7 100644 --- a/docarray/document/mixins/_property.py +++ b/docarray/document/mixins/_property.py @@ -1,12 +1,12 @@ -# auto-generated from /Users/hanxiao/Documents/docarray/scripts/gen_doc_property_mixin.py -from typing import TYPE_CHECKING, Dict, List, Optional +# auto-generated from /Users/marco/code/opensource/docarray/scripts/gen_doc_property_mixin.py +from typing import TYPE_CHECKING, Dict, List, Optional, Union, Any -if TYPE_CHECKING: # pragma: no cover - from docarray.score import NamedScore - from docarray.array.match import MatchArray - from docarray.array.chunk import ChunkArray - from docarray import DocumentArray - from docarray.typing import ArrayType, StructValueType, DocumentContentType +if TYPE_CHECKING: + from ...score import NamedScore + from ...array.match import MatchArray + from ...array.chunk import ChunkArray + from ... import DocumentArray + from ...typing import ArrayType, StructValueType, DocumentContentType class _PropertyMixin: @@ -110,23 +110,14 @@ def uri(self, value: str): self._data.uri = value @property - def tags(self) -> Optional[Dict[str, 'StructValueType']]: + def tags(self) -> Optional[Dict[str, Any]]: self._data._set_default_value_if_none('tags') return self._data.tags @tags.setter - def tags(self, value: Dict[str, 'StructValueType']): + def tags(self, value: Dict[str, Any]): self._data.tags = value - @property - def _metadata(self) -> Optional[Dict[str, 'StructValueType']]: - self._data._set_default_value_if_none('_metadata') - return self._data._metadata - - @_metadata.setter - def _metadata(self, value: Dict[str, 'StructValueType']): - self._data._metadata = value - @property def offset(self) -> Optional[float]: self._data._set_default_value_if_none('offset') @@ -164,21 +155,21 @@ def modality(self, value: str): self._data.modality = value @property - def evaluations(self) -> Optional[Dict[str, 'NamedScore']]: + def evaluations(self) -> Optional[Dict[str, Union['NamedScore', Dict]]]: self._data._set_default_value_if_none('evaluations') return self._data.evaluations @evaluations.setter - def evaluations(self, value: Dict[str, 'NamedScore']): + def evaluations(self, value: Dict[str, Union['NamedScore', Dict]]): self._data.evaluations = value @property - def scores(self) -> Optional[Dict[str, 'NamedScore']]: + def scores(self) -> Optional[Dict[str, Union['NamedScore', Dict]]]: self._data._set_default_value_if_none('scores') return self._data.scores @scores.setter - def scores(self, value: Dict[str, 'NamedScore']): + def scores(self, value: Dict[str, Union['NamedScore', Dict]]): self._data.scores = value @property diff --git a/scripts/gen_doc_property_mixin.py b/scripts/gen_doc_property_mixin.py index 860867ef123..3c4e83f04e8 100644 --- a/scripts/gen_doc_property_mixin.py +++ b/scripts/gen_doc_property_mixin.py @@ -5,7 +5,7 @@ with open('../docarray/document/mixins/_property.py', 'w') as fp: fp.write( f'''# auto-generated from {__file__} -from typing import TYPE_CHECKING, Dict, List, Optional +from typing import TYPE_CHECKING, Dict, List, Optional, Union, Any if TYPE_CHECKING: from ...score import NamedScore @@ -23,11 +23,10 @@ class _PropertyMixin: continue ftype = ( str(f.type) - .replace('typing.Dict', 'Dict') - .replace('typing.List', 'List') + .replace('typing.', '') .replace('datetime.datetime', '\'datetime\'') ) - ftype = re.sub(r'typing.Union\[(.*), NoneType]', r'Optional[\g<1>]', ftype) + ftype = re.sub(r'Union\[(.*), NoneType]', r'Optional[\g<1>]', ftype) ftype = re.sub(r'ForwardRef\((\'.*\')\)', r'\g<1>', ftype) ftype = re.sub(r'', r'\g<1>', ftype) From 8515311ae0ed97f87e31e2074a3305a8af82b562 Mon Sep 17 00:00:00 2001 From: marcosbodio Date: Wed, 9 Nov 2022 17:38:40 +0000 Subject: [PATCH 2/2] chore(document): resolve comments --- docarray/document/mixins/_property.py | 21 +++++++++++++++------ scripts/gen_doc_property_mixin.py | 15 +++++++++------ 2 files changed, 24 insertions(+), 12 deletions(-) diff --git a/docarray/document/mixins/_property.py b/docarray/document/mixins/_property.py index 8995c2e8cb7..bddcc8156cd 100644 --- a/docarray/document/mixins/_property.py +++ b/docarray/document/mixins/_property.py @@ -1,12 +1,12 @@ -# auto-generated from /Users/marco/code/opensource/docarray/scripts/gen_doc_property_mixin.py +# auto-generated from docarray/scripts/gen_doc_property_mixin.py from typing import TYPE_CHECKING, Dict, List, Optional, Union, Any if TYPE_CHECKING: - from ...score import NamedScore - from ...array.match import MatchArray - from ...array.chunk import ChunkArray - from ... import DocumentArray - from ...typing import ArrayType, StructValueType, DocumentContentType + from docarray.score import NamedScore + from docarray.array.match import MatchArray + from docarray.array.chunk import ChunkArray + from docarray import DocumentArray + from docarray.typing import ArrayType, StructValueType, DocumentContentType class _PropertyMixin: @@ -118,6 +118,15 @@ def tags(self) -> Optional[Dict[str, Any]]: def tags(self, value: Dict[str, Any]): self._data.tags = value + @property + def _metadata(self) -> Optional[Dict[str, 'StructValueType']]: + self._data._set_default_value_if_none('_metadata') + return self._data._metadata + + @_metadata.setter + def _metadata(self, value: Dict[str, 'StructValueType']): + self._data._metadata = value + @property def offset(self) -> Optional[float]: self._data._set_default_value_if_none('offset') diff --git a/scripts/gen_doc_property_mixin.py b/scripts/gen_doc_property_mixin.py index 3c4e83f04e8..226d4280e19 100644 --- a/scripts/gen_doc_property_mixin.py +++ b/scripts/gen_doc_property_mixin.py @@ -1,18 +1,21 @@ +import os import re from dataclasses import fields +from pathlib import Path + from docarray.document.data import DocumentData with open('../docarray/document/mixins/_property.py', 'w') as fp: fp.write( - f'''# auto-generated from {__file__} + f'''# auto-generated from {os.path.relpath(__file__, start=Path(__file__).parent.parent.parent)} from typing import TYPE_CHECKING, Dict, List, Optional, Union, Any if TYPE_CHECKING: - from ...score import NamedScore - from ...array.match import MatchArray - from ...array.chunk import ChunkArray - from ... import DocumentArray - from ...typing import ArrayType, StructValueType, DocumentContentType + from docarray.score import NamedScore + from docarray.array.match import MatchArray + from docarray.array.chunk import ChunkArray + from docarray import DocumentArray + from docarray.typing import ArrayType, StructValueType, DocumentContentType class _PropertyMixin: