-
-
Notifications
You must be signed in to change notification settings - Fork 6.7k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
feat(python): handle multiple file parameters #19329
feat(python): handle multiple file parameters #19329
Conversation
Previously an array of files was not handled correctly, despite the type annotation implying it was.
This allows for users to pass filenames with their data in file params, which is useful for multipart formdata requests. Without this, the list of files added in the previous commit would have the same filename for all files (the parameter name).
can you please add a fake endpoint to modules/openapi-generator/src/test/resources/3_0/python/petstore-with-fake-endpoints-models-for-testing.yaml similar to https://github.com/OpenAPITools/openapi-generator/blob/master/modules/openapi-generator/src/test/resources/3_0/python/petstore-with-fake-endpoints-models-for-testing.yaml#L581 ? |
@wing328 bumping this one as well - WDYT about that existing fake endpoint? |
@roryschadler have you tested the fix locally with your own spec to confirm the issue has been fixed? |
I have, yes. All works well! |
I'm facing the same issue and can confirm that a local build of this PR fixes the issue for our spec as well :) |
thanks. let's give it a try |
Both
library=urllib3
andlibrary=asyncio
Python clients fail to handle multiple files, despite the type annotations implying they should. To see this, generate both clients using latestmaster
andmodules/openapi-generator/src/test/resources/3_0/form-multipart-binary-array.yaml
. The/multipart-array
calls fail in both clients withValueError: Unsupported file value
This change provides two solutions: one, it handles lists of filenames or lists of bytestrings, as the API's type annotation suggested it should. Two, it adds the ability to pass tuples of filename/bytestring pairs.
There isn't currently a test which obviously checks this - if I'm missing something, please let me know!
PR checklist
Commit all changed files.
This is important, as CI jobs will verify all generator outputs of your HEAD commit as it would merge with master.
These must match the expectations made by your contribution.
You may regenerate an individual generator by passing the relevant config(s) as an argument to the script, for example
./bin/generate-samples.sh bin/configs/java*
.IMPORTANT: Do NOT purge/delete any folders/files (e.g. tests) when regenerating the samples as manually written tests may be removed.
master
(upcoming 7.6.0 minor release - breaking changes with fallbacks),8.0.x
(breaking changes without fallbacks)