Uh oh!
There was an error while loading. Please reload this page.
- Notifications
You must be signed in to change notification settings - Fork 262
Description
Describe the bug
After upgrading the client to 0.17.0 and testing out, I noticed that Multipart client handling seems to have broken.
The code in 0.16.0 was rougly:
api.sync_detailed( id, client=client, multipart_data=TRequest(parent=2), )And with 0.17.0, usage updated to:
api.sync_detailed( id, client=client, body=TRequest(parent=2), )Is this not actually being serialized to multipart at some point? The type signatures all matched, so I thought I was using it correctly. I also see in the generated sync_detailed() that _get_kwargs() calls _body = body.to_multipart() so is it right to assume that multipart should happen transparently?
The model in question has parameters of type, File, str, bool, and int.
I was hoping the stacktrace might help illuminate what could be happening:
api.sync_detailed( File "main.py", line 92, in sync_detailed response = client.get_httpx_client().request( File "/python3.10/site-packages/httpx/_client.py", line 828, in request return self.send(request, auth=auth, follow_redirects=follow_redirects) File "/python3.10/site-packages/httpx/_client.py", line 915, in send response = self._send_handling_auth( File "/python3.10/site-packages/httpx/_client.py", line 943, in _send_handling_auth response = self._send_handling_redirects( File "/python3.10/site-packages/httpx/_client.py", line 980, in _send_handling_redirects response = self._send_single_request(request) File "/python3.10/site-packages/httpx/_client.py", line 1016, in _send_single_request response = transport.handle_request(request) File "/python3.10/site-packages/httpx/_transports/default.py", line 231, in handle_request resp = self._pool.handle_request(req) File "/python3.10/site-packages/httpcore/_sync/connection_pool.py", line 268, in handle_request raise exc File "/python3.10/site-packages/httpcore/_sync/connection_pool.py", line 251, in handle_request response = connection.handle_request(request) File "/python3.10/site-packages/httpcore/_sync/connection.py", line 103, in handle_request return self._connection.handle_request(request) File "/python3.10/site-packages/httpcore/_sync/http11.py", line 133, in handle_request raise exc File "/python3.10/site-packages/httpcore/_sync/http11.py", line 94, in handle_request self._send_request_body(**kwargs) File "/python3.10/site-packages/httpcore/_sync/http11.py", line 154, in _send_request_body for chunk in request.stream: File "/python3.10/site-packages/httpx/_multipart.py", line 264, in __iter__ for chunk in self.iter_chunks(): File "/python3.10/site-packages/httpx/_multipart.py", line 230, in iter_chunks yield from field.render() File "/python3.10/site-packages/httpx/_multipart.py", line 190, in render yield from self.render_data() File "/python3.10/site-packages/httpx/_multipart.py", line 183, in render_data chunk = self.file.read(self.CHUNK_SIZE) AttributeError: 'int' object has no attribute 'read'. Did you mean: 'real'? OpenAPI Spec File
(Minimimized)
/t/{id}/: patch: operationId: description: |- Tparameters: - in: pathname: idschema: type: integerdescription: required: truerequestBody: content: multipart/form-data: schema: $ref: '#/components/schemas/TRequest'security: - jwtAuth: [] - basicAuth: [] - cookieAuth: []responses: '200': content: application/json: schema: $ref: '#/components/schemas/TModel'description: ''components: schemas: TRequest: type: objectproperties: file: type: stringformat: binarylabel: type: stringminLength: 1flag: type: booleanproject: type: integerparent: type: integernullable: trueDesktop:
- OS: macOS 13.6
- Python Version: 3.10.13
- openapi-python-client version: 0.17.0
Additional context
httpx0.26.0- OpenAPI schema 3.0.3