pyopenapi-gen 0.14.2__tar.gz → 0.15.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/.github/workflows/semantic-release.yml +6 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/.gitignore +5 -1
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/CHANGELOG.md +97 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/Makefile +7 -2
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/PKG-INFO +1 -1
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/coverage.xml +362 -329
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/input/business_swagger.json +390 -210
- pyopenapi_gen-0.15.0/poetry.lock +3139 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/pyproject.toml +4 -4
- pyopenapi_gen-0.15.0/scripts/validate_version_sync.py +152 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/__init__.py +1 -1
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/context/render_context.py +97 -1
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/core/writers/python_construct_renderer.py +2 -15
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/types/resolvers/schema_resolver.py +20 -2
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/types/services/type_service.py +4 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/visit/model/dataclass_generator.py +2 -1
- pyopenapi_gen-0.15.0/tests/context/test_core_import_path.py +209 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/tests/core/writers/test_python_construct_renderer_json_wizard.py +4 -4
- pyopenapi_gen-0.15.0/tests/types/test_missing_imports_bug.py +202 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/tests/visit/model/test_dataclass_generator_json_wizard.py +2 -2
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/tests/visit/test_model_visitor.py +6 -4
- pyopenapi_gen-0.14.2/poetry.lock +0 -2812
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/.bandit +0 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/.cursor/mcp.json +0 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/.cursor/rules/architecture.mdc +0 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/.cursor/rules/coding-conventions.mdc +0 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/.cursor/rules/project-goal.mdc +0 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/.cursor/rules/testing.mdc +0 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/.github/BRANCH_PROTECTION.md +0 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/.github/CLAUDE_CONFIGURATION.md +0 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/.github/CODEOWNERS +0 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/.github/dependabot.yml +0 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/.github/workflows/ci.yml +0 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/.github/workflows/claude-auto-approve.yml +0 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/.github/workflows/claude-review-trigger.yml +0 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/.github/workflows/claude.yml +0 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/.github/workflows/pr-checks.yml +0 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/.github/workflows/production-release.yml.backup +0 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/.github/workflows/promote-to-staging.yml +0 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/.github/workflows/staging-publish.yml +0 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/.github/workflows/testpypi-publish.yml +0 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/.python-version +0 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/.vscode/settings.json +0 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/CLAUDE.md +0 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/CONTRIBUTING.md +0 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/LICENSE +0 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/README.md +0 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/docs/README.md +0 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/docs/architecture.md +0 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/docs/endpoint_visitor.md +0 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/docs/helpers.md +0 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/docs/ir_models.md +0 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/docs/line_writer.md +0 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/docs/loader.md +0 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/docs/model_visitor.md +0 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/docs/release-automation.md +0 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/docs/render_context.md +0 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/docs/unified_type_resolution.md +0 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/input/minimal_swagger.json +0 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/input/minimal_syntax_test.json +0 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/input/test_name_collision_spec.json +0 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/mkdocs.yml +0 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/__main__.py +0 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/cli.py +0 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/context/CLAUDE.md +0 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/context/file_manager.py +0 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/context/import_collector.py +0 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/core/CLAUDE.md +0 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/core/__init__.py +0 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/core/auth/base.py +0 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/core/auth/plugins.py +0 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/core/exceptions.py +0 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/core/http_status_codes.py +0 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/core/http_transport.py +0 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/core/loader/__init__.py +0 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/core/loader/loader.py +0 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/core/loader/operations/__init__.py +0 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/core/loader/operations/parser.py +0 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/core/loader/operations/post_processor.py +0 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/core/loader/operations/request_body.py +0 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/core/loader/parameters/__init__.py +0 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/core/loader/parameters/parser.py +0 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/core/loader/responses/__init__.py +0 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/core/loader/responses/parser.py +0 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/core/loader/schemas/__init__.py +0 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/core/loader/schemas/extractor.py +0 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/core/pagination.py +0 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/core/parsing/__init__.py +0 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/core/parsing/common/__init__.py +0 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/core/parsing/common/ref_resolution/__init__.py +0 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/core/parsing/common/ref_resolution/helpers/__init__.py +0 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/core/parsing/common/ref_resolution/helpers/cyclic_properties.py +0 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/core/parsing/common/ref_resolution/helpers/direct_cycle.py +0 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/core/parsing/common/ref_resolution/helpers/existing_schema.py +0 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/core/parsing/common/ref_resolution/helpers/list_response.py +0 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/core/parsing/common/ref_resolution/helpers/missing_ref.py +0 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/core/parsing/common/ref_resolution/helpers/new_schema.py +0 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/core/parsing/common/ref_resolution/helpers/stripped_suffix.py +0 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/core/parsing/common/ref_resolution/resolve_schema_ref.py +0 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/core/parsing/common/type_parser.py +0 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/core/parsing/context.py +0 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/core/parsing/cycle_helpers.py +0 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/core/parsing/keywords/__init__.py +0 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/core/parsing/keywords/all_of_parser.py +0 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/core/parsing/keywords/any_of_parser.py +0 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/core/parsing/keywords/array_items_parser.py +0 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/core/parsing/keywords/one_of_parser.py +0 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/core/parsing/keywords/properties_parser.py +0 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/core/parsing/schema_finalizer.py +0 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/core/parsing/schema_parser.py +0 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/core/parsing/transformers/__init__.py +0 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/core/parsing/transformers/inline_enum_extractor.py +0 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/core/parsing/transformers/inline_object_promoter.py +0 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/core/parsing/unified_cycle_detection.py +0 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/core/postprocess_manager.py +0 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/core/schemas.py +0 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/core/streaming_helpers.py +0 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/core/telemetry.py +0 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/core/utils.py +0 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/core/warning_collector.py +0 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/core/writers/code_writer.py +0 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/core/writers/documentation_writer.py +0 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/core/writers/line_writer.py +0 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/core_package_template/README.md +0 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/emit/models_emitter.py +0 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/emitters/CLAUDE.md +0 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/emitters/client_emitter.py +0 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/emitters/core_emitter.py +0 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/emitters/docs_emitter.py +0 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/emitters/endpoints_emitter.py +0 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/emitters/exceptions_emitter.py +0 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/emitters/models_emitter.py +0 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/generator/CLAUDE.md +0 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/generator/client_generator.py +0 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/helpers/CLAUDE.md +0 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/helpers/__init__.py +0 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/helpers/endpoint_utils.py +0 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/helpers/type_cleaner.py +0 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/helpers/type_helper.py +0 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/helpers/type_resolution/__init__.py +0 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/helpers/type_resolution/array_resolver.py +0 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/helpers/type_resolution/composition_resolver.py +0 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/helpers/type_resolution/finalizer.py +0 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/helpers/type_resolution/named_resolver.py +0 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/helpers/type_resolution/object_resolver.py +0 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/helpers/type_resolution/primitive_resolver.py +0 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/helpers/type_resolution/resolver.py +0 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/helpers/url_utils.py +0 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/http_types.py +0 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/ir.py +0 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/py.typed +0 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/types/CLAUDE.md +0 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/types/__init__.py +0 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/types/contracts/__init__.py +0 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/types/contracts/protocols.py +0 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/types/contracts/types.py +0 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/types/resolvers/__init__.py +0 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/types/resolvers/reference_resolver.py +0 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/types/resolvers/response_resolver.py +0 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/types/services/__init__.py +0 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/types/strategies/__init__.py +0 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/types/strategies/response_strategy.py +0 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/visit/CLAUDE.md +0 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/visit/client_visitor.py +0 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/visit/docs_visitor.py +0 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/visit/endpoint/__init__.py +0 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/visit/endpoint/endpoint_visitor.py +0 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/visit/endpoint/generators/__init__.py +0 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/visit/endpoint/generators/docstring_generator.py +0 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/visit/endpoint/generators/endpoint_method_generator.py +0 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/visit/endpoint/generators/request_generator.py +0 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/visit/endpoint/generators/response_handler_generator.py +0 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/visit/endpoint/generators/signature_generator.py +0 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/visit/endpoint/generators/url_args_generator.py +0 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/visit/endpoint/processors/__init__.py +0 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/visit/endpoint/processors/import_analyzer.py +0 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/visit/endpoint/processors/parameter_processor.py +0 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/visit/exception_visitor.py +0 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/visit/model/__init__.py +0 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/visit/model/alias_generator.py +0 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/visit/model/enum_generator.py +0 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/visit/model/model_visitor.py +0 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/visit/visitor.py +0 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/tests/__init__.py +0 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/tests/auth/auth_analysis.md +0 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/tests/auth/test_auth_base.py +0 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/tests/auth/test_auth_plugins.py +0 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/tests/cli/cli_analysis.md +0 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/tests/cli/test_cli_backup_diff.py +0 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/tests/cli/test_cli_edge_cases.py +0 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/tests/cli/test_cli_edge_cases_comprehensive.py +0 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/tests/cli/test_cli_internal_utils.py +0 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/tests/cli/test_http_pagination_cli.py +0 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/tests/context/context_analysis.md +0 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/tests/context/test_file_manager.py +0 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/tests/context/test_import_collector.py +0 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/tests/context/test_render_context.py +0 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/tests/context/test_render_context_imports.py +0 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/tests/context/test_render_context_relative_paths.py +0 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/tests/core/core_analysis.md +0 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/tests/core/loader/parameters/test_inline_enum_array_params.py +0 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/tests/core/loader/test_extractor.py +0 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/tests/core/loader/test_top_level_enum_extraction.py +0 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/tests/core/parsing/common/ref_resolution/helpers/helpers_analysis.md +0 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/tests/core/parsing/common/ref_resolution/helpers/test_cyclic_properties.py +0 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/tests/core/parsing/common/ref_resolution/helpers/test_direct_cycle.py +0 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/tests/core/parsing/common/ref_resolution/helpers/test_existing_schema.py +0 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/tests/core/parsing/common/ref_resolution/helpers/test_list_response.py +0 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/tests/core/parsing/common/ref_resolution/helpers/test_missing_ref.py +0 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/tests/core/parsing/common/ref_resolution/helpers/test_new_schema.py +0 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/tests/core/parsing/common/ref_resolution/helpers/test_stripped_suffix.py +0 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/tests/core/parsing/keywords/__init__.py +0 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/tests/core/parsing/keywords/keywords_analysis.md +0 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/tests/core/parsing/keywords/test_all_of_parser.py +0 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/tests/core/parsing/keywords/test_any_of_parser.py +0 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/tests/core/parsing/keywords/test_array_items_parser.py +0 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/tests/core/parsing/keywords/test_one_of_parser.py +0 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/tests/core/parsing/keywords/test_properties_parser.py +0 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/tests/core/parsing/parsing_analysis.md +0 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/tests/core/parsing/test_context.py +0 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/tests/core/parsing/test_cycle_detection.py +0 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/tests/core/parsing/test_cycle_helpers.py +0 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/tests/core/parsing/test_improved_schema_naming.py +0 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/tests/core/parsing/test_inline_enum_extractor.py +0 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/tests/core/parsing/test_inline_object_promoter.py +0 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/tests/core/parsing/test_logging.py +0 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/tests/core/parsing/test_ref_resolver.py +0 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/tests/core/parsing/test_schema_finalizer.py +0 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/tests/core/parsing/test_schema_parser.py +0 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/tests/core/parsing/test_schema_parser_list_response.py +0 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/tests/core/parsing/test_type_parser.py +0 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/tests/core/test_dataclass_serialization.py +0 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/tests/core/test_detect_circular_imports.py +0 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/tests/core/test_edge_cases_integration.py +0 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/tests/core/test_edge_cases_systematic.py +0 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/tests/core/test_exceptions_module.py +0 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/tests/core/test_forward_references.py +0 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/tests/core/test_http_transport.py +0 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/tests/core/test_import_resolution.py +0 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/tests/core/test_ir.py +0 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/tests/core/test_ir_schema.py +0 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/tests/core/test_loader.py +0 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/tests/core/test_loader_extensive.py +0 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/tests/core/test_loader_invalid_refs.py +0 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/tests/core/test_loader_malformed.py +0 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/tests/core/test_loader_media_types.py +0 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/tests/core/test_pagination.py +0 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/tests/core/test_parsing_context.py +0 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/tests/core/test_protocol_defaults.py +0 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/tests/core/test_schema_parser_specific_case.py +0 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/tests/core/test_schemas.py +0 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/tests/core/test_simple_self_ref_check.py +0 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/tests/core/test_streaming_helpers.py +0 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/tests/core/test_telemetry.py +0 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/tests/core/test_telemetry_client.py +0 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/tests/core/test_utils.py +0 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/tests/core/test_warning_collector.py +0 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/tests/core/writers/test_code_writer.py +0 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/tests/core/writers/test_documentation_writer.py +0 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/tests/core/writers/test_line_writer.py +0 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/tests/core/writers/writers_analysis.md +0 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/tests/emitters/emitters_analysis.md +0 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/tests/emitters/test_client_emitter.py +0 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/tests/emitters/test_docs_emitter.py +0 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/tests/emitters/test_duplicate_operations.py +0 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/tests/emitters/test_endpoints_emitter.py +0 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/tests/emitters/test_exceptions_emitter.py +0 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/tests/emitters/test_list_response_generation.py +0 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/tests/emitters/test_models_emitter.py +0 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/tests/end_to_end/test_dataclass_serialization_e2e.py +0 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/tests/examples/test_developer_experience_demo.py +0 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/tests/generation/generation_analysis.md +0 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/tests/generation/test_external_core_package.py +0 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/tests/generation_issues/specs/minimal_addmessage_like.json +0 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/tests/generation_issues/test_addmessage_like_issues.py +0 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/tests/generation_issues/test_agent_include_parameter_typing.py +0 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/tests/generation_issues/test_message_batch_response_issue.py +0 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/tests/helpers/helpers_analysis.md +0 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/tests/helpers/test_array_resolver.py +0 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/tests/helpers/test_endpoint_utils.py +0 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/tests/helpers/test_endpoint_utils_extended.py +0 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/tests/helpers/test_get_endpoint_return_types.py +0 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/tests/helpers/test_named_resolver.py +0 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/tests/helpers/test_named_type_resolver.py +0 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/tests/helpers/test_object_resolver.py +0 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/tests/helpers/test_put_endpoint_return_types.py +0 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/tests/helpers/test_type_cleaner.py +0 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/tests/helpers/test_type_helper.py +0 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/tests/helpers/test_url_utils.py +0 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/tests/helpers/test_utils_helpers.py +0 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/tests/integration/test_generated_code_structure.py +0 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/tests/integrations/integrations_analysis.md +0 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/tests/integrations/test_business_swagger_message_type.py +0 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/tests/integrations/test_end_to_end_business_swagger.py +0 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/tests/integrations/test_end_to_end_petstore.py +0 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/tests/integrations/test_name_collisions.py +0 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/tests/specs/response_unwrapping_spec.yaml +0 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/tests/test_analysis_overview.md +0 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/tests/test_init.py +0 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/tests/types/__init__.py +0 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/tests/types/test_business_swagger_integration.py +0 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/tests/types/test_contracts_types.py +0 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/tests/types/test_reference_resolver.py +0 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/tests/types/test_response_resolver.py +0 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/tests/types/test_response_strategy.py +0 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/tests/types/test_response_strategy_simplified.py +0 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/tests/types/test_schema_resolver.py +0 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/tests/types/test_schema_resolver_enums.py +0 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/tests/types/test_type_service.py +0 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/tests/visit/__init__.py +0 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/tests/visit/endpoint/__init__.py +0 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/tests/visit/endpoint/generators/__init__.py +0 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/tests/visit/endpoint/generators/generators_analysis.md +0 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/tests/visit/endpoint/generators/test_dataclass_integration.py +0 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/tests/visit/endpoint/generators/test_docstring_generator.py +0 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/tests/visit/endpoint/generators/test_endpoint_method_generator.py +0 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/tests/visit/endpoint/generators/test_match_case_response.py +0 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/tests/visit/endpoint/generators/test_request_generator.py +0 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/tests/visit/endpoint/generators/test_response_handler_generator.py +0 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/tests/visit/endpoint/generators/test_response_handler_generator_strategy.py +0 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/tests/visit/endpoint/generators/test_signature_generator.py +0 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/tests/visit/endpoint/generators/test_url_args_generator.py +0 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/tests/visit/endpoint/processors/__init__.py +0 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/tests/visit/endpoint/processors/test_import_analyzer.py +0 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/tests/visit/endpoint/processors/test_import_analyzer.py.bak +0 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/tests/visit/endpoint/processors/test_parameter_processor.py +0 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/tests/visit/endpoint/test_endpoint_visitor.py +0 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/tests/visit/model/__init__.py +0 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/tests/visit/model/test_alias_generator.py +0 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/tests/visit/model/test_dataclass_generator.py +0 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/tests/visit/model/test_enum_generator.py +0 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/tests/visit/model/test_json_value_integration.py +0 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/tests/visit/model/test_json_value_wrapper.py +0 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/tests/visit/test_client_visitor.py +0 -0
- {pyopenapi_gen-0.14.2 → pyopenapi_gen-0.15.0}/tests/visit/test_visitor.py +0 -0
@@ -48,6 +48,12 @@ jobs:
|
|
48
48
|
run: |
|
49
49
|
poetry install --with dev
|
50
50
|
|
51
|
+
- name: Validate version synchronisation
|
52
|
+
run: |
|
53
|
+
echo "🔍 Checking that all version files are synchronised..."
|
54
|
+
poetry run python scripts/validate_version_sync.py
|
55
|
+
echo "✅ All version files are in sync"
|
56
|
+
|
51
57
|
- name: Run comprehensive quality checks
|
52
58
|
run: |
|
53
59
|
poetry run black --check src/ tests/
|
@@ -1,6 +1,91 @@
|
|
1
1
|
# CHANGELOG
|
2
2
|
|
3
3
|
|
4
|
+
## v0.15.0 (2025-10-11)
|
5
|
+
|
6
|
+
### Bug Fixes
|
7
|
+
|
8
|
+
- **release**: Correct semantic-release configuration and sync version to 0.14.3
|
9
|
+
([`cfa0813`](https://github.com/mindhiveoy/pyopenapi_gen/commit/cfa081393657acfaa0a1c6a29243746748872b28))
|
10
|
+
|
11
|
+
Problem: - semantic-release v9 was configured with deprecated `version_pattern` syntax - This caused
|
12
|
+
__init__.py to not be automatically updated during releases - Version validation failed in CI
|
13
|
+
because __init__.py (0.10.2) != pyproject.toml (0.14.3)
|
14
|
+
|
15
|
+
Solution: - Updated semantic-release config to use `version_variables` (v9+ syntax) - Synced
|
16
|
+
__init__.py version to 0.14.3 to match pyproject.toml - Now semantic-release will automatically
|
17
|
+
update all version locations
|
18
|
+
|
19
|
+
Changes: - pyproject.toml: Changed version_pattern → version_variables -
|
20
|
+
src/pyopenapi_gen/__init__.py: Updated __version__ from 0.10.2 → 0.14.3
|
21
|
+
|
22
|
+
This ensures future releases automatically sync all version files.
|
23
|
+
|
24
|
+
- **types**: Correct self-import detection to avoid false positives with similar filenames
|
25
|
+
([`cfee36e`](https://github.com/mindhiveoy/pyopenapi_gen/commit/cfee36e4c8c57d84c0c1d967a7936c5daddf2197))
|
26
|
+
|
27
|
+
Problem: - Self-import check used .endswith() for filename comparison - This caused false positives
|
28
|
+
when one filename was a suffix of another - Example:
|
29
|
+
"vector_index_with_embedding_response_data.py".endswith("embedding_response_data.py") == True -
|
30
|
+
Result: Missing imports for forward referenced types, causing NameError at runtime
|
31
|
+
|
32
|
+
Solution: - Changed to exact basename comparison using os.path.basename() - Only files with
|
33
|
+
identical basenames are treated as self-imports - Added comprehensive regression tests covering: -
|
34
|
+
Similar module names (not self-imports) - Actual self-references (forward refs without imports) -
|
35
|
+
Exact filename matching requirements
|
36
|
+
|
37
|
+
Changes: - src/pyopenapi_gen/types/resolvers/schema_resolver.py: Fixed self-import detection logic -
|
38
|
+
tests/types/test_missing_imports_bug.py: Added 3 regression tests -
|
39
|
+
tests/visit/test_model_visitor.py: Updated test expectations for correct import behavior -
|
40
|
+
.gitignore: Added patterns to ignore bug report and analysis documents
|
41
|
+
|
42
|
+
Testing: - All 1309 tests pass - Verified with real business_swagger.json that previously failed -
|
43
|
+
Generated code now includes correct imports for cross-module references
|
44
|
+
|
45
|
+
### Features
|
46
|
+
|
47
|
+
- **versioning**: Add version synchronization validation script and integrate into quality checks
|
48
|
+
([`de2ecb8`](https://github.com/mindhiveoy/pyopenapi_gen/commit/de2ecb8c63711230e890bae1cf79f22d5594c551))
|
49
|
+
|
50
|
+
|
51
|
+
## v0.14.3 (2025-10-11)
|
52
|
+
|
53
|
+
### Bug Fixes
|
54
|
+
|
55
|
+
- **core**: Resolve ImportError for sibling core packages in shared mode
|
56
|
+
([`5f76cac`](https://github.com/mindhiveoy/pyopenapi_gen/commit/5f76caca6f13ef786e8920fb52dca9e1d02f5dbe))
|
57
|
+
|
58
|
+
Fix ImportError when generating clients with shared core packages by using absolute imports instead
|
59
|
+
of relative imports for root-level sibling packages.
|
60
|
+
|
61
|
+
Root cause: Python doesn't support relative imports beyond top-level packages. When core/ and
|
62
|
+
businessapi/ are siblings at root, "from ..core" fails because there's no parent package to
|
63
|
+
traverse.
|
64
|
+
|
65
|
+
Implementation: - Modified RenderContext.add_import() to use absolute imports for core packages -
|
66
|
+
Added get_core_import_path() helper for import path calculation - Updated dataclass_generator.py
|
67
|
+
and python_construct_renderer.py - Core imports now use: "from core.schemas import BaseSchema" -
|
68
|
+
Previous broken format: "from ..core.schemas import BaseSchema"
|
69
|
+
|
70
|
+
Testing: - Added comprehensive test suite with 7 scenarios for import path calculation - Updated
|
71
|
+
existing test assertions to expect absolute import format - All 1306 tests passing with 88.18%
|
72
|
+
coverage - Verified with business_swagger.json (1127 schemas, 117 operations) - Import validation:
|
73
|
+
PYTHONPATH=/path/to/output python -c "from businessapi.client import APIClient"
|
74
|
+
|
75
|
+
Files modified: - src/pyopenapi_gen/context/render_context.py -
|
76
|
+
src/pyopenapi_gen/core/writers/python_construct_renderer.py -
|
77
|
+
src/pyopenapi_gen/visit/model/dataclass_generator.py -
|
78
|
+
tests/core/writers/test_python_construct_renderer_json_wizard.py -
|
79
|
+
tests/visit/model/test_dataclass_generator_json_wizard.py - tests/visit/test_model_visitor.py
|
80
|
+
|
81
|
+
Files added: - tests/context/test_core_import_path.py
|
82
|
+
|
83
|
+
### Chores
|
84
|
+
|
85
|
+
- **deps**: Update dependencies in poetry.lock
|
86
|
+
([`fcfa26c`](https://github.com/mindhiveoy/pyopenapi_gen/commit/fcfa26c47b4cbce01eb7a4ccd68c02f5bf4d8c02))
|
87
|
+
|
88
|
+
|
4
89
|
## v0.14.2 (2025-10-10)
|
5
90
|
|
6
91
|
### Bug Fixes
|
@@ -74,6 +159,11 @@ Technical context: - mypy --strict requires explicit types for union type assign
|
|
74
159
|
|
75
160
|
Resolves: mypy error "Incompatible types in assignment (expression has type...)"
|
76
161
|
|
162
|
+
### Chores
|
163
|
+
|
164
|
+
- Merge latest changes from main
|
165
|
+
([`44487cc`](https://github.com/mindhiveoy/pyopenapi_gen/commit/44487cce571920b5e2c34814c38cbab67b956097))
|
166
|
+
|
77
167
|
### Code Style
|
78
168
|
|
79
169
|
- **format**: Apply Black formatting to modernised type syntax changes
|
@@ -788,6 +878,13 @@ All 1,265 tests now pass consistently across environments.
|
|
788
878
|
testing still handled by pr-checks.yml for PRs - This unblocks PR merging while avoiding test
|
789
879
|
duplication
|
790
880
|
|
881
|
+
- **ci**: Ensure Poetry is available in PATH for semantic-release build command
|
882
|
+
([`0a68f6e`](https://github.com/mindhiveoy/pyopenapi_gen/commit/0a68f6e4ace7fb998c4ddec14c7cf67713d7ce73))
|
883
|
+
|
884
|
+
- Add explicit PATH setup for Poetry before semantic-release step - Add verification step to confirm
|
885
|
+
Poetry availability - Fixes 'poetry: command not found' error in semantic release pipeline -
|
886
|
+
Resolves build command failure preventing automated releases
|
887
|
+
|
791
888
|
- **ci**: Ensure Poetry is available in PATH for semantic-release build command
|
792
889
|
([#46](https://github.com/mindhiveoy/pyopenapi_gen/pull/46),
|
793
890
|
[`3734aac`](https://github.com/mindhiveoy/pyopenapi_gen/commit/3734aacb74eda746375c7d88c45715a1f18f33a1))
|
@@ -66,11 +66,15 @@ security: deps
|
|
66
66
|
@echo "🔒 Running security checks..."
|
67
67
|
poetry run bandit -r src/ -c pyproject.toml -f json -o coverage_reports/bandit.json || poetry run bandit -r src/ -c pyproject.toml
|
68
68
|
|
69
|
+
version-check: deps
|
70
|
+
@echo "🔍 Validating version synchronisation..."
|
71
|
+
poetry run python scripts/validate_version_sync.py
|
72
|
+
|
69
73
|
# Combined quality commands
|
70
74
|
quality-fix: format lint-fix
|
71
75
|
@echo "✅ Auto-fixed all possible quality issues"
|
72
76
|
|
73
|
-
quality: format-check lint typecheck security
|
77
|
+
quality: format-check lint typecheck security version-check
|
74
78
|
@echo "✅ All quality checks passed"
|
75
79
|
|
76
80
|
# Testing commands
|
@@ -163,7 +167,7 @@ help:
|
|
163
167
|
@echo " clean - Clean all build artifacts and virtual environment"
|
164
168
|
@echo ""
|
165
169
|
@echo "Quality commands:"
|
166
|
-
@echo " quality - Run all quality checks (format, lint, typecheck, security)"
|
170
|
+
@echo " quality - Run all quality checks (format, lint, typecheck, security, version)"
|
167
171
|
@echo " quality-fix - Auto-fix formatting and linting issues"
|
168
172
|
@echo " format - Format code with Black"
|
169
173
|
@echo " format-check - Check code formatting"
|
@@ -171,6 +175,7 @@ help:
|
|
171
175
|
@echo " lint-fix - Auto-fix linting issues"
|
172
176
|
@echo " typecheck - Type check with mypy"
|
173
177
|
@echo " security - Security scan with Bandit"
|
178
|
+
@echo " version-check - Validate version synchronisation across files"
|
174
179
|
@echo ""
|
175
180
|
@echo "Testing commands:"
|
176
181
|
@echo " test - Run all tests with coverage (parallel, 85% required)"
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: pyopenapi-gen
|
3
|
-
Version: 0.
|
3
|
+
Version: 0.15.0
|
4
4
|
Summary: Modern, async-first Python client generator for OpenAPI specifications with advanced cycle detection and unified type resolution
|
5
5
|
Project-URL: Homepage, https://github.com/your-org/pyopenapi-gen
|
6
6
|
Project-URL: Documentation, https://github.com/your-org/pyopenapi-gen/blob/main/README.md
|