Skip to content

Conversation

@samsja
Copy link
Member

@samsja samsja commented Nov 17, 2022

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 <[email protected]>
Signed-off-by: Sami Jaghouar <[email protected]>
* feat: add tensor type for ndarray

* fix: fix mypy typing

* feat: torch tensor type

Signed-off-by: Johannes Messner <[email protected]>

* fix: protobuf for pytorch type

Signed-off-by: Johannes Messner <[email protected]>

* ci: install all extras in the ci

Signed-off-by: Johannes Messner <[email protected]>

* refactor: make nice looking

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

Co-authored-by: samsja <[email protected]>
Signed-off-by: Johannes Messner <[email protected]>

* refactor: code style

Signed-off-by: Johannes Messner <[email protected]>

* fix: black and mypy

Signed-off-by: Johannes Messner <[email protected]>

* fix: suppress mypy import error

* ci: fix ci install

Signed-off-by: Johannes Messner <[email protected]>

Signed-off-by: Johannes Messner <[email protected]>
Signed-off-by: Johannes Messner <[email protected]>
Co-authored-by: samsja <[email protected]>
Signed-off-by: Sami Jaghouar <[email protected]>
Signed-off-by: Sami Jaghouar <[email protected]>
@samsja samsja force-pushed the feat-v2-fastapi-test branch from a652aaa to 42c6fe4 Compare November 17, 2022 17:04
@samsja samsja force-pushed the feat-v2-fastapi-test branch from 3a894fa to 56497b9 Compare November 18, 2022 14:23
@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 <[email protected]>
@samsja samsja force-pushed the feat-v2-fastapi-test branch from 87bab05 to 731feff Compare November 22, 2022 13:50
@samsja samsja marked this pull request as ready for review November 22, 2022 14:47
samsja and others added 3 commits November 22, 2022 17:52
Co-authored-by: Johannes Messner <[email protected]>
Signed-off-by: samsja <[email protected]>
Signed-off-by: Sami Jaghouar <[email protected]>
Signed-off-by: Sami Jaghouar <[email protected]>
@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 <[email protected]>

* fix: fix mypy type pb

Signed-off-by: Sami Jaghouar <[email protected]>

* fix: add link to the mypy issue

Signed-off-by: Sami Jaghouar <[email protected]>

* fix: remove useless list type hint

Signed-off-by: Sami Jaghouar <[email protected]>

* feat: torch tensor type (#800)

* feat: add tensor type for ndarray

* fix: fix mypy typing

* feat: torch tensor type

Signed-off-by: Johannes Messner <[email protected]>

* fix: protobuf for pytorch type

Signed-off-by: Johannes Messner <[email protected]>

* ci: install all extras in the ci

Signed-off-by: Johannes Messner <[email protected]>

* refactor: make nice looking

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

Co-authored-by: samsja <[email protected]>
Signed-off-by: Johannes Messner <[email protected]>

* refactor: code style

Signed-off-by: Johannes Messner <[email protected]>

* fix: black and mypy

Signed-off-by: Johannes Messner <[email protected]>

* fix: suppress mypy import error

* ci: fix ci install

Signed-off-by: Johannes Messner <[email protected]>

Signed-off-by: Johannes Messner <[email protected]>
Signed-off-by: Johannes Messner <[email protected]>
Co-authored-by: samsja <[email protected]>

* feat: add fastapi to dependency

Signed-off-by: Sami Jaghouar <[email protected]>

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

Signed-off-by: Sami Jaghouar <[email protected]>

* feat(wip): add fastapi test

Signed-off-by: Sami Jaghouar <[email protected]>

* feat: add json dump for type and document

Signed-off-by: Sami Jaghouar <[email protected]>

* feat: add json compatible with orjson

Signed-off-by: Sami Jaghouar <[email protected]>

* refactor: clean tests

Signed-off-by: Sami Jaghouar <[email protected]>

* fix: remove duplicate

Signed-off-by: Sami Jaghouar <[email protected]>

* fix: better json schema for tensor

Signed-off-by: Sami Jaghouar <[email protected]>

* fix: fix fast api test

Signed-off-by: Sami Jaghouar <[email protected]>

* refactor: move to json test to integration

Signed-off-by: Sami Jaghouar <[email protected]>

* fix: json laod from tensor type now working

Signed-off-by: Sami Jaghouar <[email protected]>

* fix: add tensor to fastapi test

Signed-off-by: Sami Jaghouar <[email protected]>

* fix: add new fastapi test

Signed-off-by: Sami Jaghouar <[email protected]>

* fix: fix mypy

Signed-off-by: Sami Jaghouar <[email protected]>

* feat: add more testing for text uri about json

Signed-off-by: Sami Jaghouar <[email protected]>

* fix: fix default orson not returning

Signed-off-by: Sami Jaghouar <[email protected]>

* fix: apply johannes suggestion on docstring

Signed-off-by: Sami Jaghouar <[email protected]>

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

Signed-off-by: Sami Jaghouar <[email protected]>

* fix: add johannes suggestion

Co-authored-by: Johannes Messner <[email protected]>
Signed-off-by: samsja <[email protected]>

* fix: fix ruff line lenght

Signed-off-by: Sami Jaghouar <[email protected]>

* fix: fix mypy pb

Signed-off-by: Sami Jaghouar <[email protected]>

Signed-off-by: Sami Jaghouar <[email protected]>
Signed-off-by: Johannes Messner <[email protected]>
Signed-off-by: Johannes Messner <[email protected]>
Signed-off-by: samsja <[email protected]>
Co-authored-by: Johannes Messner <[email protected]>
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.

4 participants