-
Notifications
You must be signed in to change notification settings - Fork 244
Expand file tree
/
Copy pathsetter.py
More file actions
101 lines (69 loc) · 2.75 KB
/
setter.py
File metadata and controls
101 lines (69 loc) · 2.75 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
from typing import TYPE_CHECKING
import numpy as np
from docarray.dataclasses.enums import DocumentMetadata, ImageType
if TYPE_CHECKING: # pragma: no cover
from docarray import Document
def image_setter(value) -> 'Document':
from docarray import Document
doc = Document(modality='image')
if isinstance(value, str):
doc.uri = value
doc._metadata[DocumentMetadata.IMAGE_TYPE] = ImageType.URI
doc.load_uri_to_image_tensor()
elif isinstance(value, np.ndarray):
doc.tensor = value
doc._metadata[DocumentMetadata.IMAGE_TYPE] = ImageType.NDARRAY
else:
from PIL.Image import Image
if isinstance(value, Image):
doc.tensor = np.array(value)
doc._metadata[DocumentMetadata.IMAGE_TYPE] = ImageType.PIL
return doc
def text_setter(value) -> 'Document':
from docarray import Document
return Document(text=value, modality='text')
def uri_setter(value) -> 'Document':
from docarray import Document
return Document(uri=value)
def audio_setter(value) -> 'Document':
from docarray import Document
if isinstance(value, np.ndarray):
return Document(
tensor=value, _metadata={DocumentMetadata.AUDIO_TYPE: 'ndarray'}
)
else:
return Document(
uri=value, modality='audio', _metadata={DocumentMetadata.AUDIO_TYPE: 'uri'}
).load_uri_to_audio_tensor()
def video_setter(value) -> 'Document':
from docarray import Document
if isinstance(value, np.ndarray):
return Document(
tensor=value, _metadata={DocumentMetadata.VIDEO_TYPE: 'ndarray'}
)
else:
return Document(
uri=value, modality='video', _metadata={DocumentMetadata.VIDEO_TYPE: 'uri'}
).load_uri_to_video_tensor()
def mesh_setter(value) -> 'Document':
from docarray import Document
if isinstance(value, np.ndarray):
return Document(tensor=value, _metadata={DocumentMetadata.MESH_TYPE: 'ndarray'})
else:
return Document(
uri=value, modality='mesh', _metadata={DocumentMetadata.MESH_TYPE: 'uri'}
).load_uri_to_point_cloud_tensor(1000)
def blob_setter(value) -> 'Document':
from docarray import Document
if isinstance(value, bytes):
return Document(blob=value, _metadata={DocumentMetadata.BLOB_TYPE: 'bytes'})
else:
return Document(
uri=value, _metadata={DocumentMetadata.BLOB_TYPE: 'uri'}
).load_uri_to_blob()
def json_setter(value) -> 'Document':
from docarray import Document
return Document(modality='json', tags=value)
def tabular_setter(value) -> 'Document':
from docarray import Document, DocumentArray
return Document(uri=value, chunks=DocumentArray.from_csv(value), modality='tabular')