Skip to content

Commit

Permalink
Merge branch 'master' into fix-6140
Browse files Browse the repository at this point in the history
Signed-off-by: Joan Martinez <joan.fontanals.martinez@jina.ai>
  • Loading branch information
JoanFM committed Feb 19, 2024
2 parents 30b37f2 + 7fbbfcf commit e836848
Show file tree
Hide file tree
Showing 4 changed files with 33 additions and 7 deletions.
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -655,6 +655,7 @@ Jina is released on every Friday evening. The PyPi package and Docker Image will
- [Release Note (`3.23.0`)](#release-note-3230)
- [Release Note (`3.23.1`)](#release-note-3231)
- [Release Note (`3.23.2`)](#release-note-3232)
- [Release Note (`3.23.3`)](#release-note-3233)

<!-- END doctoc generated TOC please keep comment here to allow auto update -->

Expand Down
12 changes: 6 additions & 6 deletions jina/serve/runtimes/helper.py
Original file line number Diff line number Diff line change
Expand Up @@ -100,8 +100,8 @@ def _parse_specific_params(parameters: Dict, executor_name: str):
]


def _create_aux_model_doc_list_to_list(model, cached_models = None):
cached_models = cached_models or set()
def _create_aux_model_doc_list_to_list(model, cached_models=None):
cached_models = cached_models or {}

Check warning on line 104 in jina/serve/runtimes/helper.py

View check run for this annotation

Codecov / codecov/patch

jina/serve/runtimes/helper.py#L103-L104

Added lines #L103 - L104 were not covered by tests
fields: Dict[str, Any] = {}
for field_name, field in model.__annotations__.items():
if field_name not in model.__fields__:
Expand All @@ -111,11 +111,11 @@ def _create_aux_model_doc_list_to_list(model, cached_models = None):
if issubclass(field, DocList):
t: Any = field.doc_type
if t.__name__ in cached_models:
fields[field_name] = (List[t], field_info)
fields[field_name] = (List[cached_models[t.__name__]], field_info)

Check warning on line 114 in jina/serve/runtimes/helper.py

View check run for this annotation

Codecov / codecov/patch

jina/serve/runtimes/helper.py#L113-L114

Added lines #L113 - L114 were not covered by tests
else:
t_aux = _create_aux_model_doc_list_to_list(t)
t_aux = _create_aux_model_doc_list_to_list(t, cached_models)
cached_models[t.__name__] = t_aux
fields[field_name] = (List[t_aux], field_info)

Check warning on line 118 in jina/serve/runtimes/helper.py

View check run for this annotation

Codecov / codecov/patch

jina/serve/runtimes/helper.py#L116-L118

Added lines #L116 - L118 were not covered by tests
cached_models.add(t.__name__)
else:
fields[field_name] = (field, field_info)
except TypeError:
Expand All @@ -125,7 +125,7 @@ def _create_aux_model_doc_list_to_list(model, cached_models = None):
__base__=model,
__validators__=model.__validators__,
**fields)
cached_models.add(new_model.__name__)
cached_models[model.__name__] = new_model

Check warning on line 128 in jina/serve/runtimes/helper.py

View check run for this annotation

Codecov / codecov/patch

jina/serve/runtimes/helper.py#L128

Added line #L128 was not covered by tests

return new_model

Check warning on line 130 in jina/serve/runtimes/helper.py

View check run for this annotation

Codecov / codecov/patch

jina/serve/runtimes/helper.py#L130

Added line #L130 was not covered by tests

Expand Down
2 changes: 1 addition & 1 deletion jina/serve/runtimes/worker/request_handling.py
Original file line number Diff line number Diff line change
Expand Up @@ -1002,7 +1002,7 @@ async def endpoint_discovery(self, empty, context) -> jina_pb2.EndpointsProto:
endpoints_proto.write_endpoints.extend(list(self._executor.write_endpoints))
schemas = self._executor._get_endpoint_models_dict()
if docarray_v2:
cached_aux_models = set()
cached_aux_models = {}

Check warning on line 1005 in jina/serve/runtimes/worker/request_handling.py

View check run for this annotation

Codecov / codecov/patch

jina/serve/runtimes/worker/request_handling.py#L1005

Added line #L1005 was not covered by tests
from docarray.documents.legacy import LegacyDocument

from jina.serve.runtimes.helper import _create_aux_model_doc_list_to_list
Expand Down
25 changes: 25 additions & 0 deletions tests/unit/serve/runtimes/test_helper.py
Original file line number Diff line number Diff line change
Expand Up @@ -382,3 +382,28 @@ class SearchResult(BaseDoc):
reconstructed_in_gateway_from_Search_results = QuoteFile_reconstructed_in_gateway_from_Search_results(
texts=textlist)
assert reconstructed_in_gateway_from_Search_results.texts[0].text == 'hey'


@pytest.mark.skipif(not docarray_v2, reason='Test only working with docarray v2')
def test_create_aux_model_with_multiple_doclists_of_same_type():
from docarray import DocList, BaseDoc
from jina.serve.runtimes.helper import _create_aux_model_doc_list_to_list

class MyTextDoc(BaseDoc):
text: str

class QuoteFile(BaseDoc):
texts: DocList[MyTextDoc]

class QuoteFileType(BaseDoc):
"""
QuoteFileType class.
"""
id: str = None # same as name, compatibility reasons for a generic, shared `id` field
name: str = None
total_count: int = None
docs: DocList[QuoteFile] = None
chunks: DocList[QuoteFile] = None

new_model = _create_aux_model_doc_list_to_list(QuoteFileType)
new_model.schema()

0 comments on commit e836848

Please sign in to comment.