Source code for now.utils.docarray.helpers
from typing import TypeVar
import docarray
[docs]def docarray_typing_to_modality_string(T: TypeVar) -> str:
"""E.g. docarray.typing.Image -> image"""
return T.__name__.lower()
[docs]def modality_string_to_docarray_typing(s: str) -> TypeVar:
"""E.g. image -> docarray.typing.Image"""
return getattr(docarray.typing, s.capitalize())
[docs]def get_chunk_by_field_name(doc, field_name):
"""
Gets a specific chunk by field name, using its position instead of getting the attribute directly.
This solves the getattr problem when there are conflicting attributes with Document.
:param doc: Document to get the chunk from.
:param field_name: Field needed to extract the position.
:return: Specific chunk by field.
"""
try:
field_position = int(
doc._metadata['multi_modal_schema'][field_name]['position']
)
return doc.chunks[field_position]
except Exception as e:
raise e