df-test-framework 4.7.3__tar.gz → 4.7.5__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.
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/AGENTS.md +2 -2
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/CHANGELOG.md +31 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/CLAUDE.md +2 -2
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/PKG-INFO +1 -1
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/README.md +2 -2
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/ESSENTIAL_DOCS.md +2 -2
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/README.md +3 -2
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/api-reference/extensions.md +22 -71
- df_test_framework-4.7.5/docs/architecture/observability-modernization.md +146 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/guides/extensions.md +18 -18
- df_test_framework-4.7.5/docs/guides/plugin_hooks_guide.md +176 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/releases/README.md +3 -2
- df_test_framework-4.7.5/docs/releases/v4.7.4.md +66 -0
- df_test_framework-4.7.5/docs/releases/v4.7.5.md +80 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/pyproject.toml +1 -1
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/__init__.py +1 -1
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/bootstrap/bootstrap.py +18 -9
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/bootstrap/providers.py +27 -3
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/bootstrap/runtime.py +7 -3
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/capabilities/clients/grpc/client.py +3 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/capabilities/clients/http/middleware/event_publisher.py +20 -12
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/capabilities/clients/http/rest/httpx/async_client.py +5 -2
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/capabilities/clients/http/rest/httpx/client.py +4 -2
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/infrastructure/plugins/hooks.py +14 -24
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/plugins/__init__.py +2 -3
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/plugins/builtin/monitoring/plugin.py +5 -6
- df_test_framework-4.7.5/src/df_test_framework/plugins/builtin/reporting/__init__.py +11 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/plugins/builtin/reporting/allure_plugin.py +0 -37
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/testing/fixtures/core.py +71 -32
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/tests/bootstrap/test_bootstrap.py +77 -0
- df_test_framework-4.7.5/tests/bootstrap/test_plugin_middlewares.py +52 -0
- df_test_framework-4.7.5/tests/capabilities/clients/http/middleware/test_event_publisher.py +78 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/tests/plugins/builtin/monitoring/test_plugin.py +5 -5
- df_test_framework-4.7.5/tests/testing/fixtures/test_lifecycle_hooks.py +34 -0
- df_test_framework-4.7.5/tests/testing/fixtures/test_plugin_lifecycle_integration.py +48 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/uv.lock +1 -1
- df_test_framework-4.7.3/src/df_test_framework/plugins/builtin/reporting/__init__.py +0 -14
- df_test_framework-4.7.3/src/df_test_framework/plugins/builtin/reporting/oms_reporter_plugin.py +0 -158
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/.editorconfig +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/.env.example +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/.gitattributes +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/.github/workflows/README.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/.github/workflows/lint.yml +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/.github/workflows/release.yml +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/.github/workflows/scheduled.yml +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/.github/workflows/security.yml +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/.github/workflows/test.yml +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/.gitignore +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/.gitleaks.toml +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/.gitleaksignore +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/.pre-commit-config.yaml +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/.python-version +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/CONTRIBUTING.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/README_PYPI.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/CONTRIBUTOR_GUIDE.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/DOC_REORGANIZATION_PLAN_v4.0.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/FAQ.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/LEARNING_PATH.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/api-reference/README.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/api-reference/clients.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/api-reference/core/README.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/api-reference/core/context.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/api-reference/core/events.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/api-reference/core/exceptions.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/api-reference/core/middleware.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/api-reference/core/protocols.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/api-reference/core/types.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/api-reference/core.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/api-reference/databases.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/api-reference/drivers.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/api-reference/infrastructure.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/api-reference/patterns.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/api-reference/testing.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/architecture/ARCHITECTURE_V4.0.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/architecture/CODE_STRUCTURE.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/architecture/PLUGIN_SYSTEM_V3.37.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/architecture/README.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/architecture/TEST_EXECUTION_LIFECYCLE.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/architecture/archive/README.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/architecture/archive/REFACTORING_PLAN_V3.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/architecture/archive/REFACTORING_PLAN_V3_REVISED.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/architecture/archive/design/DI_STRATEGY.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/architecture/archive/design/PREPARE_DATA_DESIGN.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/architecture/archive/design/TESTING_MODULE_OPTIMIZATION.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/architecture/archive/design/UOW_CLEANUP_ARCHITECTURE.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/architecture/archive/design/UOW_REFACTORING_PROPOSAL.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/architecture/archive/design/allure_integration_modes.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/architecture/archive/design/capability_plan_vs_current.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/architecture/archive/design/config-driven-design.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/architecture/archive/design/config-management-analysis.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/architecture/archive/design/eventbus-integration-analysis.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/architecture/archive/design/failure-diagnosis-v2-design.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/architecture/archive/design/future_allure_plugin_plans.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/architecture/archive/design/http-vs-web-comparison.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/architecture/archive/design/observability-debugging-unification.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/architecture/archive/design/provider-pattern-deep-dive.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/architecture/archive/design/tech-debt-cleanup-plan.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/architecture/archive/design/ui-failure-diagnosis-implementation-v3.46.3.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/architecture/archive/design/ui-observability-design.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/architecture/archive/discussion_1_initial_issues.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/architecture/archive/v3_complete_draft.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/architecture/archive/v3_final_draft.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/architecture/archive/versions/FRAMEWORK_ARCHITECTURE_v3.6.2.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/architecture/archive/versions/OVERVIEW_V3.17.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/architecture/archive/versions/V3.14_ENTERPRISE_PLATFORM_DESIGN.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/architecture/archive/versions/V3.16_LAYER4_BOOTSTRAP_ARCHITECTURE.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/architecture/archive/versions/V3.17_EVENT_SYSTEM_REDESIGN.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/architecture/archive/versions/V3_ARCHITECTURE.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/architecture/archive/versions/V3_IMPLEMENTATION.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/architecture/archive/versions/overview.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/architecture/archive/versions/v2-architecture.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/architecture/extension-points.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/architecture/failure-diagnosis-hook-example.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/architecture/multi-project-reuse.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/architecture/observability-architecture.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/architecture/test-type-support.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/architecture//344/272/224/345/261/202/346/236/266/346/236/204/350/257/246/350/247/243.md" +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/archive/README.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/archive/analysis/ACTION_PLAN_v2.0.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/archive/analysis/AUDIT_VERIFICATION_REPORT.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/archive/analysis/AUTH_PLACEMENT_ANALYSIS.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/archive/analysis/CODE_REVIEW_f95e08cd.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/archive/analysis/COMPREHENSIVE_FEATURE_AUDIT.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/archive/analysis/FRAMEWORK_OPTIMIZATION_ANALYSIS_2025.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/archive/analysis/PHASE2_COMPARISON_ANALYSIS.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/archive/analysis/PHASE2_COMPLETION_REPORT.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/archive/analysis/PHASE2_SUMMARY.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/archive/analysis/README.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/archive/analysis/V3_REFACTORING_COMPLETE.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/archive/analysis_2025/ALLURE_HTTP_LOGGING_ISSUE.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/archive/analysis_2025/ALLURE_INTEGRATION_CHECK_REPORT.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/archive/analysis_2025/ALLURE_INTEGRATION_DESIGN.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/archive/analysis_2025/ALLURE_INTEGRATION_SUMMARY.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/archive/analysis_2025/ALLURE_ROOT_CAUSE_ANALYSIS.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/archive/analysis_2025/CODE_ANALYSIS_AND_PROGRESS.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/archive/analysis_2025/COMPREHENSIVE_FRAMEWORK_EVALUATION.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/archive/analysis_2025/CONFIG_MODERNIZATION_ANALYSIS.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/archive/design/ARCHITECTURE_AUDIT.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/archive/design/FUTURE_ENHANCEMENTS.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/archive/design/IMPLEMENTATION_SUMMARY.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/archive/design/MIDDLEWARE_V3.14_DESIGN.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/archive/design/ROADMAP_V3.29_ENHANCEMENTS.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/archive/design/SIGNATURE_FRAMEWORK_CAPABILITIES.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/archive/design/TEMPLATE_DEBUG_FIXTURES_ISSUE.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/archive/design/observability-config-design.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/archive/design/ui-best-practices-2026.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/archive/design/web-architecture-consistency-design.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/archive/design/web-event-driven-comparison.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/archive/evaluations_2025/DUAL_AI_ANALYSIS_COMPARISON.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/archive/evaluations_2025/FRAMEWORK_ASSESSMENT.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/archive/evaluations_2025/FRAMEWORK_BEST_PRACTICES_UPDATE.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/archive/evaluations_2025/FRAMEWORK_CAPABILITIES.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/archive/evaluations_2025/FRAMEWORK_IMPROVEMENT_PROPOSALS.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/archive/guides/async_database_guide.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/archive/guides/async_http_client.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/archive/guides/httpx_advanced_usage.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/archive/guides/logging_configuration.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/archive/guides/logging_pytest_integration.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/archive/guides/modern_logging_best_practices.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/archive/guides/repository_uow_guide.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/archive/interceptor_refactoring/111.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/archive/interceptor_refactoring/CONFIG_AND_INTERCEPTOR_INTEGRATION.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/archive/interceptor_refactoring/DIRECTORY_STRUCTURE_REFACTORING.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/archive/interceptor_refactoring/INTERCEPTOR_ARCHITECTURE.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/archive/interceptor_refactoring/INTERCEPTOR_ARCHITECTURE_VERIFICATION.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/archive/interceptor_refactoring/INTERCEPTOR_CONFIG_BEST_PRACTICES.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/archive/interceptor_refactoring/INTERCEPTOR_IDEAL_DESIGN.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/archive/interceptor_refactoring/INTERCEPTOR_IDEAL_VS_ACTUAL.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/archive/interceptor_refactoring/INTERCEPTOR_LOCATION_DECISION.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/archive/interceptor_refactoring/INTERCEPTOR_NAMING_STANDARDS.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/archive/interceptor_refactoring/INTERCEPTOR_PERFORMANCE_ANALYSIS.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/archive/interceptor_refactoring/README.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/archive/interceptor_refactoring/REFACTORING_IMPLEMENTATION_PLAN.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/archive/interceptor_refactoring/REFACTORING_PROGRESS.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/archive/issues/README.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/archive/issues/summary.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/archive/issues/v1.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/archive/migration/README.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/archive/migration/v3.15-to-v3.16.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/archive/plans/CAPABILITY_LAYER_OPTIMIZATION.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/archive/plans/REFACTORING_PLAN_v2.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/archive/plans/REFACTORING_TASKS_v2.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/archive/plans/RFC_MULTIPART_FORM_DATA_SUPPORT.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/archive/plans/RFC_MULTIPART_IMPLEMENTATION_CODE.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/archive/plans/UV_SYNC_MIGRATION_SUMMARY.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/archive/plans/UV_SYNC_QUICK_START.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/archive/plans/v2-migration-plan-draft.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/archive/reports_2025/CHANGELOG_AUDIT_REPORT.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/archive/reports_2025/CODE_QUALITY_FIXES_2025-11-09.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/archive/reports_2025/CORE_DOCS_UPDATE_PLAN.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/archive/reports_2025/DOCUMENTATION_AUDIT_REPORT_2025-12-05.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/archive/reports_2025/DOCUMENTATION_CLEANUP_SUMMARY.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/archive/reports_2025/DOCUMENTATION_INDEX.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/archive/reports_2025/DOCUMENTATION_MAINTENANCE_COMPLETE.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/archive/reports_2025/DOCUMENTATION_UPDATE_CHECKLIST.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/archive/reports_2025/DOC_UPDATE_SUMMARY.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/archive/reports_2025/IMPROVEMENTS_2025-01-09.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/archive/reports_2025/PHASE3_COMPLETION_REPORT.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/archive/reports_2025/PYTHON_VERSION_UNIFICATION.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/archive/reports_2025/REFACTORING_COMPLETION_CHECK.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/archive/reports_2025/TEST_CODE_GENERATION_ANALYSIS.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/archive/reports_2025/V3.3.0_DOCUMENTATION_UPDATE_SUMMARY.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/archive/reports_2025/V3.3.0_MIGRATION_CHECKLIST.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/archive/reports_2025/V3.5_ALLURE_INTEGRATION_PLAN.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/archive/reports_2025/V3.5_DOCUMENTATION_COMPLETE.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/archive/reports_2025/V3.5_OBSERVABILITY_FINAL_STATUS.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/archive/reports_2025/V3.5_PHASE2_ACCEPTANCE_REPORT.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/archive/reports_2025/V3.5_REFACTOR_PLAN.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/archive/reports_2025/V3.5_REFACTOR_PLAN_REVISED.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/archive/reports_2025/VERIFIED_BEST_PRACTICES_INTEGRATION_COMPLETE.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/archive/reports_2025/async_http_client_design.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/archive/user-guide/PHASE3_FEATURES.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/archive/user-guide/extensions.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/archive/user-guide/ui-testing.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/archive/v1/BaseAPI/346/234/200/344/275/263/345/256/236/350/267/265/346/214/207/345/215/227.md" +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/archive/v1/FRAMEWORK_DESIGN_PRINCIPLES.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/archive/v1/README.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/archive/v1/UPGRADE_SUMMARY_v1.3.1.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/archive/v1/architecture.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/archive/v1/best-practices.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/archive/v1/config-integration-guide.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/archive/v1/optimization-report.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/archive/v1/publishing.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/archive/v1//344/270/272/344/273/200/344/271/210/351/200/211/346/213/251/346/265/213/350/257/225/346/241/206/346/236/266.md" +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/archive/versions/QUICK_START_V3.14.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/archive/versions/QUICK_START_V3.5.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/ci-templates/README.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/ci-templates/github-actions.yml +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/ci-templates/gitlab-ci.yml +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/development/DOCUMENTATION_MAINTENANCE.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/development/FRAMEWORK_DEPENDENCY_MANAGEMENT.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/development/RELEASE.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/development/VERSION_CONTROL_RULES.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/development/local-development.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/guides/DECIMAL_GUIDE.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/guides/allure_plugin.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/guides/assertions_guide.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/guides/async_api_guide.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/guides/auth_session_guide.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/guides/bootstrap_guide.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/guides/config_guide.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/guides/database_guide.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/guides/decorators_guide.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/guides/distributed_tracing.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/guides/event_bus_guide.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/guides/factory_guide.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/guides/fixture_chain_pattern.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/guides/fixtures_guide.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/guides/graphql_client.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/guides/grpc_client.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/guides/helpers_guide.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/guides/http_client_guide.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/guides/integration-guide.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/guides/local_debug_quickstart.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/guides/logging_guide.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/guides/message_queue.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/guides/middleware_guide.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/guides/mocking.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/guides/monitoring_plugin.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/guides/openapi_guide.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/guides/plugins_guide.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/guides/prometheus_metrics.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/guides/redis_guide.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/guides/resilience_guide.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/guides/sanitize_guide.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/guides/scaffold_cli_guide.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/guides/service_client_guide.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/guides/storage.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/guides/telemetry_guide.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/guides/test_data.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/guides/test_data_cleanup.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/guides/test_data_pipeline_design.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/guides/testing-development.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/guides/web-ui-testing.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/migration/README.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/migration/v3-to-v4.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/releases/v3.0.0-alpha.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/releases/v3.1.0.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/releases/v3.10.0.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/releases/v3.11.0.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/releases/v3.11.1.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/releases/v3.12.0.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/releases/v3.12.1.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/releases/v3.13.0.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/releases/v3.14.0.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/releases/v3.14.0_completion_report.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/releases/v3.14.0_implementation_complete.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/releases/v3.16.0.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/releases/v3.17.0.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/releases/v3.17.1.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/releases/v3.17.2.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/releases/v3.18.0.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/releases/v3.18.1-bugfix.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/releases/v3.18.1.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/releases/v3.19.0.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/releases/v3.2.0.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/releases/v3.20.0.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/releases/v3.21.0.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/releases/v3.22.0.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/releases/v3.22.1.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/releases/v3.23.0.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/releases/v3.24.0.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/releases/v3.25.0.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/releases/v3.26.0.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/releases/v3.27.0.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/releases/v3.28.0.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/releases/v3.28.1.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/releases/v3.29.0.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/releases/v3.3.0.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/releases/v3.30.0.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/releases/v3.31.0.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/releases/v3.32.0.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/releases/v3.33.0.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/releases/v3.34.0.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/releases/v3.34.1.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/releases/v3.35.0.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/releases/v3.35.1.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/releases/v3.35.2.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/releases/v3.35.3.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/releases/v3.35.4.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/releases/v3.35.5.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/releases/v3.35.6.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/releases/v3.35.7.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/releases/v3.36.0.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/releases/v3.36.1.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/releases/v3.37.0.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/releases/v3.38.0.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/releases/v3.38.10.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/releases/v3.38.2.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/releases/v3.38.4.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/releases/v3.38.5.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/releases/v3.38.7.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/releases/v3.38.8.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/releases/v3.38.9.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/releases/v3.39.0.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/releases/v3.39.1.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/releases/v3.4.0.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/releases/v3.40.0.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/releases/v3.41.0.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/releases/v3.41.1.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/releases/v3.42.0.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/releases/v3.43.0.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/releases/v3.44.0.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/releases/v3.45.0.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/releases/v3.46.1.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/releases/v3.46.2.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/releases/v3.46.3.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/releases/v3.5.0.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/releases/v3.6.0.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/releases/v3.6.1.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/releases/v3.6.2.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/releases/v3.7.0.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/releases/v3.8.0.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/releases/v3.9.0.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/releases/v4.0.0.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/releases/v4.0.1.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/releases/v4.0.2.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/releases/v4.0.3.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/releases/v4.0.4.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/releases/v4.1.0.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/releases/v4.1.1.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/releases/v4.1.2.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/releases/v4.2.0.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/releases/v4.2.1.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/releases/v4.2.2.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/releases/v4.3.0.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/releases/v4.3.1.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/releases/v4.4.0.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/releases/v4.4.1.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/releases/v4.4.2.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/releases/v4.4.3.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/releases/v4.4.4.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/releases/v4.5.0.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/releases/v4.6.0.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/releases/v4.6.1.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/releases/v4.7.0.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/releases/v4.7.1.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/releases/v4.7.2.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/releases/v4.7.3.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/skills/write-code.zip +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/skills/write-test.zip +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/troubleshooting/README.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/troubleshooting/common-errors.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/troubleshooting/debugging-guide.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/user-guide/BEST_PRACTICES.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/user-guide/QUICK_REFERENCE.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/user-guide/QUICK_START.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/user-guide/README.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/user-guide/USER_MANUAL.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/user-guide/VERIFIED_BEST_PRACTICES.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/user-guide/ci-cd.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/user-guide/code-generation.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/user-guide/configuration.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/user-guide/cross-project-sharing.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/user-guide/debugging.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/user-guide/examples.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/user-guide/multi-repo.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/user-guide/nested-settings-guide.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/docs/user-guide/security-best-practices.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/examples/01-basic/README.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/examples/01-basic/database_operations.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/examples/01-basic/http_client_usage.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/examples/01-basic/redis_cache.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/examples/01-basic/storage_usage.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/examples/02-bootstrap/README.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/examples/02-bootstrap/custom_providers.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/examples/02-bootstrap/custom_settings.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/examples/02-bootstrap/minimal_bootstrap.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/examples/02-bootstrap/with_extensions.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/examples/03-testing/README.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/examples/03-testing/conftest.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/examples/03-testing/test_api.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/examples/03-testing/test_database.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/examples/03-testing/test_with_fixtures.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/examples/04-patterns/README.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/examples/04-patterns/builder_pattern.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/examples/04-patterns/combined_patterns.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/examples/04-patterns/repository_pattern.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/examples/05-extensions/README.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/examples/05-extensions/allure_enhancement_extension.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/examples/05-extensions/custom_extension.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/examples/05-extensions/data_factory_extension.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/examples/05-extensions/environment_validator_extension.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/examples/05-extensions/monitoring_extension.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/examples/05-extensions/mq_monitor_extension.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/examples/05-extensions/notification_extension.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/examples/06-ui-testing/README.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/examples/06-ui-testing/basic_ui_test.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/examples/06-ui-testing/conftest.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/examples/06-ui-testing/page_object_example.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/examples/07-message-queue/README.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/examples/07-message-queue/docker-compose-kafka.yml +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/examples/07-message-queue/docker-compose-rabbitmq.yml +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/examples/07-message-queue/docker-compose-rocketmq.yml +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/examples/07-message-queue/kafka_basic.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/examples/07-message-queue/kafka_ssl.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/examples/07-message-queue/rabbitmq_basic.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/examples/07-message-queue/rabbitmq_topic.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/examples/07-message-queue/rocketmq-broker.conf +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/examples/07-message-queue/rocketmq_basic.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/examples/07-v35-features/01_configurable_interceptors.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/examples/07-v35-features/02_profile_configuration.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/examples/07-v35-features/03_runtime_overrides.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/examples/07-v35-features/04_observability.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/examples/07-v35-features/README.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/examples/08-v37-features/01_unit_of_work_basics.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/examples/08-v37-features/02_repository_v37.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/examples/08-v37-features/03_auto_rollback_testing.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/examples/08-v37-features/04_multi_repository_transactions.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/examples/08-v37-features/05_project_uow.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/examples/08-v37-features/06_exception_handling_with_uow.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/examples/08-v37-features/README.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/examples/README.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/scripts/fetch_swagger.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/scripts/security-scan.bat +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/scripts/security-scan.sh +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/bootstrap/__init__.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/capabilities/__init__.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/capabilities/clients/__init__.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/capabilities/clients/graphql/__init__.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/capabilities/clients/graphql/client.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/capabilities/clients/graphql/middleware/__init__.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/capabilities/clients/graphql/middleware/base.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/capabilities/clients/graphql/middleware/event_publisher.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/capabilities/clients/graphql/middleware/logging.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/capabilities/clients/graphql/middleware/retry.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/capabilities/clients/graphql/models.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/capabilities/clients/graphql/query_builder.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/capabilities/clients/grpc/__init__.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/capabilities/clients/grpc/middleware/__init__.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/capabilities/clients/grpc/middleware/base.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/capabilities/clients/grpc/middleware/event_publisher.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/capabilities/clients/grpc/middleware/logging.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/capabilities/clients/grpc/middleware/metadata.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/capabilities/clients/grpc/middleware/retry.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/capabilities/clients/grpc/middleware/timing.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/capabilities/clients/grpc/models.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/capabilities/clients/http/__init__.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/capabilities/clients/http/core/__init__.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/capabilities/clients/http/core/request.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/capabilities/clients/http/core/response.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/capabilities/clients/http/middleware/__init__.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/capabilities/clients/http/middleware/auth.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/capabilities/clients/http/middleware/factory.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/capabilities/clients/http/middleware/logging.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/capabilities/clients/http/middleware/retry.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/capabilities/clients/http/middleware/signature.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/capabilities/clients/http/middleware/telemetry.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/capabilities/clients/http/rest/__init__.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/capabilities/clients/http/rest/factory.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/capabilities/clients/http/rest/httpx/__init__.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/capabilities/clients/http/rest/httpx/async_base_api.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/capabilities/clients/http/rest/httpx/base_api.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/capabilities/clients/http/rest/protocols.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/capabilities/databases/__init__.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/capabilities/databases/async_database.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/capabilities/databases/database.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/capabilities/databases/factory.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/capabilities/databases/query_builder.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/capabilities/databases/redis/__init__.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/capabilities/databases/redis/async_redis.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/capabilities/databases/redis/redis_client.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/capabilities/databases/repositories/__init__.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/capabilities/databases/repositories/base.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/capabilities/databases/repositories/query_spec.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/capabilities/databases/uow.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/capabilities/drivers/__init__.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/capabilities/drivers/web/__init__.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/capabilities/drivers/web/app_actions.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/capabilities/drivers/web/async_app_actions.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/capabilities/drivers/web/factory.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/capabilities/drivers/web/playwright/__init__.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/capabilities/drivers/web/playwright/async_browser.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/capabilities/drivers/web/playwright/async_browser_pool.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/capabilities/drivers/web/playwright/async_page.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/capabilities/drivers/web/playwright/browser.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/capabilities/drivers/web/playwright/component.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/capabilities/drivers/web/playwright/locator.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/capabilities/drivers/web/playwright/page.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/capabilities/drivers/web/protocols.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/capabilities/engines/__init__.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/capabilities/engines/batch/__init__.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/capabilities/engines/batch/spark/__init__.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/capabilities/engines/olap/__init__.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/capabilities/engines/stream/__init__.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/capabilities/engines/stream/flink/__init__.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/capabilities/messengers/__init__.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/capabilities/messengers/pubsub/__init__.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/capabilities/messengers/queue/__init__.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/capabilities/messengers/queue/kafka/__init__.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/capabilities/messengers/queue/kafka/client.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/capabilities/messengers/queue/kafka/config.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/capabilities/messengers/queue/rabbitmq/__init__.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/capabilities/messengers/queue/rabbitmq/client.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/capabilities/messengers/queue/rabbitmq/config.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/capabilities/messengers/queue/rocketmq/__init__.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/capabilities/messengers/queue/rocketmq/client.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/capabilities/messengers/queue/rocketmq/config.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/capabilities/storages/__init__.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/capabilities/storages/blob/__init__.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/capabilities/storages/file/__init__.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/capabilities/storages/file/local/__init__.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/capabilities/storages/file/local/client.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/capabilities/storages/file/local/config.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/capabilities/storages/object/__init__.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/capabilities/storages/object/oss/__init__.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/capabilities/storages/object/oss/client.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/capabilities/storages/object/oss/config.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/capabilities/storages/object/s3/__init__.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/capabilities/storages/object/s3/client.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/capabilities/storages/object/s3/config.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/cli/__init__.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/cli/__main__.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/cli/commands/__init__.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/cli/commands/cicd.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/cli/commands/env.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/cli/commands/generate_cmd.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/cli/commands/init_cmd.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/cli/commands/interactive.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/cli/generators/__init__.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/cli/generators/json_to_model.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/cli/generators/openapi_generator.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/cli/generators/openapi_parser.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/cli/main.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/cli/templates/__init__.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/cli/templates/cicd/.github/workflows/release.yml +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/cli/templates/cicd/.github/workflows/scheduled.yml +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/cli/templates/cicd/.github/workflows/test-full.yml +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/cli/templates/cicd/.github/workflows/test.yml +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/cli/templates/cicd/.gitlab-ci.yml +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/cli/templates/cicd/Jenkinsfile +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/cli/templates/cicd/docker/.dockerignore +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/cli/templates/cicd/docker/Dockerfile +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/cli/templates/cicd/docker/docker-compose.yml +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/cli/templates/generators/__init__.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/cli/templates/generators/actions.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/cli/templates/generators/api_client.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/cli/templates/generators/builder.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/cli/templates/generators/env_files.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/cli/templates/generators/graphql_client.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/cli/templates/generators/redis_example.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/cli/templates/generators/repository.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/cli/templates/generators/settings_enhanced.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/cli/templates/generators/test.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/cli/templates/generators/test_complete.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/cli/templates/generators/test_graphql.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/cli/templates/project/__init__.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/cli/templates/project/async_example_api.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/cli/templates/project/async_ui_app_actions.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/cli/templates/project/base_api.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/cli/templates/project/conftest.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/cli/templates/project/constants.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/cli/templates/project/data_cleaners.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/cli/templates/project/default_http_client.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/cli/templates/project/docs_api.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/cli/templates/project/editorconfig.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/cli/templates/project/enhanced_gitignore.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/cli/templates/project/env.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/cli/templates/project/fixture_chain_example.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/cli/templates/project/fixtures_init.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/cli/templates/project/full_conftest.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/cli/templates/project/full_settings.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/cli/templates/project/gitattributes.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/cli/templates/project/gitignore.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/cli/templates/project/models_requests_example.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/cli/templates/project/models_responses_example.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/cli/templates/project/pyproject_toml.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/cli/templates/project/readme.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/cli/templates/project/script_fetch_swagger.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/cli/templates/project/script_run_tests.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/cli/templates/project/settings.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/cli/templates/project/test_async_example.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/cli/templates/project/test_example.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/cli/templates/project/ui_app_actions.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/cli/templates/project/ui_clients.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/cli/templates/project/ui_conftest.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/cli/templates/project/ui_fixtures_init.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/cli/templates/project/ui_page_object.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/cli/templates/project/ui_settings.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/cli/templates/project/ui_test_example.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/cli/templates/project/uow.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/cli/templates/project/user_api_example.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/cli/templates/project/utils_converters.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/cli/templates/project/utils_validators.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/cli/templates/project/vscode_settings.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/cli/utils.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/core/__init__.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/core/context/__init__.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/core/context/execution.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/core/context/propagation.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/core/decorators.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/core/events/__init__.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/core/events/types.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/core/exceptions.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/core/middleware/__init__.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/core/middleware/base.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/core/middleware/chain.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/core/middleware/decorator.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/core/middleware/protocol.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/core/models/__init__.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/core/models/base.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/core/protocols/__init__.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/core/protocols/client.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/core/protocols/event.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/core/protocols/plugin.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/core/protocols/repository.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/core/protocols/telemetry.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/core/types.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/infrastructure/__init__.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/infrastructure/config/__init__.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/infrastructure/config/loader.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/infrastructure/config/middleware_schema.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/infrastructure/config/pipeline.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/infrastructure/config/schema.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/infrastructure/config/settings.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/infrastructure/config/sources.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/infrastructure/context/__init__.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/infrastructure/context/carriers/__init__.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/infrastructure/context/carriers/grpc.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/infrastructure/context/carriers/http.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/infrastructure/context/carriers/mq.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/infrastructure/events/__init__.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/infrastructure/events/bus.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/infrastructure/events/handlers/__init__.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/infrastructure/helpers/__init__.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/infrastructure/helpers/crypto.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/infrastructure/helpers/hash.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/infrastructure/helpers/network.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/infrastructure/helpers/signature.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/infrastructure/logging/__init__.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/infrastructure/logging/config.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/infrastructure/logging/interface.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/infrastructure/logging/logger.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/infrastructure/logging/observability.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/infrastructure/metrics/__init__.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/infrastructure/metrics/decorators.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/infrastructure/metrics/manager.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/infrastructure/metrics/observer.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/infrastructure/metrics/performance.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/infrastructure/metrics/registry.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/infrastructure/metrics/types.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/infrastructure/plugins/__init__.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/infrastructure/plugins/manager.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/infrastructure/resilience/__init__.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/infrastructure/resilience/circuit_breaker.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/infrastructure/sanitize/__init__.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/infrastructure/sanitize/service.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/infrastructure/telemetry/__init__.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/infrastructure/telemetry/exporters/__init__.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/infrastructure/telemetry/facade.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/infrastructure/telemetry/noop.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/infrastructure/tracing/__init__.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/infrastructure/tracing/context.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/infrastructure/tracing/decorators.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/infrastructure/tracing/exporters.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/infrastructure/tracing/integrations/__init__.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/infrastructure/tracing/integrations/database.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/infrastructure/tracing/integrations/sqlalchemy_instrumentation.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/infrastructure/tracing/interceptors/__init__.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/infrastructure/tracing/interceptors/grpc.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/infrastructure/tracing/interceptors/http.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/infrastructure/tracing/manager.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/plugins/builtin/__init__.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/plugins/builtin/monitoring/__init__.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/testing/__init__.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/testing/assertions/__init__.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/testing/assertions/helper.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/testing/assertions/json_schema.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/testing/assertions/matchers.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/testing/assertions/response.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/testing/data/__init__.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/testing/data/builders/__init__.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/testing/data/builders/base.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/testing/data/factories/__init__.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/testing/data/factories/base.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/testing/data/factories/examples.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/testing/data/generators/__init__.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/testing/data/generators/data_generator.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/testing/data/loaders/__init__.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/testing/data/loaders/base.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/testing/data/loaders/csv_loader.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/testing/data/loaders/json_loader.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/testing/data/loaders/yaml_loader.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/testing/data/pipeline/__init__.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/testing/data/pipeline/_registry.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/testing/data/pipeline/context.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/testing/data/pipeline/dataset.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/testing/data/pipeline/loader.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/testing/data/pipeline/reporter.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/testing/data/pipeline/resolver.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/testing/debugging/__init__.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/testing/debugging/console.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/testing/decorators/__init__.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/testing/decorators/actions_class.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/testing/decorators/api_class.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/testing/decorators/service_client.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/testing/decorators/ui_client.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/testing/fixtures/__init__.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/testing/fixtures/allure.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/testing/fixtures/auth.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/testing/fixtures/cleanup.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/testing/fixtures/debugging.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/testing/fixtures/http_recorder.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/testing/fixtures/message_queue.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/testing/fixtures/metrics.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/testing/fixtures/monitoring.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/testing/fixtures/ui.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/testing/mocking/__init__.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/testing/mocking/database_mock.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/testing/mocking/http_mock.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/testing/mocking/redis_mock.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/testing/mocking/time_mock.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/testing/plugins/__init__.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/testing/plugins/api_autodiscovery.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/testing/plugins/data_pipeline.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/testing/plugins/debug.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/testing/plugins/env_plugin.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/testing/plugins/logging_plugin.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/testing/plugins/markers.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/testing/reporting/__init__.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/testing/reporting/allure/__init__.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/testing/reporting/allure/helper.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/src/df_test_framework/testing/reporting/allure/observer.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/tests/README.md +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/tests/bootstrap/__init__.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/tests/bootstrap/test_providers.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/tests/bootstrap/test_runtime.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/tests/capabilities/__init__.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/tests/capabilities/clients/graphql/__init__.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/tests/capabilities/clients/graphql/test_client.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/tests/capabilities/clients/graphql/test_middleware.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/tests/capabilities/clients/graphql/test_models.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/tests/capabilities/clients/graphql/test_query_builder.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/tests/capabilities/clients/grpc/__init__.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/tests/capabilities/clients/grpc/test_client.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/tests/capabilities/clients/grpc/test_middleware.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/tests/capabilities/clients/grpc/test_models.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/tests/capabilities/clients/http/auth/signature/test_strategies.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/tests/capabilities/clients/http/core/__init__.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/tests/capabilities/clients/http/core/test_multipart.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/tests/capabilities/clients/http/core/test_request.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/tests/capabilities/clients/http/core/test_response.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/tests/capabilities/clients/http/middleware/__init__.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/tests/capabilities/clients/http/middleware/test_factory.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/tests/capabilities/clients/http/middleware/test_logging.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/tests/capabilities/clients/http/rest/test_async_base_api.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/tests/capabilities/clients/http/rest/test_async_client.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/tests/capabilities/clients/http/rest/test_auth_control.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/tests/capabilities/clients/http/rest/test_base_api.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/tests/capabilities/clients/http/rest/test_factory.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/tests/capabilities/clients/http/rest/test_http_client.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/tests/capabilities/databases/redis/test_async_redis.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/tests/capabilities/databases/redis/test_redis_client.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/tests/capabilities/databases/test_async_database.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/tests/capabilities/databases/test_database.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/tests/capabilities/databases/test_database_factory.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/tests/capabilities/databases/test_query_builder.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/tests/capabilities/databases/test_repositories.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/tests/capabilities/databases/test_uow.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/tests/capabilities/drivers/web/playwright/test_async_browser_pool.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/tests/capabilities/drivers/web/test_async_ui.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/tests/capabilities/drivers/web/test_modern_ui.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/tests/capabilities/messengers/__init__.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/tests/capabilities/messengers/test_kafka_client.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/tests/capabilities/messengers/test_rabbitmq_client.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/tests/capabilities/messengers/test_rocketmq_client.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/tests/capabilities/storages/__init__.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/tests/capabilities/storages/test_local_file.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/tests/capabilities/storages/test_oss.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/tests/capabilities/storages/test_s3.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/tests/cli/__init__.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/tests/cli/test_env_cmd.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/tests/cli/test_generate_cmd.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/tests/cli/test_init_cmd.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/tests/cli/test_interactive_cmd.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/tests/cli/test_main.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/tests/cli/test_utils.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/tests/conftest.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/tests/core/protocols/test_client.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/tests/core/protocols/test_event.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/tests/core/protocols/test_plugin.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/tests/core/protocols/test_repository.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/tests/core/protocols/test_telemetry.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/tests/core/test_context.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/tests/core/test_decorators.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/tests/core/test_event_types.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/tests/core/test_events.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/tests/core/test_middleware.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/tests/core/test_types.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/tests/infrastructure/__init__.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/tests/infrastructure/config/test_loader.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/tests/infrastructure/config/test_middleware_schema.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/tests/infrastructure/context/test_carriers.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/tests/infrastructure/events/__init__.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/tests/infrastructure/events/test_bus.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/tests/infrastructure/metrics/__init__.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/tests/infrastructure/metrics/test_decorators.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/tests/infrastructure/metrics/test_manager.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/tests/infrastructure/metrics/test_observer.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/tests/infrastructure/metrics/test_performance.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/tests/infrastructure/metrics/test_registry.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/tests/infrastructure/metrics/test_types.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/tests/infrastructure/plugins/test_manager.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/tests/infrastructure/resilience/__init__.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/tests/infrastructure/resilience/test_circuit_breaker.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/tests/infrastructure/sanitize/__init__.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/tests/infrastructure/sanitize/test_service.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/tests/infrastructure/telemetry/__init__.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/tests/infrastructure/telemetry/test_facade.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/tests/infrastructure/telemetry/test_noop.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/tests/infrastructure/test_bootstrap.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/tests/infrastructure/test_helpers.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/tests/infrastructure/test_logging.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/tests/infrastructure/test_pipeline.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/tests/infrastructure/test_runtime.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/tests/infrastructure/test_settings.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/tests/infrastructure/test_sources.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/tests/infrastructure/tracing/__init__.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/tests/infrastructure/tracing/test_context.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/tests/infrastructure/tracing/test_decorators.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/tests/infrastructure/tracing/test_exporters.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/tests/infrastructure/tracing/test_integrations.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/tests/infrastructure/tracing/test_interceptors.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/tests/infrastructure/tracing/test_manager.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/tests/integration/__init__.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/tests/integration/test_config_environment.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/tests/integration/test_event_observability.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/tests/integration/test_factory_assertions.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/tests/integration/test_middleware_chain.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/tests/migration/__init__.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/tests/migration/test_v3_13_to_v3_14_examples.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/tests/plugins/__init__.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/tests/plugins/builtin/__init__.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/tests/plugins/builtin/monitoring/__init__.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/tests/test_json_to_model_generator.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/tests/testing/assertions/__init__.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/tests/testing/assertions/test_json_schema.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/tests/testing/assertions/test_matchers.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/tests/testing/data/__init__.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/tests/testing/data/pipeline/__init__.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/tests/testing/data/pipeline/test_pipeline.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/tests/testing/data/pipeline/test_pipeline_plugin.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/tests/testing/data/test_builders.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/tests/testing/data/test_data_generator.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/tests/testing/data/test_factories.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/tests/testing/debugging/__init__.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/tests/testing/debugging/test_console_debug_observer.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/tests/testing/decorators/__init__.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/tests/testing/decorators/test_actions_class.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/tests/testing/decorators/test_api_class.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/tests/testing/decorators/test_service_client.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/tests/testing/decorators/test_ui_client.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/tests/testing/fixtures/__init__.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/tests/testing/fixtures/test_allure_fixture.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/tests/testing/fixtures/test_cleanup.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/tests/testing/fixtures/test_fixtures_core.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/tests/testing/fixtures/test_fixtures_debugging.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/tests/testing/fixtures/test_fixtures_message_queue.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/tests/testing/fixtures/test_fixtures_monitoring.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/tests/testing/fixtures/test_http_recorder.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/tests/testing/fixtures/test_monitoring_metrics.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/tests/testing/fixtures/test_ui_fixtures.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/tests/testing/mocking/__init__.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/tests/testing/mocking/test_database_mock.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/tests/testing/mocking/test_http_mock.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/tests/testing/mocking/test_redis_mock.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/tests/testing/mocking/test_time_mock.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/tests/testing/plugins/test_api_autodiscovery.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/tests/testing/plugins/test_debug_plugin.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/tests/testing/plugins/test_env_plugin.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/tests/testing/plugins/test_logging_plugin.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/tests/testing/plugins/test_markers.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/tests/testing/reporting/test_allure_observer.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/tests/testing/test_allure_helper.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/tests/testing/test_assertions.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/tests/testing/test_data_loaders.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/tests/testing/test_factories_presets.py +0 -0
- {df_test_framework-4.7.3 → df_test_framework-4.7.5}/verify_fixes.py +0 -0
|
@@ -8,8 +8,8 @@ This file provides guidance to Codex (Codex.ai/code) when working with code in t
|
|
|
8
8
|
|
|
9
9
|
**DF Test Framework** - 现代化 Python 测试自动化框架
|
|
10
10
|
|
|
11
|
-
- **版本**: v4.7.
|
|
12
|
-
- **更新时间**: 2026-
|
|
11
|
+
- **版本**: v4.7.4
|
|
12
|
+
- **更新时间**: 2026-06-29
|
|
13
13
|
- **Python**: 3.12+
|
|
14
14
|
- **核心技术栈**: pytest + httpx + Playwright + Pydantic v2 + SQLAlchemy 2.0 + Pluggy
|
|
15
15
|
- **架构**: 五层架构 + 横切关注点(能力层驱动设计)
|
|
@@ -7,6 +7,37 @@
|
|
|
7
7
|
|
|
8
8
|
## [Unreleased]
|
|
9
9
|
|
|
10
|
+
## [4.7.5] - 2026-06-29
|
|
11
|
+
|
|
12
|
+
### ✨ 新增
|
|
13
|
+
|
|
14
|
+
- **能力层实例级可观测性注入**:`AsyncHttpClient(event_bus=...)` / `HttpEventPublisherMiddleware(event_bus=...)` 支持直接注入 `EventBus`,使能力层脱离 Bootstrap / RuntimeContext / 全局 `EventBus` 单例也可观测(嵌入/库式用法)。显式 `event_bus` 优先于 `runtime.event_bus`;两者皆无时中间件自然 no-op。这是可观测性架构现代化(从"全局单例事件总线"到"实例级注入监听器")的基石,设计与分阶段方案见 [可观测性架构现代化设计](docs/architecture/observability-modernization.md)。
|
|
15
|
+
- **`event_bus` 注入统一到所有事件型客户端**:同步 `HttpClient` 与 `GrpcClient` 构造参数补齐 `event_bus`(`AsyncHttpClient`、`GraphQLClient` 此前已有),并透传给各自 EventPublisher 中间件,注入模型统一。DB/MQ 不走 EventPublisher 中间件模型,无此参数。
|
|
16
|
+
|
|
17
|
+
### 💥 移除
|
|
18
|
+
|
|
19
|
+
- **`OmsReporterPlugin` 已移除**:该插件是 OMS 平台专用的 HTTP 事件上报插件。但 `Bootstrap().run()` 默认不注入 `runtime.event_bus`(恒为 None),`HttpEventPublisherMiddleware` 在 event_bus 为空时跳过发布,因此该插件在嵌入场景下实际从不触发。OMS 已改为零-Bootstrap、直接消费能力层(执行结果由其自身上报),框架不再保留 OMS 专用插件。v4.7.4 为其新增的 `bind_execution` / `unbind_execution` 一并移除。
|
|
20
|
+
- **`df_event_handlers` Hook 移除**:事件订阅改为实例级注入模型——能力客户端 `AsyncHttpClient(event_bus=bus)`、监控/报告插件 `attach_to_event_bus(bus)`,取代"注册到全局事件总线"的旧钩子。`MonitoringPlugin` 的事件注册随之从 `df_event_handlers` 迁为 `attach_to_event_bus(bus)`。`AllurePlugin`(已废弃)中冗余的 `df_event_handlers` 实现一并删除。
|
|
21
|
+
|
|
22
|
+
### 🔧 改进
|
|
23
|
+
|
|
24
|
+
- **插件扩展 Hook 接线**:此前 `HookSpecs` 多数 Hook 仅定义未被框架触发(消费项目实现了也不生效)。现起把这些扩展点逐步接到对应调用点,使其成为测试项目/插件可用的真实能力。本版本已接线 `df_pre_bootstrap`(Bootstrap 初始化前回调,与既有 `df_post_bootstrap` 对称)与 **`df_http_middlewares`**(HTTP 客户端构建时收集插件贡献的中间件并 `use()` 应用,供项目注入全局鉴权/签名等中间件)。**`df_test_setup/teardown`**(每条测试前后,由 core pytest 插件的 autouse fixture 触发,携带 `request`+`runtime`)与 **`df_session_start/finish`**(`pytest_sessionstart/finish` 触发)也已接线。**`df_config_loaded`**(配置加载后回调,供插件读取/校验配置)也已接线。`df_db/mq_middlewares`(待 DB/MQ 客户端支持中间件)、`df_config_sources`、`df_telemetry_exporters` 为已恢复扩展点,按需接线(见扩展文档"接线状态"表)。
|
|
25
|
+
|
|
26
|
+
### 🐛 修复
|
|
27
|
+
|
|
28
|
+
- **`RuntimeContext.event_bus` 类型与语义不一致**:字段曾声明为必填 `EventBus`,但 `RuntimeBuilder` 默认 `None`、`close()` 按可空处理、纯库式构造也允许不注入——类型与实际矛盾。现统一为 `EventBus | None = None`,`publish_event` 在未注入时静默 no-op,与"实例级注入、不传则 opt-out"模型一致。
|
|
29
|
+
- **`df_test_teardown` 的 `outcome` 恒为 `None`**:autouse fixture 此前固定传 `outcome=None`。现通过 `pytest_runtest_makereport` 捕获 call 阶段 `TestReport` 存入 `item.stash`,teardown 时传入真实结果(含 `.passed`/`.failed`/`.outcome`)。
|
|
30
|
+
- **pytest 路径下 `df_plugins` 与生命周期钩子不生效**:`pytest_configure` 在 `env_plugin` 已加载配置时走 `RuntimeBuilder` 快速路径,绕过 `Bootstrap`,导致 `df_plugins` 未注册、`runtime.extensions` 为空,`df_pre/post_bootstrap`、`df_config_loaded`、`df_providers`、`df_http_middlewares` 等钩子全部不触发——上面"插件扩展 Hook 接线"的能力在常规 pytest 用法下形同虚设。现统一通过 `Bootstrap` 加载(`BootstrapApp.run(settings=...)` 新增参数复用 env_plugin 已加载的配置实例,避免重复加载),两条路径行为一致。
|
|
31
|
+
- **`RuntimeContext.close()` 空指针**:当 runtime 设置了 `scope` 但未注入 `event_bus`(纯库式构造的 runtime)时,`close()` 访问 `event_bus.clear_scope` 会抛 `AttributeError`,已加判空。
|
|
32
|
+
|
|
33
|
+
## [4.7.4] - 2026-06-29
|
|
34
|
+
|
|
35
|
+
### ✨ 新增
|
|
36
|
+
|
|
37
|
+
- **`OmsReporterPlugin` 嵌入式 scope 路由**:新增 `bind_execution(scope, callback, task_id, execution_id)` / `unbind_execution(scope)`,支持单个常驻插件实例按事件 `scope` 路由到对应执行的上报回调。嵌入方(如 OMS 测试平台)可一次 Bootstrap、多次执行复用,无需每次执行重建插件 + Bootstrap,多执行并发互不串扰。旧用法 `OmsReporterPlugin(callback, task_id, execution_id)` 完全向后兼容(构造即绑定一个作用域无关的默认上报目标)。
|
|
38
|
+
|
|
39
|
+
**详细内容**: 查看完整发布说明 [v4.7.4](docs/releases/v4.7.4.md)
|
|
40
|
+
|
|
10
41
|
## [4.7.3] - 2026-05-27
|
|
11
42
|
|
|
12
43
|
### 💥 破坏性变更
|
|
@@ -8,8 +8,8 @@ This file provides guidance to Claude Code (claude.ai/code) when working with co
|
|
|
8
8
|
|
|
9
9
|
**DF Test Framework** - 现代化 Python 测试自动化框架
|
|
10
10
|
|
|
11
|
-
- **版本**: v4.7.
|
|
12
|
-
- **更新时间**: 2026-
|
|
11
|
+
- **版本**: v4.7.4
|
|
12
|
+
- **更新时间**: 2026-06-29
|
|
13
13
|
- **Python**: 3.12+
|
|
14
14
|
- **核心技术栈**: pytest + httpx + Playwright + Pydantic v2 + SQLAlchemy 2.0 + Pluggy
|
|
15
15
|
- **架构**: 五层架构 + 横切关注点(能力层驱动设计)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# DF Test Framework 文档中心
|
|
2
2
|
|
|
3
|
-
> 版本:v4.7.
|
|
3
|
+
> 版本:v4.7.4 · 最近更新:2026-06-29
|
|
4
4
|
> 现代化 Python 测试自动化框架的官方知识库。
|
|
5
5
|
|
|
6
6
|
---
|
|
@@ -94,8 +94,9 @@
|
|
|
94
94
|
| [Bootstrap 引导系统指南](guides/bootstrap_guide.md) | RuntimeContext,多数据库注册 |
|
|
95
95
|
| [Fixtures 指南](guides/fixtures_guide.md) | pytest fixtures 完整参考 |
|
|
96
96
|
| [装饰器指南](guides/decorators_guide.md) | `@api_class`、`@actions_class`、`@service_client` |
|
|
97
|
+
| [插件 Hook 扩展指南](guides/plugin_hooks_guide.md) ⭐ | 注册插件、注入全局中间件、挂接测试/会话生命周期 |
|
|
97
98
|
| [插件系统指南](guides/plugins_guide.md) | Pluggy Hooks,自定义插件 |
|
|
98
|
-
| [扩展点指南](guides/extensions.md) | Hook
|
|
99
|
+
| [扩展点指南](guides/extensions.md) | Hook 接入自定义能力(历史参考) |
|
|
99
100
|
| [工具函数指南](guides/helpers_guide.md) | 加解密、哈希、签名、公网 IP |
|
|
100
101
|
|
|
101
102
|
---
|
|
@@ -2,6 +2,10 @@
|
|
|
2
2
|
|
|
3
3
|
扩展系统的完整API参考,包含Hook机制、ExtensionManager和自定义扩展开发。
|
|
4
4
|
|
|
5
|
+
> ℹ️ **Hook 体系状态(v4.7.5)**:Hook 是给测试项目/插件用的扩展点,框架在对应阶段触发。
|
|
6
|
+
> `df_event_handlers` 已移除(由实例级注入取代,详见
|
|
7
|
+
> [可观测性架构现代化设计](../architecture/observability-modernization.md));其余扩展点正分阶段接线,见下表"接线状态"。
|
|
8
|
+
|
|
5
9
|
---
|
|
6
10
|
|
|
7
11
|
## 📦 模块导入
|
|
@@ -48,22 +52,24 @@ DF Test Framework的扩展系统基于[pluggy](https://pluggy.readthedocs.io/)
|
|
|
48
52
|
|
|
49
53
|
### Hook 点分类
|
|
50
54
|
|
|
51
|
-
| 分类 | Hook 点 | 说明 |
|
|
52
|
-
|
|
53
|
-
|
|
|
54
|
-
| | `
|
|
55
|
-
|
|
|
56
|
-
| | `
|
|
57
|
-
| | `
|
|
58
|
-
|
|
|
59
|
-
| | `
|
|
60
|
-
| | `
|
|
61
|
-
|
|
|
62
|
-
| | `
|
|
63
|
-
|
|
|
64
|
-
| | `
|
|
65
|
-
| | `
|
|
66
|
-
| |
|
|
55
|
+
| 分类 | Hook 点 | 说明 | 接线状态 |
|
|
56
|
+
|------|---------|------|------|
|
|
57
|
+
| **启动** | `df_providers` | 注册自定义 Provider(依赖注入阶段) | ✅ 已接线 |
|
|
58
|
+
| | `df_pre_bootstrap` | Bootstrap 前回调 | ✅ 已接线 |
|
|
59
|
+
| | `df_post_bootstrap` | Bootstrap 后回调 | ✅ 已接线 |
|
|
60
|
+
| **中间件** | `df_http_middlewares` | 注入全局 HTTP 中间件 | ✅ 已接线 |
|
|
61
|
+
| | `df_db_middlewares` | 注入全局数据库中间件 | ⏸ 待 DB 客户端支持中间件 |
|
|
62
|
+
| | `df_mq_middlewares` | 注入全局 MQ 中间件 | ⏸ 待 MQ 客户端支持中间件 |
|
|
63
|
+
| **配置** | `df_config_loaded` | 配置加载后回调(读取/校验已加载配置) | ✅ 已接线 |
|
|
64
|
+
| | `df_config_sources` | 添加配置源 | ⏸ 扩展点已恢复,按需接线 |
|
|
65
|
+
| **测试生命周期** | `df_test_setup` | 测试前置(每条测试,含 runtime 上下文) | ✅ 已接线 |
|
|
66
|
+
| | `df_test_teardown` | 测试后置 | ✅ 已接线 |
|
|
67
|
+
| | `df_session_start` | 会话开始 | ✅ 已接线 |
|
|
68
|
+
| | `df_session_finish` | 会话结束 | ✅ 已接线 |
|
|
69
|
+
| **可观测性** | `df_telemetry_exporters` | 添加遥测导出器 | ⏸ 扩展点已恢复,按需接线 |
|
|
70
|
+
| | ~~`df_event_handlers`~~ | ~~事件处理器~~ | ❌ 已移除(实例级注入取代) |
|
|
71
|
+
|
|
72
|
+
> 事件订阅不走 Hook:见 [可观测性架构现代化设计](../architecture/observability-modernization.md)。
|
|
67
73
|
|
|
68
74
|
---
|
|
69
75
|
|
|
@@ -481,61 +487,6 @@ class MQMiddlewareExtension:
|
|
|
481
487
|
|
|
482
488
|
---
|
|
483
489
|
|
|
484
|
-
### df_event_handlers
|
|
485
|
-
|
|
486
|
-
**时机**: 事件总线初始化后
|
|
487
|
-
|
|
488
|
-
**功能**: 注册事件处理器
|
|
489
|
-
|
|
490
|
-
**签名**:
|
|
491
|
-
```python
|
|
492
|
-
@hookimpl
|
|
493
|
-
def df_event_handlers(
|
|
494
|
-
self,
|
|
495
|
-
event_bus: EventBus
|
|
496
|
-
) -> list:
|
|
497
|
-
"""注册事件处理器"""
|
|
498
|
-
```
|
|
499
|
-
|
|
500
|
-
**参数**:
|
|
501
|
-
- `event_bus`: 事件总线实例
|
|
502
|
-
|
|
503
|
-
**返回**: `list` - 事件处理器列表(通常返回空列表,因为已通过 subscribe 注册)
|
|
504
|
-
|
|
505
|
-
**使用场景**:
|
|
506
|
-
- 监听 HTTP 请求事件
|
|
507
|
-
- 监听数据库查询事件
|
|
508
|
-
- 监听测试执行事件
|
|
509
|
-
|
|
510
|
-
**示例**:
|
|
511
|
-
```python
|
|
512
|
-
from df_test_framework import hookimpl
|
|
513
|
-
|
|
514
|
-
class EventLoggingExtension:
|
|
515
|
-
"""事件日志扩展"""
|
|
516
|
-
|
|
517
|
-
@hookimpl
|
|
518
|
-
def df_event_handlers(self, event_bus):
|
|
519
|
-
"""注册事件处理器"""
|
|
520
|
-
# 监听 HTTP 请求完成事件
|
|
521
|
-
event_bus.subscribe("http.request.completed", self.on_request_completed)
|
|
522
|
-
|
|
523
|
-
# 监听数据库查询事件
|
|
524
|
-
event_bus.subscribe("database.query.executed", self.on_query_executed)
|
|
525
|
-
|
|
526
|
-
return []
|
|
527
|
-
|
|
528
|
-
def on_request_completed(self, event):
|
|
529
|
-
"""HTTP 请求完成处理"""
|
|
530
|
-
print(f"请求完成: {event.method} {event.url} - {event.status_code}")
|
|
531
|
-
|
|
532
|
-
def on_query_executed(self, event):
|
|
533
|
-
"""数据库查询执行处理"""
|
|
534
|
-
print(f"查询执行: {event.sql} - {event.duration}ms")
|
|
535
|
-
```
|
|
536
|
-
|
|
537
|
-
---
|
|
538
|
-
|
|
539
490
|
### df_telemetry_exporters
|
|
540
491
|
|
|
541
492
|
**时机**: 遥测系统初始化时
|
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
# 可观测性架构现代化设计
|
|
2
|
+
|
|
3
|
+
> **状态**:设计已定,分阶段实施中
|
|
4
|
+
> **作者**:架构评审(OMS 嵌入集成驱动)
|
|
5
|
+
> **适用版本**:v4.7.4+
|
|
6
|
+
> **关联**:[ARCHITECTURE_V4.0.md](ARCHITECTURE_V4.0.md)、[event_bus_guide](../guides/event_bus_guide.md)、[plugins_guide](../guides/plugins_guide.md)
|
|
7
|
+
|
|
8
|
+
## 1. 背景与问题
|
|
9
|
+
|
|
10
|
+
OMS 测试平台把 df-test-framework 当**执行引擎嵌入**长期运行的服务时,暴露出框架可观测性/插件体系的一组结构性问题。逐一查实如下:
|
|
11
|
+
|
|
12
|
+
### 1.1 可观测性被绑死在 pytest 上
|
|
13
|
+
|
|
14
|
+
事件流的真实接线:
|
|
15
|
+
|
|
16
|
+
```
|
|
17
|
+
pytest 模式(设计意图)
|
|
18
|
+
testing/fixtures/core.py: pytest_configure
|
|
19
|
+
→ 建全局 EventBus + set_global_event_bus()
|
|
20
|
+
→ RuntimeBuilder().with_event_bus(global_bus) 建 runtime
|
|
21
|
+
能力客户端(provider 注入 runtime,runtime.event_bus = global_bus)→ 发事件 ✅
|
|
22
|
+
|
|
23
|
+
嵌入模式(Bootstrap().run())
|
|
24
|
+
无 pytest_configure → 从不调 with_event_bus → runtime.event_bus = None
|
|
25
|
+
→ HttpEventPublisherMiddleware 在 event_bus 为空时直接 return(event_publisher.py L91)
|
|
26
|
+
→ 能力层事件全程不发,可观测性死 ❌
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
根因:能力层(HTTP/DB/MQ/...)的可观测性依赖**进程级全局 EventBus 单例**,而该单例只在 `pytest_configure` 中创建并注入 runtime。离开 pytest,能力层就失去可观测性。
|
|
30
|
+
|
|
31
|
+
### 1.2 插件 Hook 体系大面积未接线(此前问题,已由 W1-W4 修复)
|
|
32
|
+
|
|
33
|
+
> 状态(2026-06-29):本节描述的是**历史问题**。`infrastructure/plugins/hooks.py` 的 hookspec 当时多数仅定义、
|
|
34
|
+
> 在 `bootstrap.py` 中**无调用方**——只有 `df_providers`、`df_post_bootstrap` 被触发,其余
|
|
35
|
+
> (`df_test_setup/teardown`、`df_session_*`、`df_*_middlewares`、`df_config_*`、`df_telemetry_exporters`、
|
|
36
|
+
> `df_pre_bootstrap`)形同虚设。**现已修复**:这些是给消费项目的扩展点,已恢复并把高价值的接到对应调用点
|
|
37
|
+
> (`df_pre_bootstrap`、`df_http_middlewares`、`df_test_setup/teardown`、`df_session_*`、`df_config_loaded`
|
|
38
|
+
> 已接线;且 pytest env_plugin 路径统一走 Bootstrap,钩子在常规 pytest 用法下也生效)。详见扩展文档"接线状态"表与
|
|
39
|
+
> CHANGELOG。唯 `df_event_handlers` 作为事件模型钩子被实例级注入取代而移除(下文)。
|
|
40
|
+
|
|
41
|
+
特别地,`df_event_handlers` 这个"插件注册事件处理器"的核心钩子从未被触发:
|
|
42
|
+
|
|
43
|
+
- `monitoring` 插件**唯一的注册路径**就是 `df_event_handlers`(无其它入口)→ 真实使用中恒休眠,仅在单测里被手动调用。
|
|
44
|
+
- `AllurePlugin` 实际通过 fixture 的 `attach_to_event_bus(get_global_event_bus())` 这条 ad-hoc 路径接事件,`df_event_handlers` 是死的。
|
|
45
|
+
- 已移除的 `OmsReporterPlugin` 同时依赖死钩子 + 永不注入的 event_bus,**双重死**,从未工作。
|
|
46
|
+
|
|
47
|
+
### 1.3 结论:两个关注点被错误耦合
|
|
48
|
+
|
|
49
|
+
| 关注点 | 应有定位 | 现状 |
|
|
50
|
+
|---|---|---|
|
|
51
|
+
| **测试编写框架**(fixtures / Bootstrap-session / Allure / 自动发现) | 可以、且应该耦合 pytest | 正常 |
|
|
52
|
+
| **协议客户端能力层**(AsyncHttpClient+中间件 / AsyncDatabase / Playwright / MQ) | 应是干净可嵌入的独立库 | 被全局 EventBus 单例 + Pluggy 死钩子缠住,离开 pytest 即失能 |
|
|
53
|
+
|
|
54
|
+
能力层本该是一等公民的可嵌入库,却把"可观测性"实现成"发到 pytest 设置的进程级全局总线"。这是病根。
|
|
55
|
+
|
|
56
|
+
## 2. 现代/标准目标
|
|
57
|
+
|
|
58
|
+
参照成熟库的通行做法——**httpx `event_hooks`、OpenTelemetry instrumentor、Playwright `page.on()`**——同一原则:
|
|
59
|
+
|
|
60
|
+
> **可观测性靠"实例级、依赖注入的监听器",不靠"全局单例事件总线 + 插件管理器"。**
|
|
61
|
+
|
|
62
|
+
目标分层:
|
|
63
|
+
|
|
64
|
+
```
|
|
65
|
+
能力层(独立库,零会话依赖)
|
|
66
|
+
AsyncHttpClient(middlewares=[...], event_bus=<可选>) # 观测者实例级注入
|
|
67
|
+
└─ 不传也完全能用;传了就发事件到你给的 bus/listener,无需 Bootstrap/pytest/全局单例
|
|
68
|
+
|
|
69
|
+
测试框架层(pytest,建在能力层之上)
|
|
70
|
+
fixtures 把能力实例接到 session 级 bus + Allure
|
|
71
|
+
插件 = listener 提供者,不再"注册到全局单例"
|
|
72
|
+
|
|
73
|
+
嵌入方(OMS / 任意服务)
|
|
74
|
+
直接 new 能力对象;要观测就注入自己的 bus/listener
|
|
75
|
+
(OMS 用 telemetry + 直发,连这个都不需要——这正是"嵌入方零会话依赖"的体现)
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
要点:
|
|
79
|
+
1. 能力层可观测性 = **构造时注入 event_bus/listener**(实例级),删除"必须有全局 EventBus 才能发事件"的耦合。
|
|
80
|
+
2. **退役** `df_event_handlers` 这一死钩子;插件改为"提供 listener / 订阅具体能力实例"。
|
|
81
|
+
3. pytest 层照旧好用:fixture 把能力实例桥接到 session bus + Allure,测试编写体验不变。
|
|
82
|
+
4. 全局 EventBus 从"进程级可变单例"降级为"按需的 session 级聚合器"。
|
|
83
|
+
|
|
84
|
+
## 3. 分阶段实施
|
|
85
|
+
|
|
86
|
+
整套改动横跨 clients + 多类能力 + fixtures + 插件 + EventBus,须保 2630 测试绿,**禁止大爆炸**,分阶段:
|
|
87
|
+
|
|
88
|
+
### L2(基石,已落地)— 能力层支持实例级 event_bus 注入
|
|
89
|
+
|
|
90
|
+
让能力客户端**直接注入 event_bus**,脱离 Bootstrap/全局单例也能观测。已实现于 `AsyncHttpClient` 作为参考:
|
|
91
|
+
|
|
92
|
+
```python
|
|
93
|
+
from df_test_framework.infrastructure.events import EventBus
|
|
94
|
+
from df_test_framework import AsyncHttpClient
|
|
95
|
+
from df_test_framework.core.events import HttpRequestEndEvent
|
|
96
|
+
|
|
97
|
+
bus = EventBus()
|
|
98
|
+
|
|
99
|
+
@bus.on(HttpRequestEndEvent)
|
|
100
|
+
async def on_end(e): ... # 实例级订阅,无需 Bootstrap / pytest / 全局单例
|
|
101
|
+
|
|
102
|
+
client = AsyncHttpClient(middlewares=[...], event_bus=bus)
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
`HttpEventPublisherMiddleware` 同时接受 `event_bus` 或 `runtime`,二者皆无则自然 no-op(天然 opt-in)。**加法式、向后兼容**:pytest 路径(runtime 携全局 bus)不变。
|
|
106
|
+
|
|
107
|
+
**进展**:走"中间件发布事件"模型的客户端已统一支持构造时 `event_bus` 注入——同步 `HttpClient`、
|
|
108
|
+
异步 `AsyncHttpClient`、`GraphQLClient`、`GrpcClient` 均在构造参数暴露 `event_bus` 并透传给各自的
|
|
109
|
+
EventPublisher 中间件(显式注入优先,不传则回退 runtime/全局,皆无则 no-op)。DB/MQ 不走 EventPublisher
|
|
110
|
+
中间件模型(无此注入参数需统一)。
|
|
111
|
+
|
|
112
|
+
### L1(清理,需与 monitoring 重接一起做)— 退役死钩子
|
|
113
|
+
|
|
114
|
+
`df_event_handlers` 死钩子退役(仅此一个,因 L2 实例级注入已取代其"注册到全局事件总线"的语义)。
|
|
115
|
+
**注意纠缠**:`monitoring` 插件唯一注册路径就是它,已改造为 `attach_to_event_bus(bus)` 监听器。
|
|
116
|
+
|
|
117
|
+
> 更正(2026-06-29):其余"从未被调用"的 hookspec(`df_*_middlewares`、`df_test_setup/teardown`、
|
|
118
|
+
> `df_session_*`、`df_config_*`、`df_pre_bootstrap`、`df_telemetry_exporters`)**不是事件模型的一部分,
|
|
119
|
+
> 也不该删**——它们是给消费项目/插件的扩展点,问题是框架"没接线"。已全部恢复,并把高价值的接到对应
|
|
120
|
+
> 调用点(`df_pre_bootstrap`、`df_http_middlewares`、`df_test_setup/teardown`、`df_session_*`、
|
|
121
|
+
> `df_config_loaded` 已接线)。详见扩展文档的"接线状态"表与 CHANGELOG。
|
|
122
|
+
|
|
123
|
+
### L3(评估后**不做**,2026-06-29)— 退役全局 EventBus 单例
|
|
124
|
+
|
|
125
|
+
原计划把全局 EventBus 单例(`set/get_global_event_bus`)降级为 fixture 持有的 session 级聚合器。
|
|
126
|
+
评估纠缠面与收益后**决定不做**:
|
|
127
|
+
|
|
128
|
+
- `get/set_global_event_bus` 是**顶层导出的公共 API**,被 `pytest_configure`(core.py)+ allure/debugging
|
|
129
|
+
fixtures + 3 个测试文件使用,runtime 在 configure 阶段用它构建。退役它是**破坏公共 pytest API 的多文件重构**。
|
|
130
|
+
- 该单例本质是 **pytest-session 作用域的容器**(每 session 创建一次,在 session 内使用),不是有害的
|
|
131
|
+
跨进程全局可变态。
|
|
132
|
+
- **高价值目标"嵌入方不经全局单例即可观测"已由 L2 达成**:嵌入方走实例级注入,根本不触碰这个全局 bus;
|
|
133
|
+
它如今只是 pytest 内部的 session 事件容器,可接受。
|
|
134
|
+
- 插件模型也已基本归一:`MonitoringPlugin`、`AllurePlugin` 均为 `attach_to_event_bus(bus)` 监听器(L1)。
|
|
135
|
+
|
|
136
|
+
结论:现代化收在 **L1 + L2**。全局单例作为 pytest-session 容器保留;如未来确有 session 间隔离/并行需求,
|
|
137
|
+
再以 pytest `config.stash` 方式替换模块级全局,届时单列任务评估。
|
|
138
|
+
|
|
139
|
+
## 4. 对 OMS 集成的含义
|
|
140
|
+
|
|
141
|
+
OMS 已经是此模型下的**正确形态**:零-Bootstrap、能力层当库、用自身 telemetry + 直发 `task.step_result` 做可观测性。在现代模型里,OMS 就是"嵌入方既不碰 Bootstrap 也不碰全局 EventBus,要观测就注入 listener,而它连这个都不需要"。**OMS 侧无需再改**;本现代化纯属框架自身质量演进。
|
|
142
|
+
|
|
143
|
+
## 5. 待观察风险
|
|
144
|
+
|
|
145
|
+
- L1/L3 触及 allure/monitoring/fixtures 与全局单例的纠缠,回归面大,须逐插件迁移并保测试绿。
|
|
146
|
+
- 全局 EventBus 退役可能影响依赖 `get_global_event_bus()` 的外部使用者,需在 release note 明确迁移路径。
|
|
@@ -1,10 +1,22 @@
|
|
|
1
1
|
# 扩展系统使用指南
|
|
2
2
|
|
|
3
|
-
> **适用版本**: v3.0.0+
|
|
4
|
-
> **最后更新**: 2026-
|
|
3
|
+
> **适用版本**: v3.0.0+
|
|
4
|
+
> **最后更新**: 2026-06-29
|
|
5
5
|
>
|
|
6
6
|
> 本指南介绍如何使用 DF Test Framework 的扩展系统来扩展框架功能。
|
|
7
7
|
|
|
8
|
+
> ℹ️ **Hook 体系状态(v4.7.5)**:这些 Hook 是给消费框架的测试项目/插件用的扩展点,框架在对应阶段触发。
|
|
9
|
+
> 当前接线状态(以 [Extensions API 参考](../api-reference/extensions.md) 的"接线状态"表为准):
|
|
10
|
+
> - **已接线可用**:`df_providers`、`df_pre_bootstrap`、`df_post_bootstrap`、`df_http_middlewares`、
|
|
11
|
+
> `df_test_setup/teardown`、`df_session_start/finish`、`df_config_loaded`。
|
|
12
|
+
> - **扩展点已恢复·按需接线**(已定义可实现,框架尚未接到调用点):`df_db/mq_middlewares`(待 DB/MQ
|
|
13
|
+
> 客户端支持中间件)、`df_config_sources`、`df_telemetry_exporters`。
|
|
14
|
+
> - **已移除**:`df_event_handlers` —— 由实例级注入取代(`AsyncHttpClient(event_bus=bus)` +
|
|
15
|
+
> 插件 `attach_to_event_bus(bus)`),详见 [可观测性架构现代化设计](../architecture/observability-modernization.md)。
|
|
16
|
+
>
|
|
17
|
+
> 👉 **实战用法**(注册插件、注入全局中间件、挂接生命周期)见
|
|
18
|
+
> [插件 Hook 扩展指南](plugin_hooks_guide.md)。下文章节为历史参考。
|
|
19
|
+
|
|
8
20
|
## 📋 目录
|
|
9
21
|
|
|
10
22
|
- [什么是扩展系统](#什么是扩展系统)
|
|
@@ -310,23 +322,11 @@ def df_mq_middlewares(self, settings):
|
|
|
310
322
|
|
|
311
323
|
---
|
|
312
324
|
|
|
313
|
-
### 4.
|
|
314
|
-
|
|
315
|
-
#### df_event_handlers
|
|
316
|
-
|
|
317
|
-
**时机**: 事件总线初始化后
|
|
318
|
-
**用途**: 注册事件处理器
|
|
325
|
+
### 4. 遥测 Hook
|
|
319
326
|
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
"""注册自定义事件处理器"""
|
|
324
|
-
event_bus.subscribe("http.request.completed", self.on_request_completed)
|
|
325
|
-
return []
|
|
326
|
-
|
|
327
|
-
def on_request_completed(self, event):
|
|
328
|
-
print(f"请求完成: {event.method} {event.url}")
|
|
329
|
-
```
|
|
327
|
+
> 事件订阅不再走 Hook:`df_event_handlers` 已移除,改用实例级注入
|
|
328
|
+
> (`AsyncHttpClient(event_bus=bus)` + 插件 `attach_to_event_bus(bus)`)。见
|
|
329
|
+
> [插件 Hook 扩展指南](plugin_hooks_guide.md) 与 [可观测性架构现代化设计](../architecture/observability-modernization.md)。
|
|
330
330
|
|
|
331
331
|
#### df_telemetry_exporters
|
|
332
332
|
|
|
@@ -0,0 +1,176 @@
|
|
|
1
|
+
# 插件 Hook 扩展指南
|
|
2
|
+
|
|
3
|
+
> **适用版本**: v4.7.5+
|
|
4
|
+
> **最后更新**: 2026-06-29
|
|
5
|
+
>
|
|
6
|
+
> 本指南面向**消费框架的测试项目**,讲如何用插件 Hook 扩展 df-test-framework:
|
|
7
|
+
> 注入全局中间件、挂接测试/会话生命周期、注册自定义服务、读取配置等。
|
|
8
|
+
> 事件可观测性走的是另一套"实例级注入监听器"模型,见末节。
|
|
9
|
+
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
## 1. 两分钟上手
|
|
13
|
+
|
|
14
|
+
一个插件就是一个**带 `@hookimpl` 方法的类(或带模块级 `@hookimpl` 函数的模块)**。
|
|
15
|
+
|
|
16
|
+
```python
|
|
17
|
+
# myproject/df_plugin.py
|
|
18
|
+
from df_test_framework.infrastructure.plugins import hookimpl
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
class MyPlugin:
|
|
22
|
+
@hookimpl
|
|
23
|
+
def df_http_middlewares(self, settings):
|
|
24
|
+
"""给所有 HTTP 客户端注入一个全局鉴权中间件"""
|
|
25
|
+
from myproject.middlewares import AuthMiddleware
|
|
26
|
+
return [AuthMiddleware(token=settings.auth.token)]
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
**注册插件**有两种方式:
|
|
30
|
+
|
|
31
|
+
```toml
|
|
32
|
+
# 方式 A(pytest 项目,推荐):pyproject.toml
|
|
33
|
+
[tool.pytest.ini_options]
|
|
34
|
+
# 由框架 core pytest 插件自动加载;多个用逗号分隔
|
|
35
|
+
df_plugins = "myproject.df_plugin"
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
```python
|
|
39
|
+
# 方式 B(嵌入/编程式):直接传插件实例
|
|
40
|
+
from df_test_framework.bootstrap import Bootstrap
|
|
41
|
+
runtime = Bootstrap().with_plugin(MyPlugin()).build().run()
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
> 方式 A 的 `df_plugins` 值是**模块路径**,框架会 `import` 该模块并注册(pluggy 扫描其中的
|
|
45
|
+
> `@hookimpl`)。也支持环境变量 `DF_PLUGINS=...` 与 CLI `--df-plugin=...`。
|
|
46
|
+
|
|
47
|
+
---
|
|
48
|
+
|
|
49
|
+
## 2. 可用 Hook 一览
|
|
50
|
+
|
|
51
|
+
| 阶段 | Hook | 触发时机 | 典型用途 |
|
|
52
|
+
|---|---|---|---|
|
|
53
|
+
| 启动 | `df_providers(settings, logger)` | 依赖注入阶段 | 注册自定义服务 |
|
|
54
|
+
| 启动 | `df_pre_bootstrap(bootstrap)` | 初始化前 | 介入 Bootstrap |
|
|
55
|
+
| 启动 | `df_post_bootstrap(runtime)` | 初始化后 | 拿到 runtime 做收尾 |
|
|
56
|
+
| 配置 | `df_config_loaded(settings)` | 配置加载后 | 读取/校验配置 |
|
|
57
|
+
| 中间件 | `df_http_middlewares(settings)` | HTTP 客户端构建时 | 注入全局 HTTP 中间件 |
|
|
58
|
+
| 测试 | `df_test_setup(request, runtime)` | 每条测试前 | 逐测试前置(含 runtime 上下文) |
|
|
59
|
+
| 测试 | `df_test_teardown(request, runtime, outcome)` | 每条测试后 | 逐测试收尾 |
|
|
60
|
+
| 会话 | `df_session_start(session)` | 会话开始 | 会话级初始化 |
|
|
61
|
+
| 会话 | `df_session_finish(session, exitstatus)` | 会话结束 | 会话级汇总/上报 |
|
|
62
|
+
|
|
63
|
+
> Hook 返回值约定:`df_*_middlewares` / `df_providers` 返回内容会被框架收集;其余生命周期 Hook
|
|
64
|
+
> 无返回(副作用即可)。一个 Hook 可被多个插件实现,框架会全部调用。
|
|
65
|
+
|
|
66
|
+
---
|
|
67
|
+
|
|
68
|
+
## 3. 实战示例
|
|
69
|
+
|
|
70
|
+
### 3.1 全局 HTTP 中间件(最常用)
|
|
71
|
+
|
|
72
|
+
让**所有** HTTP 客户端自动带上项目级鉴权/签名/重试,无需逐处配置:
|
|
73
|
+
|
|
74
|
+
```python
|
|
75
|
+
class AuthPlugin:
|
|
76
|
+
@hookimpl
|
|
77
|
+
def df_http_middlewares(self, settings):
|
|
78
|
+
return [BearerTokenMiddleware(token_provider=lambda: get_token())]
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
注册后,框架构建 `HttpClient` / `AsyncHttpClient` 时会把这些中间件 `use()` 进中间件链
|
|
82
|
+
(与 `config.middlewares`、重试、事件发布中间件共存,按 priority 排序)。
|
|
83
|
+
|
|
84
|
+
### 3.2 测试生命周期
|
|
85
|
+
|
|
86
|
+
`df_test_setup` / `df_test_teardown` 在**每条测试**前后触发,且携带 `request` 与当前 `runtime`
|
|
87
|
+
(pytest 原生 `pytest_runtest_*` 拿不到框架 runtime,这是 df 版的价值):
|
|
88
|
+
|
|
89
|
+
```python
|
|
90
|
+
class TestTaggingPlugin:
|
|
91
|
+
@hookimpl
|
|
92
|
+
def df_test_setup(self, request, runtime):
|
|
93
|
+
# 例:把被测环境写进 Allure 标签 / 准备逐测试数据
|
|
94
|
+
for marker in request.node.iter_markers():
|
|
95
|
+
...
|
|
96
|
+
|
|
97
|
+
@hookimpl
|
|
98
|
+
def df_test_teardown(self, request, runtime, outcome):
|
|
99
|
+
# outcome 是 call 阶段的 pytest TestReport(含 .passed/.failed/.outcome),无则 None
|
|
100
|
+
...
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
### 3.3 会话生命周期
|
|
104
|
+
|
|
105
|
+
```python
|
|
106
|
+
class ReportPlugin:
|
|
107
|
+
@hookimpl
|
|
108
|
+
def df_session_start(self, session):
|
|
109
|
+
self._started = True
|
|
110
|
+
|
|
111
|
+
@hookimpl
|
|
112
|
+
def df_session_finish(self, session, exitstatus):
|
|
113
|
+
# 例:会话结束后汇总并推送报告
|
|
114
|
+
push_summary(exitstatus)
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
### 3.4 注册自定义服务 + 读取配置
|
|
118
|
+
|
|
119
|
+
```python
|
|
120
|
+
class ServicePlugin:
|
|
121
|
+
@hookimpl
|
|
122
|
+
def df_providers(self, settings, logger):
|
|
123
|
+
return {"my_cache": MyCache(url=settings.redis.url)}
|
|
124
|
+
|
|
125
|
+
@hookimpl
|
|
126
|
+
def df_config_loaded(self, settings):
|
|
127
|
+
assert settings.auth.token, "缺少鉴权配置"
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
`df_providers` 返回的服务可经 `runtime.get("my_cache")` 取用。
|
|
131
|
+
|
|
132
|
+
---
|
|
133
|
+
|
|
134
|
+
## 4. 事件可观测性(不走 Hook)
|
|
135
|
+
|
|
136
|
+
观测 HTTP/DB 等能力层事件,用**实例级注入监听器**,而非全局 Hook:
|
|
137
|
+
|
|
138
|
+
```python
|
|
139
|
+
from df_test_framework import AsyncHttpClient
|
|
140
|
+
from df_test_framework.infrastructure.events import EventBus
|
|
141
|
+
from df_test_framework.core.events import HttpRequestEndEvent
|
|
142
|
+
|
|
143
|
+
bus = EventBus()
|
|
144
|
+
|
|
145
|
+
@bus.on(HttpRequestEndEvent)
|
|
146
|
+
async def on_end(event):
|
|
147
|
+
print(event.method, event.url, event.status_code)
|
|
148
|
+
|
|
149
|
+
client = AsyncHttpClient(event_bus=bus) # 注入即观测,无需 Bootstrap/pytest
|
|
150
|
+
```
|
|
151
|
+
|
|
152
|
+
内置监控/报告插件同理,提供 `attach_to_event_bus(bus)`:
|
|
153
|
+
|
|
154
|
+
```python
|
|
155
|
+
from df_test_framework.plugins.builtin.monitoring.plugin import MonitoringPlugin
|
|
156
|
+
mon = MonitoringPlugin()
|
|
157
|
+
mon.attach_to_event_bus(bus)
|
|
158
|
+
... # 运行后
|
|
159
|
+
mon.get_summary()
|
|
160
|
+
```
|
|
161
|
+
|
|
162
|
+
> 旧的 `df_event_handlers` Hook 已移除——它依赖全局事件总线单例、在嵌入场景不触发;
|
|
163
|
+
> 实例级注入是更标准、可嵌入的替代。详见
|
|
164
|
+
> [可观测性架构现代化设计](../architecture/observability-modernization.md)。
|
|
165
|
+
|
|
166
|
+
---
|
|
167
|
+
|
|
168
|
+
## 5. 尚未接线的扩展点
|
|
169
|
+
|
|
170
|
+
以下 hookspec 已定义(你可以实现),但框架尚未接到调用点,按需提 issue 推进:
|
|
171
|
+
|
|
172
|
+
- `df_db_middlewares` / `df_mq_middlewares`:待 DB/MQ 客户端支持中间件注入。
|
|
173
|
+
- `df_config_sources`:待接入配置加载链。
|
|
174
|
+
- `df_telemetry_exporters`:待接入可观测性初始化。
|
|
175
|
+
|
|
176
|
+
完整接线状态见 [Extensions API 参考](../api-reference/extensions.md) 的"接线状态"表。
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Release Notes 发布说明索引
|
|
2
2
|
|
|
3
|
-
> 当前版本:**v4.7.
|
|
3
|
+
> 当前版本:**v4.7.4** · 最近更新:2026-06-29
|
|
4
4
|
|
|
5
5
|
完整变更摘要见 [CHANGELOG.md](../../CHANGELOG.md)。
|
|
6
6
|
|
|
@@ -10,7 +10,8 @@
|
|
|
10
10
|
|
|
11
11
|
| 版本 | 发布日期 | 核心特性 |
|
|
12
12
|
|------|----------|----------|
|
|
13
|
-
| **[v4.7.
|
|
13
|
+
| **[v4.7.4](v4.7.4.md)** ⭐ 当前 | 2026-06-29 | `OmsReporterPlugin` 嵌入式 scope 路由:一次 Bootstrap 多次执行复用,`bind_execution` / `unbind_execution` |
|
|
14
|
+
| **[v4.7.3](v4.7.3.md)** | 2026-05-27 | 日志时间戳标准化:RFC 3339 毫秒 + 显式时区,`use_utc` → `timestamp` |
|
|
14
15
|
| **[v4.7.2](v4.7.2.md)** | 2026-05-26 | 脚手架 `flows/` 目录 + 文档结构补强 + pytest addopts 收敛 |
|
|
15
16
|
| **[v4.7.1](v4.7.1.md)** | 2026-05-22 | 修复 `_auto_allure_observer` 未取消订阅导致 Allure 重复记录 |
|
|
16
17
|
| **[v4.7.0](v4.7.0.md)** | 2026-05-19 | `RuntimeContext.metadata` + 命名 AsyncDatabase 多数据库注册 |
|