9
9
from docarray .base_doc import DocArrayResponse
10
10
from docarray .documents import ImageDoc , TextDoc
11
11
from docarray .typing import NdArray
12
+ from docarray .utils ._internal .pydantic import is_pydantic_v2
12
13
13
14
14
15
@pytest .mark .asyncio
@@ -112,6 +113,7 @@ async def create_item(doc: InputDoc) -> OutputDoc:
112
113
113
114
114
115
@pytest .mark .asyncio
116
+ @pytest .mark .skipif (is_pydantic_v2 )
115
117
async def test_docarray ():
116
118
doc = ImageDoc (tensor = np .zeros ((3 , 224 , 224 )))
117
119
docs = DocList [ImageDoc ]([doc , doc ])
@@ -135,3 +137,29 @@ async def func(fastapi_docs: List[ImageDoc]) -> List[ImageDoc]:
135
137
docs = DocList [ImageDoc ].from_json (response .content .decode ())
136
138
assert len (docs ) == 2
137
139
assert docs [0 ].tensor .shape == (3 , 224 , 224 )
140
+
141
+
142
+ @pytest .mark .asyncio
143
+ @pytest .mark .skipif (is_pydantic_v2 )
144
+ async def test_doclist_directly ():
145
+ doc = ImageDoc (tensor = np .zeros ((3 , 224 , 224 )))
146
+ docs = DocList [ImageDoc ]([doc , doc ])
147
+
148
+ app = FastAPI ()
149
+
150
+ @app .post ("/doc/" , response_class = DocArrayResponse )
151
+ async def func (fastapi_docs : DocList [ImageDoc ]) -> DocList [ImageDoc ]:
152
+ return fastapi_docs
153
+
154
+ async with AsyncClient (app = app , base_url = "http://test" ) as ac :
155
+ response = await ac .post ("/doc/" , data = docs .to_json ())
156
+ resp_doc = await ac .get ("/docs" )
157
+ resp_redoc = await ac .get ("/redoc" )
158
+
159
+ assert response .status_code == 200
160
+ assert resp_doc .status_code == 200
161
+ assert resp_redoc .status_code == 200
162
+
163
+ docs = DocList [ImageDoc ].from_json (response .content .decode ())
164
+ assert len (docs ) == 2
165
+ assert docs [0 ].tensor .shape == (3 , 224 , 224 )
0 commit comments