pyopenapi-gen 0.13.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 (335) hide show
  1. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/CHANGELOG.md +290 -0
  2. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/CLAUDE.md +0 -5
  3. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/PKG-INFO +1 -1
  4. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/coverage.xml +1307 -1163
  5. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/input/business_swagger.json +4108 -3913
  6. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/pyproject.toml +2 -2
  7. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/src/pyopenapi_gen/cli.py +3 -3
  8. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/src/pyopenapi_gen/context/import_collector.py +10 -10
  9. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/src/pyopenapi_gen/context/render_context.py +13 -13
  10. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/src/pyopenapi_gen/core/auth/plugins.py +7 -7
  11. pyopenapi_gen-0.14.1/src/pyopenapi_gen/core/http_status_codes.py +218 -0
  12. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/src/pyopenapi_gen/core/http_transport.py +19 -19
  13. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/src/pyopenapi_gen/core/loader/operations/parser.py +2 -2
  14. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/src/pyopenapi_gen/core/loader/operations/request_body.py +3 -3
  15. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/src/pyopenapi_gen/core/loader/parameters/parser.py +3 -3
  16. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/src/pyopenapi_gen/core/loader/responses/parser.py +2 -2
  17. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/src/pyopenapi_gen/core/loader/schemas/extractor.py +4 -4
  18. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/src/pyopenapi_gen/core/pagination.py +3 -3
  19. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/src/pyopenapi_gen/core/parsing/common/ref_resolution/helpers/list_response.py +3 -3
  20. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/src/pyopenapi_gen/core/parsing/common/ref_resolution/helpers/missing_ref.py +2 -2
  21. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/src/pyopenapi_gen/core/parsing/common/ref_resolution/helpers/new_schema.py +3 -3
  22. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/src/pyopenapi_gen/core/parsing/common/ref_resolution/helpers/stripped_suffix.py +3 -3
  23. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/src/pyopenapi_gen/core/parsing/common/ref_resolution/resolve_schema_ref.py +2 -2
  24. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/src/pyopenapi_gen/core/parsing/common/type_parser.py +2 -3
  25. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/src/pyopenapi_gen/core/parsing/context.py +10 -10
  26. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/src/pyopenapi_gen/core/parsing/cycle_helpers.py +5 -2
  27. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/src/pyopenapi_gen/core/parsing/keywords/all_of_parser.py +5 -5
  28. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/src/pyopenapi_gen/core/parsing/keywords/any_of_parser.py +4 -4
  29. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/src/pyopenapi_gen/core/parsing/keywords/array_items_parser.py +4 -4
  30. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/src/pyopenapi_gen/core/parsing/keywords/one_of_parser.py +4 -4
  31. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/src/pyopenapi_gen/core/parsing/keywords/properties_parser.py +5 -5
  32. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/src/pyopenapi_gen/core/parsing/schema_finalizer.py +15 -15
  33. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/src/pyopenapi_gen/core/parsing/schema_parser.py +44 -25
  34. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/src/pyopenapi_gen/core/parsing/transformers/inline_enum_extractor.py +4 -4
  35. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/src/pyopenapi_gen/core/parsing/transformers/inline_object_promoter.py +7 -4
  36. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/src/pyopenapi_gen/core/parsing/unified_cycle_detection.py +10 -10
  37. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/src/pyopenapi_gen/core/postprocess_manager.py +85 -12
  38. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/src/pyopenapi_gen/core/schemas.py +10 -10
  39. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/src/pyopenapi_gen/core/streaming_helpers.py +5 -7
  40. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/src/pyopenapi_gen/core/telemetry.py +4 -4
  41. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/src/pyopenapi_gen/core/utils.py +7 -7
  42. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/src/pyopenapi_gen/core/writers/code_writer.py +2 -2
  43. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/src/pyopenapi_gen/core/writers/documentation_writer.py +18 -18
  44. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/src/pyopenapi_gen/core/writers/line_writer.py +3 -3
  45. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/src/pyopenapi_gen/core/writers/python_construct_renderer.py +15 -11
  46. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/src/pyopenapi_gen/emit/models_emitter.py +2 -2
  47. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/src/pyopenapi_gen/emitters/core_emitter.py +3 -5
  48. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/src/pyopenapi_gen/emitters/endpoints_emitter.py +12 -12
  49. pyopenapi_gen-0.14.1/src/pyopenapi_gen/emitters/exceptions_emitter.py +187 -0
  50. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/src/pyopenapi_gen/emitters/models_emitter.py +6 -6
  51. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/src/pyopenapi_gen/generator/client_generator.py +10 -8
  52. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/src/pyopenapi_gen/helpers/endpoint_utils.py +16 -18
  53. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/src/pyopenapi_gen/helpers/type_cleaner.py +66 -53
  54. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/src/pyopenapi_gen/helpers/type_helper.py +7 -7
  55. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/src/pyopenapi_gen/helpers/type_resolution/array_resolver.py +4 -4
  56. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/src/pyopenapi_gen/helpers/type_resolution/composition_resolver.py +5 -5
  57. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/src/pyopenapi_gen/helpers/type_resolution/finalizer.py +38 -22
  58. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/src/pyopenapi_gen/helpers/type_resolution/named_resolver.py +4 -5
  59. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/src/pyopenapi_gen/helpers/type_resolution/object_resolver.py +11 -11
  60. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/src/pyopenapi_gen/helpers/type_resolution/primitive_resolver.py +1 -2
  61. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/src/pyopenapi_gen/helpers/type_resolution/resolver.py +2 -3
  62. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/src/pyopenapi_gen/ir.py +32 -34
  63. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/src/pyopenapi_gen/types/contracts/protocols.py +5 -5
  64. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/src/pyopenapi_gen/types/contracts/types.py +2 -3
  65. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/src/pyopenapi_gen/types/resolvers/reference_resolver.py +4 -4
  66. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/src/pyopenapi_gen/types/resolvers/response_resolver.py +6 -4
  67. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/src/pyopenapi_gen/types/resolvers/schema_resolver.py +32 -16
  68. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/src/pyopenapi_gen/types/services/type_service.py +55 -9
  69. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/src/pyopenapi_gen/types/strategies/response_strategy.py +6 -7
  70. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/src/pyopenapi_gen/visit/client_visitor.py +5 -7
  71. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/src/pyopenapi_gen/visit/endpoint/generators/docstring_generator.py +7 -7
  72. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/src/pyopenapi_gen/visit/endpoint/generators/request_generator.py +5 -5
  73. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/src/pyopenapi_gen/visit/endpoint/generators/response_handler_generator.py +41 -19
  74. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/src/pyopenapi_gen/visit/endpoint/generators/signature_generator.py +4 -4
  75. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/src/pyopenapi_gen/visit/endpoint/generators/url_args_generator.py +17 -17
  76. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/src/pyopenapi_gen/visit/endpoint/processors/import_analyzer.py +8 -8
  77. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/src/pyopenapi_gen/visit/endpoint/processors/parameter_processor.py +13 -13
  78. pyopenapi_gen-0.14.1/src/pyopenapi_gen/visit/exception_visitor.py +90 -0
  79. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/src/pyopenapi_gen/visit/model/alias_generator.py +1 -4
  80. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/src/pyopenapi_gen/visit/model/dataclass_generator.py +139 -10
  81. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/src/pyopenapi_gen/visit/model/model_visitor.py +2 -3
  82. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/src/pyopenapi_gen/visit/visitor.py +3 -3
  83. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/tests/auth/test_auth_base.py +1 -1
  84. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/tests/auth/test_auth_plugins.py +4 -4
  85. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/tests/context/test_import_collector.py +3 -3
  86. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/tests/context/test_render_context.py +4 -2
  87. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/tests/core/loader/parameters/test_inline_enum_array_params.py +1 -1
  88. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/tests/core/parsing/common/ref_resolution/helpers/test_list_response.py +1 -1
  89. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/tests/core/parsing/common/ref_resolution/helpers/test_missing_ref.py +1 -1
  90. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/tests/core/parsing/common/ref_resolution/helpers/test_new_schema.py +3 -3
  91. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/tests/core/parsing/common/ref_resolution/helpers/test_stripped_suffix.py +1 -1
  92. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/tests/core/parsing/keywords/test_all_of_parser.py +28 -28
  93. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/tests/core/parsing/keywords/test_any_of_parser.py +4 -4
  94. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/tests/core/parsing/keywords/test_array_items_parser.py +2 -2
  95. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/tests/core/parsing/keywords/test_one_of_parser.py +4 -4
  96. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/tests/core/parsing/keywords/test_properties_parser.py +15 -15
  97. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/tests/core/parsing/test_cycle_detection.py +14 -14
  98. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/tests/core/parsing/test_improved_schema_naming.py +2 -2
  99. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/tests/core/parsing/test_inline_enum_extractor.py +15 -15
  100. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/tests/core/parsing/test_logging.py +3 -3
  101. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/tests/core/parsing/test_schema_finalizer.py +14 -14
  102. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/tests/core/parsing/test_schema_parser.py +4 -4
  103. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/tests/core/parsing/test_schema_parser_list_response.py +7 -7
  104. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/tests/core/parsing/test_type_parser.py +5 -5
  105. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/tests/core/test_dataclass_serialization.py +4 -4
  106. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/tests/core/test_detect_circular_imports.py +4 -4
  107. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/tests/core/test_forward_references.py +1 -2
  108. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/tests/core/test_import_resolution.py +1 -2
  109. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/tests/core/test_loader.py +8 -8
  110. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/tests/core/test_pagination.py +10 -10
  111. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/tests/core/test_schemas.py +6 -6
  112. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/tests/core/writers/test_python_construct_renderer_json_wizard.py +2 -2
  113. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/tests/emitters/test_endpoints_emitter.py +14 -12
  114. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/tests/emitters/test_exceptions_emitter.py +9 -5
  115. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/tests/emitters/test_list_response_generation.py +1 -2
  116. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/tests/emitters/test_models_emitter.py +20 -23
  117. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/tests/examples/test_developer_experience_demo.py +3 -4
  118. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/tests/generation_issues/test_addmessage_like_issues.py +7 -7
  119. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/tests/generation_issues/test_agent_include_parameter_typing.py +13 -6
  120. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/tests/helpers/test_endpoint_utils.py +2 -2
  121. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/tests/helpers/test_endpoint_utils_extended.py +4 -4
  122. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/tests/helpers/test_object_resolver.py +25 -25
  123. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/tests/helpers/test_type_cleaner.py +114 -66
  124. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/tests/helpers/test_type_helper.py +97 -114
  125. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/tests/integrations/test_business_swagger_message_type.py +12 -12
  126. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/tests/types/test_response_resolver.py +9 -9
  127. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/tests/types/test_response_strategy.py +4 -4
  128. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/tests/types/test_response_strategy_simplified.py +2 -2
  129. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/tests/types/test_schema_resolver.py +94 -4
  130. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/tests/types/test_type_service.py +4 -4
  131. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/tests/visit/endpoint/generators/test_dataclass_integration.py +7 -7
  132. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/tests/visit/endpoint/generators/test_docstring_generator.py +11 -11
  133. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/tests/visit/endpoint/generators/test_match_case_response.py +5 -5
  134. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/tests/visit/endpoint/generators/test_response_handler_generator.py +5 -3
  135. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/tests/visit/endpoint/generators/test_response_handler_generator_strategy.py +4 -3
  136. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/tests/visit/endpoint/generators/test_signature_generator.py +11 -11
  137. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/tests/visit/endpoint/generators/test_url_args_generator.py +30 -30
  138. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/tests/visit/endpoint/processors/test_import_analyzer.py +20 -20
  139. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/tests/visit/endpoint/processors/test_parameter_processor.py +19 -20
  140. pyopenapi_gen-0.14.1/tests/visit/model/test_json_value_integration.py +252 -0
  141. pyopenapi_gen-0.14.1/tests/visit/model/test_json_value_wrapper.py +234 -0
  142. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/tests/visit/test_client_visitor.py +4 -4
  143. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/tests/visit/test_model_visitor.py +29 -35
  144. pyopenapi_gen-0.13.0/src/pyopenapi_gen/emitters/exceptions_emitter.py +0 -52
  145. pyopenapi_gen-0.13.0/src/pyopenapi_gen/visit/exception_visitor.py +0 -52
  146. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/.bandit +0 -0
  147. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/.cursor/mcp.json +0 -0
  148. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/.cursor/rules/architecture.mdc +0 -0
  149. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/.cursor/rules/coding-conventions.mdc +0 -0
  150. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/.cursor/rules/project-goal.mdc +0 -0
  151. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/.cursor/rules/testing.mdc +0 -0
  152. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/.github/BRANCH_PROTECTION.md +0 -0
  153. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/.github/CLAUDE_CONFIGURATION.md +0 -0
  154. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/.github/CODEOWNERS +0 -0
  155. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
  156. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
  157. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/.github/dependabot.yml +0 -0
  158. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/.github/workflows/ci.yml +0 -0
  159. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/.github/workflows/claude-auto-approve.yml +0 -0
  160. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/.github/workflows/claude-review-trigger.yml +0 -0
  161. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/.github/workflows/claude.yml +0 -0
  162. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/.github/workflows/pr-checks.yml +0 -0
  163. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/.github/workflows/production-release.yml.backup +0 -0
  164. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/.github/workflows/promote-to-staging.yml +0 -0
  165. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/.github/workflows/semantic-release.yml +0 -0
  166. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/.github/workflows/staging-publish.yml +0 -0
  167. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/.github/workflows/testpypi-publish.yml +0 -0
  168. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/.gitignore +0 -0
  169. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/.python-version +0 -0
  170. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/.vscode/settings.json +0 -0
  171. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/CONTRIBUTING.md +0 -0
  172. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/LICENSE +0 -0
  173. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/Makefile +0 -0
  174. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/README.md +0 -0
  175. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/docs/README.md +0 -0
  176. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/docs/architecture.md +0 -0
  177. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/docs/endpoint_visitor.md +0 -0
  178. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/docs/helpers.md +0 -0
  179. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/docs/ir_models.md +0 -0
  180. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/docs/line_writer.md +0 -0
  181. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/docs/loader.md +0 -0
  182. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/docs/model_visitor.md +0 -0
  183. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/docs/release-automation.md +0 -0
  184. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/docs/render_context.md +0 -0
  185. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/docs/unified_type_resolution.md +0 -0
  186. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/input/minimal_swagger.json +0 -0
  187. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/input/minimal_syntax_test.json +0 -0
  188. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/input/test_name_collision_spec.json +0 -0
  189. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/mkdocs.yml +0 -0
  190. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/poetry.lock +0 -0
  191. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/src/pyopenapi_gen/__init__.py +0 -0
  192. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/src/pyopenapi_gen/__main__.py +0 -0
  193. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/src/pyopenapi_gen/context/CLAUDE.md +0 -0
  194. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/src/pyopenapi_gen/context/file_manager.py +0 -0
  195. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/src/pyopenapi_gen/core/CLAUDE.md +0 -0
  196. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/src/pyopenapi_gen/core/__init__.py +0 -0
  197. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/src/pyopenapi_gen/core/auth/base.py +0 -0
  198. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/src/pyopenapi_gen/core/exceptions.py +0 -0
  199. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/src/pyopenapi_gen/core/loader/__init__.py +0 -0
  200. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/src/pyopenapi_gen/core/loader/loader.py +0 -0
  201. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/src/pyopenapi_gen/core/loader/operations/__init__.py +0 -0
  202. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/src/pyopenapi_gen/core/loader/operations/post_processor.py +0 -0
  203. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/src/pyopenapi_gen/core/loader/parameters/__init__.py +0 -0
  204. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/src/pyopenapi_gen/core/loader/responses/__init__.py +0 -0
  205. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/src/pyopenapi_gen/core/loader/schemas/__init__.py +0 -0
  206. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/src/pyopenapi_gen/core/parsing/__init__.py +0 -0
  207. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/src/pyopenapi_gen/core/parsing/common/__init__.py +0 -0
  208. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/src/pyopenapi_gen/core/parsing/common/ref_resolution/__init__.py +0 -0
  209. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/src/pyopenapi_gen/core/parsing/common/ref_resolution/helpers/__init__.py +0 -0
  210. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/src/pyopenapi_gen/core/parsing/common/ref_resolution/helpers/cyclic_properties.py +0 -0
  211. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/src/pyopenapi_gen/core/parsing/common/ref_resolution/helpers/direct_cycle.py +0 -0
  212. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/src/pyopenapi_gen/core/parsing/common/ref_resolution/helpers/existing_schema.py +0 -0
  213. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/src/pyopenapi_gen/core/parsing/keywords/__init__.py +0 -0
  214. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/src/pyopenapi_gen/core/parsing/transformers/__init__.py +0 -0
  215. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/src/pyopenapi_gen/core/warning_collector.py +0 -0
  216. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/src/pyopenapi_gen/core_package_template/README.md +0 -0
  217. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/src/pyopenapi_gen/emitters/CLAUDE.md +0 -0
  218. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/src/pyopenapi_gen/emitters/client_emitter.py +0 -0
  219. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/src/pyopenapi_gen/emitters/docs_emitter.py +0 -0
  220. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/src/pyopenapi_gen/generator/CLAUDE.md +0 -0
  221. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/src/pyopenapi_gen/helpers/CLAUDE.md +0 -0
  222. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/src/pyopenapi_gen/helpers/__init__.py +0 -0
  223. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/src/pyopenapi_gen/helpers/type_resolution/__init__.py +0 -0
  224. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/src/pyopenapi_gen/helpers/url_utils.py +0 -0
  225. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/src/pyopenapi_gen/http_types.py +0 -0
  226. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/src/pyopenapi_gen/py.typed +0 -0
  227. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/src/pyopenapi_gen/types/CLAUDE.md +0 -0
  228. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/src/pyopenapi_gen/types/__init__.py +0 -0
  229. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/src/pyopenapi_gen/types/contracts/__init__.py +0 -0
  230. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/src/pyopenapi_gen/types/resolvers/__init__.py +0 -0
  231. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/src/pyopenapi_gen/types/services/__init__.py +0 -0
  232. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/src/pyopenapi_gen/types/strategies/__init__.py +0 -0
  233. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/src/pyopenapi_gen/visit/CLAUDE.md +0 -0
  234. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/src/pyopenapi_gen/visit/docs_visitor.py +0 -0
  235. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/src/pyopenapi_gen/visit/endpoint/__init__.py +0 -0
  236. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/src/pyopenapi_gen/visit/endpoint/endpoint_visitor.py +0 -0
  237. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/src/pyopenapi_gen/visit/endpoint/generators/__init__.py +0 -0
  238. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/src/pyopenapi_gen/visit/endpoint/generators/endpoint_method_generator.py +0 -0
  239. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/src/pyopenapi_gen/visit/endpoint/processors/__init__.py +0 -0
  240. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/src/pyopenapi_gen/visit/model/__init__.py +0 -0
  241. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/src/pyopenapi_gen/visit/model/enum_generator.py +0 -0
  242. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/tests/__init__.py +0 -0
  243. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/tests/auth/auth_analysis.md +0 -0
  244. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/tests/cli/cli_analysis.md +0 -0
  245. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/tests/cli/test_cli_backup_diff.py +0 -0
  246. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/tests/cli/test_cli_edge_cases.py +0 -0
  247. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/tests/cli/test_cli_edge_cases_comprehensive.py +0 -0
  248. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/tests/cli/test_cli_internal_utils.py +0 -0
  249. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/tests/cli/test_http_pagination_cli.py +0 -0
  250. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/tests/context/context_analysis.md +0 -0
  251. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/tests/context/test_file_manager.py +0 -0
  252. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/tests/context/test_render_context_imports.py +0 -0
  253. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/tests/context/test_render_context_relative_paths.py +0 -0
  254. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/tests/core/core_analysis.md +0 -0
  255. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/tests/core/loader/test_extractor.py +0 -0
  256. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/tests/core/loader/test_top_level_enum_extraction.py +0 -0
  257. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/tests/core/parsing/common/ref_resolution/helpers/helpers_analysis.md +0 -0
  258. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/tests/core/parsing/common/ref_resolution/helpers/test_cyclic_properties.py +0 -0
  259. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/tests/core/parsing/common/ref_resolution/helpers/test_direct_cycle.py +0 -0
  260. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/tests/core/parsing/common/ref_resolution/helpers/test_existing_schema.py +0 -0
  261. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/tests/core/parsing/keywords/__init__.py +0 -0
  262. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/tests/core/parsing/keywords/keywords_analysis.md +0 -0
  263. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/tests/core/parsing/parsing_analysis.md +0 -0
  264. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/tests/core/parsing/test_context.py +0 -0
  265. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/tests/core/parsing/test_cycle_helpers.py +0 -0
  266. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/tests/core/parsing/test_inline_object_promoter.py +0 -0
  267. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/tests/core/parsing/test_ref_resolver.py +0 -0
  268. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/tests/core/test_edge_cases_integration.py +0 -0
  269. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/tests/core/test_edge_cases_systematic.py +0 -0
  270. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/tests/core/test_exceptions_module.py +0 -0
  271. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/tests/core/test_http_transport.py +0 -0
  272. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/tests/core/test_ir.py +0 -0
  273. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/tests/core/test_ir_schema.py +0 -0
  274. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/tests/core/test_loader_extensive.py +0 -0
  275. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/tests/core/test_loader_invalid_refs.py +0 -0
  276. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/tests/core/test_loader_malformed.py +0 -0
  277. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/tests/core/test_loader_media_types.py +0 -0
  278. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/tests/core/test_parsing_context.py +0 -0
  279. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/tests/core/test_protocol_defaults.py +0 -0
  280. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/tests/core/test_schema_parser_specific_case.py +0 -0
  281. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/tests/core/test_simple_self_ref_check.py +0 -0
  282. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/tests/core/test_streaming_helpers.py +0 -0
  283. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/tests/core/test_telemetry.py +0 -0
  284. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/tests/core/test_telemetry_client.py +0 -0
  285. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/tests/core/test_utils.py +0 -0
  286. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/tests/core/test_warning_collector.py +0 -0
  287. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/tests/core/writers/test_code_writer.py +0 -0
  288. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/tests/core/writers/test_documentation_writer.py +0 -0
  289. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/tests/core/writers/test_line_writer.py +0 -0
  290. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/tests/core/writers/writers_analysis.md +0 -0
  291. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/tests/emitters/emitters_analysis.md +0 -0
  292. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/tests/emitters/test_client_emitter.py +0 -0
  293. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/tests/emitters/test_docs_emitter.py +0 -0
  294. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/tests/emitters/test_duplicate_operations.py +0 -0
  295. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/tests/end_to_end/test_dataclass_serialization_e2e.py +0 -0
  296. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/tests/generation/generation_analysis.md +0 -0
  297. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/tests/generation/test_external_core_package.py +0 -0
  298. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/tests/generation_issues/specs/minimal_addmessage_like.json +0 -0
  299. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/tests/generation_issues/test_message_batch_response_issue.py +0 -0
  300. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/tests/helpers/helpers_analysis.md +0 -0
  301. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/tests/helpers/test_array_resolver.py +0 -0
  302. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/tests/helpers/test_get_endpoint_return_types.py +0 -0
  303. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/tests/helpers/test_named_resolver.py +0 -0
  304. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/tests/helpers/test_named_type_resolver.py +0 -0
  305. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/tests/helpers/test_put_endpoint_return_types.py +0 -0
  306. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/tests/helpers/test_url_utils.py +0 -0
  307. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/tests/helpers/test_utils_helpers.py +0 -0
  308. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/tests/integration/test_generated_code_structure.py +0 -0
  309. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/tests/integrations/integrations_analysis.md +0 -0
  310. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/tests/integrations/test_end_to_end_business_swagger.py +0 -0
  311. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/tests/integrations/test_end_to_end_petstore.py +0 -0
  312. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/tests/integrations/test_name_collisions.py +0 -0
  313. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/tests/specs/response_unwrapping_spec.yaml +0 -0
  314. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/tests/test_analysis_overview.md +0 -0
  315. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/tests/test_init.py +0 -0
  316. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/tests/types/__init__.py +0 -0
  317. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/tests/types/test_business_swagger_integration.py +0 -0
  318. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/tests/types/test_contracts_types.py +0 -0
  319. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/tests/types/test_reference_resolver.py +0 -0
  320. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/tests/types/test_schema_resolver_enums.py +0 -0
  321. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/tests/visit/__init__.py +0 -0
  322. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/tests/visit/endpoint/__init__.py +0 -0
  323. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/tests/visit/endpoint/generators/__init__.py +0 -0
  324. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/tests/visit/endpoint/generators/generators_analysis.md +0 -0
  325. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/tests/visit/endpoint/generators/test_endpoint_method_generator.py +0 -0
  326. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/tests/visit/endpoint/generators/test_request_generator.py +0 -0
  327. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/tests/visit/endpoint/processors/__init__.py +0 -0
  328. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/tests/visit/endpoint/processors/test_import_analyzer.py.bak +0 -0
  329. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/tests/visit/endpoint/test_endpoint_visitor.py +0 -0
  330. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/tests/visit/model/__init__.py +0 -0
  331. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/tests/visit/model/test_alias_generator.py +0 -0
  332. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/tests/visit/model/test_dataclass_generator.py +0 -0
  333. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/tests/visit/model/test_dataclass_generator_json_wizard.py +0 -0
  334. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/tests/visit/model/test_enum_generator.py +0 -0
  335. {pyopenapi_gen-0.13.0 → pyopenapi_gen-0.14.1}/tests/visit/test_visitor.py +0 -0
@@ -1,6 +1,296 @@
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
+
193
+ ## v0.14.0 (2025-10-06)
194
+
195
+ ### Documentation
196
+
197
+ - Remove legacy commands from development guide
198
+ ([`396680e`](https://github.com/mindhiveoy/pyopenapi_gen/commit/396680e93f15cabc638af0a1170853cfa3d6e5de))
199
+
200
+ Removed outdated "Legacy Commands" section from CLAUDE.md development guide as modern commands are
201
+ already documented in "Essential Commands" section.
202
+
203
+ Technical Details: - Removed 5 lines of legacy command documentation - Deleted commands that are
204
+ superseded by Makefile targets: * pytest --cov=src --cov-report=html (use: make test-cov) * ruff
205
+ check --fix src/ (use: make lint-fix) * mypy src/ --strict (use: make typecheck) - Modern
206
+ equivalents already documented with better descriptions - Simplified development workflow
207
+ documentation
208
+
209
+ Impact: - No functional changes - Documentation now clearer with single source of truth for commands
210
+ - Developers directed to use consistent Makefile targets
211
+
212
+ ### Features
213
+
214
+ - **exceptions**: Implement human-readable exception names and shared core registry
215
+ ([`6983037`](https://github.com/mindhiveoy/pyopenapi_gen/commit/69830375a5a8e93b14c6cf2cf7b289093b57a346))
216
+
217
+ Replaces generic numeric exception names with semantic, human-readable names and adds registry
218
+ system for multi-client shared core scenarios.
219
+
220
+ Technical Details: - Created http_status_codes.py with comprehensive HTTP status code mapping (400 →
221
+ BadRequestError, 404 → NotFoundError, 500 → InternalServerError) - Exception classes now include
222
+ human-readable status names in docstrings - Filters out 2xx success codes from exception
223
+ generation (no error classes for successful responses using is_error_code() helper) - Implements
224
+ .exception_registry.json to track exceptions needed by each client in shared core scenarios -
225
+ Registry prevents last client from overwriting exceptions needed by earlier clients when multiple
226
+ clients share a core package - Generated exception_aliases.py is Ruff-compliant from generation
227
+ (proper import ordering with third-party before local, correct spacing)
228
+
229
+ Breaking Changes: - Generated exception class names changed from Error{code} to semantic names
230
+ (Error404 → NotFoundError, Error401 → UnauthorisedError, etc.) - Affects generated client code but
231
+ not runtime behavior - ExceptionsEmitter.emit() now accepts optional client_package_name parameter
232
+ - ExceptionVisitor.visit() returns tuple of (code, names, status_codes) instead of (code, names)
233
+
234
+ Migration Notes: - Regenerate all clients to get new human-readable exception names - No code
235
+ changes required for clients using exception handling - Registry file (.exception_registry.json)
236
+ automatically managed - Clients continue to catch exceptions the same way, just with better names
237
+
238
+ Implementation: - HTTP_EXCEPTION_NAMES maps status codes to semantic class names -
239
+ get_exception_class_name() provides consistent name resolution - get_status_name() provides
240
+ human-readable descriptions - is_error_code() filters to only 4xx/5xx codes - Registry system uses
241
+ JSON to track multi-client exception requirements
242
+
243
+ ### Performance Improvements
244
+
245
+ - **postprocess**: Optimize Ruff execution with bulk operations (25x faster)
246
+ ([`eed3c34`](https://github.com/mindhiveoy/pyopenapi_gen/commit/eed3c346da9ddbb9daa1d745e8bc8f8f46c6e9b6))
247
+
248
+ Changed from per-file Ruff subprocess calls to bulk operations on all files, reducing generation
249
+ time from 120+ seconds to 5.4 seconds for large specs.
250
+
251
+ Technical Details: - Added remove_unused_imports_bulk(), sort_imports_bulk(), format_code_bulk()
252
+ methods that process all files in a single subprocess call - Changed from 2,331 individual
253
+ subprocess calls to 3 bulk calls for 777 files - Performance improvement: 120+ seconds → 5.4
254
+ seconds (25x speedup) - Temporarily disabled mypy type checking for faster iteration
255
+ (configurable, can be re-enabled when full validation needed) - Fixed docstring empty line
256
+ handling in PythonConstructRenderer to avoid trailing whitespace (Ruff W293 compliance)
257
+
258
+ Implementation Approach: - Subprocess.run() executes ruff with list of all file paths as arguments
259
+ instead of individual calls per file - Maintained existing error handling and output filtering
260
+ logic - Preserved per-file methods for backward compatibility - Empty lines in class body_lines
261
+ now use writer.newline() instead of write_line("") to prevent indentation on blank lines
262
+
263
+ Performance Impact: - Large spec generation (777 files): 120s → 5.4s - No change to generated code
264
+ quality or Ruff compliance - All formatting, linting, and import organization still applied - Mypy
265
+ still available but disabled by default for speed
266
+
267
+ Non-breaking Change: - Generated code quality unchanged - All existing functionality preserved -
268
+ Mypy can be re-enabled by uncommenting lines 63-68 in postprocess_manager.py
269
+
270
+ ### Testing
271
+
272
+ - Update exception tests for human-readable names
273
+ ([`26e2aef`](https://github.com/mindhiveoy/pyopenapi_gen/commit/26e2aef9df2e713a1d4098608f7c191bcd5992ab))
274
+
275
+ Updated all exception-related tests to expect new human-readable exception names instead of generic
276
+ numeric names (NotFoundError vs Error404).
277
+
278
+ Technical Details: - Updated test_exceptions_emitter.py assertions: * Now expects NotFoundError
279
+ instead of Error404 * Now expects InternalServerError instead of Error500 * Added validation for
280
+ human-readable status descriptions in docstrings * Removed HTTPError import assertion (no longer
281
+ used in exception_aliases.py) - Updated test_response_handler_generator.py: * Changed Error404
282
+ assertions to NotFoundError * Updated test docstrings to reflect human-readable names - Updated
283
+ test_match_case_response.py: * Changed Error400/401/404/500 to BadRequestError/UnauthorisedError/
284
+ NotFoundError/InternalServerError - Updated test_response_handler_generator_strategy.py: * Changed
285
+ Error404/500 assertions to NotFoundError/InternalServerError
286
+
287
+ Test Results: - All 1,280 tests passing (100% success rate) - Coverage maintained at 85%+ - All
288
+ exception-related assertions updated and verified - No test failures or regressions
289
+
290
+ Changes Tested: - Exception class name generation - Exception docstring content - Import statements
291
+ in generated code - Response handler error raising - Match-case statement error handling
292
+
293
+
4
294
  ## v0.13.0 (2025-09-08)
5
295
 
6
296
  ### Bug Fixes
@@ -94,11 +94,6 @@ make test-fast # Run tests, stop on first failure
94
94
  make test-cov # Run tests in parallel with coverage report (85% required)
95
95
  pytest -n auto # Run tests in parallel (faster, use with --timeout=300 if needed)
96
96
 
97
- # Legacy Commands (still work)
98
- pytest --cov=src --cov-report=html # Generate coverage report
99
- ruff check --fix src/ # Auto-fix linting issues
100
- mypy src/ --strict # Strict type checking
101
-
102
97
  # Development
103
98
  make build # Build package
104
99
  make clean # Clean build artifacts
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: pyopenapi-gen
3
- Version: 0.13.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