-
-
Notifications
You must be signed in to change notification settings - Fork 6.5k
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
[python] Fix circular imports on AllOf generation #18272
Merged
Merged
Conversation
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
wing328
reviewed
Apr 3, 2024
...generator/src/test/resources/3_0/python/petstore-with-fake-endpoints-models-for-testing.yaml
Show resolved
Hide resolved
lgtm. thanks for the fix |
Hi @wing328 , looks my commits are not counted in https://github.com/OpenAPITools/openapi-generator/graphs/contributors although I have 2 PRs merged, any ideas? thanks |
you need to have at least 15 commits in order to be listed in https://github.com/OpenAPITools/openapi-generator/graphs/contributors |
wing328
changed the title
Fix 18271: Circular imports on AllOf generation with REFACTOR_ALLOF_WITH_PROPERTIES_ONLY=True
[python] Fix circular imports on AllOf generation
Apr 9, 2024
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Fix issue: #18271
When enabling REFACTOR_ALLOF_WITH_PROPERTIES_ONLY=True for a AllOf generation, the circular imports error occurs if two schemas refer to each other (like #/components/schemas/CircularAllOfRef and #/components/schemas/SecondCircularAllOfRef in spec added in test https://github.com/OpenAPITools/openapi-generator/pull/18272/files#diff-4f932bfd632d4afa271a4f3cc4d10554b4d08e8767b84aa77e50cc90c699ab3cR2709)
The root cause is it adds the import statement for the models in
allVars
and will be generated at the top of model file, theallVars
will include all models referred in properties if enabling REFACTOR_ALLOF_WITH_PROPERTIES_ONLY=True https://github.com/OpenAPITools/openapi-generator/blob/master/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractPythonCodegen.java#L934, causing the circular imports error.Since the import statements for these models are expected to be put in
postponedModelImports
and used by the mustache template, we can fix it by removing the items ofpostponedModelImports
inmodelImports
if existed. This fix will not impacts on other casesPR 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.1.0 minor release - breaking changes with fallbacks),8.0.x
(breaking changes without fallbacks)@cbornet (2017/09) @tomplus (2018/10) @krjakbrjak (2023/02) @fa0311 (2023/10) @multani (2023/10)