pyopenapi-gen 0.14.3__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.3 → pyopenapi_gen-0.15.0}/.github/workflows/semantic-release.yml +6 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/.gitignore +5 -1
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/CHANGELOG.md +59 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/Makefile +7 -2
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/PKG-INFO +1 -1
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/coverage.xml +93 -84
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/input/business_swagger.json +390 -210
- {pyopenapi_gen-0.14.3 → 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.3 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/__init__.py +1 -1
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/types/resolvers/schema_resolver.py +20 -2
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/types/services/type_service.py +4 -0
- pyopenapi_gen-0.15.0/tests/types/test_missing_imports_bug.py +202 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/tests/visit/test_model_visitor.py +5 -3
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/.bandit +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/.cursor/mcp.json +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/.cursor/rules/architecture.mdc +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/.cursor/rules/coding-conventions.mdc +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/.cursor/rules/project-goal.mdc +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/.cursor/rules/testing.mdc +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/.github/BRANCH_PROTECTION.md +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/.github/CLAUDE_CONFIGURATION.md +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/.github/CODEOWNERS +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/.github/dependabot.yml +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/.github/workflows/ci.yml +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/.github/workflows/claude-auto-approve.yml +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/.github/workflows/claude-review-trigger.yml +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/.github/workflows/claude.yml +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/.github/workflows/pr-checks.yml +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/.github/workflows/production-release.yml.backup +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/.github/workflows/promote-to-staging.yml +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/.github/workflows/staging-publish.yml +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/.github/workflows/testpypi-publish.yml +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/.python-version +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/.vscode/settings.json +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/CLAUDE.md +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/CONTRIBUTING.md +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/LICENSE +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/README.md +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/docs/README.md +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/docs/architecture.md +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/docs/endpoint_visitor.md +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/docs/helpers.md +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/docs/ir_models.md +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/docs/line_writer.md +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/docs/loader.md +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/docs/model_visitor.md +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/docs/release-automation.md +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/docs/render_context.md +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/docs/unified_type_resolution.md +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/input/minimal_swagger.json +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/input/minimal_syntax_test.json +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/input/test_name_collision_spec.json +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/mkdocs.yml +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/poetry.lock +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/__main__.py +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/cli.py +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/context/CLAUDE.md +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/context/file_manager.py +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/context/import_collector.py +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/context/render_context.py +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/core/CLAUDE.md +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/core/__init__.py +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/core/auth/base.py +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/core/auth/plugins.py +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/core/exceptions.py +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/core/http_status_codes.py +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/core/http_transport.py +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/core/loader/__init__.py +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/core/loader/loader.py +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/core/loader/operations/__init__.py +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/core/loader/operations/parser.py +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/core/loader/operations/post_processor.py +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/core/loader/operations/request_body.py +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/core/loader/parameters/__init__.py +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/core/loader/parameters/parser.py +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/core/loader/responses/__init__.py +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/core/loader/responses/parser.py +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/core/loader/schemas/__init__.py +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/core/loader/schemas/extractor.py +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/core/pagination.py +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/core/parsing/__init__.py +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/core/parsing/common/__init__.py +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/core/parsing/common/ref_resolution/__init__.py +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/core/parsing/common/ref_resolution/helpers/__init__.py +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/core/parsing/common/ref_resolution/helpers/cyclic_properties.py +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/core/parsing/common/ref_resolution/helpers/direct_cycle.py +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/core/parsing/common/ref_resolution/helpers/existing_schema.py +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/core/parsing/common/ref_resolution/helpers/list_response.py +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/core/parsing/common/ref_resolution/helpers/missing_ref.py +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/core/parsing/common/ref_resolution/helpers/new_schema.py +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/core/parsing/common/ref_resolution/helpers/stripped_suffix.py +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/core/parsing/common/ref_resolution/resolve_schema_ref.py +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/core/parsing/common/type_parser.py +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/core/parsing/context.py +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/core/parsing/cycle_helpers.py +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/core/parsing/keywords/__init__.py +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/core/parsing/keywords/all_of_parser.py +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/core/parsing/keywords/any_of_parser.py +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/core/parsing/keywords/array_items_parser.py +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/core/parsing/keywords/one_of_parser.py +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/core/parsing/keywords/properties_parser.py +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/core/parsing/schema_finalizer.py +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/core/parsing/schema_parser.py +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/core/parsing/transformers/__init__.py +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/core/parsing/transformers/inline_enum_extractor.py +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/core/parsing/transformers/inline_object_promoter.py +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/core/parsing/unified_cycle_detection.py +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/core/postprocess_manager.py +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/core/schemas.py +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/core/streaming_helpers.py +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/core/telemetry.py +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/core/utils.py +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/core/warning_collector.py +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/core/writers/code_writer.py +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/core/writers/documentation_writer.py +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/core/writers/line_writer.py +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/core/writers/python_construct_renderer.py +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/core_package_template/README.md +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/emit/models_emitter.py +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/emitters/CLAUDE.md +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/emitters/client_emitter.py +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/emitters/core_emitter.py +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/emitters/docs_emitter.py +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/emitters/endpoints_emitter.py +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/emitters/exceptions_emitter.py +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/emitters/models_emitter.py +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/generator/CLAUDE.md +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/generator/client_generator.py +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/helpers/CLAUDE.md +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/helpers/__init__.py +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/helpers/endpoint_utils.py +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/helpers/type_cleaner.py +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/helpers/type_helper.py +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/helpers/type_resolution/__init__.py +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/helpers/type_resolution/array_resolver.py +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/helpers/type_resolution/composition_resolver.py +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/helpers/type_resolution/finalizer.py +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/helpers/type_resolution/named_resolver.py +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/helpers/type_resolution/object_resolver.py +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/helpers/type_resolution/primitive_resolver.py +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/helpers/type_resolution/resolver.py +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/helpers/url_utils.py +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/http_types.py +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/ir.py +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/py.typed +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/types/CLAUDE.md +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/types/__init__.py +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/types/contracts/__init__.py +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/types/contracts/protocols.py +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/types/contracts/types.py +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/types/resolvers/__init__.py +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/types/resolvers/reference_resolver.py +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/types/resolvers/response_resolver.py +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/types/services/__init__.py +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/types/strategies/__init__.py +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/types/strategies/response_strategy.py +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/visit/CLAUDE.md +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/visit/client_visitor.py +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/visit/docs_visitor.py +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/visit/endpoint/__init__.py +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/visit/endpoint/endpoint_visitor.py +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/visit/endpoint/generators/__init__.py +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/visit/endpoint/generators/docstring_generator.py +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/visit/endpoint/generators/endpoint_method_generator.py +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/visit/endpoint/generators/request_generator.py +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/visit/endpoint/generators/response_handler_generator.py +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/visit/endpoint/generators/signature_generator.py +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/visit/endpoint/generators/url_args_generator.py +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/visit/endpoint/processors/__init__.py +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/visit/endpoint/processors/import_analyzer.py +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/visit/endpoint/processors/parameter_processor.py +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/visit/exception_visitor.py +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/visit/model/__init__.py +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/visit/model/alias_generator.py +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/visit/model/dataclass_generator.py +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/visit/model/enum_generator.py +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/visit/model/model_visitor.py +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/src/pyopenapi_gen/visit/visitor.py +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/tests/__init__.py +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/tests/auth/auth_analysis.md +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/tests/auth/test_auth_base.py +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/tests/auth/test_auth_plugins.py +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/tests/cli/cli_analysis.md +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/tests/cli/test_cli_backup_diff.py +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/tests/cli/test_cli_edge_cases.py +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/tests/cli/test_cli_edge_cases_comprehensive.py +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/tests/cli/test_cli_internal_utils.py +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/tests/cli/test_http_pagination_cli.py +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/tests/context/context_analysis.md +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/tests/context/test_core_import_path.py +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/tests/context/test_file_manager.py +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/tests/context/test_import_collector.py +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/tests/context/test_render_context.py +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/tests/context/test_render_context_imports.py +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/tests/context/test_render_context_relative_paths.py +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/tests/core/core_analysis.md +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/tests/core/loader/parameters/test_inline_enum_array_params.py +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/tests/core/loader/test_extractor.py +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/tests/core/loader/test_top_level_enum_extraction.py +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/tests/core/parsing/common/ref_resolution/helpers/helpers_analysis.md +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/tests/core/parsing/common/ref_resolution/helpers/test_cyclic_properties.py +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/tests/core/parsing/common/ref_resolution/helpers/test_direct_cycle.py +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/tests/core/parsing/common/ref_resolution/helpers/test_existing_schema.py +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/tests/core/parsing/common/ref_resolution/helpers/test_list_response.py +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/tests/core/parsing/common/ref_resolution/helpers/test_missing_ref.py +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/tests/core/parsing/common/ref_resolution/helpers/test_new_schema.py +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/tests/core/parsing/common/ref_resolution/helpers/test_stripped_suffix.py +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/tests/core/parsing/keywords/__init__.py +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/tests/core/parsing/keywords/keywords_analysis.md +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/tests/core/parsing/keywords/test_all_of_parser.py +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/tests/core/parsing/keywords/test_any_of_parser.py +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/tests/core/parsing/keywords/test_array_items_parser.py +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/tests/core/parsing/keywords/test_one_of_parser.py +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/tests/core/parsing/keywords/test_properties_parser.py +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/tests/core/parsing/parsing_analysis.md +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/tests/core/parsing/test_context.py +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/tests/core/parsing/test_cycle_detection.py +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/tests/core/parsing/test_cycle_helpers.py +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/tests/core/parsing/test_improved_schema_naming.py +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/tests/core/parsing/test_inline_enum_extractor.py +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/tests/core/parsing/test_inline_object_promoter.py +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/tests/core/parsing/test_logging.py +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/tests/core/parsing/test_ref_resolver.py +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/tests/core/parsing/test_schema_finalizer.py +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/tests/core/parsing/test_schema_parser.py +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/tests/core/parsing/test_schema_parser_list_response.py +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/tests/core/parsing/test_type_parser.py +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/tests/core/test_dataclass_serialization.py +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/tests/core/test_detect_circular_imports.py +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/tests/core/test_edge_cases_integration.py +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/tests/core/test_edge_cases_systematic.py +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/tests/core/test_exceptions_module.py +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/tests/core/test_forward_references.py +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/tests/core/test_http_transport.py +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/tests/core/test_import_resolution.py +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/tests/core/test_ir.py +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/tests/core/test_ir_schema.py +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/tests/core/test_loader.py +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/tests/core/test_loader_extensive.py +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/tests/core/test_loader_invalid_refs.py +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/tests/core/test_loader_malformed.py +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/tests/core/test_loader_media_types.py +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/tests/core/test_pagination.py +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/tests/core/test_parsing_context.py +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/tests/core/test_protocol_defaults.py +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/tests/core/test_schema_parser_specific_case.py +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/tests/core/test_schemas.py +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/tests/core/test_simple_self_ref_check.py +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/tests/core/test_streaming_helpers.py +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/tests/core/test_telemetry.py +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/tests/core/test_telemetry_client.py +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/tests/core/test_utils.py +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/tests/core/test_warning_collector.py +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/tests/core/writers/test_code_writer.py +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/tests/core/writers/test_documentation_writer.py +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/tests/core/writers/test_line_writer.py +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/tests/core/writers/test_python_construct_renderer_json_wizard.py +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/tests/core/writers/writers_analysis.md +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/tests/emitters/emitters_analysis.md +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/tests/emitters/test_client_emitter.py +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/tests/emitters/test_docs_emitter.py +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/tests/emitters/test_duplicate_operations.py +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/tests/emitters/test_endpoints_emitter.py +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/tests/emitters/test_exceptions_emitter.py +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/tests/emitters/test_list_response_generation.py +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/tests/emitters/test_models_emitter.py +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/tests/end_to_end/test_dataclass_serialization_e2e.py +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/tests/examples/test_developer_experience_demo.py +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/tests/generation/generation_analysis.md +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/tests/generation/test_external_core_package.py +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/tests/generation_issues/specs/minimal_addmessage_like.json +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/tests/generation_issues/test_addmessage_like_issues.py +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/tests/generation_issues/test_agent_include_parameter_typing.py +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/tests/generation_issues/test_message_batch_response_issue.py +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/tests/helpers/helpers_analysis.md +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/tests/helpers/test_array_resolver.py +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/tests/helpers/test_endpoint_utils.py +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/tests/helpers/test_endpoint_utils_extended.py +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/tests/helpers/test_get_endpoint_return_types.py +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/tests/helpers/test_named_resolver.py +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/tests/helpers/test_named_type_resolver.py +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/tests/helpers/test_object_resolver.py +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/tests/helpers/test_put_endpoint_return_types.py +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/tests/helpers/test_type_cleaner.py +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/tests/helpers/test_type_helper.py +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/tests/helpers/test_url_utils.py +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/tests/helpers/test_utils_helpers.py +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/tests/integration/test_generated_code_structure.py +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/tests/integrations/integrations_analysis.md +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/tests/integrations/test_business_swagger_message_type.py +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/tests/integrations/test_end_to_end_business_swagger.py +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/tests/integrations/test_end_to_end_petstore.py +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/tests/integrations/test_name_collisions.py +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/tests/specs/response_unwrapping_spec.yaml +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/tests/test_analysis_overview.md +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/tests/test_init.py +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/tests/types/__init__.py +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/tests/types/test_business_swagger_integration.py +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/tests/types/test_contracts_types.py +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/tests/types/test_reference_resolver.py +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/tests/types/test_response_resolver.py +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/tests/types/test_response_strategy.py +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/tests/types/test_response_strategy_simplified.py +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/tests/types/test_schema_resolver.py +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/tests/types/test_schema_resolver_enums.py +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/tests/types/test_type_service.py +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/tests/visit/__init__.py +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/tests/visit/endpoint/__init__.py +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/tests/visit/endpoint/generators/__init__.py +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/tests/visit/endpoint/generators/generators_analysis.md +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/tests/visit/endpoint/generators/test_dataclass_integration.py +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/tests/visit/endpoint/generators/test_docstring_generator.py +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/tests/visit/endpoint/generators/test_endpoint_method_generator.py +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/tests/visit/endpoint/generators/test_match_case_response.py +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/tests/visit/endpoint/generators/test_request_generator.py +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/tests/visit/endpoint/generators/test_response_handler_generator.py +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/tests/visit/endpoint/generators/test_response_handler_generator_strategy.py +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/tests/visit/endpoint/generators/test_signature_generator.py +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/tests/visit/endpoint/generators/test_url_args_generator.py +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/tests/visit/endpoint/processors/__init__.py +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/tests/visit/endpoint/processors/test_import_analyzer.py +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/tests/visit/endpoint/processors/test_import_analyzer.py.bak +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/tests/visit/endpoint/processors/test_parameter_processor.py +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/tests/visit/endpoint/test_endpoint_visitor.py +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/tests/visit/model/__init__.py +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/tests/visit/model/test_alias_generator.py +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/tests/visit/model/test_dataclass_generator.py +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/tests/visit/model/test_dataclass_generator_json_wizard.py +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/tests/visit/model/test_enum_generator.py +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/tests/visit/model/test_json_value_integration.py +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/tests/visit/model/test_json_value_wrapper.py +0 -0
- {pyopenapi_gen-0.14.3 → pyopenapi_gen-0.15.0}/tests/visit/test_client_visitor.py +0 -0
- {pyopenapi_gen-0.14.3 → 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,53 @@
|
|
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
|
+
|
4
51
|
## v0.14.3 (2025-10-11)
|
5
52
|
|
6
53
|
### Bug Fixes
|
@@ -112,6 +159,11 @@ Technical context: - mypy --strict requires explicit types for union type assign
|
|
112
159
|
|
113
160
|
Resolves: mypy error "Incompatible types in assignment (expression has type...)"
|
114
161
|
|
162
|
+
### Chores
|
163
|
+
|
164
|
+
- Merge latest changes from main
|
165
|
+
([`44487cc`](https://github.com/mindhiveoy/pyopenapi_gen/commit/44487cce571920b5e2c34814c38cbab67b956097))
|
166
|
+
|
115
167
|
### Code Style
|
116
168
|
|
117
169
|
- **format**: Apply Black formatting to modernised type syntax changes
|
@@ -826,6 +878,13 @@ All 1,265 tests now pass consistently across environments.
|
|
826
878
|
testing still handled by pr-checks.yml for PRs - This unblocks PR merging while avoiding test
|
827
879
|
duplication
|
828
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
|
+
|
829
888
|
- **ci**: Ensure Poetry is available in PATH for semantic-release build command
|
830
889
|
([#46](https://github.com/mindhiveoy/pyopenapi_gen/pull/46),
|
831
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
|
@@ -1,5 +1,5 @@
|
|
1
1
|
<?xml version="1.0" ?>
|
2
|
-
<coverage version="7.10.7" timestamp="
|
2
|
+
<coverage version="7.10.7" timestamp="1760207888499" lines-valid="6318" lines-covered="5572" line-rate="0.8819" branches-covered="0" branches-valid="0" branch-rate="0" complexity="0">
|
3
3
|
<!-- Generated by coverage.py: https://coverage.readthedocs.io/en/7.10.7 -->
|
4
4
|
<!-- Based on https://raw.githubusercontent.com/cobertura/web/master/htdocs/xml/coverage-04.dtd -->
|
5
5
|
<sources>
|
@@ -5179,7 +5179,7 @@
|
|
5179
5179
|
</class>
|
5180
5180
|
</classes>
|
5181
5181
|
</package>
|
5182
|
-
<package name="pyopenapi_gen.types.resolvers" line-rate="0.
|
5182
|
+
<package name="pyopenapi_gen.types.resolvers" line-rate="0.9259" branch-rate="0" complexity="0">
|
5183
5183
|
<classes>
|
5184
5184
|
<class name="__init__.py" filename="pyopenapi_gen/types/resolvers/__init__.py" complexity="0" line-rate="1" branch-rate="0">
|
5185
5185
|
<methods/>
|
@@ -5307,7 +5307,7 @@
|
|
5307
5307
|
<line number="177" hits="0"/>
|
5308
5308
|
</lines>
|
5309
5309
|
</class>
|
5310
|
-
<class name="schema_resolver.py" filename="pyopenapi_gen/types/resolvers/schema_resolver.py" complexity="0" line-rate="0.
|
5310
|
+
<class name="schema_resolver.py" filename="pyopenapi_gen/types/resolvers/schema_resolver.py" complexity="0" line-rate="0.939" branch-rate="0">
|
5311
5311
|
<methods/>
|
5312
5312
|
<lines>
|
5313
5313
|
<line number="3" hits="1"/>
|
@@ -5398,128 +5398,136 @@
|
|
5398
5398
|
<line number="199" hits="1"/>
|
5399
5399
|
<line number="200" hits="0"/>
|
5400
5400
|
<line number="202" hits="0"/>
|
5401
|
-
<line number="
|
5401
|
+
<line number="207" hits="1"/>
|
5402
5402
|
<line number="208" hits="1"/>
|
5403
|
+
<line number="209" hits="1"/>
|
5403
5404
|
<line number="211" hits="1"/>
|
5404
|
-
<line number="
|
5405
|
-
<line number="
|
5406
|
-
<line number="
|
5407
|
-
<line number="
|
5408
|
-
<line number="
|
5409
|
-
<line number="224" hits="1"/>
|
5405
|
+
<line number="212" hits="1"/>
|
5406
|
+
<line number="213" hits="1"/>
|
5407
|
+
<line number="215" hits="1"/>
|
5408
|
+
<line number="218" hits="1"/>
|
5409
|
+
<line number="222" hits="1"/>
|
5410
5410
|
<line number="225" hits="1"/>
|
5411
|
-
<line number="
|
5412
|
-
<line number="229" hits="1"/>
|
5411
|
+
<line number="228" hits="1"/>
|
5413
5412
|
<line number="231" hits="1"/>
|
5413
|
+
<line number="233" hits="1"/>
|
5414
|
+
<line number="234" hits="1"/>
|
5415
|
+
<line number="237" hits="1"/>
|
5416
|
+
<line number="238" hits="1"/>
|
5414
5417
|
<line number="239" hits="1"/>
|
5415
|
-
<line number="
|
5416
|
-
<line number="
|
5417
|
-
<line number="
|
5418
|
-
<line number="
|
5419
|
-
<line number="
|
5420
|
-
<line number="
|
5421
|
-
<line number="254" hits="1"/>
|
5422
|
-
<line number="259" hits="1"/>
|
5418
|
+
<line number="241" hits="1"/>
|
5419
|
+
<line number="243" hits="1"/>
|
5420
|
+
<line number="247" hits="1"/>
|
5421
|
+
<line number="249" hits="1"/>
|
5422
|
+
<line number="257" hits="1"/>
|
5423
|
+
<line number="260" hits="1"/>
|
5423
5424
|
<line number="262" hits="1"/>
|
5424
|
-
<line number="
|
5425
|
-
<line number="
|
5426
|
-
<line number="
|
5427
|
-
<line number="
|
5425
|
+
<line number="266" hits="1"/>
|
5426
|
+
<line number="269" hits="1"/>
|
5427
|
+
<line number="270" hits="1"/>
|
5428
|
+
<line number="271" hits="1"/>
|
5429
|
+
<line number="272" hits="1"/>
|
5430
|
+
<line number="277" hits="1"/>
|
5428
5431
|
<line number="280" hits="1"/>
|
5429
5432
|
<line number="281" hits="1"/>
|
5430
5433
|
<line number="282" hits="1"/>
|
5431
|
-
<line number="283" hits="1"/>
|
5432
|
-
<line number="284" hits="0"/>
|
5433
|
-
<line number="285" hits="1"/>
|
5434
|
-
<line number="286" hits="1"/>
|
5435
|
-
<line number="288" hits="1"/>
|
5436
|
-
<line number="290" hits="1"/>
|
5437
|
-
<line number="292" hits="1"/>
|
5438
5434
|
<line number="294" hits="1"/>
|
5439
|
-
<line number="
|
5435
|
+
<line number="297" hits="1"/>
|
5440
5436
|
<line number="298" hits="1"/>
|
5437
|
+
<line number="299" hits="1"/>
|
5441
5438
|
<line number="300" hits="1"/>
|
5442
|
-
<line number="
|
5439
|
+
<line number="301" hits="1"/>
|
5440
|
+
<line number="302" hits="0"/>
|
5441
|
+
<line number="303" hits="1"/>
|
5443
5442
|
<line number="304" hits="1"/>
|
5443
|
+
<line number="306" hits="1"/>
|
5444
|
+
<line number="308" hits="1"/>
|
5444
5445
|
<line number="310" hits="1"/>
|
5445
|
-
<line number="
|
5446
|
-
<line number="
|
5447
|
-
<line number="
|
5446
|
+
<line number="312" hits="1"/>
|
5447
|
+
<line number="314" hits="1"/>
|
5448
|
+
<line number="316" hits="1"/>
|
5448
5449
|
<line number="318" hits="1"/>
|
5449
|
-
<line number="319" hits="1"/>
|
5450
5450
|
<line number="320" hits="1"/>
|
5451
|
-
<line number="321" hits="1"/>
|
5452
5451
|
<line number="322" hits="1"/>
|
5453
|
-
<line number="
|
5454
|
-
<line number="
|
5455
|
-
<line number="
|
5456
|
-
<line number="
|
5457
|
-
<line number="330" hits="1"/>
|
5452
|
+
<line number="328" hits="1"/>
|
5453
|
+
<line number="329" hits="1"/>
|
5454
|
+
<line number="331" hits="1"/>
|
5455
|
+
<line number="335" hits="1"/>
|
5458
5456
|
<line number="336" hits="1"/>
|
5457
|
+
<line number="337" hits="1"/>
|
5458
|
+
<line number="338" hits="1"/>
|
5459
5459
|
<line number="339" hits="1"/>
|
5460
|
+
<line number="340" hits="1"/>
|
5461
|
+
<line number="341" hits="1"/>
|
5460
5462
|
<line number="342" hits="1"/>
|
5461
5463
|
<line number="343" hits="1"/>
|
5462
|
-
<line number="344" hits="
|
5463
|
-
<line number="346" hits="1"/>
|
5464
|
+
<line number="344" hits="1"/>
|
5464
5465
|
<line number="348" hits="1"/>
|
5465
|
-
<line number="350" hits="1"/>
|
5466
|
-
<line number="352" hits="1"/>
|
5467
5466
|
<line number="354" hits="1"/>
|
5468
|
-
<line number="
|
5469
|
-
<line number="356" hits="1"/>
|
5470
|
-
<line number="359" hits="1"/>
|
5467
|
+
<line number="357" hits="1"/>
|
5471
5468
|
<line number="360" hits="1"/>
|
5472
5469
|
<line number="361" hits="1"/>
|
5473
|
-
<line number="362" hits="
|
5470
|
+
<line number="362" hits="0"/>
|
5474
5471
|
<line number="364" hits="1"/>
|
5475
5472
|
<line number="366" hits="1"/>
|
5476
|
-
<line number="
|
5477
|
-
<line number="
|
5473
|
+
<line number="368" hits="1"/>
|
5474
|
+
<line number="370" hits="1"/>
|
5475
|
+
<line number="372" hits="1"/>
|
5478
5476
|
<line number="373" hits="1"/>
|
5479
|
-
<line number="374" hits="
|
5480
|
-
<line number="376" hits="1"/>
|
5477
|
+
<line number="374" hits="1"/>
|
5481
5478
|
<line number="377" hits="1"/>
|
5479
|
+
<line number="378" hits="1"/>
|
5482
5480
|
<line number="379" hits="1"/>
|
5481
|
+
<line number="380" hits="1"/>
|
5482
|
+
<line number="382" hits="1"/>
|
5483
|
+
<line number="384" hits="1"/>
|
5483
5484
|
<line number="385" hits="1"/>
|
5484
|
-
<line number="
|
5485
|
-
<line number="
|
5486
|
-
<line number="
|
5487
|
-
<line number="392" hits="1"/>
|
5485
|
+
<line number="387" hits="1"/>
|
5486
|
+
<line number="391" hits="1"/>
|
5487
|
+
<line number="392" hits="0"/>
|
5488
5488
|
<line number="394" hits="1"/>
|
5489
5489
|
<line number="395" hits="1"/>
|
5490
|
-
<line number="
|
5491
|
-
<line number="
|
5492
|
-
<line number="
|
5493
|
-
<line number="
|
5494
|
-
<line number="
|
5490
|
+
<line number="397" hits="1"/>
|
5491
|
+
<line number="403" hits="1"/>
|
5492
|
+
<line number="407" hits="1"/>
|
5493
|
+
<line number="408" hits="1"/>
|
5494
|
+
<line number="409" hits="0"/>
|
5495
5495
|
<line number="410" hits="1"/>
|
5496
|
-
<line number="
|
5497
|
-
<line number="
|
5498
|
-
<line number="415" hits="1"/>
|
5496
|
+
<line number="412" hits="1"/>
|
5497
|
+
<line number="413" hits="1"/>
|
5499
5498
|
<line number="416" hits="1"/>
|
5499
|
+
<line number="417" hits="1"/>
|
5500
|
+
<line number="418" hits="1"/>
|
5500
5501
|
<line number="420" hits="1"/>
|
5501
5502
|
<line number="422" hits="1"/>
|
5502
|
-
<line number="
|
5503
|
-
<line number="
|
5504
|
-
<line number="429" hits="1"/>
|
5505
|
-
<line number="430" hits="1"/>
|
5503
|
+
<line number="428" hits="1"/>
|
5504
|
+
<line number="429" hits="0"/>
|
5506
5505
|
<line number="432" hits="1"/>
|
5506
|
+
<line number="433" hits="1"/>
|
5507
|
+
<line number="434" hits="1"/>
|
5507
5508
|
<line number="438" hits="1"/>
|
5508
|
-
<line number="
|
5509
|
-
<line number="
|
5510
|
-
<line number="
|
5511
|
-
<line number="445" hits="1"/>
|
5509
|
+
<line number="440" hits="1"/>
|
5510
|
+
<line number="444" hits="1"/>
|
5511
|
+
<line number="445" hits="0"/>
|
5512
5512
|
<line number="447" hits="1"/>
|
5513
5513
|
<line number="448" hits="1"/>
|
5514
|
-
<line number="
|
5515
|
-
<line number="
|
5516
|
-
<line number="
|
5517
|
-
<line number="
|
5514
|
+
<line number="450" hits="1"/>
|
5515
|
+
<line number="456" hits="1"/>
|
5516
|
+
<line number="460" hits="1"/>
|
5517
|
+
<line number="461" hits="1"/>
|
5518
|
+
<line number="462" hits="0"/>
|
5519
|
+
<line number="463" hits="1"/>
|
5520
|
+
<line number="465" hits="1"/>
|
5521
|
+
<line number="466" hits="1"/>
|
5522
|
+
<line number="469" hits="1"/>
|
5523
|
+
<line number="470" hits="1"/>
|
5524
|
+
<line number="471" hits="1"/>
|
5525
|
+
<line number="473" hits="1"/>
|
5518
5526
|
</lines>
|
5519
5527
|
</class>
|
5520
5528
|
</classes>
|
5521
5529
|
</package>
|
5522
|
-
<package name="pyopenapi_gen.types.services" line-rate="0.
|
5530
|
+
<package name="pyopenapi_gen.types.services" line-rate="0.8947" branch-rate="0" complexity="0">
|
5523
5531
|
<classes>
|
5524
5532
|
<class name="__init__.py" filename="pyopenapi_gen/types/services/__init__.py" complexity="0" line-rate="1" branch-rate="0">
|
5525
5533
|
<methods/>
|
@@ -5528,7 +5536,7 @@
|
|
5528
5536
|
<line number="5" hits="1"/>
|
5529
5537
|
</lines>
|
5530
5538
|
</class>
|
5531
|
-
<class name="type_service.py" filename="pyopenapi_gen/types/services/type_service.py" complexity="0" line-rate="0.
|
5539
|
+
<class name="type_service.py" filename="pyopenapi_gen/types/services/type_service.py" complexity="0" line-rate="0.8909" branch-rate="0">
|
5532
5540
|
<methods/>
|
5533
5541
|
<lines>
|
5534
5542
|
<line number="3" hits="1"/>
|
@@ -5581,10 +5589,11 @@
|
|
5581
5589
|
<line number="146" hits="1"/>
|
5582
5590
|
<line number="147" hits="1"/>
|
5583
5591
|
<line number="151" hits="1"/>
|
5584
|
-
<line number="152" hits="1"/>
|
5585
5592
|
<line number="155" hits="1"/>
|
5586
|
-
<line number="156" hits="
|
5587
|
-
<line number="
|
5593
|
+
<line number="156" hits="1"/>
|
5594
|
+
<line number="159" hits="1"/>
|
5595
|
+
<line number="160" hits="0"/>
|
5596
|
+
<line number="165" hits="1"/>
|
5588
5597
|
</lines>
|
5589
5598
|
</class>
|
5590
5599
|
</classes>
|