Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 5 additions & 4 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -111,8 +111,8 @@ class MyDocument(BaseDoc):
image_url: ImageUrl # could also be VideoUrl, AudioUrl, etc.
image_tensor: Optional[
TorchTensor[1704, 2272, 3]
] # could also be NdArray or TensorflowTensor
embedding: Optional[TorchTensor]
] = None # could also be NdArray or TensorflowTensor
embedding: Optional[TorchTensor] = None
```

So not only can you define the types of your data, you can even **specify the shape of your tensors!**
Expand Down Expand Up @@ -643,8 +643,8 @@ import tensorflow as tf


class Podcast(BaseDoc):
audio_tensor: Optional[AudioTensorFlowTensor]
embedding: Optional[AudioTensorFlowTensor]
audio_tensor: Optional[AudioTensorFlowTensor] = None
embedding: Optional[AudioTensorFlowTensor] = None


class MyPodcastModel(tf.keras.Model):
Expand Down Expand Up @@ -713,6 +713,7 @@ async def create_item(doc: InputDoc) -> OutputDoc:
)
return doc


input_doc = InputDoc(text='', img=ImageDoc(tensor=np.random.random((3, 224, 224))))

async with AsyncClient(app=app, base_url="http://test") as ac:
Expand Down
2 changes: 1 addition & 1 deletion docarray/array/doc_list/doc_list.py
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,7 @@ class DocList(


class Image(BaseDoc):
tensor: Optional[NdArray[100]]
tensor: Optional[NdArray[100]] = None
url: ImageUrl


Expand Down
2 changes: 1 addition & 1 deletion docarray/documents/audio.py
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,7 @@ class AudioDoc(BaseDoc):

# extend it
class MyAudio(AudioDoc):
name: Optional[TextDoc]
name: Optional[TextDoc] = None


audio = MyAudio(
Expand Down
2 changes: 1 addition & 1 deletion docarray/documents/image.py
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@ class ImageDoc(BaseDoc):

# extend it
class MyImage(ImageDoc):
second_embedding: Optional[AnyEmbedding]
second_embedding: Optional[AnyEmbedding] = None


image = MyImage(
Expand Down
2 changes: 1 addition & 1 deletion docarray/documents/mesh/mesh_3d.py
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,7 @@ class Mesh3D(BaseDoc):

# extend it
class MyMesh3D(Mesh3D):
name: Optional[str]
name: Optional[str] = None


mesh = MyMesh3D(url='https://people.sc.fsu.edu/~jburkardt/data/obj/al.obj')
Expand Down
2 changes: 1 addition & 1 deletion docarray/documents/point_cloud/point_cloud_3d.py
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,7 @@ class PointCloud3D(BaseDoc):

# extend it
class MyPointCloud3D(PointCloud3D):
second_embedding: Optional[AnyEmbedding]
second_embedding: Optional[AnyEmbedding] = None


pc = MyPointCloud3D(url='https://people.sc.fsu.edu/~jburkardt/data/obj/al.obj')
Expand Down
2 changes: 1 addition & 1 deletion docarray/documents/text.py
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,7 @@ class TextDoc(BaseDoc):

# extend it
class MyText(TextDoc):
second_embedding: Optional[AnyEmbedding]
second_embedding: Optional[AnyEmbedding] = None


txt_doc = MyText(url='https://www.gutenberg.org/files/1065/1065-0.txt')
Expand Down
2 changes: 1 addition & 1 deletion docarray/documents/video.py
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,7 @@ class VideoDoc(BaseDoc):

# extend it
class MyVideo(VideoDoc):
name: Optional[TextDoc]
name: Optional[TextDoc] = None


video = MyVideo(
Expand Down
6 changes: 3 additions & 3 deletions docarray/typing/bytes/audio_bytes.py
Original file line number Diff line number Diff line change
Expand Up @@ -33,9 +33,9 @@ def load(self) -> Tuple[AudioNdArray, int]:

class MyAudio(BaseDoc):
url: AudioUrl
tensor: Optional[AudioNdArray]
bytes_: Optional[AudioBytes]
frame_rate: Optional[float]
tensor: Optional[AudioNdArray] = None
bytes_: Optional[AudioBytes] = None
frame_rate: Optional[float] = None


doc = MyAudio(url='https://www.kozco.com/tech/piano2.wav')
Expand Down
6 changes: 3 additions & 3 deletions docarray/typing/tensor/audio/audio_ndarray.py
Original file line number Diff line number Diff line change
Expand Up @@ -22,9 +22,9 @@ class AudioNdArray(AbstractAudioTensor, NdArray):

class MyAudioDoc(BaseDoc):
title: str
audio_tensor: Optional[AudioNdArray]
url: Optional[AudioUrl]
bytes_: Optional[AudioBytes]
audio_tensor: Optional[AudioNdArray] = None
url: Optional[AudioUrl] = None
bytes_: Optional[AudioBytes] = None


# from tensor
Expand Down
6 changes: 3 additions & 3 deletions docarray/typing/tensor/audio/audio_torch_tensor.py
Original file line number Diff line number Diff line change
Expand Up @@ -22,9 +22,9 @@ class AudioTorchTensor(AbstractAudioTensor, TorchTensor, metaclass=metaTorchAndN

class MyAudioDoc(BaseDoc):
title: str
audio_tensor: Optional[AudioTorchTensor]
url: Optional[AudioUrl]
bytes_: Optional[AudioBytes]
audio_tensor: Optional[AudioTorchTensor] = None
url: Optional[AudioUrl] = None
bytes_: Optional[AudioBytes] = None


doc_1 = MyAudioDoc(
Expand Down
6 changes: 3 additions & 3 deletions docarray/typing/tensor/image/image_ndarray.py
Original file line number Diff line number Diff line change
Expand Up @@ -25,9 +25,9 @@ class ImageNdArray(AbstractImageTensor, NdArray):

class MyImageDoc(BaseDoc):
title: str
tensor: Optional[ImageNdArray]
url: Optional[ImageUrl]
bytes: Optional[ImageBytes]
tensor: Optional[ImageNdArray] = None
url: Optional[ImageUrl] = None
bytes: Optional[ImageBytes] = None


# from url
Expand Down
6 changes: 3 additions & 3 deletions docarray/typing/tensor/image/image_torch_tensor.py
Original file line number Diff line number Diff line change
Expand Up @@ -28,9 +28,9 @@ class ImageTorchTensor(AbstractImageTensor, TorchTensor, metaclass=metaTorchAndN

class MyImageDoc(BaseDoc):
title: str
tensor: Optional[ImageTorchTensor]
url: Optional[ImageUrl]
bytes: Optional[ImageBytes]
tensor: Optional[ImageTorchTensor] = None
url: Optional[ImageUrl] = None
bytes: Optional[ImageBytes] = None


doc = MyImageDoc(
Expand Down
4 changes: 2 additions & 2 deletions docarray/typing/tensor/video/video_ndarray.py
Original file line number Diff line number Diff line change
Expand Up @@ -29,8 +29,8 @@ class VideoNdArray(NdArray, VideoTensorMixin):

class MyVideoDoc(BaseDoc):
title: str
url: Optional[VideoUrl]
video_tensor: Optional[VideoNdArray]
url: Optional[VideoUrl] = None
video_tensor: Optional[VideoNdArray] = None


doc_1 = MyVideoDoc(
Expand Down
4 changes: 2 additions & 2 deletions docarray/typing/tensor/video/video_torch_tensor.py
Original file line number Diff line number Diff line change
Expand Up @@ -28,8 +28,8 @@ class VideoTorchTensor(TorchTensor, VideoTensorMixin, metaclass=metaTorchAndNode

class MyVideoDoc(BaseDoc):
title: str
url: Optional[VideoUrl]
video_tensor: Optional[VideoTorchTensor]
url: Optional[VideoUrl] = None
video_tensor: Optional[VideoTorchTensor] = None


doc_1 = MyVideoDoc(
Expand Down
2 changes: 1 addition & 1 deletion docarray/typing/url/audio_url.py
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ def load(self: T) -> Tuple[AudioNdArray, int]:

class MyDoc(BaseDoc):
audio_url: AudioUrl
audio_tensor: Optional[AudioNdArray]
audio_tensor: Optional[AudioNdArray] = None


doc = MyDoc(audio_url='https://www.kozco.com/tech/piano2.wav')
Expand Down
6 changes: 3 additions & 3 deletions docarray/typing/url/video_url.py
Original file line number Diff line number Diff line change
Expand Up @@ -48,9 +48,9 @@ def load(self: T, **kwargs) -> VideoLoadResult:

class MyDoc(BaseDoc):
video_url: VideoUrl
video: Optional[VideoNdArray]
audio: Optional[AudioNdArray]
key_frame_indices: Optional[NdArray]
video: Optional[VideoNdArray] = None
audio: Optional[AudioNdArray] = None
key_frame_indices: Optional[NdArray] = None


doc = MyDoc(
Expand Down
20 changes: 10 additions & 10 deletions docs/data_types/3d_mesh/3d_mesh.md
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@ from docarray.typing import Mesh3DUrl

class MyMesh3D(BaseDoc):
mesh_url: Mesh3DUrl
tensors: Optional[VerticesAndFaces]
tensors: Optional[VerticesAndFaces] = None


doc = MyMesh3D(mesh_url="https://people.sc.fsu.edu/~jburkardt/data/obj/al.obj")
Expand Down Expand Up @@ -1355,7 +1355,7 @@ from docarray.typing import PointCloud3DUrl

class MyPointCloud(BaseDoc):
url: PointCloud3DUrl
tensors: Optional[PointsAndColors]
tensors: Optional[PointsAndColors] = None


doc = MyPointCloud(url="https://people.sc.fsu.edu/~jburkardt/data/obj/al.obj")
Expand Down Expand Up @@ -2655,20 +2655,20 @@ The [`Mesh3D`][docarray.documents.mesh.Mesh3D] class provides a [`Mesh3DUrl`][do

``` { .python }
class Mesh3D(BaseDoc):
url: Optional[Mesh3DUrl]
tensors: Optional[VerticesAndFaces]
embedding: Optional[AnyEmbedding]
bytes_: Optional[bytes]
url: Optional[Mesh3DUrl] = None
tensors: Optional[VerticesAndFaces] = None
embedding: Optional[AnyEmbedding] = None
bytes_: Optional[bytes] = None
```

### `PointCloud3D`

``` { .python }
class PointCloud3D(BaseDoc):
url: Optional[PointCloud3DUrl]
tensors: Optional[PointsAndColors]
embedding: Optional[AnyEmbedding]
bytes_: Optional[bytes]
url: Optional[PointCloud3DUrl] = None
tensors: Optional[PointsAndColors] = None
embedding: Optional[AnyEmbedding] = None
bytes_: Optional[bytes] = None
```

You can use them directly, extend or compose them:
Expand Down
12 changes: 6 additions & 6 deletions docs/data_types/audio/audio.md
Original file line number Diff line number Diff line change
Expand Up @@ -187,11 +187,11 @@ To get started and play around with your audio data, DocArray provides a predefi

``` { .python }
class AudioDoc(BaseDoc):
url: Optional[AudioUrl]
tensor: Optional[AudioTensor]
embedding: Optional[AnyEmbedding]
bytes_: Optional[AudioBytes]
frame_rate: Optional[int]
url: Optional[AudioUrl] = None
tensor: Optional[AudioTensor] = None
embedding: Optional[AnyEmbedding] = None
bytes_: Optional[AudioBytes] = None
frame_rate: Optional[int] = None
```

You can use this class directly or extend it to your preference:
Expand All @@ -203,7 +203,7 @@ from typing import Optional

# extend AudioDoc
class MyAudio(AudioDoc):
name: Optional[str]
name: Optional[str] = None


audio = MyAudio(
Expand Down
10 changes: 5 additions & 5 deletions docs/data_types/image/image.md
Original file line number Diff line number Diff line change
Expand Up @@ -171,10 +171,10 @@ To get started and play around with the image modality, DocArray provides a pred

``` { .python }
class ImageDoc(BaseDoc):
url: Optional[ImageUrl]
tensor: Optional[ImageTensor]
embedding: Optional[AnyEmbedding]
bytes_: Optional[ImageBytes]
url: Optional[ImageUrl] = None
tensor: Optional[ImageTensor] = None
embedding: Optional[AnyEmbedding] = None
bytes_: Optional[ImageBytes] = None
```

You can use this class directly or extend it to your preference:
Expand All @@ -188,7 +188,7 @@ from typing import Optional
# extending ImageDoc
class MyImage(ImageDoc):
image_title: str
second_embedding: Optional[AnyEmbedding]
second_embedding: Optional[AnyEmbedding] = None


image = MyImage(
Expand Down
8 changes: 4 additions & 4 deletions docs/data_types/text/text.md
Original file line number Diff line number Diff line change
Expand Up @@ -101,8 +101,8 @@ To get started and play around with your text data, DocArray provides a predefin

``` { .python }
class TextDoc(BaseDoc):
text: Optional[str]
url: Optional[TextUrl]
embedding: Optional[AnyEmbedding]
bytes_: Optional[bytes]
text: Optional[str] = None
url: Optional[TextUrl] = None
embedding: Optional[AnyEmbedding] = None
bytes_: Optional[bytes] = None
```
12 changes: 6 additions & 6 deletions docs/data_types/video/video.md
Original file line number Diff line number Diff line change
Expand Up @@ -188,12 +188,12 @@ To get started and play around with your video data, DocArray provides a predefi

``` { .python }
class VideoDoc(BaseDoc):
url: Optional[VideoUrl]
url: Optional[VideoUrl] = None
audio: Optional[AudioDoc] = AudioDoc()
tensor: Optional[VideoTensor]
key_frame_indices: Optional[AnyTensor]
embedding: Optional[AnyEmbedding]
bytes_: Optional[bytes]
tensor: Optional[VideoTensor] = None
key_frame_indices: Optional[AnyTensor] = None
embedding: Optional[AnyEmbedding] = None
bytes_: Optional[bytes] = None
```

You can use this class directly or extend it to your preference:
Expand All @@ -206,7 +206,7 @@ from docarray.documents import VideoDoc

# extend it
class MyVideo(VideoDoc):
name: Optional[str]
name: Optional[str] = None


video = MyVideo(
Expand Down
2 changes: 1 addition & 1 deletion docs/how_to/add_doc_index.md
Original file line number Diff line number Diff line change
Expand Up @@ -187,7 +187,7 @@ The values of `self._column_infos` are `_ColumnInfo` dataclasses, which have the
class _ColumnInfo:
docarray_type: Type
db_type: Any
n_dim: Optional[int]
n_dim: Optional[int] = None
config: Dict[str, Any]
```

Expand Down
9 changes: 5 additions & 4 deletions docs/how_to/multimodal_training_and_serving.md
Original file line number Diff line number Diff line change
Expand Up @@ -101,7 +101,7 @@ class Tokens(BaseDoc):

```python
class Text(BaseText):
tokens: Optional[Tokens]
tokens: Optional[Tokens] = None
```

Notice the [`TorchTensor`][docarray.typing.TorchTensor] type. It is a thin wrapper around `torch.Tensor` that can be used like any other Torch tensor,
Expand All @@ -119,9 +119,9 @@ supported ML framework):

```python
class ImageDoc(BaseDoc):
url: Optional[ImageUrl]
tensor: Optional[TorchTesor]
embedding: Optional[TorchTensor]
url: Optional[ImageUrl] = None
tensor: Optional[TorchTesor] = None
embedding: Optional[TorchTensor] = None
```

Actually, the `BaseText` above also already includes `tensor`, `url` and `embedding` fields, so we can use those on our
Expand All @@ -141,6 +141,7 @@ This will be unnecessary once [this issue](https://github.com/docarray/docarray/

```python
from docarray import DocVec

DocVec[Tokens]
DocVec[TextDoc]
DocVec[ImageDoc]
Expand Down
4 changes: 2 additions & 2 deletions docs/user_guide/representing/array.md
Original file line number Diff line number Diff line change
Expand Up @@ -454,7 +454,7 @@ Both [`DocList`][docarray.array.doc_list.doc_list.DocList] and [`DocVec`][docarr


class MyDoc(BaseDoc):
nested_doc: Optional[BaseDoc]
nested_doc: Optional[BaseDoc] = None
```

Using nested optional fields differs slightly between DocList and DocVes, so watch out. But in a nutshell:
Expand Down Expand Up @@ -484,7 +484,7 @@ class ImageDoc(BaseDoc):


class ArticleDoc(BaseDoc):
image: Optional[ImageDoc]
image: Optional[ImageDoc] = None
title: str
```

Expand Down
Loading