pyopenapi-gen 0.8.5__tar.gz → 0.8.7__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 (326) hide show
  1. pyopenapi_gen-0.8.7/.github/CLAUDE_CONFIGURATION.md +88 -0
  2. pyopenapi_gen-0.8.7/.github/workflows/claude-auto-approve.yml +114 -0
  3. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/.github/workflows/claude-review-trigger.yml +9 -6
  4. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/.github/workflows/claude.yml +7 -0
  5. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/.github/workflows/pr-checks.yml +1 -1
  6. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/PKG-INFO +2 -2
  7. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/poetry.lock +1 -1
  8. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/pyproject.toml +2 -2
  9. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/src/pyopenapi_gen/core/utils.py +8 -3
  10. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/.bandit +0 -0
  11. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/.cursor/mcp.json +0 -0
  12. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/.cursor/rules/architecture.mdc +0 -0
  13. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/.cursor/rules/coding-conventions.mdc +0 -0
  14. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/.cursor/rules/project-goal.mdc +0 -0
  15. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/.cursor/rules/testing.mdc +0 -0
  16. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/.github/BRANCH_PROTECTION.md +0 -0
  17. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/.github/CODEOWNERS +0 -0
  18. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
  19. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
  20. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/.github/dependabot.yml +0 -0
  21. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/.github/workflows/ci.yml +0 -0
  22. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/.github/workflows/main-checks.yml +0 -0
  23. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/.github/workflows/production-release.yml +0 -0
  24. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/.github/workflows/promote-to-staging.yml +0 -0
  25. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/.github/workflows/pypi-publish.yml +0 -0
  26. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/.github/workflows/staging-publish.yml +0 -0
  27. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/.github/workflows/testpypi-publish.yml +0 -0
  28. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/.gitignore +0 -0
  29. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/.vscode/settings.json +0 -0
  30. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/CHANGELOG.md +0 -0
  31. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/CLAUDE.md +0 -0
  32. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/CONTRIBUTING.md +0 -0
  33. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/LICENSE +0 -0
  34. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/Makefile +0 -0
  35. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/README.md +0 -0
  36. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/RELEASE_NOTES_v0.8.5.md +0 -0
  37. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/RESPONSE_RESOLUTION_REFACTOR.md +0 -0
  38. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/TEST_MAP.md +0 -0
  39. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/debug_after_fix.py +0 -0
  40. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/debug_data_schema_names.py +0 -0
  41. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/debug_list_issue.py +0 -0
  42. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/debug_signature_issue.py +0 -0
  43. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/debug_strategy_resolver.py +0 -0
  44. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/docs/README.md +0 -0
  45. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/docs/architecture.md +0 -0
  46. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/docs/endpoint_visitor.md +0 -0
  47. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/docs/helpers.md +0 -0
  48. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/docs/ir_models.md +0 -0
  49. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/docs/line_writer.md +0 -0
  50. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/docs/loader.md +0 -0
  51. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/docs/model_visitor.md +0 -0
  52. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/docs/render_context.md +0 -0
  53. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/docs/unified_type_resolution.md +0 -0
  54. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/input/business_swagger.json +0 -0
  55. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/input/minimal_swagger.json +0 -0
  56. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/input/minimal_syntax_test.json +0 -0
  57. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/input/test_name_collision_spec.json +0 -0
  58. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/mkdocs.yml +0 -0
  59. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/src/pyopenapi_gen/__init__.py +0 -0
  60. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/src/pyopenapi_gen/__main__.py +0 -0
  61. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/src/pyopenapi_gen/cli.py +0 -0
  62. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/src/pyopenapi_gen/context/file_manager.py +0 -0
  63. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/src/pyopenapi_gen/context/import_collector.py +0 -0
  64. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/src/pyopenapi_gen/context/render_context.py +0 -0
  65. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/src/pyopenapi_gen/core/__init__.py +0 -0
  66. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/src/pyopenapi_gen/core/auth/base.py +0 -0
  67. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/src/pyopenapi_gen/core/auth/plugins.py +0 -0
  68. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/src/pyopenapi_gen/core/exceptions.py +0 -0
  69. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/src/pyopenapi_gen/core/http_transport.py +0 -0
  70. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/src/pyopenapi_gen/core/loader/__init__.py +0 -0
  71. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/src/pyopenapi_gen/core/loader/loader.py +0 -0
  72. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/src/pyopenapi_gen/core/loader/operations/__init__.py +0 -0
  73. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/src/pyopenapi_gen/core/loader/operations/parser.py +0 -0
  74. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/src/pyopenapi_gen/core/loader/operations/post_processor.py +0 -0
  75. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/src/pyopenapi_gen/core/loader/operations/request_body.py +0 -0
  76. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/src/pyopenapi_gen/core/loader/parameters/__init__.py +0 -0
  77. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/src/pyopenapi_gen/core/loader/parameters/parser.py +0 -0
  78. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/src/pyopenapi_gen/core/loader/responses/__init__.py +0 -0
  79. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/src/pyopenapi_gen/core/loader/responses/parser.py +0 -0
  80. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/src/pyopenapi_gen/core/loader/schemas/__init__.py +0 -0
  81. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/src/pyopenapi_gen/core/loader/schemas/extractor.py +0 -0
  82. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/src/pyopenapi_gen/core/pagination.py +0 -0
  83. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/src/pyopenapi_gen/core/parsing/__init__.py +0 -0
  84. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/src/pyopenapi_gen/core/parsing/common/__init__.py +0 -0
  85. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/src/pyopenapi_gen/core/parsing/common/ref_resolution/__init__.py +0 -0
  86. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/src/pyopenapi_gen/core/parsing/common/ref_resolution/helpers/__init__.py +0 -0
  87. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/src/pyopenapi_gen/core/parsing/common/ref_resolution/helpers/cyclic_properties.py +0 -0
  88. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/src/pyopenapi_gen/core/parsing/common/ref_resolution/helpers/direct_cycle.py +0 -0
  89. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/src/pyopenapi_gen/core/parsing/common/ref_resolution/helpers/existing_schema.py +0 -0
  90. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/src/pyopenapi_gen/core/parsing/common/ref_resolution/helpers/list_response.py +0 -0
  91. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/src/pyopenapi_gen/core/parsing/common/ref_resolution/helpers/missing_ref.py +0 -0
  92. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/src/pyopenapi_gen/core/parsing/common/ref_resolution/helpers/new_schema.py +0 -0
  93. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/src/pyopenapi_gen/core/parsing/common/ref_resolution/helpers/stripped_suffix.py +0 -0
  94. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/src/pyopenapi_gen/core/parsing/common/ref_resolution/resolve_schema_ref.py +0 -0
  95. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/src/pyopenapi_gen/core/parsing/common/type_parser.py +0 -0
  96. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/src/pyopenapi_gen/core/parsing/context.py +0 -0
  97. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/src/pyopenapi_gen/core/parsing/cycle_helpers.py +0 -0
  98. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/src/pyopenapi_gen/core/parsing/keywords/__init__.py +0 -0
  99. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/src/pyopenapi_gen/core/parsing/keywords/all_of_parser.py +0 -0
  100. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/src/pyopenapi_gen/core/parsing/keywords/any_of_parser.py +0 -0
  101. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/src/pyopenapi_gen/core/parsing/keywords/array_items_parser.py +0 -0
  102. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/src/pyopenapi_gen/core/parsing/keywords/one_of_parser.py +0 -0
  103. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/src/pyopenapi_gen/core/parsing/keywords/properties_parser.py +0 -0
  104. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/src/pyopenapi_gen/core/parsing/schema_finalizer.py +0 -0
  105. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/src/pyopenapi_gen/core/parsing/schema_parser.py +0 -0
  106. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/src/pyopenapi_gen/core/parsing/transformers/__init__.py +0 -0
  107. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/src/pyopenapi_gen/core/parsing/transformers/inline_enum_extractor.py +0 -0
  108. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/src/pyopenapi_gen/core/parsing/transformers/inline_object_promoter.py +0 -0
  109. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/src/pyopenapi_gen/core/parsing/unified_cycle_detection.py +0 -0
  110. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/src/pyopenapi_gen/core/postprocess_manager.py +0 -0
  111. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/src/pyopenapi_gen/core/schemas.py +0 -0
  112. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/src/pyopenapi_gen/core/streaming_helpers.py +0 -0
  113. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/src/pyopenapi_gen/core/telemetry.py +0 -0
  114. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/src/pyopenapi_gen/core/warning_collector.py +0 -0
  115. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/src/pyopenapi_gen/core/writers/code_writer.py +0 -0
  116. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/src/pyopenapi_gen/core/writers/documentation_writer.py +0 -0
  117. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/src/pyopenapi_gen/core/writers/line_writer.py +0 -0
  118. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/src/pyopenapi_gen/core/writers/python_construct_renderer.py +0 -0
  119. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/src/pyopenapi_gen/core_package_template/README.md +0 -0
  120. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/src/pyopenapi_gen/emit/models_emitter.py +0 -0
  121. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/src/pyopenapi_gen/emitters/client_emitter.py +0 -0
  122. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/src/pyopenapi_gen/emitters/core_emitter.py +0 -0
  123. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/src/pyopenapi_gen/emitters/docs_emitter.py +0 -0
  124. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/src/pyopenapi_gen/emitters/endpoints_emitter.py +0 -0
  125. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/src/pyopenapi_gen/emitters/exceptions_emitter.py +0 -0
  126. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/src/pyopenapi_gen/emitters/models_emitter.py +0 -0
  127. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/src/pyopenapi_gen/generator/client_generator.py +0 -0
  128. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/src/pyopenapi_gen/helpers/__init__.py +0 -0
  129. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/src/pyopenapi_gen/helpers/endpoint_utils.py +0 -0
  130. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/src/pyopenapi_gen/helpers/type_cleaner.py +0 -0
  131. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/src/pyopenapi_gen/helpers/type_helper.py +0 -0
  132. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/src/pyopenapi_gen/helpers/type_resolution/__init__.py +0 -0
  133. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/src/pyopenapi_gen/helpers/type_resolution/array_resolver.py +0 -0
  134. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/src/pyopenapi_gen/helpers/type_resolution/composition_resolver.py +0 -0
  135. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/src/pyopenapi_gen/helpers/type_resolution/finalizer.py +0 -0
  136. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/src/pyopenapi_gen/helpers/type_resolution/named_resolver.py +0 -0
  137. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/src/pyopenapi_gen/helpers/type_resolution/object_resolver.py +0 -0
  138. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/src/pyopenapi_gen/helpers/type_resolution/primitive_resolver.py +0 -0
  139. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/src/pyopenapi_gen/helpers/type_resolution/resolver.py +0 -0
  140. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/src/pyopenapi_gen/helpers/url_utils.py +0 -0
  141. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/src/pyopenapi_gen/http_types.py +0 -0
  142. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/src/pyopenapi_gen/ir.py +0 -0
  143. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/src/pyopenapi_gen/py.typed +0 -0
  144. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/src/pyopenapi_gen/types/__init__.py +0 -0
  145. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/src/pyopenapi_gen/types/contracts/__init__.py +0 -0
  146. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/src/pyopenapi_gen/types/contracts/protocols.py +0 -0
  147. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/src/pyopenapi_gen/types/contracts/types.py +0 -0
  148. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/src/pyopenapi_gen/types/resolvers/__init__.py +0 -0
  149. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/src/pyopenapi_gen/types/resolvers/reference_resolver.py +0 -0
  150. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/src/pyopenapi_gen/types/resolvers/response_resolver.py +0 -0
  151. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/src/pyopenapi_gen/types/resolvers/schema_resolver.py +0 -0
  152. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/src/pyopenapi_gen/types/services/__init__.py +0 -0
  153. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/src/pyopenapi_gen/types/services/type_service.py +0 -0
  154. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/src/pyopenapi_gen/types/strategies/__init__.py +0 -0
  155. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/src/pyopenapi_gen/types/strategies/response_strategy.py +0 -0
  156. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/src/pyopenapi_gen/visit/client_visitor.py +0 -0
  157. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/src/pyopenapi_gen/visit/docs_visitor.py +0 -0
  158. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/src/pyopenapi_gen/visit/endpoint/__init__.py +0 -0
  159. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/src/pyopenapi_gen/visit/endpoint/endpoint_visitor.py +0 -0
  160. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/src/pyopenapi_gen/visit/endpoint/generators/__init__.py +0 -0
  161. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/src/pyopenapi_gen/visit/endpoint/generators/docstring_generator.py +0 -0
  162. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/src/pyopenapi_gen/visit/endpoint/generators/endpoint_method_generator.py +0 -0
  163. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/src/pyopenapi_gen/visit/endpoint/generators/request_generator.py +0 -0
  164. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/src/pyopenapi_gen/visit/endpoint/generators/response_handler_generator.py +0 -0
  165. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/src/pyopenapi_gen/visit/endpoint/generators/signature_generator.py +0 -0
  166. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/src/pyopenapi_gen/visit/endpoint/generators/url_args_generator.py +0 -0
  167. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/src/pyopenapi_gen/visit/endpoint/processors/__init__.py +0 -0
  168. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/src/pyopenapi_gen/visit/endpoint/processors/import_analyzer.py +0 -0
  169. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/src/pyopenapi_gen/visit/endpoint/processors/parameter_processor.py +0 -0
  170. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/src/pyopenapi_gen/visit/exception_visitor.py +0 -0
  171. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/src/pyopenapi_gen/visit/model/__init__.py +0 -0
  172. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/src/pyopenapi_gen/visit/model/alias_generator.py +0 -0
  173. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/src/pyopenapi_gen/visit/model/dataclass_generator.py +0 -0
  174. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/src/pyopenapi_gen/visit/model/enum_generator.py +0 -0
  175. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/src/pyopenapi_gen/visit/model/model_visitor.py +0 -0
  176. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/src/pyopenapi_gen/visit/visitor.py +0 -0
  177. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/tests/__init__.py +0 -0
  178. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/tests/auth/auth_analysis.md +0 -0
  179. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/tests/auth/test_auth_base.py +0 -0
  180. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/tests/auth/test_auth_plugins.py +0 -0
  181. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/tests/cli/cli_analysis.md +0 -0
  182. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/tests/cli/test_cli_backup_diff.py +0 -0
  183. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/tests/cli/test_cli_edge_cases.py +0 -0
  184. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/tests/cli/test_cli_edge_cases_comprehensive.py +0 -0
  185. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/tests/cli/test_cli_internal_utils.py +0 -0
  186. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/tests/cli/test_http_pagination_cli.py +0 -0
  187. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/tests/context/context_analysis.md +0 -0
  188. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/tests/context/test_file_manager.py +0 -0
  189. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/tests/context/test_import_collector.py +0 -0
  190. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/tests/context/test_render_context.py +0 -0
  191. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/tests/context/test_render_context_imports.py +0 -0
  192. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/tests/context/test_render_context_relative_paths.py +0 -0
  193. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/tests/core/core_analysis.md +0 -0
  194. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/tests/core/loader/test_extractor.py +0 -0
  195. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/tests/core/parsing/common/ref_resolution/helpers/helpers_analysis.md +0 -0
  196. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/tests/core/parsing/common/ref_resolution/helpers/test_cyclic_properties.py +0 -0
  197. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/tests/core/parsing/common/ref_resolution/helpers/test_direct_cycle.py +0 -0
  198. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/tests/core/parsing/common/ref_resolution/helpers/test_existing_schema.py +0 -0
  199. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/tests/core/parsing/common/ref_resolution/helpers/test_list_response.py +0 -0
  200. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/tests/core/parsing/common/ref_resolution/helpers/test_missing_ref.py +0 -0
  201. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/tests/core/parsing/common/ref_resolution/helpers/test_new_schema.py +0 -0
  202. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/tests/core/parsing/common/ref_resolution/helpers/test_stripped_suffix.py +0 -0
  203. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/tests/core/parsing/keywords/__init__.py +0 -0
  204. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/tests/core/parsing/keywords/keywords_analysis.md +0 -0
  205. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/tests/core/parsing/keywords/test_all_of_parser.py +0 -0
  206. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/tests/core/parsing/keywords/test_any_of_parser.py +0 -0
  207. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/tests/core/parsing/keywords/test_array_items_parser.py +0 -0
  208. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/tests/core/parsing/keywords/test_one_of_parser.py +0 -0
  209. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/tests/core/parsing/keywords/test_properties_parser.py +0 -0
  210. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/tests/core/parsing/parsing_analysis.md +0 -0
  211. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/tests/core/parsing/test_context.py +0 -0
  212. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/tests/core/parsing/test_cycle_detection.py +0 -0
  213. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/tests/core/parsing/test_cycle_helpers.py +0 -0
  214. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/tests/core/parsing/test_improved_schema_naming.py +0 -0
  215. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/tests/core/parsing/test_inline_enum_extractor.py +0 -0
  216. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/tests/core/parsing/test_inline_object_promoter.py +0 -0
  217. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/tests/core/parsing/test_logging.py +0 -0
  218. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/tests/core/parsing/test_ref_resolver.py +0 -0
  219. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/tests/core/parsing/test_schema_finalizer.py +0 -0
  220. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/tests/core/parsing/test_schema_parser.py +0 -0
  221. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/tests/core/parsing/test_schema_parser_list_response.py +0 -0
  222. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/tests/core/parsing/test_type_parser.py +0 -0
  223. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/tests/core/test_dataclass_serialization.py +0 -0
  224. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/tests/core/test_detect_circular_imports.py +0 -0
  225. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/tests/core/test_edge_cases_integration.py +0 -0
  226. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/tests/core/test_edge_cases_systematic.py +0 -0
  227. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/tests/core/test_exceptions_module.py +0 -0
  228. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/tests/core/test_forward_references.py +0 -0
  229. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/tests/core/test_http_transport.py +0 -0
  230. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/tests/core/test_import_resolution.py +0 -0
  231. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/tests/core/test_ir.py +0 -0
  232. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/tests/core/test_ir_schema.py +0 -0
  233. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/tests/core/test_loader.py +0 -0
  234. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/tests/core/test_loader_extensive.py +0 -0
  235. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/tests/core/test_loader_invalid_refs.py +0 -0
  236. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/tests/core/test_loader_malformed.py +0 -0
  237. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/tests/core/test_loader_media_types.py +0 -0
  238. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/tests/core/test_pagination.py +0 -0
  239. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/tests/core/test_parsing_context.py +0 -0
  240. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/tests/core/test_protocol_defaults.py +0 -0
  241. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/tests/core/test_schema_parser_specific_case.py +0 -0
  242. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/tests/core/test_schemas.py +0 -0
  243. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/tests/core/test_simple_self_ref_check.py +0 -0
  244. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/tests/core/test_streaming_helpers.py +0 -0
  245. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/tests/core/test_telemetry.py +0 -0
  246. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/tests/core/test_telemetry_client.py +0 -0
  247. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/tests/core/test_utils.py +0 -0
  248. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/tests/core/test_warning_collector.py +0 -0
  249. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/tests/core/writers/test_code_writer.py +0 -0
  250. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/tests/core/writers/test_documentation_writer.py +0 -0
  251. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/tests/core/writers/test_line_writer.py +0 -0
  252. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/tests/core/writers/test_python_construct_renderer_json_wizard.py +0 -0
  253. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/tests/core/writers/writers_analysis.md +0 -0
  254. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/tests/emitters/emitters_analysis.md +0 -0
  255. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/tests/emitters/test_client_emitter.py +0 -0
  256. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/tests/emitters/test_docs_emitter.py +0 -0
  257. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/tests/emitters/test_duplicate_operations.py +0 -0
  258. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/tests/emitters/test_endpoints_emitter.py +0 -0
  259. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/tests/emitters/test_exceptions_emitter.py +0 -0
  260. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/tests/emitters/test_list_response_generation.py +0 -0
  261. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/tests/emitters/test_models_emitter.py +0 -0
  262. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/tests/end_to_end/test_dataclass_serialization_e2e.py +0 -0
  263. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/tests/examples/test_developer_experience_demo.py +0 -0
  264. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/tests/generation/generation_analysis.md +0 -0
  265. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/tests/generation/test_external_core_package.py +0 -0
  266. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/tests/generation_issues/specs/minimal_addmessage_like.json +0 -0
  267. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/tests/generation_issues/test_addmessage_like_issues.py +0 -0
  268. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/tests/generation_issues/test_agent_include_parameter_typing.py +0 -0
  269. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/tests/generation_issues/test_message_batch_response_issue.py +0 -0
  270. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/tests/helpers/helpers_analysis.md +0 -0
  271. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/tests/helpers/test_array_resolver.py +0 -0
  272. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/tests/helpers/test_endpoint_utils.py +0 -0
  273. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/tests/helpers/test_endpoint_utils_extended.py +0 -0
  274. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/tests/helpers/test_get_endpoint_return_types.py +0 -0
  275. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/tests/helpers/test_named_resolver.py +0 -0
  276. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/tests/helpers/test_named_type_resolver.py +0 -0
  277. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/tests/helpers/test_object_resolver.py +0 -0
  278. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/tests/helpers/test_put_endpoint_return_types.py +0 -0
  279. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/tests/helpers/test_type_cleaner.py +0 -0
  280. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/tests/helpers/test_type_helper.py +0 -0
  281. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/tests/helpers/test_url_utils.py +0 -0
  282. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/tests/helpers/test_utils_helpers.py +0 -0
  283. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/tests/integration/test_generated_code_structure.py +0 -0
  284. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/tests/integrations/integrations_analysis.md +0 -0
  285. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/tests/integrations/test_business_swagger_message_type.py +0 -0
  286. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/tests/integrations/test_end_to_end_business_swagger.py +0 -0
  287. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/tests/integrations/test_end_to_end_petstore.py +0 -0
  288. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/tests/integrations/test_name_collisions.py +0 -0
  289. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/tests/specs/response_unwrapping_spec.yaml +0 -0
  290. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/tests/test_analysis_overview.md +0 -0
  291. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/tests/test_init.py +0 -0
  292. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/tests/types/__init__.py +0 -0
  293. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/tests/types/test_business_swagger_integration.py +0 -0
  294. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/tests/types/test_contracts_types.py +0 -0
  295. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/tests/types/test_reference_resolver.py +0 -0
  296. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/tests/types/test_response_resolver.py +0 -0
  297. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/tests/types/test_response_strategy.py +0 -0
  298. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/tests/types/test_response_strategy_simplified.py +0 -0
  299. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/tests/types/test_schema_resolver.py +0 -0
  300. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/tests/types/test_type_service.py +0 -0
  301. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/tests/visit/__init__.py +0 -0
  302. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/tests/visit/endpoint/__init__.py +0 -0
  303. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/tests/visit/endpoint/generators/__init__.py +0 -0
  304. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/tests/visit/endpoint/generators/generators_analysis.md +0 -0
  305. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/tests/visit/endpoint/generators/test_dataclass_integration.py +0 -0
  306. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/tests/visit/endpoint/generators/test_docstring_generator.py +0 -0
  307. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/tests/visit/endpoint/generators/test_endpoint_method_generator.py +0 -0
  308. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/tests/visit/endpoint/generators/test_match_case_response.py +0 -0
  309. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/tests/visit/endpoint/generators/test_request_generator.py +0 -0
  310. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/tests/visit/endpoint/generators/test_response_handler_generator.py +0 -0
  311. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/tests/visit/endpoint/generators/test_response_handler_generator_strategy.py +0 -0
  312. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/tests/visit/endpoint/generators/test_signature_generator.py +0 -0
  313. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/tests/visit/endpoint/generators/test_url_args_generator.py +0 -0
  314. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/tests/visit/endpoint/processors/__init__.py +0 -0
  315. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/tests/visit/endpoint/processors/test_import_analyzer.py +0 -0
  316. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/tests/visit/endpoint/processors/test_import_analyzer.py.bak +0 -0
  317. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/tests/visit/endpoint/processors/test_parameter_processor.py +0 -0
  318. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/tests/visit/endpoint/test_endpoint_visitor.py +0 -0
  319. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/tests/visit/model/__init__.py +0 -0
  320. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/tests/visit/model/test_alias_generator.py +0 -0
  321. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/tests/visit/model/test_dataclass_generator.py +0 -0
  322. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/tests/visit/model/test_dataclass_generator_json_wizard.py +0 -0
  323. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/tests/visit/model/test_enum_generator.py +0 -0
  324. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/tests/visit/test_client_visitor.py +0 -0
  325. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/tests/visit/test_model_visitor.py +0 -0
  326. {pyopenapi_gen-0.8.5 → pyopenapi_gen-0.8.7}/tests/visit/test_visitor.py +0 -0
@@ -0,0 +1,88 @@
1
+ # Claude GitHub App Configuration
2
+
3
+ This document explains the Claude GitHub App configuration for automatic PR reviews and approvals.
4
+
5
+ ## Configuration Files
6
+
7
+ ### 1. `claude.yml` - Main Claude Workflow
8
+ - **Triggers**: @claude mentions in comments, PR events
9
+ - **Permissions**: Full write access to contents, PRs, issues
10
+ - **Features**:
11
+ - Automatic formal PR reviews (`create_review: true`)
12
+ - Auto-approval capability (`auto_approve: true`)
13
+ - Extended tool access for PR management
14
+
15
+ ### 2. `claude-review-trigger.yml` - Automatic Review Notifications
16
+ - **Triggers**: PRs opened/updated on develop, staging, main
17
+ - **Scope**:
18
+ - All PRs targeting protected branches
19
+ - Dependabot PRs
20
+ - Release/fix/chore PRs from devops-mindhive
21
+ - PRs with `[claude-review]` tag
22
+ - **Action**: Posts @claude mention to trigger review
23
+
24
+ ### 3. `claude-auto-approve.yml` - Formal Approval Workflow
25
+ - **Triggers**: Claude review submissions with APPROVE/APPROVED
26
+ - **Features**:
27
+ - Creates formal GitHub PR approvals
28
+ - Auto-merge capability for qualifying PRs
29
+ - Safety checks for merge readiness
30
+
31
+ ## Required Repository Setup
32
+
33
+ ### Secrets
34
+ - ✅ `ANTHROPIC_API_KEY` - Configured in repository secrets
35
+
36
+ ### Permissions
37
+ The Claude GitHub App has these permissions:
38
+ - ✅ `contents: write` - Modify files and commit changes
39
+ - ✅ `pull-requests: write` - Review, approve, and merge PRs
40
+ - ✅ `issues: write` - Create and manage issues
41
+ - ✅ `actions: read` - Monitor CI/CD status
42
+ - ✅ `checks: read` - Review test results
43
+ - ✅ `statuses: read` - Check status checks
44
+
45
+ ## How It Works
46
+
47
+ ### Automatic Workflow
48
+ 1. **PR Created** → `claude-review-trigger.yml` posts @claude mention
49
+ 2. **Claude Triggered** → `claude.yml` runs comprehensive review
50
+ 3. **Review Complete** → Claude provides formal GitHub approval
51
+ 4. **Auto-Merge** → `claude-auto-approve.yml` merges if all checks pass
52
+
53
+ ### Manual Workflow
54
+ 1. **Comment @claude** on any PR or issue
55
+ 2. **Claude Responds** with review, fixes, or approvals as needed
56
+ 3. **Formal Actions** taken based on Claude's assessment
57
+
58
+ ## Branch Protection Compatibility
59
+
60
+ The configuration works with branch protection rules requiring:
61
+ - ✅ **Status Checks**: All CI must pass
62
+ - ✅ **Required Reviews**: Claude provides formal GitHub approvals
63
+ - ✅ **Up-to-date Branch**: Auto-handled by merge process
64
+
65
+ ## Troubleshooting
66
+
67
+ ### Claude Not Responding to @mentions
68
+ - Check `claude.yml` workflow is enabled
69
+ - Verify triggers include your PR's target branch
70
+ - Ensure ANTHROPIC_API_KEY secret is valid
71
+
72
+ ### Reviews Not Counting as Approvals
73
+ - Confirm `create_review: true` in claude.yml
74
+ - Check that `claude-auto-approve.yml` is processing Claude's reviews
75
+ - Verify branch protection accepts app reviews
76
+
77
+ ### Auto-Merge Not Working
78
+ - Ensure all required status checks pass
79
+ - Check PR is marked as mergeable
80
+ - Verify `auto_approve: true` is enabled
81
+
82
+ ## Testing
83
+
84
+ To test the configuration:
85
+ 1. Create a test PR with `[claude-review]` tag
86
+ 2. Comment `@claude please review this PR`
87
+ 3. Verify Claude provides formal approval
88
+ 4. Check if auto-merge occurs (if enabled)
@@ -0,0 +1,114 @@
1
+ name: Claude Auto-Approve
2
+
3
+ on:
4
+ pull_request_review:
5
+ types: [submitted]
6
+ issue_comment:
7
+ types: [created]
8
+
9
+ jobs:
10
+ auto-approve:
11
+ if: |
12
+ (github.event_name == 'pull_request_review' &&
13
+ github.event.review.user.login == 'claude[bot]' &&
14
+ contains(github.event.review.body, 'APPROVE')) ||
15
+ (github.event_name == 'issue_comment' &&
16
+ github.event.comment.user.login == 'claude[bot]' &&
17
+ contains(github.event.comment.body, 'APPROVED'))
18
+ runs-on: ubuntu-latest
19
+ permissions:
20
+ contents: write
21
+ pull-requests: write
22
+ actions: read
23
+ checks: read
24
+ statuses: read
25
+
26
+ steps:
27
+ - name: Checkout repository
28
+ uses: actions/checkout@v4
29
+ with:
30
+ token: ${{ secrets.GITHUB_TOKEN }}
31
+
32
+ - name: Get PR number
33
+ id: pr_number
34
+ run: |
35
+ if [[ "${{ github.event_name }}" == "pull_request_review" ]]; then
36
+ echo "pr_number=${{ github.event.pull_request.number }}" >> $GITHUB_OUTPUT
37
+ elif [[ "${{ github.event_name }}" == "issue_comment" ]]; then
38
+ echo "pr_number=${{ github.event.issue.number }}" >> $GITHUB_OUTPUT
39
+ fi
40
+
41
+ - name: Check if PR can be auto-approved
42
+ id: check_approval
43
+ run: |
44
+ pr_number="${{ steps.pr_number.outputs.pr_number }}"
45
+
46
+ # Get PR details
47
+ pr_data=$(gh pr view $pr_number --json author,title,baseRefName,mergeable,reviewDecision)
48
+ pr_author=$(echo "$pr_data" | jq -r '.author.login')
49
+ pr_title=$(echo "$pr_data" | jq -r '.title')
50
+ pr_base=$(echo "$pr_data" | jq -r '.baseRefName')
51
+ pr_mergeable=$(echo "$pr_data" | jq -r '.mergeable')
52
+ review_decision=$(echo "$pr_data" | jq -r '.reviewDecision')
53
+
54
+ echo "PR Author: $pr_author"
55
+ echo "PR Title: $pr_title"
56
+ echo "PR Base: $pr_base"
57
+ echo "PR Mergeable: $pr_mergeable"
58
+ echo "Review Decision: $review_decision"
59
+
60
+ # Check if this is an eligible PR for auto-approval
61
+ auto_approve=false
62
+
63
+ if [[ "$pr_author" == "devops-mindhive" ]] && \
64
+ [[ "$pr_title" =~ ^(fix|chore|release): ]] && \
65
+ [[ "$pr_mergeable" == "MERGEABLE" ]]; then
66
+ auto_approve=true
67
+ fi
68
+
69
+ echo "auto_approve=$auto_approve" >> $GITHUB_OUTPUT
70
+ env:
71
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
72
+
73
+ - name: Approve PR
74
+ if: steps.check_approval.outputs.auto_approve == 'true'
75
+ run: |
76
+ pr_number="${{ steps.pr_number.outputs.pr_number }}"
77
+
78
+ # Create formal approval review
79
+ gh pr review $pr_number --approve --body "✅ **Auto-approved by Claude**
80
+
81
+ This PR has been automatically approved based on:
82
+ - Comprehensive Claude review completed
83
+ - All CI checks passed
84
+ - Changes meet project quality standards
85
+ - No security or compatibility issues identified
86
+
87
+ Ready for merge after all required status checks pass."
88
+ env:
89
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
90
+
91
+ - name: Auto-merge if ready
92
+ if: steps.check_approval.outputs.auto_approve == 'true'
93
+ run: |
94
+ pr_number="${{ steps.pr_number.outputs.pr_number }}"
95
+
96
+ # Wait a moment for review to register
97
+ sleep 5
98
+
99
+ # Check if PR is ready to merge
100
+ pr_data=$(gh pr view $pr_number --json mergeable,reviewDecision,statusCheckRollup)
101
+ mergeable=$(echo "$pr_data" | jq -r '.mergeable')
102
+ review_decision=$(echo "$pr_data" | jq -r '.reviewDecision')
103
+
104
+ echo "Mergeable: $mergeable"
105
+ echo "Review Decision: $review_decision"
106
+
107
+ if [[ "$mergeable" == "MERGEABLE" ]] && [[ "$review_decision" == "APPROVED" ]]; then
108
+ echo "🚀 Auto-merging PR $pr_number"
109
+ gh pr merge $pr_number --squash --delete-branch
110
+ else
111
+ echo "⏳ PR not ready for auto-merge yet (waiting for status checks or additional approvals)"
112
+ fi
113
+ env:
114
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
@@ -31,7 +31,7 @@ jobs:
31
31
  echo "PR Base Branch: $pr_base"
32
32
 
33
33
  # PRs that should get Claude review:
34
- # 1. ALL PRs targeting develop branch (main development branch)
34
+ # 1. ALL PRs targeting develop, staging, or main branches
35
35
  # 2. Dependabot PRs (dependency updates)
36
36
  # 3. Version bump PRs from devops-mindhive
37
37
  # 4. Documentation PRs from devops-mindhive
@@ -40,8 +40,10 @@ jobs:
40
40
  needs_review=false
41
41
 
42
42
  if [[ "$pr_base" == "develop" ]] || \
43
+ [[ "$pr_base" == "staging" ]] || \
44
+ [[ "$pr_base" == "main" ]] || \
43
45
  [[ "$pr_author" == "dependabot[bot]" ]] || \
44
- [[ "$pr_author" == "devops-mindhive" && "$pr_title" =~ ^(release|chore|docs): ]] || \
46
+ [[ "$pr_author" == "devops-mindhive" && "$pr_title" =~ ^(release|chore|docs|fix): ]] || \
45
47
  [[ "$pr_title" =~ \[claude-review\] ]]; then
46
48
  needs_review=true
47
49
  fi
@@ -57,12 +59,13 @@ jobs:
57
59
  - name: Request Claude review
58
60
  if: steps.needs_review.outputs.needs_review == 'true'
59
61
  run: |
60
- gh pr comment ${{ github.event.pull_request.number }} --body "@claude Please review this PR for code quality, security, and compatibility. If you find any issues:
62
+ gh pr comment ${{ github.event.pull_request.number }} --body "@claude Please review this PR for code quality, security, and compatibility:
61
63
 
62
- 1. **For fixable issues** (formatting, linting, small bugs): Please fix them directly by committing to this PR branch
64
+ **Review Actions Required:**
65
+ 1. **For fixable issues** (formatting, linting, small bugs): Fix them directly by committing to this PR branch
63
66
  2. **For larger issues**: Comment with specific feedback and create issues if needed
64
- 3. **If everything looks good**: Approve and merge the PR
67
+ 3. **If everything looks good**: Provide formal GitHub PR approval and auto-merge if all checks pass
65
68
 
66
- You have full access to modify code, run tests, and ensure the PR meets our quality standards."
69
+ **Important**: Please use formal GitHub PR review approval, not just comments. You have full access to modify code, run tests, approve, and merge PRs that meet our quality standards."
67
70
  env:
68
71
  GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
@@ -42,4 +42,11 @@ jobs:
42
42
  uses: anthropics/claude-code-action@beta
43
43
  with:
44
44
  anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}
45
+ # Enable formal PR reviews instead of just comments
46
+ create_review: true
47
+ auto_approve: true
48
+ allowed_tools: |
49
+ mcp__github__create_pull_request
50
+ mcp__github__create_review
51
+ mcp__github__approve_pull_request
45
52
 
@@ -58,7 +58,7 @@ jobs:
58
58
  poetry run pytest -n 2 --timeout=120 --cov=src --cov-report=term-missing --cov-report=xml --cov-fail-under=85
59
59
 
60
60
  - name: Upload coverage to Codecov
61
- uses: codecov/codecov-action@v4
61
+ uses: codecov/codecov-action@v5
62
62
  with:
63
63
  file: ./coverage.xml
64
64
  flags: unittests
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: pyopenapi-gen
3
- Version: 0.8.5
3
+ Version: 0.8.7
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
@@ -32,7 +32,7 @@ Classifier: Topic :: Software Development :: Libraries :: Python Modules
32
32
  Classifier: Topic :: System :: Networking
33
33
  Classifier: Typing :: Typed
34
34
  Requires-Python: <4.0.0,>=3.12
35
- Requires-Dist: click<8.2.0,>=8.0.0
35
+ Requires-Dist: click<9.0.0,>=8.0.0
36
36
  Requires-Dist: dataclass-wizard>=0.22.0
37
37
  Requires-Dist: httpx>=0.24.0
38
38
  Requires-Dist: openapi-core>=0.19
@@ -2234,4 +2234,4 @@ dev = ["bandit", "black", "dataclass-wizard", "httpx", "mypy", "pytest", "pytest
2234
2234
  [metadata]
2235
2235
  lock-version = "2.1"
2236
2236
  python-versions = ">=3.12,<4.0.0"
2237
- content-hash = "320e930e44633f19136676f5fa4cb71a53162f8b548f95cf392af696a307fb64"
2237
+ content-hash = "780c4a1d67c21fd93f5a7c820b77fd3a5f9f40fc1bfbe59147968685c509a82d"
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "pyopenapi-gen"
7
- version = "0.8.5"
7
+ version = "0.8.7"
8
8
  description = "Modern, async-first Python client generator for OpenAPI specifications with advanced cycle detection and unified type resolution"
9
9
  authors = [{ name = "Mindhive Oy", email = "contact@mindhive.fi" }]
10
10
  maintainers = [{ name = "Ville Venäläinen | Mindhive Oy", email = "ville@mindhive.fi" }]
@@ -15,7 +15,7 @@ dependencies = [
15
15
  "openapi-core>=0.19",
16
16
  "PyYAML>=6.0",
17
17
  "typer>=0.12.0,<0.14.0",
18
- "click>=8.0.0,<8.2.0",
18
+ "click>=8.0.0,<9.0.0",
19
19
  "httpx>=0.24.0",
20
20
  "dataclass-wizard>=0.22.0",
21
21
  ]
@@ -263,6 +263,10 @@ class Formatter:
263
263
  """Helper to format code using Black, falling back to unformatted content if Black is unavailable or errors."""
264
264
 
265
265
  def __init__(self) -> None:
266
+ from typing import Any, Callable, Optional
267
+
268
+ self._file_mode: Optional[Any] = None
269
+ self._format_str: Optional[Callable[..., str]] = None
266
270
  try:
267
271
  from black import FileMode, format_str
268
272
 
@@ -278,14 +282,15 @@ class Formatter:
278
282
  self._file_mode = FileMode()
279
283
  self._format_str = format_str
280
284
  except ImportError:
281
- self._file_mode = None # type: ignore[assignment]
282
- self._format_str = None # type: ignore[assignment]
285
+ self._file_mode = None
286
+ self._format_str = None
283
287
 
284
288
  def format(self, code: str) -> str:
285
289
  """Format the given code string with Black if possible."""
286
290
  if self._format_str is not None and self._file_mode is not None:
287
291
  try:
288
- return self._format_str(code, mode=self._file_mode)
292
+ formatted: str = self._format_str(code, mode=self._file_mode)
293
+ return formatted
289
294
  except Exception:
290
295
  # On any Black formatting error, return original code
291
296
  return code
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes