Created by: sebastien-rosset
This PR fixes #4600 (closed) by introducing a new supportLargeModel tag. Some languages have limitations such as max 255 arguments per function (Java, Python < 3.7) or 256 arguments (Eiffel).
This can be a problem for some of the generated code when the OAS data types are unusually large. For example, the Python model.mustache template generates a init function. The function arguments are the properties defined in the data type. However, because the OpenAPI spec does not set a max limit for the number of properties in a data type, this means a data type could have a list of 300 properties. But until version 3.7, python functions cannot have more than 255 arguments.
This PR includes modifications for Python, and potentially in the future it could be done for other languages. This is because every language has its own set of limits. If the code generator is invoked without the supportLargeModel tag, the generator is exactly the same as before. This ensures this does not break any backward compatibility.
PR checklist
-
Read the contribution guidelines. -
If contributing template-only or documentation-only changes which will change sample output, build the project before. -
Run the shell script(s) under ./bin/
(or Windows batch scripts under.\bin\windows
) to update Petstore samples related to your fix. This is important, as CI jobs will verify all generator outputs of your HEAD commit, and these must match the expectations made by your contribution. You only need to run./bin/{LANG}-petstore.sh
,./bin/openapi3/{LANG}-petstore.sh
if updating the code or mustache templates for a language ({LANG}
) (e.g. php, ruby, python, etc). -
File the PR against the correct branch: master
,4.3.x
,5.0.x
. Default:master
. -
Copy the technical committee to review the pull request if your PR is targeting a particular programming language.