pyopenapi-gen 0.14.3__tar.gz → 0.15.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (336) hide show
  1. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/.github/workflows/semantic-release.yml +6 -0
  2. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/.gitignore +5 -1
  3. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/CHANGELOG.md +59 -0
  4. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/Makefile +7 -2
  5. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/PKG-INFO +1 -1
  6. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/coverage.xml +93 -84
  7. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/input/business_swagger.json +390 -210
  8. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/pyproject.toml +4 -4
  9. pyopenapi_gen-0.15.0/scripts/validate_version_sync.py +152 -0
  10. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/__init__.py +1 -1
  11. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/types/resolvers/schema_resolver.py +20 -2
  12. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/types/services/type_service.py +4 -0
  13. pyopenapi_gen-0.15.0/tests/types/test_missing_imports_bug.py +202 -0
  14. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/tests/visit/test_model_visitor.py +5 -3
  15. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/.bandit +0 -0
  16. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/.cursor/mcp.json +0 -0
  17. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/.cursor/rules/architecture.mdc +0 -0
  18. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/.cursor/rules/coding-conventions.mdc +0 -0
  19. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/.cursor/rules/project-goal.mdc +0 -0
  20. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/.cursor/rules/testing.mdc +0 -0
  21. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/.github/BRANCH_PROTECTION.md +0 -0
  22. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/.github/CLAUDE_CONFIGURATION.md +0 -0
  23. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/.github/CODEOWNERS +0 -0
  24. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
  25. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
  26. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/.github/dependabot.yml +0 -0
  27. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/.github/workflows/ci.yml +0 -0
  28. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/.github/workflows/claude-auto-approve.yml +0 -0
  29. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/.github/workflows/claude-review-trigger.yml +0 -0
  30. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/.github/workflows/claude.yml +0 -0
  31. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/.github/workflows/pr-checks.yml +0 -0
  32. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/.github/workflows/production-release.yml.backup +0 -0
  33. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/.github/workflows/promote-to-staging.yml +0 -0
  34. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/.github/workflows/staging-publish.yml +0 -0
  35. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/.github/workflows/testpypi-publish.yml +0 -0
  36. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/.python-version +0 -0
  37. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/.vscode/settings.json +0 -0
  38. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/CLAUDE.md +0 -0
  39. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/CONTRIBUTING.md +0 -0
  40. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/LICENSE +0 -0
  41. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/README.md +0 -0
  42. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/docs/README.md +0 -0
  43. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/docs/architecture.md +0 -0
  44. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/docs/endpoint_visitor.md +0 -0
  45. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/docs/helpers.md +0 -0
  46. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/docs/ir_models.md +0 -0
  47. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/docs/line_writer.md +0 -0
  48. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/docs/loader.md +0 -0
  49. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/docs/model_visitor.md +0 -0
  50. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/docs/release-automation.md +0 -0
  51. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/docs/render_context.md +0 -0
  52. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/docs/unified_type_resolution.md +0 -0
  53. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/input/minimal_swagger.json +0 -0
  54. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/input/minimal_syntax_test.json +0 -0
  55. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/input/test_name_collision_spec.json +0 -0
  56. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/mkdocs.yml +0 -0
  57. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/poetry.lock +0 -0
  58. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/__main__.py +0 -0
  59. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/cli.py +0 -0
  60. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/context/CLAUDE.md +0 -0
  61. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/context/file_manager.py +0 -0
  62. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/context/import_collector.py +0 -0
  63. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/context/render_context.py +0 -0
  64. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/core/CLAUDE.md +0 -0
  65. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/core/__init__.py +0 -0
  66. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/core/auth/base.py +0 -0
  67. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/core/auth/plugins.py +0 -0
  68. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/core/exceptions.py +0 -0
  69. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/core/http_status_codes.py +0 -0
  70. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/core/http_transport.py +0 -0
  71. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/core/loader/__init__.py +0 -0
  72. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/core/loader/loader.py +0 -0
  73. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/core/loader/operations/__init__.py +0 -0
  74. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/core/loader/operations/parser.py +0 -0
  75. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/core/loader/operations/post_processor.py +0 -0
  76. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/core/loader/operations/request_body.py +0 -0
  77. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/core/loader/parameters/__init__.py +0 -0
  78. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/core/loader/parameters/parser.py +0 -0
  79. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/core/loader/responses/__init__.py +0 -0
  80. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/core/loader/responses/parser.py +0 -0
  81. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/core/loader/schemas/__init__.py +0 -0
  82. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/core/loader/schemas/extractor.py +0 -0
  83. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/core/pagination.py +0 -0
  84. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/core/parsing/__init__.py +0 -0
  85. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/core/parsing/common/__init__.py +0 -0
  86. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/core/parsing/common/ref_resolution/__init__.py +0 -0
  87. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/core/parsing/common/ref_resolution/helpers/__init__.py +0 -0
  88. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/core/parsing/common/ref_resolution/helpers/cyclic_properties.py +0 -0
  89. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/core/parsing/common/ref_resolution/helpers/direct_cycle.py +0 -0
  90. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/core/parsing/common/ref_resolution/helpers/existing_schema.py +0 -0
  91. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/core/parsing/common/ref_resolution/helpers/list_response.py +0 -0
  92. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/core/parsing/common/ref_resolution/helpers/missing_ref.py +0 -0
  93. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/core/parsing/common/ref_resolution/helpers/new_schema.py +0 -0
  94. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/core/parsing/common/ref_resolution/helpers/stripped_suffix.py +0 -0
  95. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/core/parsing/common/ref_resolution/resolve_schema_ref.py +0 -0
  96. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/core/parsing/common/type_parser.py +0 -0
  97. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/core/parsing/context.py +0 -0
  98. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/core/parsing/cycle_helpers.py +0 -0
  99. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/core/parsing/keywords/__init__.py +0 -0
  100. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/core/parsing/keywords/all_of_parser.py +0 -0
  101. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/core/parsing/keywords/any_of_parser.py +0 -0
  102. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/core/parsing/keywords/array_items_parser.py +0 -0
  103. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/core/parsing/keywords/one_of_parser.py +0 -0
  104. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/core/parsing/keywords/properties_parser.py +0 -0
  105. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/core/parsing/schema_finalizer.py +0 -0
  106. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/core/parsing/schema_parser.py +0 -0
  107. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/core/parsing/transformers/__init__.py +0 -0
  108. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/core/parsing/transformers/inline_enum_extractor.py +0 -0
  109. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/core/parsing/transformers/inline_object_promoter.py +0 -0
  110. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/core/parsing/unified_cycle_detection.py +0 -0
  111. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/core/postprocess_manager.py +0 -0
  112. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/core/schemas.py +0 -0
  113. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/core/streaming_helpers.py +0 -0
  114. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/core/telemetry.py +0 -0
  115. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/core/utils.py +0 -0
  116. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/core/warning_collector.py +0 -0
  117. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/core/writers/code_writer.py +0 -0
  118. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/core/writers/documentation_writer.py +0 -0
  119. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/core/writers/line_writer.py +0 -0
  120. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/core/writers/python_construct_renderer.py +0 -0
  121. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/core_package_template/README.md +0 -0
  122. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/emit/models_emitter.py +0 -0
  123. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/emitters/CLAUDE.md +0 -0
  124. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/emitters/client_emitter.py +0 -0
  125. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/emitters/core_emitter.py +0 -0
  126. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/emitters/docs_emitter.py +0 -0
  127. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/emitters/endpoints_emitter.py +0 -0
  128. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/emitters/exceptions_emitter.py +0 -0
  129. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/emitters/models_emitter.py +0 -0
  130. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/generator/CLAUDE.md +0 -0
  131. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/generator/client_generator.py +0 -0
  132. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/helpers/CLAUDE.md +0 -0
  133. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/helpers/__init__.py +0 -0
  134. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/helpers/endpoint_utils.py +0 -0
  135. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/helpers/type_cleaner.py +0 -0
  136. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/helpers/type_helper.py +0 -0
  137. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/helpers/type_resolution/__init__.py +0 -0
  138. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/helpers/type_resolution/array_resolver.py +0 -0
  139. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/helpers/type_resolution/composition_resolver.py +0 -0
  140. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/helpers/type_resolution/finalizer.py +0 -0
  141. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/helpers/type_resolution/named_resolver.py +0 -0
  142. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/helpers/type_resolution/object_resolver.py +0 -0
  143. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/helpers/type_resolution/primitive_resolver.py +0 -0
  144. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/helpers/type_resolution/resolver.py +0 -0
  145. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/helpers/url_utils.py +0 -0
  146. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/http_types.py +0 -0
  147. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/ir.py +0 -0
  148. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/py.typed +0 -0
  149. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/types/CLAUDE.md +0 -0
  150. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/types/__init__.py +0 -0
  151. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/types/contracts/__init__.py +0 -0
  152. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/types/contracts/protocols.py +0 -0
  153. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/types/contracts/types.py +0 -0
  154. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/types/resolvers/__init__.py +0 -0
  155. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/types/resolvers/reference_resolver.py +0 -0
  156. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/types/resolvers/response_resolver.py +0 -0
  157. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/types/services/__init__.py +0 -0
  158. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/types/strategies/__init__.py +0 -0
  159. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/types/strategies/response_strategy.py +0 -0
  160. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/visit/CLAUDE.md +0 -0
  161. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/visit/client_visitor.py +0 -0
  162. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/visit/docs_visitor.py +0 -0
  163. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/visit/endpoint/__init__.py +0 -0
  164. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/visit/endpoint/endpoint_visitor.py +0 -0
  165. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/visit/endpoint/generators/__init__.py +0 -0
  166. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/visit/endpoint/generators/docstring_generator.py +0 -0
  167. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/visit/endpoint/generators/endpoint_method_generator.py +0 -0
  168. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/visit/endpoint/generators/request_generator.py +0 -0
  169. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/visit/endpoint/generators/response_handler_generator.py +0 -0
  170. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/visit/endpoint/generators/signature_generator.py +0 -0
  171. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/visit/endpoint/generators/url_args_generator.py +0 -0
  172. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/visit/endpoint/processors/__init__.py +0 -0
  173. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/visit/endpoint/processors/import_analyzer.py +0 -0
  174. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/visit/endpoint/processors/parameter_processor.py +0 -0
  175. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/visit/exception_visitor.py +0 -0
  176. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/visit/model/__init__.py +0 -0
  177. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/visit/model/alias_generator.py +0 -0
  178. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/visit/model/dataclass_generator.py +0 -0
  179. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/visit/model/enum_generator.py +0 -0
  180. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/visit/model/model_visitor.py +0 -0
  181. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/visit/visitor.py +0 -0
  182. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/tests/__init__.py +0 -0
  183. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/tests/auth/auth_analysis.md +0 -0
  184. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/tests/auth/test_auth_base.py +0 -0
  185. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/tests/auth/test_auth_plugins.py +0 -0
  186. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/tests/cli/cli_analysis.md +0 -0
  187. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/tests/cli/test_cli_backup_diff.py +0 -0
  188. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/tests/cli/test_cli_edge_cases.py +0 -0
  189. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/tests/cli/test_cli_edge_cases_comprehensive.py +0 -0
  190. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/tests/cli/test_cli_internal_utils.py +0 -0
  191. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/tests/cli/test_http_pagination_cli.py +0 -0
  192. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/tests/context/context_analysis.md +0 -0
  193. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/tests/context/test_core_import_path.py +0 -0
  194. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/tests/context/test_file_manager.py +0 -0
  195. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/tests/context/test_import_collector.py +0 -0
  196. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/tests/context/test_render_context.py +0 -0
  197. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/tests/context/test_render_context_imports.py +0 -0
  198. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/tests/context/test_render_context_relative_paths.py +0 -0
  199. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/tests/core/core_analysis.md +0 -0
  200. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/tests/core/loader/parameters/test_inline_enum_array_params.py +0 -0
  201. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/tests/core/loader/test_extractor.py +0 -0
  202. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/tests/core/loader/test_top_level_enum_extraction.py +0 -0
  203. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/tests/core/parsing/common/ref_resolution/helpers/helpers_analysis.md +0 -0
  204. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/tests/core/parsing/common/ref_resolution/helpers/test_cyclic_properties.py +0 -0
  205. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/tests/core/parsing/common/ref_resolution/helpers/test_direct_cycle.py +0 -0
  206. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/tests/core/parsing/common/ref_resolution/helpers/test_existing_schema.py +0 -0
  207. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/tests/core/parsing/common/ref_resolution/helpers/test_list_response.py +0 -0
  208. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/tests/core/parsing/common/ref_resolution/helpers/test_missing_ref.py +0 -0
  209. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/tests/core/parsing/common/ref_resolution/helpers/test_new_schema.py +0 -0
  210. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/tests/core/parsing/common/ref_resolution/helpers/test_stripped_suffix.py +0 -0
  211. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/tests/core/parsing/keywords/__init__.py +0 -0
  212. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/tests/core/parsing/keywords/keywords_analysis.md +0 -0
  213. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/tests/core/parsing/keywords/test_all_of_parser.py +0 -0
  214. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/tests/core/parsing/keywords/test_any_of_parser.py +0 -0
  215. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/tests/core/parsing/keywords/test_array_items_parser.py +0 -0
  216. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/tests/core/parsing/keywords/test_one_of_parser.py +0 -0
  217. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/tests/core/parsing/keywords/test_properties_parser.py +0 -0
  218. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/tests/core/parsing/parsing_analysis.md +0 -0
  219. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/tests/core/parsing/test_context.py +0 -0
  220. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/tests/core/parsing/test_cycle_detection.py +0 -0
  221. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/tests/core/parsing/test_cycle_helpers.py +0 -0
  222. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/tests/core/parsing/test_improved_schema_naming.py +0 -0
  223. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/tests/core/parsing/test_inline_enum_extractor.py +0 -0
  224. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/tests/core/parsing/test_inline_object_promoter.py +0 -0
  225. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/tests/core/parsing/test_logging.py +0 -0
  226. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/tests/core/parsing/test_ref_resolver.py +0 -0
  227. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/tests/core/parsing/test_schema_finalizer.py +0 -0
  228. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/tests/core/parsing/test_schema_parser.py +0 -0
  229. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/tests/core/parsing/test_schema_parser_list_response.py +0 -0
  230. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/tests/core/parsing/test_type_parser.py +0 -0
  231. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/tests/core/test_dataclass_serialization.py +0 -0
  232. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/tests/core/test_detect_circular_imports.py +0 -0
  233. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/tests/core/test_edge_cases_integration.py +0 -0
  234. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/tests/core/test_edge_cases_systematic.py +0 -0
  235. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/tests/core/test_exceptions_module.py +0 -0
  236. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/tests/core/test_forward_references.py +0 -0
  237. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/tests/core/test_http_transport.py +0 -0
  238. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/tests/core/test_import_resolution.py +0 -0
  239. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/tests/core/test_ir.py +0 -0
  240. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/tests/core/test_ir_schema.py +0 -0
  241. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/tests/core/test_loader.py +0 -0
  242. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/tests/core/test_loader_extensive.py +0 -0
  243. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/tests/core/test_loader_invalid_refs.py +0 -0
  244. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/tests/core/test_loader_malformed.py +0 -0
  245. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/tests/core/test_loader_media_types.py +0 -0
  246. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/tests/core/test_pagination.py +0 -0
  247. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/tests/core/test_parsing_context.py +0 -0
  248. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/tests/core/test_protocol_defaults.py +0 -0
  249. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/tests/core/test_schema_parser_specific_case.py +0 -0
  250. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/tests/core/test_schemas.py +0 -0
  251. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/tests/core/test_simple_self_ref_check.py +0 -0
  252. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/tests/core/test_streaming_helpers.py +0 -0
  253. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/tests/core/test_telemetry.py +0 -0
  254. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/tests/core/test_telemetry_client.py +0 -0
  255. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/tests/core/test_utils.py +0 -0
  256. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/tests/core/test_warning_collector.py +0 -0
  257. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/tests/core/writers/test_code_writer.py +0 -0
  258. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/tests/core/writers/test_documentation_writer.py +0 -0
  259. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/tests/core/writers/test_line_writer.py +0 -0
  260. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/tests/core/writers/test_python_construct_renderer_json_wizard.py +0 -0
  261. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/tests/core/writers/writers_analysis.md +0 -0
  262. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/tests/emitters/emitters_analysis.md +0 -0
  263. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/tests/emitters/test_client_emitter.py +0 -0
  264. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/tests/emitters/test_docs_emitter.py +0 -0
  265. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/tests/emitters/test_duplicate_operations.py +0 -0
  266. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/tests/emitters/test_endpoints_emitter.py +0 -0
  267. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/tests/emitters/test_exceptions_emitter.py +0 -0
  268. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/tests/emitters/test_list_response_generation.py +0 -0
  269. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/tests/emitters/test_models_emitter.py +0 -0
  270. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/tests/end_to_end/test_dataclass_serialization_e2e.py +0 -0
  271. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/tests/examples/test_developer_experience_demo.py +0 -0
  272. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/tests/generation/generation_analysis.md +0 -0
  273. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/tests/generation/test_external_core_package.py +0 -0
  274. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/tests/generation_issues/specs/minimal_addmessage_like.json +0 -0
  275. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/tests/generation_issues/test_addmessage_like_issues.py +0 -0
  276. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/tests/generation_issues/test_agent_include_parameter_typing.py +0 -0
  277. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/tests/generation_issues/test_message_batch_response_issue.py +0 -0
  278. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/tests/helpers/helpers_analysis.md +0 -0
  279. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/tests/helpers/test_array_resolver.py +0 -0
  280. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/tests/helpers/test_endpoint_utils.py +0 -0
  281. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/tests/helpers/test_endpoint_utils_extended.py +0 -0
  282. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/tests/helpers/test_get_endpoint_return_types.py +0 -0
  283. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/tests/helpers/test_named_resolver.py +0 -0
  284. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/tests/helpers/test_named_type_resolver.py +0 -0
  285. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/tests/helpers/test_object_resolver.py +0 -0
  286. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/tests/helpers/test_put_endpoint_return_types.py +0 -0
  287. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/tests/helpers/test_type_cleaner.py +0 -0
  288. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/tests/helpers/test_type_helper.py +0 -0
  289. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/tests/helpers/test_url_utils.py +0 -0
  290. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/tests/helpers/test_utils_helpers.py +0 -0
  291. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/tests/integration/test_generated_code_structure.py +0 -0
  292. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/tests/integrations/integrations_analysis.md +0 -0
  293. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/tests/integrations/test_business_swagger_message_type.py +0 -0
  294. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/tests/integrations/test_end_to_end_business_swagger.py +0 -0
  295. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/tests/integrations/test_end_to_end_petstore.py +0 -0
  296. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/tests/integrations/test_name_collisions.py +0 -0
  297. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/tests/specs/response_unwrapping_spec.yaml +0 -0
  298. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/tests/test_analysis_overview.md +0 -0
  299. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/tests/test_init.py +0 -0
  300. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/tests/types/__init__.py +0 -0
  301. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/tests/types/test_business_swagger_integration.py +0 -0
  302. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/tests/types/test_contracts_types.py +0 -0
  303. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/tests/types/test_reference_resolver.py +0 -0
  304. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/tests/types/test_response_resolver.py +0 -0
  305. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/tests/types/test_response_strategy.py +0 -0
  306. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/tests/types/test_response_strategy_simplified.py +0 -0
  307. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/tests/types/test_schema_resolver.py +0 -0
  308. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/tests/types/test_schema_resolver_enums.py +0 -0
  309. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/tests/types/test_type_service.py +0 -0
  310. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/tests/visit/__init__.py +0 -0
  311. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/tests/visit/endpoint/__init__.py +0 -0
  312. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/tests/visit/endpoint/generators/__init__.py +0 -0
  313. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/tests/visit/endpoint/generators/generators_analysis.md +0 -0
  314. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/tests/visit/endpoint/generators/test_dataclass_integration.py +0 -0
  315. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/tests/visit/endpoint/generators/test_docstring_generator.py +0 -0
  316. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/tests/visit/endpoint/generators/test_endpoint_method_generator.py +0 -0
  317. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/tests/visit/endpoint/generators/test_match_case_response.py +0 -0
  318. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/tests/visit/endpoint/generators/test_request_generator.py +0 -0
  319. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/tests/visit/endpoint/generators/test_response_handler_generator.py +0 -0
  320. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/tests/visit/endpoint/generators/test_response_handler_generator_strategy.py +0 -0
  321. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/tests/visit/endpoint/generators/test_signature_generator.py +0 -0
  322. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/tests/visit/endpoint/generators/test_url_args_generator.py +0 -0
  323. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/tests/visit/endpoint/processors/__init__.py +0 -0
  324. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/tests/visit/endpoint/processors/test_import_analyzer.py +0 -0
  325. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/tests/visit/endpoint/processors/test_import_analyzer.py.bak +0 -0
  326. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/tests/visit/endpoint/processors/test_parameter_processor.py +0 -0
  327. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/tests/visit/endpoint/test_endpoint_visitor.py +0 -0
  328. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/tests/visit/model/__init__.py +0 -0
  329. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/tests/visit/model/test_alias_generator.py +0 -0
  330. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/tests/visit/model/test_dataclass_generator.py +0 -0
  331. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/tests/visit/model/test_dataclass_generator_json_wizard.py +0 -0
  332. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/tests/visit/model/test_enum_generator.py +0 -0
  333. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/tests/visit/model/test_json_value_integration.py +0 -0
  334. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/tests/visit/model/test_json_value_wrapper.py +0 -0
  335. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/tests/visit/test_client_visitor.py +0 -0
  336. {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/tests/visit/test_visitor.py +0 -0
@@ -48,6 +48,12 @@ jobs:
48
48
  run: |
49
49
  poetry install --with dev
50
50
 
51
+ - name: Validate version synchronisation
52
+ run: |
53
+ echo "🔍 Checking that all version files are synchronised..."
54
+ poetry run python scripts/validate_version_sync.py
55
+ echo "✅ All version files are in sync"
56
+
51
57
  - name: Run comprehensive quality checks
52
58
  run: |
53
59
  poetry run black --check src/ tests/
@@ -195,4 +195,8 @@ _process/
195
195
  coverage_reports/
196
196
 
197
197
  logs
198
- agent-plan.json
198
+ agent-plan.json
199
+
200
+ # Bug reports and analysis documents (keep in _process/ folder)
201
+ *-bug-report.md
202
+ *-analysis.md
@@ -1,6 +1,53 @@
1
1
  # CHANGELOG
2
2
 
3
3
 
4
+ ## v0.15.0 (2025-10-11)
5
+
6
+ ### Bug Fixes
7
+
8
+ - **release**: Correct semantic-release configuration and sync version to 0.14.3
9
+ ([`cfa0813`](https://github.com/mindhiveoy/pyopenapi_gen/commit/cfa081393657acfaa0a1c6a29243746748872b28))
10
+
11
+ Problem: - semantic-release v9 was configured with deprecated `version_pattern` syntax - This caused
12
+ __init__.py to not be automatically updated during releases - Version validation failed in CI
13
+ because __init__.py (0.10.2) != pyproject.toml (0.14.3)
14
+
15
+ Solution: - Updated semantic-release config to use `version_variables` (v9+ syntax) - Synced
16
+ __init__.py version to 0.14.3 to match pyproject.toml - Now semantic-release will automatically
17
+ update all version locations
18
+
19
+ Changes: - pyproject.toml: Changed version_pattern → version_variables -
20
+ src/pyopenapi_gen/__init__.py: Updated __version__ from 0.10.2 → 0.14.3
21
+
22
+ This ensures future releases automatically sync all version files.
23
+
24
+ - **types**: Correct self-import detection to avoid false positives with similar filenames
25
+ ([`cfee36e`](https://github.com/mindhiveoy/pyopenapi_gen/commit/cfee36e4c8c57d84c0c1d967a7936c5daddf2197))
26
+
27
+ Problem: - Self-import check used .endswith() for filename comparison - This caused false positives
28
+ when one filename was a suffix of another - Example:
29
+ "vector_index_with_embedding_response_data.py".endswith("embedding_response_data.py") == True -
30
+ Result: Missing imports for forward referenced types, causing NameError at runtime
31
+
32
+ Solution: - Changed to exact basename comparison using os.path.basename() - Only files with
33
+ identical basenames are treated as self-imports - Added comprehensive regression tests covering: -
34
+ Similar module names (not self-imports) - Actual self-references (forward refs without imports) -
35
+ Exact filename matching requirements
36
+
37
+ Changes: - src/pyopenapi_gen/types/resolvers/schema_resolver.py: Fixed self-import detection logic -
38
+ tests/types/test_missing_imports_bug.py: Added 3 regression tests -
39
+ tests/visit/test_model_visitor.py: Updated test expectations for correct import behavior -
40
+ .gitignore: Added patterns to ignore bug report and analysis documents
41
+
42
+ Testing: - All 1309 tests pass - Verified with real business_swagger.json that previously failed -
43
+ Generated code now includes correct imports for cross-module references
44
+
45
+ ### Features
46
+
47
+ - **versioning**: Add version synchronization validation script and integrate into quality checks
48
+ ([`de2ecb8`](https://github.com/mindhiveoy/pyopenapi_gen/commit/de2ecb8c63711230e890bae1cf79f22d5594c551))
49
+
50
+
4
51
  ## v0.14.3 (2025-10-11)
5
52
 
6
53
  ### Bug Fixes
@@ -112,6 +159,11 @@ Technical context: - mypy --strict requires explicit types for union type assign
112
159
 
113
160
  Resolves: mypy error "Incompatible types in assignment (expression has type...)"
114
161
 
162
+ ### Chores
163
+
164
+ - Merge latest changes from main
165
+ ([`44487cc`](https://github.com/mindhiveoy/pyopenapi_gen/commit/44487cce571920b5e2c34814c38cbab67b956097))
166
+
115
167
  ### Code Style
116
168
 
117
169
  - **format**: Apply Black formatting to modernised type syntax changes
@@ -826,6 +878,13 @@ All 1,265 tests now pass consistently across environments.
826
878
  testing still handled by pr-checks.yml for PRs - This unblocks PR merging while avoiding test
827
879
  duplication
828
880
 
881
+ - **ci**: Ensure Poetry is available in PATH for semantic-release build command
882
+ ([`0a68f6e`](https://github.com/mindhiveoy/pyopenapi_gen/commit/0a68f6e4ace7fb998c4ddec14c7cf67713d7ce73))
883
+
884
+ - Add explicit PATH setup for Poetry before semantic-release step - Add verification step to confirm
885
+ Poetry availability - Fixes 'poetry: command not found' error in semantic release pipeline -
886
+ Resolves build command failure preventing automated releases
887
+
829
888
  - **ci**: Ensure Poetry is available in PATH for semantic-release build command
830
889
  ([#46](https://github.com/mindhiveoy/pyopenapi_gen/pull/46),
831
890
  [`3734aac`](https://github.com/mindhiveoy/pyopenapi_gen/commit/3734aacb74eda746375c7d88c45715a1f18f33a1))
@@ -66,11 +66,15 @@ security: deps
66
66
  @echo "🔒 Running security checks..."
67
67
  poetry run bandit -r src/ -c pyproject.toml -f json -o coverage_reports/bandit.json || poetry run bandit -r src/ -c pyproject.toml
68
68
 
69
+ version-check: deps
70
+ @echo "🔍 Validating version synchronisation..."
71
+ poetry run python scripts/validate_version_sync.py
72
+
69
73
  # Combined quality commands
70
74
  quality-fix: format lint-fix
71
75
  @echo "✅ Auto-fixed all possible quality issues"
72
76
 
73
- quality: format-check lint typecheck security
77
+ quality: format-check lint typecheck security version-check
74
78
  @echo "✅ All quality checks passed"
75
79
 
76
80
  # Testing commands
@@ -163,7 +167,7 @@ help:
163
167
  @echo " clean - Clean all build artifacts and virtual environment"
164
168
  @echo ""
165
169
  @echo "Quality commands:"
166
- @echo " quality - Run all quality checks (format, lint, typecheck, security)"
170
+ @echo " quality - Run all quality checks (format, lint, typecheck, security, version)"
167
171
  @echo " quality-fix - Auto-fix formatting and linting issues"
168
172
  @echo " format - Format code with Black"
169
173
  @echo " format-check - Check code formatting"
@@ -171,6 +175,7 @@ help:
171
175
  @echo " lint-fix - Auto-fix linting issues"
172
176
  @echo " typecheck - Type check with mypy"
173
177
  @echo " security - Security scan with Bandit"
178
+ @echo " version-check - Validate version synchronisation across files"
174
179
  @echo ""
175
180
  @echo "Testing commands:"
176
181
  @echo " test - Run all tests with coverage (parallel, 85% required)"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: pyopenapi-gen
3
- Version: 0.14.3
3
+ Version: 0.15.0
4
4
  Summary: Modern, async-first Python client generator for OpenAPI specifications with advanced cycle detection and unified type resolution
5
5
  Project-URL: Homepage, https://github.com/your-org/pyopenapi-gen
6
6
  Project-URL: Documentation, https://github.com/your-org/pyopenapi-gen/blob/main/README.md
@@ -1,5 +1,5 @@
1
1
  <?xml version="1.0" ?>
2
- <coverage version="7.10.7" timestamp="1760177107548" lines-valid="6309" lines-covered="5563" line-rate="0.8818" branches-covered="0" branches-valid="0" branch-rate="0" complexity="0">
2
+ <coverage version="7.10.7" timestamp="1760207888499" lines-valid="6318" lines-covered="5572" line-rate="0.8819" branches-covered="0" branches-valid="0" branch-rate="0" complexity="0">
3
3
  <!-- Generated by coverage.py: https://coverage.readthedocs.io/en/7.10.7 -->
4
4
  <!-- Based on https://raw.githubusercontent.com/cobertura/web/master/htdocs/xml/coverage-04.dtd -->
5
5
  <sources>
@@ -5179,7 +5179,7 @@
5179
5179
  </class>
5180
5180
  </classes>
5181
5181
  </package>
5182
- <package name="pyopenapi_gen.types.resolvers" line-rate="0.9241" branch-rate="0" complexity="0">
5182
+ <package name="pyopenapi_gen.types.resolvers" line-rate="0.9259" branch-rate="0" complexity="0">
5183
5183
  <classes>
5184
5184
  <class name="__init__.py" filename="pyopenapi_gen/types/resolvers/__init__.py" complexity="0" line-rate="1" branch-rate="0">
5185
5185
  <methods/>
@@ -5307,7 +5307,7 @@
5307
5307
  <line number="177" hits="0"/>
5308
5308
  </lines>
5309
5309
  </class>
5310
- <class name="schema_resolver.py" filename="pyopenapi_gen/types/resolvers/schema_resolver.py" complexity="0" line-rate="0.9366" branch-rate="0">
5310
+ <class name="schema_resolver.py" filename="pyopenapi_gen/types/resolvers/schema_resolver.py" complexity="0" line-rate="0.939" branch-rate="0">
5311
5311
  <methods/>
5312
5312
  <lines>
5313
5313
  <line number="3" hits="1"/>
@@ -5398,128 +5398,136 @@
5398
5398
  <line number="199" hits="1"/>
5399
5399
  <line number="200" hits="0"/>
5400
5400
  <line number="202" hits="0"/>
5401
- <line number="205" hits="1"/>
5401
+ <line number="207" hits="1"/>
5402
5402
  <line number="208" hits="1"/>
5403
+ <line number="209" hits="1"/>
5403
5404
  <line number="211" hits="1"/>
5404
- <line number="214" hits="1"/>
5405
- <line number="217" hits="1"/>
5406
- <line number="219" hits="1"/>
5407
- <line number="220" hits="1"/>
5408
- <line number="223" hits="1"/>
5409
- <line number="224" hits="1"/>
5405
+ <line number="212" hits="1"/>
5406
+ <line number="213" hits="1"/>
5407
+ <line number="215" hits="1"/>
5408
+ <line number="218" hits="1"/>
5409
+ <line number="222" hits="1"/>
5410
5410
  <line number="225" hits="1"/>
5411
- <line number="227" hits="1"/>
5412
- <line number="229" hits="1"/>
5411
+ <line number="228" hits="1"/>
5413
5412
  <line number="231" hits="1"/>
5413
+ <line number="233" hits="1"/>
5414
+ <line number="234" hits="1"/>
5415
+ <line number="237" hits="1"/>
5416
+ <line number="238" hits="1"/>
5414
5417
  <line number="239" hits="1"/>
5415
- <line number="242" hits="1"/>
5416
- <line number="244" hits="1"/>
5417
- <line number="248" hits="1"/>
5418
- <line number="251" hits="1"/>
5419
- <line number="252" hits="1"/>
5420
- <line number="253" hits="1"/>
5421
- <line number="254" hits="1"/>
5422
- <line number="259" hits="1"/>
5418
+ <line number="241" hits="1"/>
5419
+ <line number="243" hits="1"/>
5420
+ <line number="247" hits="1"/>
5421
+ <line number="249" hits="1"/>
5422
+ <line number="257" hits="1"/>
5423
+ <line number="260" hits="1"/>
5423
5424
  <line number="262" hits="1"/>
5424
- <line number="263" hits="1"/>
5425
- <line number="264" hits="1"/>
5426
- <line number="276" hits="1"/>
5427
- <line number="279" hits="1"/>
5425
+ <line number="266" hits="1"/>
5426
+ <line number="269" hits="1"/>
5427
+ <line number="270" hits="1"/>
5428
+ <line number="271" hits="1"/>
5429
+ <line number="272" hits="1"/>
5430
+ <line number="277" hits="1"/>
5428
5431
  <line number="280" hits="1"/>
5429
5432
  <line number="281" hits="1"/>
5430
5433
  <line number="282" hits="1"/>
5431
- <line number="283" hits="1"/>
5432
- <line number="284" hits="0"/>
5433
- <line number="285" hits="1"/>
5434
- <line number="286" hits="1"/>
5435
- <line number="288" hits="1"/>
5436
- <line number="290" hits="1"/>
5437
- <line number="292" hits="1"/>
5438
5434
  <line number="294" hits="1"/>
5439
- <line number="296" hits="1"/>
5435
+ <line number="297" hits="1"/>
5440
5436
  <line number="298" hits="1"/>
5437
+ <line number="299" hits="1"/>
5441
5438
  <line number="300" hits="1"/>
5442
- <line number="302" hits="1"/>
5439
+ <line number="301" hits="1"/>
5440
+ <line number="302" hits="0"/>
5441
+ <line number="303" hits="1"/>
5443
5442
  <line number="304" hits="1"/>
5443
+ <line number="306" hits="1"/>
5444
+ <line number="308" hits="1"/>
5444
5445
  <line number="310" hits="1"/>
5445
- <line number="311" hits="1"/>
5446
- <line number="313" hits="1"/>
5447
- <line number="317" hits="1"/>
5446
+ <line number="312" hits="1"/>
5447
+ <line number="314" hits="1"/>
5448
+ <line number="316" hits="1"/>
5448
5449
  <line number="318" hits="1"/>
5449
- <line number="319" hits="1"/>
5450
5450
  <line number="320" hits="1"/>
5451
- <line number="321" hits="1"/>
5452
5451
  <line number="322" hits="1"/>
5453
- <line number="323" hits="1"/>
5454
- <line number="324" hits="1"/>
5455
- <line number="325" hits="1"/>
5456
- <line number="326" hits="1"/>
5457
- <line number="330" hits="1"/>
5452
+ <line number="328" hits="1"/>
5453
+ <line number="329" hits="1"/>
5454
+ <line number="331" hits="1"/>
5455
+ <line number="335" hits="1"/>
5458
5456
  <line number="336" hits="1"/>
5457
+ <line number="337" hits="1"/>
5458
+ <line number="338" hits="1"/>
5459
5459
  <line number="339" hits="1"/>
5460
+ <line number="340" hits="1"/>
5461
+ <line number="341" hits="1"/>
5460
5462
  <line number="342" hits="1"/>
5461
5463
  <line number="343" hits="1"/>
5462
- <line number="344" hits="0"/>
5463
- <line number="346" hits="1"/>
5464
+ <line number="344" hits="1"/>
5464
5465
  <line number="348" hits="1"/>
5465
- <line number="350" hits="1"/>
5466
- <line number="352" hits="1"/>
5467
5466
  <line number="354" hits="1"/>
5468
- <line number="355" hits="1"/>
5469
- <line number="356" hits="1"/>
5470
- <line number="359" hits="1"/>
5467
+ <line number="357" hits="1"/>
5471
5468
  <line number="360" hits="1"/>
5472
5469
  <line number="361" hits="1"/>
5473
- <line number="362" hits="1"/>
5470
+ <line number="362" hits="0"/>
5474
5471
  <line number="364" hits="1"/>
5475
5472
  <line number="366" hits="1"/>
5476
- <line number="367" hits="1"/>
5477
- <line number="369" hits="1"/>
5473
+ <line number="368" hits="1"/>
5474
+ <line number="370" hits="1"/>
5475
+ <line number="372" hits="1"/>
5478
5476
  <line number="373" hits="1"/>
5479
- <line number="374" hits="0"/>
5480
- <line number="376" hits="1"/>
5477
+ <line number="374" hits="1"/>
5481
5478
  <line number="377" hits="1"/>
5479
+ <line number="378" hits="1"/>
5482
5480
  <line number="379" hits="1"/>
5481
+ <line number="380" hits="1"/>
5482
+ <line number="382" hits="1"/>
5483
+ <line number="384" hits="1"/>
5483
5484
  <line number="385" hits="1"/>
5484
- <line number="389" hits="1"/>
5485
- <line number="390" hits="1"/>
5486
- <line number="391" hits="0"/>
5487
- <line number="392" hits="1"/>
5485
+ <line number="387" hits="1"/>
5486
+ <line number="391" hits="1"/>
5487
+ <line number="392" hits="0"/>
5488
5488
  <line number="394" hits="1"/>
5489
5489
  <line number="395" hits="1"/>
5490
- <line number="398" hits="1"/>
5491
- <line number="399" hits="1"/>
5492
- <line number="400" hits="1"/>
5493
- <line number="402" hits="1"/>
5494
- <line number="404" hits="1"/>
5490
+ <line number="397" hits="1"/>
5491
+ <line number="403" hits="1"/>
5492
+ <line number="407" hits="1"/>
5493
+ <line number="408" hits="1"/>
5494
+ <line number="409" hits="0"/>
5495
5495
  <line number="410" hits="1"/>
5496
- <line number="411" hits="0"/>
5497
- <line number="414" hits="1"/>
5498
- <line number="415" hits="1"/>
5496
+ <line number="412" hits="1"/>
5497
+ <line number="413" hits="1"/>
5499
5498
  <line number="416" hits="1"/>
5499
+ <line number="417" hits="1"/>
5500
+ <line number="418" hits="1"/>
5500
5501
  <line number="420" hits="1"/>
5501
5502
  <line number="422" hits="1"/>
5502
- <line number="426" hits="1"/>
5503
- <line number="427" hits="0"/>
5504
- <line number="429" hits="1"/>
5505
- <line number="430" hits="1"/>
5503
+ <line number="428" hits="1"/>
5504
+ <line number="429" hits="0"/>
5506
5505
  <line number="432" hits="1"/>
5506
+ <line number="433" hits="1"/>
5507
+ <line number="434" hits="1"/>
5507
5508
  <line number="438" hits="1"/>
5508
- <line number="442" hits="1"/>
5509
- <line number="443" hits="1"/>
5510
- <line number="444" hits="0"/>
5511
- <line number="445" hits="1"/>
5509
+ <line number="440" hits="1"/>
5510
+ <line number="444" hits="1"/>
5511
+ <line number="445" hits="0"/>
5512
5512
  <line number="447" hits="1"/>
5513
5513
  <line number="448" hits="1"/>
5514
- <line number="451" hits="1"/>
5515
- <line number="452" hits="1"/>
5516
- <line number="453" hits="1"/>
5517
- <line number="455" hits="1"/>
5514
+ <line number="450" hits="1"/>
5515
+ <line number="456" hits="1"/>
5516
+ <line number="460" hits="1"/>
5517
+ <line number="461" hits="1"/>
5518
+ <line number="462" hits="0"/>
5519
+ <line number="463" hits="1"/>
5520
+ <line number="465" hits="1"/>
5521
+ <line number="466" hits="1"/>
5522
+ <line number="469" hits="1"/>
5523
+ <line number="470" hits="1"/>
5524
+ <line number="471" hits="1"/>
5525
+ <line number="473" hits="1"/>
5518
5526
  </lines>
5519
5527
  </class>
5520
5528
  </classes>
5521
5529
  </package>
5522
- <package name="pyopenapi_gen.types.services" line-rate="0.8929" branch-rate="0" complexity="0">
5530
+ <package name="pyopenapi_gen.types.services" line-rate="0.8947" branch-rate="0" complexity="0">
5523
5531
  <classes>
5524
5532
  <class name="__init__.py" filename="pyopenapi_gen/types/services/__init__.py" complexity="0" line-rate="1" branch-rate="0">
5525
5533
  <methods/>
@@ -5528,7 +5536,7 @@
5528
5536
  <line number="5" hits="1"/>
5529
5537
  </lines>
5530
5538
  </class>
5531
- <class name="type_service.py" filename="pyopenapi_gen/types/services/type_service.py" complexity="0" line-rate="0.8889" branch-rate="0">
5539
+ <class name="type_service.py" filename="pyopenapi_gen/types/services/type_service.py" complexity="0" line-rate="0.8909" branch-rate="0">
5532
5540
  <methods/>
5533
5541
  <lines>
5534
5542
  <line number="3" hits="1"/>
@@ -5581,10 +5589,11 @@
5581
5589
  <line number="146" hits="1"/>
5582
5590
  <line number="147" hits="1"/>
5583
5591
  <line number="151" hits="1"/>
5584
- <line number="152" hits="1"/>
5585
5592
  <line number="155" hits="1"/>
5586
- <line number="156" hits="0"/>
5587
- <line number="161" hits="1"/>
5593
+ <line number="156" hits="1"/>
5594
+ <line number="159" hits="1"/>
5595
+ <line number="160" hits="0"/>
5596
+ <line number="165" hits="1"/>
5588
5597
  </lines>
5589
5598
  </class>
5590
5599
  </classes>