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