pyopenapi-gen 0.14.0__tar.gz → 0.14.2__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 (333) hide show
  1. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/CHANGELOG.md +212 -0
  2. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/PKG-INFO +1 -1
  3. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/coverage.xml +1104 -1061
  4. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/input/business_swagger.json +4108 -3913
  5. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/pyproject.toml +2 -2
  6. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/src/pyopenapi_gen/cli.py +3 -3
  7. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/src/pyopenapi_gen/context/import_collector.py +10 -10
  8. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/src/pyopenapi_gen/context/render_context.py +13 -13
  9. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/src/pyopenapi_gen/core/auth/plugins.py +7 -7
  10. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/src/pyopenapi_gen/core/http_status_codes.py +2 -4
  11. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/src/pyopenapi_gen/core/http_transport.py +19 -19
  12. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/src/pyopenapi_gen/core/loader/operations/parser.py +2 -2
  13. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/src/pyopenapi_gen/core/loader/operations/request_body.py +3 -3
  14. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/src/pyopenapi_gen/core/loader/parameters/parser.py +3 -3
  15. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/src/pyopenapi_gen/core/loader/responses/parser.py +2 -2
  16. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/src/pyopenapi_gen/core/loader/schemas/extractor.py +4 -4
  17. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/src/pyopenapi_gen/core/pagination.py +3 -3
  18. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/src/pyopenapi_gen/core/parsing/common/ref_resolution/helpers/list_response.py +3 -3
  19. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/src/pyopenapi_gen/core/parsing/common/ref_resolution/helpers/missing_ref.py +2 -2
  20. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/src/pyopenapi_gen/core/parsing/common/ref_resolution/helpers/new_schema.py +3 -3
  21. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/src/pyopenapi_gen/core/parsing/common/ref_resolution/helpers/stripped_suffix.py +3 -3
  22. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/src/pyopenapi_gen/core/parsing/common/ref_resolution/resolve_schema_ref.py +2 -2
  23. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/src/pyopenapi_gen/core/parsing/common/type_parser.py +2 -3
  24. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/src/pyopenapi_gen/core/parsing/context.py +10 -10
  25. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/src/pyopenapi_gen/core/parsing/cycle_helpers.py +5 -2
  26. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/src/pyopenapi_gen/core/parsing/keywords/all_of_parser.py +5 -5
  27. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/src/pyopenapi_gen/core/parsing/keywords/any_of_parser.py +4 -4
  28. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/src/pyopenapi_gen/core/parsing/keywords/array_items_parser.py +4 -4
  29. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/src/pyopenapi_gen/core/parsing/keywords/one_of_parser.py +4 -4
  30. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/src/pyopenapi_gen/core/parsing/keywords/properties_parser.py +5 -5
  31. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/src/pyopenapi_gen/core/parsing/schema_finalizer.py +15 -15
  32. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/src/pyopenapi_gen/core/parsing/schema_parser.py +44 -25
  33. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/src/pyopenapi_gen/core/parsing/transformers/inline_enum_extractor.py +4 -4
  34. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/src/pyopenapi_gen/core/parsing/transformers/inline_object_promoter.py +7 -4
  35. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/src/pyopenapi_gen/core/parsing/unified_cycle_detection.py +10 -10
  36. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/src/pyopenapi_gen/core/schemas.py +10 -10
  37. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/src/pyopenapi_gen/core/streaming_helpers.py +5 -7
  38. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/src/pyopenapi_gen/core/telemetry.py +4 -4
  39. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/src/pyopenapi_gen/core/utils.py +7 -7
  40. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/src/pyopenapi_gen/core/writers/code_writer.py +2 -2
  41. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/src/pyopenapi_gen/core/writers/documentation_writer.py +18 -18
  42. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/src/pyopenapi_gen/core/writers/line_writer.py +3 -3
  43. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/src/pyopenapi_gen/core/writers/python_construct_renderer.py +10 -10
  44. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/src/pyopenapi_gen/emit/models_emitter.py +2 -2
  45. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/src/pyopenapi_gen/emitters/core_emitter.py +3 -5
  46. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/src/pyopenapi_gen/emitters/endpoints_emitter.py +24 -16
  47. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/src/pyopenapi_gen/emitters/exceptions_emitter.py +4 -3
  48. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/src/pyopenapi_gen/emitters/models_emitter.py +6 -6
  49. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/src/pyopenapi_gen/generator/client_generator.py +6 -6
  50. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/src/pyopenapi_gen/helpers/endpoint_utils.py +16 -18
  51. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/src/pyopenapi_gen/helpers/type_cleaner.py +66 -53
  52. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/src/pyopenapi_gen/helpers/type_helper.py +7 -7
  53. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/src/pyopenapi_gen/helpers/type_resolution/array_resolver.py +4 -4
  54. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/src/pyopenapi_gen/helpers/type_resolution/composition_resolver.py +5 -5
  55. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/src/pyopenapi_gen/helpers/type_resolution/finalizer.py +38 -22
  56. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/src/pyopenapi_gen/helpers/type_resolution/named_resolver.py +4 -5
  57. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/src/pyopenapi_gen/helpers/type_resolution/object_resolver.py +11 -11
  58. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/src/pyopenapi_gen/helpers/type_resolution/primitive_resolver.py +1 -2
  59. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/src/pyopenapi_gen/helpers/type_resolution/resolver.py +2 -3
  60. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/src/pyopenapi_gen/ir.py +32 -34
  61. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/src/pyopenapi_gen/types/contracts/protocols.py +5 -5
  62. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/src/pyopenapi_gen/types/contracts/types.py +2 -3
  63. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/src/pyopenapi_gen/types/resolvers/reference_resolver.py +4 -4
  64. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/src/pyopenapi_gen/types/resolvers/response_resolver.py +6 -4
  65. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/src/pyopenapi_gen/types/resolvers/schema_resolver.py +32 -16
  66. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/src/pyopenapi_gen/types/services/type_service.py +55 -9
  67. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/src/pyopenapi_gen/types/strategies/response_strategy.py +6 -7
  68. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/src/pyopenapi_gen/visit/client_visitor.py +5 -7
  69. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/src/pyopenapi_gen/visit/endpoint/generators/docstring_generator.py +7 -7
  70. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/src/pyopenapi_gen/visit/endpoint/generators/request_generator.py +5 -5
  71. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/src/pyopenapi_gen/visit/endpoint/generators/response_handler_generator.py +38 -17
  72. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/src/pyopenapi_gen/visit/endpoint/generators/signature_generator.py +4 -4
  73. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/src/pyopenapi_gen/visit/endpoint/generators/url_args_generator.py +17 -17
  74. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/src/pyopenapi_gen/visit/endpoint/processors/import_analyzer.py +8 -8
  75. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/src/pyopenapi_gen/visit/endpoint/processors/parameter_processor.py +13 -13
  76. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/src/pyopenapi_gen/visit/model/alias_generator.py +1 -4
  77. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/src/pyopenapi_gen/visit/model/dataclass_generator.py +139 -10
  78. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/src/pyopenapi_gen/visit/model/model_visitor.py +2 -3
  79. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/src/pyopenapi_gen/visit/visitor.py +3 -3
  80. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/tests/auth/test_auth_base.py +1 -1
  81. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/tests/auth/test_auth_plugins.py +4 -4
  82. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/tests/context/test_import_collector.py +3 -3
  83. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/tests/context/test_render_context.py +4 -2
  84. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/tests/core/loader/parameters/test_inline_enum_array_params.py +1 -1
  85. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/tests/core/parsing/common/ref_resolution/helpers/test_list_response.py +1 -1
  86. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/tests/core/parsing/common/ref_resolution/helpers/test_missing_ref.py +1 -1
  87. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/tests/core/parsing/common/ref_resolution/helpers/test_new_schema.py +3 -3
  88. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/tests/core/parsing/common/ref_resolution/helpers/test_stripped_suffix.py +1 -1
  89. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/tests/core/parsing/keywords/test_all_of_parser.py +28 -28
  90. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/tests/core/parsing/keywords/test_any_of_parser.py +4 -4
  91. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/tests/core/parsing/keywords/test_array_items_parser.py +2 -2
  92. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/tests/core/parsing/keywords/test_one_of_parser.py +4 -4
  93. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/tests/core/parsing/keywords/test_properties_parser.py +15 -15
  94. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/tests/core/parsing/test_cycle_detection.py +14 -14
  95. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/tests/core/parsing/test_improved_schema_naming.py +2 -2
  96. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/tests/core/parsing/test_inline_enum_extractor.py +15 -15
  97. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/tests/core/parsing/test_logging.py +3 -3
  98. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/tests/core/parsing/test_schema_finalizer.py +14 -14
  99. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/tests/core/parsing/test_schema_parser.py +4 -4
  100. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/tests/core/parsing/test_schema_parser_list_response.py +7 -7
  101. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/tests/core/parsing/test_type_parser.py +5 -5
  102. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/tests/core/test_dataclass_serialization.py +4 -4
  103. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/tests/core/test_detect_circular_imports.py +4 -4
  104. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/tests/core/test_forward_references.py +1 -2
  105. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/tests/core/test_import_resolution.py +1 -2
  106. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/tests/core/test_loader.py +8 -8
  107. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/tests/core/test_pagination.py +10 -10
  108. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/tests/core/test_schemas.py +6 -6
  109. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/tests/core/writers/test_python_construct_renderer_json_wizard.py +2 -2
  110. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/tests/emitters/test_duplicate_operations.py +89 -0
  111. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/tests/emitters/test_endpoints_emitter.py +14 -12
  112. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/tests/emitters/test_list_response_generation.py +1 -2
  113. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/tests/emitters/test_models_emitter.py +20 -23
  114. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/tests/examples/test_developer_experience_demo.py +3 -4
  115. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/tests/generation_issues/test_addmessage_like_issues.py +7 -7
  116. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/tests/generation_issues/test_agent_include_parameter_typing.py +13 -6
  117. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/tests/helpers/test_endpoint_utils.py +2 -2
  118. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/tests/helpers/test_endpoint_utils_extended.py +4 -4
  119. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/tests/helpers/test_object_resolver.py +25 -25
  120. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/tests/helpers/test_type_cleaner.py +114 -66
  121. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/tests/helpers/test_type_helper.py +97 -114
  122. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/tests/integrations/test_business_swagger_message_type.py +12 -12
  123. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/tests/types/test_response_resolver.py +9 -9
  124. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/tests/types/test_response_strategy.py +4 -4
  125. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/tests/types/test_response_strategy_simplified.py +2 -2
  126. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/tests/types/test_schema_resolver.py +94 -4
  127. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/tests/types/test_type_service.py +4 -4
  128. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/tests/visit/endpoint/generators/test_dataclass_integration.py +7 -7
  129. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/tests/visit/endpoint/generators/test_docstring_generator.py +11 -11
  130. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/tests/visit/endpoint/generators/test_response_handler_generator_strategy.py +1 -1
  131. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/tests/visit/endpoint/generators/test_signature_generator.py +11 -11
  132. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/tests/visit/endpoint/generators/test_url_args_generator.py +30 -30
  133. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/tests/visit/endpoint/processors/test_import_analyzer.py +20 -20
  134. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/tests/visit/endpoint/processors/test_parameter_processor.py +19 -20
  135. pyopenapi_gen-0.14.2/tests/visit/model/test_json_value_integration.py +252 -0
  136. pyopenapi_gen-0.14.2/tests/visit/model/test_json_value_wrapper.py +234 -0
  137. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/tests/visit/test_client_visitor.py +4 -4
  138. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/tests/visit/test_model_visitor.py +29 -35
  139. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/.bandit +0 -0
  140. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/.cursor/mcp.json +0 -0
  141. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/.cursor/rules/architecture.mdc +0 -0
  142. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/.cursor/rules/coding-conventions.mdc +0 -0
  143. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/.cursor/rules/project-goal.mdc +0 -0
  144. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/.cursor/rules/testing.mdc +0 -0
  145. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/.github/BRANCH_PROTECTION.md +0 -0
  146. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/.github/CLAUDE_CONFIGURATION.md +0 -0
  147. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/.github/CODEOWNERS +0 -0
  148. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
  149. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
  150. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/.github/dependabot.yml +0 -0
  151. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/.github/workflows/ci.yml +0 -0
  152. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/.github/workflows/claude-auto-approve.yml +0 -0
  153. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/.github/workflows/claude-review-trigger.yml +0 -0
  154. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/.github/workflows/claude.yml +0 -0
  155. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/.github/workflows/pr-checks.yml +0 -0
  156. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/.github/workflows/production-release.yml.backup +0 -0
  157. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/.github/workflows/promote-to-staging.yml +0 -0
  158. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/.github/workflows/semantic-release.yml +0 -0
  159. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/.github/workflows/staging-publish.yml +0 -0
  160. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/.github/workflows/testpypi-publish.yml +0 -0
  161. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/.gitignore +0 -0
  162. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/.python-version +0 -0
  163. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/.vscode/settings.json +0 -0
  164. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/CLAUDE.md +0 -0
  165. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/CONTRIBUTING.md +0 -0
  166. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/LICENSE +0 -0
  167. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/Makefile +0 -0
  168. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/README.md +0 -0
  169. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/docs/README.md +0 -0
  170. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/docs/architecture.md +0 -0
  171. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/docs/endpoint_visitor.md +0 -0
  172. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/docs/helpers.md +0 -0
  173. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/docs/ir_models.md +0 -0
  174. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/docs/line_writer.md +0 -0
  175. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/docs/loader.md +0 -0
  176. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/docs/model_visitor.md +0 -0
  177. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/docs/release-automation.md +0 -0
  178. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/docs/render_context.md +0 -0
  179. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/docs/unified_type_resolution.md +0 -0
  180. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/input/minimal_swagger.json +0 -0
  181. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/input/minimal_syntax_test.json +0 -0
  182. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/input/test_name_collision_spec.json +0 -0
  183. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/mkdocs.yml +0 -0
  184. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/poetry.lock +0 -0
  185. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/src/pyopenapi_gen/__init__.py +0 -0
  186. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/src/pyopenapi_gen/__main__.py +0 -0
  187. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/src/pyopenapi_gen/context/CLAUDE.md +0 -0
  188. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/src/pyopenapi_gen/context/file_manager.py +0 -0
  189. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/src/pyopenapi_gen/core/CLAUDE.md +0 -0
  190. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/src/pyopenapi_gen/core/__init__.py +0 -0
  191. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/src/pyopenapi_gen/core/auth/base.py +0 -0
  192. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/src/pyopenapi_gen/core/exceptions.py +0 -0
  193. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/src/pyopenapi_gen/core/loader/__init__.py +0 -0
  194. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/src/pyopenapi_gen/core/loader/loader.py +0 -0
  195. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/src/pyopenapi_gen/core/loader/operations/__init__.py +0 -0
  196. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/src/pyopenapi_gen/core/loader/operations/post_processor.py +0 -0
  197. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/src/pyopenapi_gen/core/loader/parameters/__init__.py +0 -0
  198. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/src/pyopenapi_gen/core/loader/responses/__init__.py +0 -0
  199. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/src/pyopenapi_gen/core/loader/schemas/__init__.py +0 -0
  200. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/src/pyopenapi_gen/core/parsing/__init__.py +0 -0
  201. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/src/pyopenapi_gen/core/parsing/common/__init__.py +0 -0
  202. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/src/pyopenapi_gen/core/parsing/common/ref_resolution/__init__.py +0 -0
  203. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/src/pyopenapi_gen/core/parsing/common/ref_resolution/helpers/__init__.py +0 -0
  204. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/src/pyopenapi_gen/core/parsing/common/ref_resolution/helpers/cyclic_properties.py +0 -0
  205. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/src/pyopenapi_gen/core/parsing/common/ref_resolution/helpers/direct_cycle.py +0 -0
  206. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/src/pyopenapi_gen/core/parsing/common/ref_resolution/helpers/existing_schema.py +0 -0
  207. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/src/pyopenapi_gen/core/parsing/keywords/__init__.py +0 -0
  208. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/src/pyopenapi_gen/core/parsing/transformers/__init__.py +0 -0
  209. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/src/pyopenapi_gen/core/postprocess_manager.py +0 -0
  210. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/src/pyopenapi_gen/core/warning_collector.py +0 -0
  211. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/src/pyopenapi_gen/core_package_template/README.md +0 -0
  212. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/src/pyopenapi_gen/emitters/CLAUDE.md +0 -0
  213. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/src/pyopenapi_gen/emitters/client_emitter.py +0 -0
  214. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/src/pyopenapi_gen/emitters/docs_emitter.py +0 -0
  215. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/src/pyopenapi_gen/generator/CLAUDE.md +0 -0
  216. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/src/pyopenapi_gen/helpers/CLAUDE.md +0 -0
  217. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/src/pyopenapi_gen/helpers/__init__.py +0 -0
  218. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/src/pyopenapi_gen/helpers/type_resolution/__init__.py +0 -0
  219. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/src/pyopenapi_gen/helpers/url_utils.py +0 -0
  220. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/src/pyopenapi_gen/http_types.py +0 -0
  221. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/src/pyopenapi_gen/py.typed +0 -0
  222. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/src/pyopenapi_gen/types/CLAUDE.md +0 -0
  223. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/src/pyopenapi_gen/types/__init__.py +0 -0
  224. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/src/pyopenapi_gen/types/contracts/__init__.py +0 -0
  225. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/src/pyopenapi_gen/types/resolvers/__init__.py +0 -0
  226. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/src/pyopenapi_gen/types/services/__init__.py +0 -0
  227. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/src/pyopenapi_gen/types/strategies/__init__.py +0 -0
  228. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/src/pyopenapi_gen/visit/CLAUDE.md +0 -0
  229. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/src/pyopenapi_gen/visit/docs_visitor.py +0 -0
  230. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/src/pyopenapi_gen/visit/endpoint/__init__.py +0 -0
  231. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/src/pyopenapi_gen/visit/endpoint/endpoint_visitor.py +0 -0
  232. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/src/pyopenapi_gen/visit/endpoint/generators/__init__.py +0 -0
  233. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/src/pyopenapi_gen/visit/endpoint/generators/endpoint_method_generator.py +0 -0
  234. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/src/pyopenapi_gen/visit/endpoint/processors/__init__.py +0 -0
  235. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/src/pyopenapi_gen/visit/exception_visitor.py +0 -0
  236. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/src/pyopenapi_gen/visit/model/__init__.py +0 -0
  237. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/src/pyopenapi_gen/visit/model/enum_generator.py +0 -0
  238. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/tests/__init__.py +0 -0
  239. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/tests/auth/auth_analysis.md +0 -0
  240. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/tests/cli/cli_analysis.md +0 -0
  241. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/tests/cli/test_cli_backup_diff.py +0 -0
  242. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/tests/cli/test_cli_edge_cases.py +0 -0
  243. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/tests/cli/test_cli_edge_cases_comprehensive.py +0 -0
  244. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/tests/cli/test_cli_internal_utils.py +0 -0
  245. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/tests/cli/test_http_pagination_cli.py +0 -0
  246. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/tests/context/context_analysis.md +0 -0
  247. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/tests/context/test_file_manager.py +0 -0
  248. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/tests/context/test_render_context_imports.py +0 -0
  249. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/tests/context/test_render_context_relative_paths.py +0 -0
  250. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/tests/core/core_analysis.md +0 -0
  251. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/tests/core/loader/test_extractor.py +0 -0
  252. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/tests/core/loader/test_top_level_enum_extraction.py +0 -0
  253. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/tests/core/parsing/common/ref_resolution/helpers/helpers_analysis.md +0 -0
  254. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/tests/core/parsing/common/ref_resolution/helpers/test_cyclic_properties.py +0 -0
  255. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/tests/core/parsing/common/ref_resolution/helpers/test_direct_cycle.py +0 -0
  256. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/tests/core/parsing/common/ref_resolution/helpers/test_existing_schema.py +0 -0
  257. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/tests/core/parsing/keywords/__init__.py +0 -0
  258. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/tests/core/parsing/keywords/keywords_analysis.md +0 -0
  259. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/tests/core/parsing/parsing_analysis.md +0 -0
  260. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/tests/core/parsing/test_context.py +0 -0
  261. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/tests/core/parsing/test_cycle_helpers.py +0 -0
  262. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/tests/core/parsing/test_inline_object_promoter.py +0 -0
  263. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/tests/core/parsing/test_ref_resolver.py +0 -0
  264. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/tests/core/test_edge_cases_integration.py +0 -0
  265. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/tests/core/test_edge_cases_systematic.py +0 -0
  266. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/tests/core/test_exceptions_module.py +0 -0
  267. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/tests/core/test_http_transport.py +0 -0
  268. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/tests/core/test_ir.py +0 -0
  269. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/tests/core/test_ir_schema.py +0 -0
  270. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/tests/core/test_loader_extensive.py +0 -0
  271. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/tests/core/test_loader_invalid_refs.py +0 -0
  272. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/tests/core/test_loader_malformed.py +0 -0
  273. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/tests/core/test_loader_media_types.py +0 -0
  274. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/tests/core/test_parsing_context.py +0 -0
  275. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/tests/core/test_protocol_defaults.py +0 -0
  276. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/tests/core/test_schema_parser_specific_case.py +0 -0
  277. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/tests/core/test_simple_self_ref_check.py +0 -0
  278. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/tests/core/test_streaming_helpers.py +0 -0
  279. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/tests/core/test_telemetry.py +0 -0
  280. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/tests/core/test_telemetry_client.py +0 -0
  281. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/tests/core/test_utils.py +0 -0
  282. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/tests/core/test_warning_collector.py +0 -0
  283. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/tests/core/writers/test_code_writer.py +0 -0
  284. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/tests/core/writers/test_documentation_writer.py +0 -0
  285. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/tests/core/writers/test_line_writer.py +0 -0
  286. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/tests/core/writers/writers_analysis.md +0 -0
  287. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/tests/emitters/emitters_analysis.md +0 -0
  288. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/tests/emitters/test_client_emitter.py +0 -0
  289. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/tests/emitters/test_docs_emitter.py +0 -0
  290. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/tests/emitters/test_exceptions_emitter.py +0 -0
  291. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/tests/end_to_end/test_dataclass_serialization_e2e.py +0 -0
  292. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/tests/generation/generation_analysis.md +0 -0
  293. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/tests/generation/test_external_core_package.py +0 -0
  294. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/tests/generation_issues/specs/minimal_addmessage_like.json +0 -0
  295. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/tests/generation_issues/test_message_batch_response_issue.py +0 -0
  296. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/tests/helpers/helpers_analysis.md +0 -0
  297. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/tests/helpers/test_array_resolver.py +0 -0
  298. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/tests/helpers/test_get_endpoint_return_types.py +0 -0
  299. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/tests/helpers/test_named_resolver.py +0 -0
  300. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/tests/helpers/test_named_type_resolver.py +0 -0
  301. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/tests/helpers/test_put_endpoint_return_types.py +0 -0
  302. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/tests/helpers/test_url_utils.py +0 -0
  303. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/tests/helpers/test_utils_helpers.py +0 -0
  304. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/tests/integration/test_generated_code_structure.py +0 -0
  305. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/tests/integrations/integrations_analysis.md +0 -0
  306. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/tests/integrations/test_end_to_end_business_swagger.py +0 -0
  307. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/tests/integrations/test_end_to_end_petstore.py +0 -0
  308. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/tests/integrations/test_name_collisions.py +0 -0
  309. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/tests/specs/response_unwrapping_spec.yaml +0 -0
  310. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/tests/test_analysis_overview.md +0 -0
  311. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/tests/test_init.py +0 -0
  312. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/tests/types/__init__.py +0 -0
  313. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/tests/types/test_business_swagger_integration.py +0 -0
  314. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/tests/types/test_contracts_types.py +0 -0
  315. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/tests/types/test_reference_resolver.py +0 -0
  316. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/tests/types/test_schema_resolver_enums.py +0 -0
  317. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/tests/visit/__init__.py +0 -0
  318. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/tests/visit/endpoint/__init__.py +0 -0
  319. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/tests/visit/endpoint/generators/__init__.py +0 -0
  320. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/tests/visit/endpoint/generators/generators_analysis.md +0 -0
  321. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/tests/visit/endpoint/generators/test_endpoint_method_generator.py +0 -0
  322. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/tests/visit/endpoint/generators/test_match_case_response.py +0 -0
  323. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/tests/visit/endpoint/generators/test_request_generator.py +0 -0
  324. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/tests/visit/endpoint/generators/test_response_handler_generator.py +0 -0
  325. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/tests/visit/endpoint/processors/__init__.py +0 -0
  326. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/tests/visit/endpoint/processors/test_import_analyzer.py.bak +0 -0
  327. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/tests/visit/endpoint/test_endpoint_visitor.py +0 -0
  328. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/tests/visit/model/__init__.py +0 -0
  329. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/tests/visit/model/test_alias_generator.py +0 -0
  330. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/tests/visit/model/test_dataclass_generator.py +0 -0
  331. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/tests/visit/model/test_dataclass_generator_json_wizard.py +0 -0
  332. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/tests/visit/model/test_enum_generator.py +0 -0
  333. {pyopenapi_gen-0.14.0 → pyopenapi_gen-0.14.2}/tests/visit/test_visitor.py +0 -0
@@ -1,6 +1,218 @@
1
1
  # CHANGELOG
2
2
 
3
3
 
4
+ ## v0.14.2 (2025-10-10)
5
+
6
+ ### Bug Fixes
7
+
8
+ - **endpoints**: Prevent _2_2 suffix accumulation in multi-tag operations
9
+ ([`89e500f`](https://github.com/mindhiveoy/pyopenapi_gen/commit/89e500f9c9963492454bc3177fabf872052baac5))
10
+
11
+ Operations with multiple tags previously accumulated duplicate suffixes (_2_2, _2_2_2) because the
12
+ same IROperation object was modified multiple times during per-tag deduplication.
13
+
14
+ **Root Cause:** When an operation has multiple tags (e.g., ["Users", "Admin", "Internal"]), the SAME
15
+ IROperation object reference was added to multiple tag group lists. The per-tag deduplication
16
+ modified the same object repeatedly, causing suffix accumulation.
17
+
18
+ **Solution:** - Implement global deduplication BEFORE tag grouping - New method:
19
+ _deduplicate_operation_ids_globally() - Called once before tag splitting - Ensures each operation
20
+ is renamed at most once - Removed per-tag deduplication call
21
+
22
+ **Testing:** - Existing test for single-tag duplicates still passes - New test verifies multi-tag
23
+ operations get consistent naming - Reproduction test confirms fix resolves _2_2 accumulation - All
24
+ 1299 tests pass with 88.16% coverage
25
+
26
+
27
+ ## v0.14.1 (2025-10-10)
28
+
29
+ ### Bug Fixes
30
+
31
+ - **exceptions**: Sort alias names before generating __all__ list
32
+ ([`3a623ec`](https://github.com/mindhiveoy/pyopenapi_gen/commit/3a623ecde7457410ab3c0ed2a62adfdb378d3f6a))
33
+
34
+ - **helpers**: Modernize TypeCleaner for Python 3.9+ type syntax and union preservation
35
+ ([`856fc33`](https://github.com/mindhiveoy/pyopenapi_gen/commit/856fc330752fa1046aac0fb028376329569d8b99))
36
+
37
+ Extended TypeCleaner to handle modern Python type syntax patterns:
38
+
39
+ 1. Dict/dict case sensitivity (Lines 69, 261-296): - Added "or container == 'dict'" to container
40
+ type detection - Updated _clean_dict_type() to handle both Dict[] and dict[] - Always outputs
41
+ lowercase dict[] per Python 3.9+ conventions - Preserves backward compatibility during transition
42
+ period
43
+
44
+ 2. Modern union syntax preservation (Lines 45-51): - Added early handling for " | " to prevent type
45
+ truncation - Detects top-level unions before container parsing - Splits by pipe, cleans parts
46
+ independently, rejoins with union operator - Prevents "List[X] | None" being treated as malformed
47
+ List type
48
+
49
+ 3. Optional to modern union conversion: - Updated special cases to convert Optional[X] to X | None
50
+ format - Removed Optional from imports (no longer needed) - Modernizes type annotations throughout
51
+ cleaned output
52
+
53
+ Bug fixes resolved: - 36 syntax errors from union truncation: "List[X] | None" → "List[X] | Non]" -
54
+ Case sensitivity failures after Ruff auto-formatting Dict → dict - Inconsistent type syntax in
55
+ generated code
56
+
57
+ Impact: Fixes business_swagger.json client generation errors
58
+
59
+ Quality gates: All 1278 tests passing, zero regressions
60
+
61
+ - **parsing**: Add type annotation for additionalProperties field to resolve mypy error
62
+ ([`6d4244a`](https://github.com/mindhiveoy/pyopenapi_gen/commit/6d4244a00a35d375c666510ec61754c1d36774e8))
63
+
64
+ Define explicit type for additional_properties_value parameter in _parse_schema(): - Type
65
+ annotation: bool | IRSchema | None - Resolves mypy strict mode error on line 566 - Supports three
66
+ OpenAPI additionalProperties patterns: * bool: true/false for allowing/disallowing additional
67
+ properties * IRSchema: schema object defining additional property validation * None:
68
+ additionalProperties not specified in OpenAPI spec
69
+
70
+ Technical context: - mypy --strict requires explicit types for union type assignments - Field can
71
+ receive different types based on OpenAPI specification structure - Conditional assignment at line
72
+ 573 assigns bool, dict-parsed IRSchema, or None - No functional changes, only type safety
73
+ improvement for static analysis
74
+
75
+ Resolves: mypy error "Incompatible types in assignment (expression has type...)"
76
+
77
+ ### Code Style
78
+
79
+ - **format**: Apply Black formatting to modernised type syntax changes
80
+ ([`3fb6baa`](https://github.com/mindhiveoy/pyopenapi_gen/commit/3fb6baaf6d1e2c1918cd0d64935f7d5a390daadc))
81
+
82
+ - **format**: Apply Ruff auto-formatting to entire codebase
83
+ ([`3b0ab6b`](https://github.com/mindhiveoy/pyopenapi_gen/commit/3b0ab6bcabe4caeee33a0e09f83bf28f58bfde76))
84
+
85
+ Applied Ruff formatting to 116 files for code style consistency: - Executed: make quality-fix (Ruff
86
+ format + lint --fix) - Changes: Import sorting, line breaks, whitespace normalization - No
87
+ functional changes, only formatting adjustments
88
+
89
+ Files affected: - src/pyopenapi_gen/: 72 files (core, helpers, types, visit, emitters) - tests/: 44
90
+ files (all test modules) - input/business_swagger.json: Reformatted JSON structure
91
+
92
+ Formatting changes: - Import statement ordering per PEP 8 - Line length normalization (120 char
93
+ limit) - Trailing whitespace removal - Consistent indentation and spacing
94
+
95
+ Quality gates: ✅ make format-check: PASSED ✅ make lint: PASSED ✅ make typecheck: PASSED ✅ make test:
96
+ 1278 passed, 88.48% coverage
97
+
98
+ No functional changes, zero test regressions
99
+
100
+ - **lint**: Remove unused TypeFinalizer import from alias_generator
101
+ ([`7b27e7c`](https://github.com/mindhiveoy/pyopenapi_gen/commit/7b27e7c5306c252bd816661e6815395ec431f2ce))
102
+
103
+ ### Refactoring
104
+
105
+ - **types**: Enforce modern Python 3.10+ type syntax across unified type system
106
+ ([`f642a67`](https://github.com/mindhiveoy/pyopenapi_gen/commit/f642a679760d84aa7f3c3fdbefd856056b8a02bd))
107
+
108
+ Eliminate legacy Optional[X] syntax in favour of modern X | None throughout the unified type
109
+ resolution pipeline, establishing architectural guarantees with three-layer protection against
110
+ Optional[X] leaks.
111
+
112
+ Technical changes:
113
+
114
+ 1. UnifiedTypeService (_format_resolved_type): - Added SANITY CHECK raising ValueError for
115
+ Optional[X] production - Reordered formatting: quote forward refs BEFORE adding | None - Modern
116
+ syntax: "DataSource" | None (not "DataSource | None") - Architecture guarantee: ONLY X | None
117
+ syntax, NEVER Optional[X]
118
+
119
+ 2. TypeFinalizer (_wrap_with_optional_if_needed): - Added SANITY CHECK with error logging for
120
+ Optional[X] reception - Removed all Optional import statements (not needed in Python 3.10+) -
121
+ Fixed operation order: clean BEFORE wrapping prevents TypeCleaner breaking patterns - Defensive
122
+ conversion with warning for architectural violations
123
+
124
+ 3. ResponseHandlerGenerator (_get_base_schema_deserialization_code): - Added SANITY CHECK for
125
+ Optional[X] in response deserialization - New code path for modern X | None syntax handling -
126
+ Removed Optional from type checking and model detection - Maintains backward compatibility with
127
+ defensive conversion
128
+
129
+ 4. SchemaResolver: - Fixed null schema handling to respect required parameter - Changed
130
+ _resolve_any() to accept required parameter for correct optionality - Updated all Any fallbacks to
131
+ respect required throughout resolver chain
132
+
133
+ 5. ResponseResolver: - Modernised AsyncIterator[Dict[str, Any]] to AsyncIterator[dict[str, Any]] -
134
+ Removed unnecessary Dict import (uses lowercase dict)
135
+
136
+ 6. AliasGenerator & DataclassGenerator: - Removed duplicate TypeCleaner calls (already handled by
137
+ TypeFinalizer) - TypeFinalizer now performs cleaning in correct order - Added type hints to
138
+ dict-like methods (keys, values, items)
139
+
140
+ Three-layer protection against Optional[X]: - Layer 1: UnifiedTypeService raises exception if
141
+ Optional[X] produced - Layer 2: TypeFinalizer logs error if Optional[X] received - Layer 3:
142
+ ResponseHandlerGenerator logs error if Optional[X] in deserialization
143
+
144
+ Breaking changes: None (defensive conversions maintain compatibility)
145
+
146
+ All tests passing: 1298 tests, zero regressions
147
+
148
+ ### Testing
149
+
150
+ - Update test assertions for modern Python 3.10+ type syntax
151
+ ([`9644bf7`](https://github.com/mindhiveoy/pyopenapi_gen/commit/9644bf72d41769510b3d9a6774521ee5fd75b6c9))
152
+
153
+ Update test expectations to align with unified type system's modern X | None syntax, removing
154
+ assertions for Optional import presence and modernising type checking patterns.
155
+
156
+ Test changes:
157
+
158
+ 1. test_type_helper.py: - Removed 8 assertions checking for Optional import (not needed in Python
159
+ 3.10+) - Updated finalize() expectations to use X | None syntax - Fixed Union type expectations:
160
+ Union[int, float] | None (not Optional[Union[...]])
161
+
162
+ 2. test_loader.py: - Updated regex to match modern dict[str, Any] (not Dict[str, Any]) - Updated
163
+ both params and query_params patterns
164
+
165
+ 3. test_endpoints_emitter.py: - Accept both Dict and dict in type checking - Removed strict Optional
166
+ import requirement
167
+
168
+ 4. test_models_emitter.py: - Updated datetime test: Python 3.10+ doesn't need Optional import -
169
+ Updated optional list factory test: only List import needed - Updated union anyof test: accepts
170
+ modern syntax
171
+
172
+ 5. test_type_cleaner.py: - Fixed test to use public API instead of private _clean_simple_patterns -
173
+ Tests now verify clean_type_parameters() public interface
174
+
175
+ 6. test_agent_include_parameter_typing.py: - Added circular reference placeholder detection - Test
176
+ now handles unified cycle detection properly
177
+
178
+ 7. test_response_resolver.py, test_schema_resolver.py, test_business_swagger_message_type.py: -
179
+ Updated type expectations for modern syntax - Removed Optional-specific assertions
180
+
181
+ All test updates are assertion-only (no logic changes) Test results: 1298 tests passing, 2 warnings
182
+ (expected from edge case tests)
183
+
184
+ - **regression**: Add comprehensive coverage for three critical bug classes
185
+ ([`0b5a7ba`](https://github.com/mindhiveoy/pyopenapi_gen/commit/0b5a7ba44d7b58007ef5ed0d446547ec34f8199f))
186
+
187
+ Added 8 regression tests protecting against recently discovered bugs:
188
+
189
+ 1. JsonValue wrapper class generation (1 test) File: tests/visit/model/test_json_value_wrapper.py
190
+ Scenario: Schema with additionalProperties: {nullable: true} Bug: Generated empty class instead of
191
+ dict-like wrapper with __getitem__ Protection: Validates wrapper class structure and dict-like
192
+ interface
193
+
194
+ 2. Null schema resolution (4 tests) File: tests/types/test_schema_resolver.py Bug: Schemas with
195
+ type=None resolved to None instead of Any Impact: Type name collisions across unrelated fields in
196
+ generated code Tests cover: - test_resolve_schema__null_type_schema__returns_any -
197
+ test_resolve_schema__null_type_schema_optional__returns_any_with_optional_flag -
198
+ test_resolve_schema__schema_no_type_no_generation_name__returns_any -
199
+ test_resolve_schema__schema_no_type_but_has_generation_name__resolves_as_named
200
+
201
+ 3. Modern union syntax preservation (2 tests) File: tests/helpers/test_type_cleaner.py Bug:
202
+ Top-level unions "List[X] | None" truncated to "List[X] | Non]" Impact: 36 syntax errors in
203
+ business_swagger.json client Tests cover: -
204
+ test_clean_type_parameters__modern_union_syntax_with_list__preserves_full_type -
205
+ test_clean_type_parameters__modern_union_syntax_nested__handles_correctly
206
+
207
+ 4. Integration test (1 test) File: tests/visit/model/test_json_value_integration.py End-to-end
208
+ validation of wrapper generation pipeline
209
+
210
+ Test execution results: - New tests: 8/8 PASSING - Total suite: 1278 passed - Coverage: 88.48%
211
+ (above 85% requirement) - Zero regressions introduced
212
+
213
+ Protects against: business_swagger.json generation failures discovered in production
214
+
215
+
4
216
  ## v0.14.0 (2025-10-06)
5
217
 
6
218
  ### Documentation
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: pyopenapi-gen
3
- Version: 0.14.0
3
+ Version: 0.14.2
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