Skip to content

feat: make compatible based type with fastapi - #809

Merged
JohannesMessner merged 27 commits into
feat-rewrite-v2from
feat-v2-fastapi-test
Nov 23, 2022
Merged

feat: make compatible based type with fastapi#809
JohannesMessner merged 27 commits into
feat-rewrite-v2from
feat-v2-fastapi-test

Conversation

@samsja

@samsja samsja commented Nov 17, 2022

Copy link
Copy Markdown
Member

Context

The goal of this PR is make our Document model compatible with FastAPI.

What this PR do:

Mainly add json dump to types

allow to do

from fastapi import FastAPI

from docarray import Document, Image, Text
from docarray.typing import Tensor


class InputDoc(Document):
    text: str

class OutputDoc(Document):
    embedding_clip: Tensor
    embedding_bert: Tensor

input_doc = InputDoc(text='hello')

app = FastAPI()

@app.post("/doc/", response_model=OutputDoc)
async def create_item(doc: InputDoc) -> OutputDoc:
    ## call my fancy model to generate the embeddings
    return OutputDoc(
        embedding_clip=np.zeros((100, 1)), embedding_bert=np.zeros((100, 1))
    )

and it is working as well with our custom types

@samsja
samsja marked this pull request as draft November 17, 2022 16:10
@samsja
samsja changed the base branch from main to feat-rewrite-v2 November 17, 2022 16:11
samsja and others added 8 commits November 17, 2022 18:04
Signed-off-by: Sami Jaghouar <sami.jaghouar@hotmail.fr>
Signed-off-by: Sami Jaghouar <sami.jaghouar@hotmail.fr>
Signed-off-by: Sami Jaghouar <sami.jaghouar@hotmail.fr>
Signed-off-by: Sami Jaghouar <sami.jaghouar@hotmail.fr>
* feat: add tensor type for ndarray

* fix: fix mypy typing

* feat: torch tensor type

Signed-off-by: Johannes Messner <messnerjo@gmail.com>

* fix: protobuf for pytorch type

Signed-off-by: Johannes Messner <messnerjo@gmail.com>

* ci: install all extras in the ci

Signed-off-by: Johannes Messner <messnerjo@gmail.com>

* refactor: make nice looking

* docs: update docarray/typing/tensor/torch_tensor.py

Co-authored-by: samsja <55492238+samsja@users.noreply.github.com>
Signed-off-by: Johannes Messner <44071807+JohannesMessner@users.noreply.github.com>

* refactor: code style

Signed-off-by: Johannes Messner <messnerjo@gmail.com>

* fix: black and mypy

Signed-off-by: Johannes Messner <messnerjo@gmail.com>

* fix: suppress mypy import error

* ci: fix ci install

Signed-off-by: Johannes Messner <messnerjo@gmail.com>

Signed-off-by: Johannes Messner <messnerjo@gmail.com>
Signed-off-by: Johannes Messner <44071807+JohannesMessner@users.noreply.github.com>
Co-authored-by: samsja <55492238+samsja@users.noreply.github.com>
Signed-off-by: Sami Jaghouar <sami.jaghouar@hotmail.fr>
Signed-off-by: Sami Jaghouar <sami.jaghouar@hotmail.fr>
Signed-off-by: Sami Jaghouar <sami.jaghouar@hotmail.fr>
@samsja
samsja force-pushed the feat-v2-fastapi-test branch from a652aaa to 42c6fe4 Compare November 17, 2022 17:04
Signed-off-by: Sami Jaghouar <sami.jaghouar@hotmail.fr>
@samsja
samsja force-pushed the feat-v2-fastapi-test branch from 3a894fa to 56497b9 Compare November 18, 2022 14:23
Signed-off-by: Sami Jaghouar <sami.jaghouar@hotmail.fr>
Signed-off-by: Sami Jaghouar <sami.jaghouar@hotmail.fr>
Signed-off-by: Sami Jaghouar <sami.jaghouar@hotmail.fr>
Signed-off-by: Sami Jaghouar <sami.jaghouar@hotmail.fr>
Signed-off-by: Sami Jaghouar <sami.jaghouar@hotmail.fr>
Signed-off-by: Sami Jaghouar <sami.jaghouar@hotmail.fr>
Signed-off-by: Sami Jaghouar <sami.jaghouar@hotmail.fr>
Signed-off-by: Sami Jaghouar <sami.jaghouar@hotmail.fr>
@samsja
samsja force-pushed the feat-v2-fastapi-test branch from 100916c to 87bab05 Compare November 22, 2022 13:43
Signed-off-by: Sami Jaghouar <sami.jaghouar@hotmail.fr>
@samsja
samsja force-pushed the feat-v2-fastapi-test branch from 87bab05 to 731feff Compare November 22, 2022 13:50
Signed-off-by: Sami Jaghouar <sami.jaghouar@hotmail.fr>
Signed-off-by: Sami Jaghouar <sami.jaghouar@hotmail.fr>
@samsja
samsja marked this pull request as ready for review November 22, 2022 14:47
Comment thread docarray/document/io/json.py
Comment thread docarray/typing/tensor/tensor.py
Comment thread docarray/typing/tensor/tensor.py
Comment thread docarray/typing/tensor/tensor.py
Comment thread docarray/typing/tensor/torch_tensor.py Outdated
Signed-off-by: Sami Jaghouar <sami.jaghouar@hotmail.fr>
Signed-off-by: Sami Jaghouar <sami.jaghouar@hotmail.fr>
Signed-off-by: Sami Jaghouar <sami.jaghouar@hotmail.fr>
Comment thread docarray/typing/tensor/torch_tensor.py Outdated
samsja and others added 3 commits November 22, 2022 17:52
Co-authored-by: Johannes Messner <44071807+JohannesMessner@users.noreply.github.com>
Signed-off-by: samsja <55492238+samsja@users.noreply.github.com>
Signed-off-by: Sami Jaghouar <sami.jaghouar@hotmail.fr>
Signed-off-by: Sami Jaghouar <sami.jaghouar@hotmail.fr>
@JohannesMessner
JohannesMessner merged commit 42c7cdf into feat-rewrite-v2 Nov 23, 2022
@JohannesMessner
JohannesMessner deleted the feat-v2-fastapi-test branch November 23, 2022 08:07
dongxiang123 pushed a commit that referenced this pull request Nov 23, 2022
* feat: allow da bulk access to return da for document

Signed-off-by: Sami Jaghouar <sami.jaghouar@hotmail.fr>

* fix: fix mypy type pb

Signed-off-by: Sami Jaghouar <sami.jaghouar@hotmail.fr>

* fix: add link to the mypy issue

Signed-off-by: Sami Jaghouar <sami.jaghouar@hotmail.fr>

* fix: remove useless list type hint

Signed-off-by: Sami Jaghouar <sami.jaghouar@hotmail.fr>

* feat: torch tensor type (#800)

* feat: add tensor type for ndarray

* fix: fix mypy typing

* feat: torch tensor type

Signed-off-by: Johannes Messner <messnerjo@gmail.com>

* fix: protobuf for pytorch type

Signed-off-by: Johannes Messner <messnerjo@gmail.com>

* ci: install all extras in the ci

Signed-off-by: Johannes Messner <messnerjo@gmail.com>

* refactor: make nice looking

* docs: update docarray/typing/tensor/torch_tensor.py

Co-authored-by: samsja <55492238+samsja@users.noreply.github.com>
Signed-off-by: Johannes Messner <44071807+JohannesMessner@users.noreply.github.com>

* refactor: code style

Signed-off-by: Johannes Messner <messnerjo@gmail.com>

* fix: black and mypy

Signed-off-by: Johannes Messner <messnerjo@gmail.com>

* fix: suppress mypy import error

* ci: fix ci install

Signed-off-by: Johannes Messner <messnerjo@gmail.com>

Signed-off-by: Johannes Messner <messnerjo@gmail.com>
Signed-off-by: Johannes Messner <44071807+JohannesMessner@users.noreply.github.com>
Co-authored-by: samsja <55492238+samsja@users.noreply.github.com>

* feat: add fastapi to dependency

Signed-off-by: Sami Jaghouar <sami.jaghouar@hotmail.fr>

* feat(wip): add fake method to dump tensor to json

Signed-off-by: Sami Jaghouar <sami.jaghouar@hotmail.fr>

* feat(wip): add fastapi test

Signed-off-by: Sami Jaghouar <sami.jaghouar@hotmail.fr>

* feat: add json dump for type and document

Signed-off-by: Sami Jaghouar <sami.jaghouar@hotmail.fr>

* feat: add json compatible with orjson

Signed-off-by: Sami Jaghouar <sami.jaghouar@hotmail.fr>

* refactor: clean tests

Signed-off-by: Sami Jaghouar <sami.jaghouar@hotmail.fr>

* fix: remove duplicate

Signed-off-by: Sami Jaghouar <sami.jaghouar@hotmail.fr>

* fix: better json schema for tensor

Signed-off-by: Sami Jaghouar <sami.jaghouar@hotmail.fr>

* fix: fix fast api test

Signed-off-by: Sami Jaghouar <sami.jaghouar@hotmail.fr>

* refactor: move to json test to integration

Signed-off-by: Sami Jaghouar <sami.jaghouar@hotmail.fr>

* fix: json laod from tensor type now working

Signed-off-by: Sami Jaghouar <sami.jaghouar@hotmail.fr>

* fix: add tensor to fastapi test

Signed-off-by: Sami Jaghouar <sami.jaghouar@hotmail.fr>

* fix: add new fastapi test

Signed-off-by: Sami Jaghouar <sami.jaghouar@hotmail.fr>

* fix: fix mypy

Signed-off-by: Sami Jaghouar <sami.jaghouar@hotmail.fr>

* feat: add more testing for text uri about json

Signed-off-by: Sami Jaghouar <sami.jaghouar@hotmail.fr>

* fix: fix default orson not returning

Signed-off-by: Sami Jaghouar <sami.jaghouar@hotmail.fr>

* fix: apply johannes suggestion on docstring

Signed-off-by: Sami Jaghouar <sami.jaghouar@hotmail.fr>

* fix: does not perform copy anymore on torch tensor unwrap

Signed-off-by: Sami Jaghouar <sami.jaghouar@hotmail.fr>

* fix: add johannes suggestion

Co-authored-by: Johannes Messner <44071807+JohannesMessner@users.noreply.github.com>
Signed-off-by: samsja <55492238+samsja@users.noreply.github.com>

* fix: fix ruff line lenght

Signed-off-by: Sami Jaghouar <sami.jaghouar@hotmail.fr>

* fix: fix mypy pb

Signed-off-by: Sami Jaghouar <sami.jaghouar@hotmail.fr>

Signed-off-by: Sami Jaghouar <sami.jaghouar@hotmail.fr>
Signed-off-by: Johannes Messner <messnerjo@gmail.com>
Signed-off-by: Johannes Messner <44071807+JohannesMessner@users.noreply.github.com>
Signed-off-by: samsja <55492238+samsja@users.noreply.github.com>
Co-authored-by: Johannes Messner <44071807+JohannesMessner@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants