df-test-framework 4.5.0__tar.gz → 4.7.1__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (907) hide show
  1. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/CHANGELOG.md +43 -0
  2. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/CLAUDE.md +2 -2
  3. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/PKG-INFO +5 -5
  4. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/README.md +15 -2
  5. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/guides/bootstrap_guide.md +63 -3
  6. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/guides/fixture_chain_pattern.md +6 -0
  7. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/guides/test_data.md +10 -0
  8. df_test_framework-4.7.1/docs/guides/test_data_pipeline_design.md +389 -0
  9. df_test_framework-4.7.1/docs/releases/v4.6.0.md +173 -0
  10. df_test_framework-4.7.1/docs/releases/v4.6.1.md +204 -0
  11. df_test_framework-4.7.1/docs/releases/v4.7.0.md +128 -0
  12. df_test_framework-4.7.1/docs/releases/v4.7.1.md +38 -0
  13. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/pyproject.toml +10 -7
  14. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/src/df_test_framework/__init__.py +21 -2
  15. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/src/df_test_framework/bootstrap/runtime.py +124 -0
  16. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/src/df_test_framework/capabilities/databases/async_database.py +11 -0
  17. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/src/df_test_framework/cli/commands/init_cmd.py +2 -0
  18. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/src/df_test_framework/cli/templates/project/fixture_chain_example.py +112 -1
  19. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/src/df_test_framework/cli/templates/project/pyproject_toml.py +3 -3
  20. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/src/df_test_framework/testing/data/__init__.py +7 -0
  21. df_test_framework-4.7.1/src/df_test_framework/testing/data/pipeline/__init__.py +41 -0
  22. df_test_framework-4.7.1/src/df_test_framework/testing/data/pipeline/_registry.py +20 -0
  23. df_test_framework-4.7.1/src/df_test_framework/testing/data/pipeline/context.py +46 -0
  24. df_test_framework-4.7.1/src/df_test_framework/testing/data/pipeline/dataset.py +237 -0
  25. df_test_framework-4.7.1/src/df_test_framework/testing/data/pipeline/loader.py +105 -0
  26. df_test_framework-4.7.1/src/df_test_framework/testing/data/pipeline/reporter.py +72 -0
  27. df_test_framework-4.7.1/src/df_test_framework/testing/data/pipeline/resolver.py +75 -0
  28. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/src/df_test_framework/testing/fixtures/allure.py +44 -89
  29. df_test_framework-4.7.1/src/df_test_framework/testing/plugins/data_pipeline.py +150 -0
  30. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/tests/bootstrap/test_runtime.py +137 -0
  31. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/tests/conftest.py +3 -0
  32. df_test_framework-4.7.1/tests/testing/data/pipeline/test_pipeline.py +378 -0
  33. df_test_framework-4.7.1/tests/testing/data/pipeline/test_pipeline_plugin.py +242 -0
  34. df_test_framework-4.7.1/tests/testing/decorators/__init__.py +0 -0
  35. df_test_framework-4.7.1/tests/testing/fixtures/test_allure_fixture.py +155 -0
  36. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/uv.lock +552 -509
  37. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/.editorconfig +0 -0
  38. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/.env.example +0 -0
  39. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/.gitattributes +0 -0
  40. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/.github/workflows/README.md +0 -0
  41. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/.github/workflows/lint.yml +0 -0
  42. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/.github/workflows/release.yml +0 -0
  43. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/.github/workflows/scheduled.yml +0 -0
  44. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/.github/workflows/security.yml +0 -0
  45. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/.github/workflows/test.yml +0 -0
  46. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/.gitignore +0 -0
  47. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/.gitleaks.toml +0 -0
  48. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/.gitleaksignore +0 -0
  49. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/.pre-commit-config.yaml +0 -0
  50. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/.python-version +0 -0
  51. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/AGENTS.md +0 -0
  52. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/CONTRIBUTING.md +0 -0
  53. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/README_PYPI.md +0 -0
  54. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/CONTRIBUTOR_GUIDE.md +0 -0
  55. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/DOC_REORGANIZATION_PLAN_v4.0.md +0 -0
  56. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/ESSENTIAL_DOCS.md +0 -0
  57. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/FAQ.md +0 -0
  58. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/LEARNING_PATH.md +0 -0
  59. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/README.md +0 -0
  60. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/api-reference/README.md +0 -0
  61. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/api-reference/clients.md +0 -0
  62. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/api-reference/core/README.md +0 -0
  63. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/api-reference/core/context.md +0 -0
  64. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/api-reference/core/events.md +0 -0
  65. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/api-reference/core/exceptions.md +0 -0
  66. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/api-reference/core/middleware.md +0 -0
  67. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/api-reference/core/protocols.md +0 -0
  68. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/api-reference/core/types.md +0 -0
  69. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/api-reference/core.md +0 -0
  70. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/api-reference/databases.md +0 -0
  71. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/api-reference/drivers.md +0 -0
  72. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/api-reference/extensions.md +0 -0
  73. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/api-reference/infrastructure.md +0 -0
  74. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/api-reference/patterns.md +0 -0
  75. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/api-reference/testing.md +0 -0
  76. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/architecture/ARCHITECTURE_V4.0.md +0 -0
  77. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/architecture/CODE_STRUCTURE.md +0 -0
  78. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/architecture/PLUGIN_SYSTEM_V3.37.md +0 -0
  79. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/architecture/README.md +0 -0
  80. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/architecture/TEST_EXECUTION_LIFECYCLE.md +0 -0
  81. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/architecture/archive/README.md +0 -0
  82. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/architecture/archive/REFACTORING_PLAN_V3.md +0 -0
  83. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/architecture/archive/REFACTORING_PLAN_V3_REVISED.md +0 -0
  84. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/architecture/archive/design/DI_STRATEGY.md +0 -0
  85. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/architecture/archive/design/PREPARE_DATA_DESIGN.md +0 -0
  86. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/architecture/archive/design/TESTING_MODULE_OPTIMIZATION.md +0 -0
  87. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/architecture/archive/design/UOW_CLEANUP_ARCHITECTURE.md +0 -0
  88. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/architecture/archive/design/UOW_REFACTORING_PROPOSAL.md +0 -0
  89. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/architecture/archive/design/allure_integration_modes.md +0 -0
  90. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/architecture/archive/design/capability_plan_vs_current.md +0 -0
  91. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/architecture/archive/design/config-driven-design.md +0 -0
  92. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/architecture/archive/design/config-management-analysis.md +0 -0
  93. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/architecture/archive/design/eventbus-integration-analysis.md +0 -0
  94. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/architecture/archive/design/failure-diagnosis-v2-design.md +0 -0
  95. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/architecture/archive/design/future_allure_plugin_plans.md +0 -0
  96. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/architecture/archive/design/http-vs-web-comparison.md +0 -0
  97. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/architecture/archive/design/observability-debugging-unification.md +0 -0
  98. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/architecture/archive/design/provider-pattern-deep-dive.md +0 -0
  99. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/architecture/archive/design/tech-debt-cleanup-plan.md +0 -0
  100. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/architecture/archive/design/ui-failure-diagnosis-implementation-v3.46.3.md +0 -0
  101. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/architecture/archive/design/ui-observability-design.md +0 -0
  102. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/architecture/archive/discussion_1_initial_issues.md +0 -0
  103. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/architecture/archive/v3_complete_draft.md +0 -0
  104. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/architecture/archive/v3_final_draft.md +0 -0
  105. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/architecture/archive/versions/FRAMEWORK_ARCHITECTURE_v3.6.2.md +0 -0
  106. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/architecture/archive/versions/OVERVIEW_V3.17.md +0 -0
  107. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/architecture/archive/versions/V3.14_ENTERPRISE_PLATFORM_DESIGN.md +0 -0
  108. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/architecture/archive/versions/V3.16_LAYER4_BOOTSTRAP_ARCHITECTURE.md +0 -0
  109. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/architecture/archive/versions/V3.17_EVENT_SYSTEM_REDESIGN.md +0 -0
  110. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/architecture/archive/versions/V3_ARCHITECTURE.md +0 -0
  111. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/architecture/archive/versions/V3_IMPLEMENTATION.md +0 -0
  112. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/architecture/archive/versions/overview.md +0 -0
  113. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/architecture/archive/versions/v2-architecture.md +0 -0
  114. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/architecture/extension-points.md +0 -0
  115. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/architecture/failure-diagnosis-hook-example.py +0 -0
  116. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/architecture/multi-project-reuse.md +0 -0
  117. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/architecture/observability-architecture.md +0 -0
  118. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/architecture/test-type-support.md +0 -0
  119. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/architecture//344/272/224/345/261/202/346/236/266/346/236/204/350/257/246/350/247/243.md" +0 -0
  120. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/archive/README.md +0 -0
  121. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/archive/analysis/ACTION_PLAN_v2.0.md +0 -0
  122. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/archive/analysis/AUDIT_VERIFICATION_REPORT.md +0 -0
  123. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/archive/analysis/AUTH_PLACEMENT_ANALYSIS.md +0 -0
  124. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/archive/analysis/CODE_REVIEW_f95e08cd.md +0 -0
  125. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/archive/analysis/COMPREHENSIVE_FEATURE_AUDIT.md +0 -0
  126. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/archive/analysis/FRAMEWORK_OPTIMIZATION_ANALYSIS_2025.md +0 -0
  127. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/archive/analysis/PHASE2_COMPARISON_ANALYSIS.md +0 -0
  128. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/archive/analysis/PHASE2_COMPLETION_REPORT.md +0 -0
  129. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/archive/analysis/PHASE2_SUMMARY.md +0 -0
  130. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/archive/analysis/README.md +0 -0
  131. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/archive/analysis/V3_REFACTORING_COMPLETE.md +0 -0
  132. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/archive/analysis_2025/ALLURE_HTTP_LOGGING_ISSUE.md +0 -0
  133. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/archive/analysis_2025/ALLURE_INTEGRATION_CHECK_REPORT.md +0 -0
  134. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/archive/analysis_2025/ALLURE_INTEGRATION_DESIGN.md +0 -0
  135. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/archive/analysis_2025/ALLURE_INTEGRATION_SUMMARY.md +0 -0
  136. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/archive/analysis_2025/ALLURE_ROOT_CAUSE_ANALYSIS.md +0 -0
  137. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/archive/analysis_2025/CODE_ANALYSIS_AND_PROGRESS.md +0 -0
  138. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/archive/analysis_2025/COMPREHENSIVE_FRAMEWORK_EVALUATION.md +0 -0
  139. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/archive/analysis_2025/CONFIG_MODERNIZATION_ANALYSIS.md +0 -0
  140. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/archive/design/ARCHITECTURE_AUDIT.md +0 -0
  141. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/archive/design/FUTURE_ENHANCEMENTS.md +0 -0
  142. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/archive/design/IMPLEMENTATION_SUMMARY.md +0 -0
  143. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/archive/design/MIDDLEWARE_V3.14_DESIGN.md +0 -0
  144. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/archive/design/ROADMAP_V3.29_ENHANCEMENTS.md +0 -0
  145. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/archive/design/SIGNATURE_FRAMEWORK_CAPABILITIES.md +0 -0
  146. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/archive/design/TEMPLATE_DEBUG_FIXTURES_ISSUE.md +0 -0
  147. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/archive/design/observability-config-design.md +0 -0
  148. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/archive/design/ui-best-practices-2026.md +0 -0
  149. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/archive/design/web-architecture-consistency-design.md +0 -0
  150. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/archive/design/web-event-driven-comparison.md +0 -0
  151. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/archive/evaluations_2025/DUAL_AI_ANALYSIS_COMPARISON.md +0 -0
  152. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/archive/evaluations_2025/FRAMEWORK_ASSESSMENT.md +0 -0
  153. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/archive/evaluations_2025/FRAMEWORK_BEST_PRACTICES_UPDATE.md +0 -0
  154. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/archive/evaluations_2025/FRAMEWORK_CAPABILITIES.md +0 -0
  155. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/archive/evaluations_2025/FRAMEWORK_IMPROVEMENT_PROPOSALS.md +0 -0
  156. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/archive/guides/async_database_guide.md +0 -0
  157. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/archive/guides/async_http_client.md +0 -0
  158. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/archive/guides/httpx_advanced_usage.md +0 -0
  159. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/archive/guides/logging_configuration.md +0 -0
  160. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/archive/guides/logging_pytest_integration.md +0 -0
  161. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/archive/guides/modern_logging_best_practices.md +0 -0
  162. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/archive/guides/repository_uow_guide.md +0 -0
  163. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/archive/interceptor_refactoring/111.md +0 -0
  164. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/archive/interceptor_refactoring/CONFIG_AND_INTERCEPTOR_INTEGRATION.md +0 -0
  165. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/archive/interceptor_refactoring/DIRECTORY_STRUCTURE_REFACTORING.md +0 -0
  166. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/archive/interceptor_refactoring/INTERCEPTOR_ARCHITECTURE.md +0 -0
  167. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/archive/interceptor_refactoring/INTERCEPTOR_ARCHITECTURE_VERIFICATION.md +0 -0
  168. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/archive/interceptor_refactoring/INTERCEPTOR_CONFIG_BEST_PRACTICES.md +0 -0
  169. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/archive/interceptor_refactoring/INTERCEPTOR_IDEAL_DESIGN.md +0 -0
  170. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/archive/interceptor_refactoring/INTERCEPTOR_IDEAL_VS_ACTUAL.md +0 -0
  171. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/archive/interceptor_refactoring/INTERCEPTOR_LOCATION_DECISION.md +0 -0
  172. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/archive/interceptor_refactoring/INTERCEPTOR_NAMING_STANDARDS.md +0 -0
  173. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/archive/interceptor_refactoring/INTERCEPTOR_PERFORMANCE_ANALYSIS.md +0 -0
  174. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/archive/interceptor_refactoring/README.md +0 -0
  175. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/archive/interceptor_refactoring/REFACTORING_IMPLEMENTATION_PLAN.md +0 -0
  176. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/archive/interceptor_refactoring/REFACTORING_PROGRESS.md +0 -0
  177. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/archive/issues/README.md +0 -0
  178. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/archive/issues/summary.md +0 -0
  179. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/archive/issues/v1.md +0 -0
  180. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/archive/migration/README.md +0 -0
  181. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/archive/migration/v3.15-to-v3.16.md +0 -0
  182. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/archive/plans/CAPABILITY_LAYER_OPTIMIZATION.md +0 -0
  183. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/archive/plans/REFACTORING_PLAN_v2.md +0 -0
  184. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/archive/plans/REFACTORING_TASKS_v2.md +0 -0
  185. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/archive/plans/RFC_MULTIPART_FORM_DATA_SUPPORT.md +0 -0
  186. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/archive/plans/RFC_MULTIPART_IMPLEMENTATION_CODE.md +0 -0
  187. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/archive/plans/UV_SYNC_MIGRATION_SUMMARY.md +0 -0
  188. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/archive/plans/UV_SYNC_QUICK_START.md +0 -0
  189. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/archive/plans/v2-migration-plan-draft.md +0 -0
  190. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/archive/reports_2025/CHANGELOG_AUDIT_REPORT.md +0 -0
  191. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/archive/reports_2025/CODE_QUALITY_FIXES_2025-11-09.md +0 -0
  192. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/archive/reports_2025/CORE_DOCS_UPDATE_PLAN.md +0 -0
  193. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/archive/reports_2025/DOCUMENTATION_AUDIT_REPORT_2025-12-05.md +0 -0
  194. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/archive/reports_2025/DOCUMENTATION_CLEANUP_SUMMARY.md +0 -0
  195. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/archive/reports_2025/DOCUMENTATION_INDEX.md +0 -0
  196. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/archive/reports_2025/DOCUMENTATION_MAINTENANCE_COMPLETE.md +0 -0
  197. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/archive/reports_2025/DOCUMENTATION_UPDATE_CHECKLIST.md +0 -0
  198. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/archive/reports_2025/DOC_UPDATE_SUMMARY.md +0 -0
  199. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/archive/reports_2025/IMPROVEMENTS_2025-01-09.md +0 -0
  200. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/archive/reports_2025/PHASE3_COMPLETION_REPORT.md +0 -0
  201. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/archive/reports_2025/PYTHON_VERSION_UNIFICATION.md +0 -0
  202. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/archive/reports_2025/REFACTORING_COMPLETION_CHECK.md +0 -0
  203. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/archive/reports_2025/TEST_CODE_GENERATION_ANALYSIS.md +0 -0
  204. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/archive/reports_2025/V3.3.0_DOCUMENTATION_UPDATE_SUMMARY.md +0 -0
  205. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/archive/reports_2025/V3.3.0_MIGRATION_CHECKLIST.md +0 -0
  206. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/archive/reports_2025/V3.5_ALLURE_INTEGRATION_PLAN.md +0 -0
  207. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/archive/reports_2025/V3.5_DOCUMENTATION_COMPLETE.md +0 -0
  208. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/archive/reports_2025/V3.5_OBSERVABILITY_FINAL_STATUS.md +0 -0
  209. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/archive/reports_2025/V3.5_PHASE2_ACCEPTANCE_REPORT.md +0 -0
  210. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/archive/reports_2025/V3.5_REFACTOR_PLAN.md +0 -0
  211. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/archive/reports_2025/V3.5_REFACTOR_PLAN_REVISED.md +0 -0
  212. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/archive/reports_2025/VERIFIED_BEST_PRACTICES_INTEGRATION_COMPLETE.md +0 -0
  213. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/archive/reports_2025/async_http_client_design.md +0 -0
  214. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/archive/user-guide/PHASE3_FEATURES.md +0 -0
  215. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/archive/user-guide/extensions.md +0 -0
  216. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/archive/user-guide/ui-testing.md +0 -0
  217. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/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
  218. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/archive/v1/FRAMEWORK_DESIGN_PRINCIPLES.md +0 -0
  219. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/archive/v1/README.md +0 -0
  220. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/archive/v1/UPGRADE_SUMMARY_v1.3.1.md +0 -0
  221. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/archive/v1/architecture.md +0 -0
  222. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/archive/v1/best-practices.md +0 -0
  223. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/archive/v1/config-integration-guide.md +0 -0
  224. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/archive/v1/optimization-report.md +0 -0
  225. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/archive/v1/publishing.md +0 -0
  226. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/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
  227. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/archive/versions/QUICK_START_V3.14.md +0 -0
  228. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/archive/versions/QUICK_START_V3.5.md +0 -0
  229. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/ci-templates/README.md +0 -0
  230. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/ci-templates/github-actions.yml +0 -0
  231. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/ci-templates/gitlab-ci.yml +0 -0
  232. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/development/DOCUMENTATION_MAINTENANCE.md +0 -0
  233. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/development/FRAMEWORK_DEPENDENCY_MANAGEMENT.md +0 -0
  234. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/development/RELEASE.md +0 -0
  235. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/development/VERSION_CONTROL_RULES.md +0 -0
  236. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/development/local-development.md +0 -0
  237. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/guides/DECIMAL_GUIDE.md +0 -0
  238. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/guides/allure_plugin.md +0 -0
  239. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/guides/assertions_guide.md +0 -0
  240. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/guides/async_api_guide.md +0 -0
  241. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/guides/auth_session_guide.md +0 -0
  242. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/guides/config_guide.md +0 -0
  243. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/guides/database_guide.md +0 -0
  244. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/guides/decorators_guide.md +0 -0
  245. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/guides/distributed_tracing.md +0 -0
  246. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/guides/event_bus_guide.md +0 -0
  247. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/guides/extensions.md +0 -0
  248. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/guides/factory_guide.md +0 -0
  249. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/guides/fixtures_guide.md +0 -0
  250. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/guides/graphql_client.md +0 -0
  251. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/guides/grpc_client.md +0 -0
  252. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/guides/helpers_guide.md +0 -0
  253. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/guides/http_client_guide.md +0 -0
  254. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/guides/integration-guide.md +0 -0
  255. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/guides/local_debug_quickstart.md +0 -0
  256. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/guides/logging_guide.md +0 -0
  257. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/guides/message_queue.md +0 -0
  258. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/guides/middleware_guide.md +0 -0
  259. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/guides/mocking.md +0 -0
  260. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/guides/monitoring_plugin.md +0 -0
  261. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/guides/openapi_guide.md +0 -0
  262. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/guides/plugins_guide.md +0 -0
  263. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/guides/prometheus_metrics.md +0 -0
  264. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/guides/redis_guide.md +0 -0
  265. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/guides/resilience_guide.md +0 -0
  266. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/guides/sanitize_guide.md +0 -0
  267. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/guides/scaffold_cli_guide.md +0 -0
  268. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/guides/service_client_guide.md +0 -0
  269. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/guides/storage.md +0 -0
  270. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/guides/telemetry_guide.md +0 -0
  271. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/guides/test_data_cleanup.md +0 -0
  272. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/guides/testing-development.md +0 -0
  273. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/guides/web-ui-testing.md +0 -0
  274. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/migration/README.md +0 -0
  275. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/migration/v3-to-v4.md +0 -0
  276. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/releases/README.md +0 -0
  277. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/releases/v3.0.0-alpha.md +0 -0
  278. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/releases/v3.1.0.md +0 -0
  279. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/releases/v3.10.0.md +0 -0
  280. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/releases/v3.11.0.md +0 -0
  281. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/releases/v3.11.1.md +0 -0
  282. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/releases/v3.12.0.md +0 -0
  283. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/releases/v3.12.1.md +0 -0
  284. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/releases/v3.13.0.md +0 -0
  285. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/releases/v3.14.0.md +0 -0
  286. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/releases/v3.14.0_completion_report.md +0 -0
  287. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/releases/v3.14.0_implementation_complete.md +0 -0
  288. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/releases/v3.16.0.md +0 -0
  289. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/releases/v3.17.0.md +0 -0
  290. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/releases/v3.17.1.md +0 -0
  291. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/releases/v3.17.2.md +0 -0
  292. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/releases/v3.18.0.md +0 -0
  293. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/releases/v3.18.1-bugfix.md +0 -0
  294. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/releases/v3.18.1.md +0 -0
  295. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/releases/v3.19.0.md +0 -0
  296. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/releases/v3.2.0.md +0 -0
  297. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/releases/v3.20.0.md +0 -0
  298. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/releases/v3.21.0.md +0 -0
  299. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/releases/v3.22.0.md +0 -0
  300. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/releases/v3.22.1.md +0 -0
  301. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/releases/v3.23.0.md +0 -0
  302. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/releases/v3.24.0.md +0 -0
  303. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/releases/v3.25.0.md +0 -0
  304. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/releases/v3.26.0.md +0 -0
  305. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/releases/v3.27.0.md +0 -0
  306. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/releases/v3.28.0.md +0 -0
  307. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/releases/v3.28.1.md +0 -0
  308. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/releases/v3.29.0.md +0 -0
  309. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/releases/v3.3.0.md +0 -0
  310. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/releases/v3.30.0.md +0 -0
  311. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/releases/v3.31.0.md +0 -0
  312. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/releases/v3.32.0.md +0 -0
  313. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/releases/v3.33.0.md +0 -0
  314. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/releases/v3.34.0.md +0 -0
  315. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/releases/v3.34.1.md +0 -0
  316. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/releases/v3.35.0.md +0 -0
  317. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/releases/v3.35.1.md +0 -0
  318. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/releases/v3.35.2.md +0 -0
  319. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/releases/v3.35.3.md +0 -0
  320. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/releases/v3.35.4.md +0 -0
  321. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/releases/v3.35.5.md +0 -0
  322. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/releases/v3.35.6.md +0 -0
  323. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/releases/v3.35.7.md +0 -0
  324. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/releases/v3.36.0.md +0 -0
  325. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/releases/v3.36.1.md +0 -0
  326. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/releases/v3.37.0.md +0 -0
  327. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/releases/v3.38.0.md +0 -0
  328. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/releases/v3.38.10.md +0 -0
  329. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/releases/v3.38.2.md +0 -0
  330. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/releases/v3.38.4.md +0 -0
  331. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/releases/v3.38.5.md +0 -0
  332. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/releases/v3.38.7.md +0 -0
  333. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/releases/v3.38.8.md +0 -0
  334. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/releases/v3.38.9.md +0 -0
  335. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/releases/v3.39.0.md +0 -0
  336. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/releases/v3.39.1.md +0 -0
  337. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/releases/v3.4.0.md +0 -0
  338. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/releases/v3.40.0.md +0 -0
  339. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/releases/v3.41.0.md +0 -0
  340. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/releases/v3.41.1.md +0 -0
  341. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/releases/v3.42.0.md +0 -0
  342. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/releases/v3.43.0.md +0 -0
  343. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/releases/v3.44.0.md +0 -0
  344. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/releases/v3.45.0.md +0 -0
  345. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/releases/v3.46.1.md +0 -0
  346. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/releases/v3.46.2.md +0 -0
  347. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/releases/v3.46.3.md +0 -0
  348. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/releases/v3.5.0.md +0 -0
  349. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/releases/v3.6.0.md +0 -0
  350. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/releases/v3.6.1.md +0 -0
  351. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/releases/v3.6.2.md +0 -0
  352. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/releases/v3.7.0.md +0 -0
  353. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/releases/v3.8.0.md +0 -0
  354. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/releases/v3.9.0.md +0 -0
  355. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/releases/v4.0.0.md +0 -0
  356. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/releases/v4.0.1.md +0 -0
  357. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/releases/v4.0.2.md +0 -0
  358. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/releases/v4.0.3.md +0 -0
  359. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/releases/v4.0.4.md +0 -0
  360. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/releases/v4.1.0.md +0 -0
  361. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/releases/v4.1.1.md +0 -0
  362. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/releases/v4.1.2.md +0 -0
  363. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/releases/v4.2.0.md +0 -0
  364. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/releases/v4.2.1.md +0 -0
  365. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/releases/v4.2.2.md +0 -0
  366. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/releases/v4.3.0.md +0 -0
  367. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/releases/v4.3.1.md +0 -0
  368. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/releases/v4.4.0.md +0 -0
  369. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/releases/v4.4.1.md +0 -0
  370. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/releases/v4.4.2.md +0 -0
  371. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/releases/v4.4.3.md +0 -0
  372. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/releases/v4.4.4.md +0 -0
  373. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/releases/v4.5.0.md +0 -0
  374. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/skills/write-code.zip +0 -0
  375. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/skills/write-test.zip +0 -0
  376. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/troubleshooting/README.md +0 -0
  377. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/troubleshooting/common-errors.md +0 -0
  378. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/troubleshooting/debugging-guide.md +0 -0
  379. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/user-guide/BEST_PRACTICES.md +0 -0
  380. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/user-guide/QUICK_REFERENCE.md +0 -0
  381. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/user-guide/QUICK_START.md +0 -0
  382. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/user-guide/README.md +0 -0
  383. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/user-guide/USER_MANUAL.md +0 -0
  384. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/user-guide/VERIFIED_BEST_PRACTICES.md +0 -0
  385. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/user-guide/ci-cd.md +0 -0
  386. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/user-guide/code-generation.md +0 -0
  387. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/user-guide/configuration.md +0 -0
  388. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/user-guide/cross-project-sharing.md +0 -0
  389. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/user-guide/debugging.md +0 -0
  390. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/user-guide/examples.md +0 -0
  391. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/user-guide/multi-repo.md +0 -0
  392. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/user-guide/nested-settings-guide.md +0 -0
  393. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/docs/user-guide/security-best-practices.md +0 -0
  394. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/examples/01-basic/README.md +0 -0
  395. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/examples/01-basic/database_operations.py +0 -0
  396. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/examples/01-basic/http_client_usage.py +0 -0
  397. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/examples/01-basic/redis_cache.py +0 -0
  398. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/examples/01-basic/storage_usage.py +0 -0
  399. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/examples/02-bootstrap/README.md +0 -0
  400. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/examples/02-bootstrap/custom_providers.py +0 -0
  401. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/examples/02-bootstrap/custom_settings.py +0 -0
  402. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/examples/02-bootstrap/minimal_bootstrap.py +0 -0
  403. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/examples/02-bootstrap/with_extensions.py +0 -0
  404. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/examples/03-testing/README.md +0 -0
  405. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/examples/03-testing/conftest.py +0 -0
  406. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/examples/03-testing/test_api.py +0 -0
  407. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/examples/03-testing/test_database.py +0 -0
  408. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/examples/03-testing/test_with_fixtures.py +0 -0
  409. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/examples/04-patterns/README.md +0 -0
  410. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/examples/04-patterns/builder_pattern.py +0 -0
  411. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/examples/04-patterns/combined_patterns.py +0 -0
  412. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/examples/04-patterns/repository_pattern.py +0 -0
  413. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/examples/05-extensions/README.md +0 -0
  414. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/examples/05-extensions/allure_enhancement_extension.py +0 -0
  415. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/examples/05-extensions/custom_extension.py +0 -0
  416. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/examples/05-extensions/data_factory_extension.py +0 -0
  417. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/examples/05-extensions/environment_validator_extension.py +0 -0
  418. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/examples/05-extensions/monitoring_extension.py +0 -0
  419. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/examples/05-extensions/mq_monitor_extension.py +0 -0
  420. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/examples/05-extensions/notification_extension.py +0 -0
  421. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/examples/06-ui-testing/README.md +0 -0
  422. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/examples/06-ui-testing/basic_ui_test.py +0 -0
  423. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/examples/06-ui-testing/conftest.py +0 -0
  424. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/examples/06-ui-testing/page_object_example.py +0 -0
  425. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/examples/07-message-queue/README.md +0 -0
  426. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/examples/07-message-queue/docker-compose-kafka.yml +0 -0
  427. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/examples/07-message-queue/docker-compose-rabbitmq.yml +0 -0
  428. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/examples/07-message-queue/docker-compose-rocketmq.yml +0 -0
  429. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/examples/07-message-queue/kafka_basic.py +0 -0
  430. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/examples/07-message-queue/kafka_ssl.py +0 -0
  431. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/examples/07-message-queue/rabbitmq_basic.py +0 -0
  432. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/examples/07-message-queue/rabbitmq_topic.py +0 -0
  433. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/examples/07-message-queue/rocketmq-broker.conf +0 -0
  434. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/examples/07-message-queue/rocketmq_basic.py +0 -0
  435. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/examples/07-v35-features/01_configurable_interceptors.py +0 -0
  436. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/examples/07-v35-features/02_profile_configuration.py +0 -0
  437. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/examples/07-v35-features/03_runtime_overrides.py +0 -0
  438. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/examples/07-v35-features/04_observability.py +0 -0
  439. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/examples/07-v35-features/README.md +0 -0
  440. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/examples/08-v37-features/01_unit_of_work_basics.py +0 -0
  441. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/examples/08-v37-features/02_repository_v37.py +0 -0
  442. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/examples/08-v37-features/03_auto_rollback_testing.py +0 -0
  443. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/examples/08-v37-features/04_multi_repository_transactions.py +0 -0
  444. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/examples/08-v37-features/05_project_uow.py +0 -0
  445. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/examples/08-v37-features/06_exception_handling_with_uow.py +0 -0
  446. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/examples/08-v37-features/README.md +0 -0
  447. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/examples/README.md +0 -0
  448. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/scripts/fetch_swagger.py +0 -0
  449. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/scripts/security-scan.bat +0 -0
  450. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/scripts/security-scan.sh +0 -0
  451. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/src/df_test_framework/bootstrap/__init__.py +0 -0
  452. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/src/df_test_framework/bootstrap/bootstrap.py +0 -0
  453. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/src/df_test_framework/bootstrap/providers.py +0 -0
  454. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/src/df_test_framework/capabilities/__init__.py +0 -0
  455. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/src/df_test_framework/capabilities/clients/__init__.py +0 -0
  456. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/src/df_test_framework/capabilities/clients/graphql/__init__.py +0 -0
  457. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/src/df_test_framework/capabilities/clients/graphql/client.py +0 -0
  458. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/src/df_test_framework/capabilities/clients/graphql/middleware/__init__.py +0 -0
  459. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/src/df_test_framework/capabilities/clients/graphql/middleware/base.py +0 -0
  460. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/src/df_test_framework/capabilities/clients/graphql/middleware/event_publisher.py +0 -0
  461. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/src/df_test_framework/capabilities/clients/graphql/middleware/logging.py +0 -0
  462. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/src/df_test_framework/capabilities/clients/graphql/middleware/retry.py +0 -0
  463. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/src/df_test_framework/capabilities/clients/graphql/models.py +0 -0
  464. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/src/df_test_framework/capabilities/clients/graphql/query_builder.py +0 -0
  465. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/src/df_test_framework/capabilities/clients/grpc/__init__.py +0 -0
  466. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/src/df_test_framework/capabilities/clients/grpc/client.py +0 -0
  467. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/src/df_test_framework/capabilities/clients/grpc/middleware/__init__.py +0 -0
  468. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/src/df_test_framework/capabilities/clients/grpc/middleware/base.py +0 -0
  469. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/src/df_test_framework/capabilities/clients/grpc/middleware/event_publisher.py +0 -0
  470. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/src/df_test_framework/capabilities/clients/grpc/middleware/logging.py +0 -0
  471. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/src/df_test_framework/capabilities/clients/grpc/middleware/metadata.py +0 -0
  472. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/src/df_test_framework/capabilities/clients/grpc/middleware/retry.py +0 -0
  473. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/src/df_test_framework/capabilities/clients/grpc/middleware/timing.py +0 -0
  474. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/src/df_test_framework/capabilities/clients/grpc/models.py +0 -0
  475. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/src/df_test_framework/capabilities/clients/http/__init__.py +0 -0
  476. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/src/df_test_framework/capabilities/clients/http/core/__init__.py +0 -0
  477. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/src/df_test_framework/capabilities/clients/http/core/request.py +0 -0
  478. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/src/df_test_framework/capabilities/clients/http/core/response.py +0 -0
  479. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/src/df_test_framework/capabilities/clients/http/middleware/__init__.py +0 -0
  480. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/src/df_test_framework/capabilities/clients/http/middleware/auth.py +0 -0
  481. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/src/df_test_framework/capabilities/clients/http/middleware/event_publisher.py +0 -0
  482. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/src/df_test_framework/capabilities/clients/http/middleware/factory.py +0 -0
  483. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/src/df_test_framework/capabilities/clients/http/middleware/logging.py +0 -0
  484. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/src/df_test_framework/capabilities/clients/http/middleware/retry.py +0 -0
  485. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/src/df_test_framework/capabilities/clients/http/middleware/signature.py +0 -0
  486. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/src/df_test_framework/capabilities/clients/http/middleware/telemetry.py +0 -0
  487. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/src/df_test_framework/capabilities/clients/http/rest/__init__.py +0 -0
  488. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/src/df_test_framework/capabilities/clients/http/rest/factory.py +0 -0
  489. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/src/df_test_framework/capabilities/clients/http/rest/httpx/__init__.py +0 -0
  490. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/src/df_test_framework/capabilities/clients/http/rest/httpx/async_base_api.py +0 -0
  491. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/src/df_test_framework/capabilities/clients/http/rest/httpx/async_client.py +0 -0
  492. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/src/df_test_framework/capabilities/clients/http/rest/httpx/base_api.py +0 -0
  493. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/src/df_test_framework/capabilities/clients/http/rest/httpx/client.py +0 -0
  494. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/src/df_test_framework/capabilities/clients/http/rest/protocols.py +0 -0
  495. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/src/df_test_framework/capabilities/databases/__init__.py +0 -0
  496. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/src/df_test_framework/capabilities/databases/database.py +0 -0
  497. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/src/df_test_framework/capabilities/databases/factory.py +0 -0
  498. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/src/df_test_framework/capabilities/databases/query_builder.py +0 -0
  499. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/src/df_test_framework/capabilities/databases/redis/__init__.py +0 -0
  500. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/src/df_test_framework/capabilities/databases/redis/async_redis.py +0 -0
  501. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/src/df_test_framework/capabilities/databases/redis/redis_client.py +0 -0
  502. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/src/df_test_framework/capabilities/databases/repositories/__init__.py +0 -0
  503. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/src/df_test_framework/capabilities/databases/repositories/base.py +0 -0
  504. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/src/df_test_framework/capabilities/databases/repositories/query_spec.py +0 -0
  505. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/src/df_test_framework/capabilities/databases/uow.py +0 -0
  506. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/src/df_test_framework/capabilities/drivers/__init__.py +0 -0
  507. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/src/df_test_framework/capabilities/drivers/web/__init__.py +0 -0
  508. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/src/df_test_framework/capabilities/drivers/web/app_actions.py +0 -0
  509. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/src/df_test_framework/capabilities/drivers/web/async_app_actions.py +0 -0
  510. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/src/df_test_framework/capabilities/drivers/web/factory.py +0 -0
  511. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/src/df_test_framework/capabilities/drivers/web/playwright/__init__.py +0 -0
  512. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/src/df_test_framework/capabilities/drivers/web/playwright/async_browser.py +0 -0
  513. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/src/df_test_framework/capabilities/drivers/web/playwright/async_browser_pool.py +0 -0
  514. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/src/df_test_framework/capabilities/drivers/web/playwright/async_page.py +0 -0
  515. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/src/df_test_framework/capabilities/drivers/web/playwright/browser.py +0 -0
  516. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/src/df_test_framework/capabilities/drivers/web/playwright/component.py +0 -0
  517. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/src/df_test_framework/capabilities/drivers/web/playwright/locator.py +0 -0
  518. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/src/df_test_framework/capabilities/drivers/web/playwright/page.py +0 -0
  519. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/src/df_test_framework/capabilities/drivers/web/protocols.py +0 -0
  520. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/src/df_test_framework/capabilities/engines/__init__.py +0 -0
  521. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/src/df_test_framework/capabilities/engines/batch/__init__.py +0 -0
  522. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/src/df_test_framework/capabilities/engines/batch/spark/__init__.py +0 -0
  523. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/src/df_test_framework/capabilities/engines/olap/__init__.py +0 -0
  524. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/src/df_test_framework/capabilities/engines/stream/__init__.py +0 -0
  525. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/src/df_test_framework/capabilities/engines/stream/flink/__init__.py +0 -0
  526. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/src/df_test_framework/capabilities/messengers/__init__.py +0 -0
  527. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/src/df_test_framework/capabilities/messengers/pubsub/__init__.py +0 -0
  528. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/src/df_test_framework/capabilities/messengers/queue/__init__.py +0 -0
  529. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/src/df_test_framework/capabilities/messengers/queue/kafka/__init__.py +0 -0
  530. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/src/df_test_framework/capabilities/messengers/queue/kafka/client.py +0 -0
  531. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/src/df_test_framework/capabilities/messengers/queue/kafka/config.py +0 -0
  532. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/src/df_test_framework/capabilities/messengers/queue/rabbitmq/__init__.py +0 -0
  533. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/src/df_test_framework/capabilities/messengers/queue/rabbitmq/client.py +0 -0
  534. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/src/df_test_framework/capabilities/messengers/queue/rabbitmq/config.py +0 -0
  535. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/src/df_test_framework/capabilities/messengers/queue/rocketmq/__init__.py +0 -0
  536. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/src/df_test_framework/capabilities/messengers/queue/rocketmq/client.py +0 -0
  537. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/src/df_test_framework/capabilities/messengers/queue/rocketmq/config.py +0 -0
  538. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/src/df_test_framework/capabilities/storages/__init__.py +0 -0
  539. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/src/df_test_framework/capabilities/storages/blob/__init__.py +0 -0
  540. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/src/df_test_framework/capabilities/storages/file/__init__.py +0 -0
  541. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/src/df_test_framework/capabilities/storages/file/local/__init__.py +0 -0
  542. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/src/df_test_framework/capabilities/storages/file/local/client.py +0 -0
  543. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/src/df_test_framework/capabilities/storages/file/local/config.py +0 -0
  544. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/src/df_test_framework/capabilities/storages/object/__init__.py +0 -0
  545. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/src/df_test_framework/capabilities/storages/object/oss/__init__.py +0 -0
  546. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/src/df_test_framework/capabilities/storages/object/oss/client.py +0 -0
  547. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/src/df_test_framework/capabilities/storages/object/oss/config.py +0 -0
  548. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/src/df_test_framework/capabilities/storages/object/s3/__init__.py +0 -0
  549. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/src/df_test_framework/capabilities/storages/object/s3/client.py +0 -0
  550. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/src/df_test_framework/capabilities/storages/object/s3/config.py +0 -0
  551. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/src/df_test_framework/cli/__init__.py +0 -0
  552. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/src/df_test_framework/cli/__main__.py +0 -0
  553. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/src/df_test_framework/cli/commands/__init__.py +0 -0
  554. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/src/df_test_framework/cli/commands/cicd.py +0 -0
  555. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/src/df_test_framework/cli/commands/env.py +0 -0
  556. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/src/df_test_framework/cli/commands/generate_cmd.py +0 -0
  557. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/src/df_test_framework/cli/commands/interactive.py +0 -0
  558. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/src/df_test_framework/cli/generators/__init__.py +0 -0
  559. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/src/df_test_framework/cli/generators/json_to_model.py +0 -0
  560. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/src/df_test_framework/cli/generators/openapi_generator.py +0 -0
  561. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/src/df_test_framework/cli/generators/openapi_parser.py +0 -0
  562. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/src/df_test_framework/cli/main.py +0 -0
  563. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/src/df_test_framework/cli/templates/__init__.py +0 -0
  564. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/src/df_test_framework/cli/templates/cicd/.github/workflows/release.yml +0 -0
  565. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/src/df_test_framework/cli/templates/cicd/.github/workflows/scheduled.yml +0 -0
  566. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/src/df_test_framework/cli/templates/cicd/.github/workflows/test-full.yml +0 -0
  567. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/src/df_test_framework/cli/templates/cicd/.github/workflows/test.yml +0 -0
  568. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/src/df_test_framework/cli/templates/cicd/.gitlab-ci.yml +0 -0
  569. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/src/df_test_framework/cli/templates/cicd/Jenkinsfile +0 -0
  570. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/src/df_test_framework/cli/templates/cicd/docker/.dockerignore +0 -0
  571. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/src/df_test_framework/cli/templates/cicd/docker/Dockerfile +0 -0
  572. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/src/df_test_framework/cli/templates/cicd/docker/docker-compose.yml +0 -0
  573. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/src/df_test_framework/cli/templates/generators/__init__.py +0 -0
  574. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/src/df_test_framework/cli/templates/generators/actions.py +0 -0
  575. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/src/df_test_framework/cli/templates/generators/api_client.py +0 -0
  576. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/src/df_test_framework/cli/templates/generators/builder.py +0 -0
  577. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/src/df_test_framework/cli/templates/generators/env_files.py +0 -0
  578. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/src/df_test_framework/cli/templates/generators/graphql_client.py +0 -0
  579. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/src/df_test_framework/cli/templates/generators/redis_example.py +0 -0
  580. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/src/df_test_framework/cli/templates/generators/repository.py +0 -0
  581. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/src/df_test_framework/cli/templates/generators/settings_enhanced.py +0 -0
  582. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/src/df_test_framework/cli/templates/generators/test.py +0 -0
  583. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/src/df_test_framework/cli/templates/generators/test_complete.py +0 -0
  584. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/src/df_test_framework/cli/templates/generators/test_graphql.py +0 -0
  585. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/src/df_test_framework/cli/templates/project/__init__.py +0 -0
  586. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/src/df_test_framework/cli/templates/project/async_example_api.py +0 -0
  587. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/src/df_test_framework/cli/templates/project/async_ui_app_actions.py +0 -0
  588. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/src/df_test_framework/cli/templates/project/base_api.py +0 -0
  589. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/src/df_test_framework/cli/templates/project/conftest.py +0 -0
  590. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/src/df_test_framework/cli/templates/project/constants.py +0 -0
  591. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/src/df_test_framework/cli/templates/project/data_cleaners.py +0 -0
  592. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/src/df_test_framework/cli/templates/project/default_http_client.py +0 -0
  593. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/src/df_test_framework/cli/templates/project/docs_api.py +0 -0
  594. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/src/df_test_framework/cli/templates/project/editorconfig.py +0 -0
  595. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/src/df_test_framework/cli/templates/project/enhanced_gitignore.py +0 -0
  596. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/src/df_test_framework/cli/templates/project/env.py +0 -0
  597. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/src/df_test_framework/cli/templates/project/fixtures_init.py +0 -0
  598. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/src/df_test_framework/cli/templates/project/full_conftest.py +0 -0
  599. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/src/df_test_framework/cli/templates/project/full_settings.py +0 -0
  600. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/src/df_test_framework/cli/templates/project/gitattributes.py +0 -0
  601. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/src/df_test_framework/cli/templates/project/gitignore.py +0 -0
  602. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/src/df_test_framework/cli/templates/project/models_requests_example.py +0 -0
  603. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/src/df_test_framework/cli/templates/project/models_responses_example.py +0 -0
  604. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/src/df_test_framework/cli/templates/project/readme.py +0 -0
  605. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/src/df_test_framework/cli/templates/project/script_fetch_swagger.py +0 -0
  606. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/src/df_test_framework/cli/templates/project/script_run_tests.py +0 -0
  607. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/src/df_test_framework/cli/templates/project/settings.py +0 -0
  608. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/src/df_test_framework/cli/templates/project/test_async_example.py +0 -0
  609. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/src/df_test_framework/cli/templates/project/test_example.py +0 -0
  610. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/src/df_test_framework/cli/templates/project/ui_app_actions.py +0 -0
  611. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/src/df_test_framework/cli/templates/project/ui_clients.py +0 -0
  612. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/src/df_test_framework/cli/templates/project/ui_conftest.py +0 -0
  613. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/src/df_test_framework/cli/templates/project/ui_fixtures_init.py +0 -0
  614. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/src/df_test_framework/cli/templates/project/ui_page_object.py +0 -0
  615. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/src/df_test_framework/cli/templates/project/ui_settings.py +0 -0
  616. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/src/df_test_framework/cli/templates/project/ui_test_example.py +0 -0
  617. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/src/df_test_framework/cli/templates/project/uow.py +0 -0
  618. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/src/df_test_framework/cli/templates/project/user_api_example.py +0 -0
  619. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/src/df_test_framework/cli/templates/project/utils_converters.py +0 -0
  620. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/src/df_test_framework/cli/templates/project/utils_validators.py +0 -0
  621. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/src/df_test_framework/cli/templates/project/vscode_settings.py +0 -0
  622. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/src/df_test_framework/cli/utils.py +0 -0
  623. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/src/df_test_framework/core/__init__.py +0 -0
  624. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/src/df_test_framework/core/context/__init__.py +0 -0
  625. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/src/df_test_framework/core/context/execution.py +0 -0
  626. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/src/df_test_framework/core/context/propagation.py +0 -0
  627. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/src/df_test_framework/core/decorators.py +0 -0
  628. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/src/df_test_framework/core/events/__init__.py +0 -0
  629. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/src/df_test_framework/core/events/types.py +0 -0
  630. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/src/df_test_framework/core/exceptions.py +0 -0
  631. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/src/df_test_framework/core/middleware/__init__.py +0 -0
  632. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/src/df_test_framework/core/middleware/base.py +0 -0
  633. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/src/df_test_framework/core/middleware/chain.py +0 -0
  634. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/src/df_test_framework/core/middleware/decorator.py +0 -0
  635. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/src/df_test_framework/core/middleware/protocol.py +0 -0
  636. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/src/df_test_framework/core/models/__init__.py +0 -0
  637. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/src/df_test_framework/core/models/base.py +0 -0
  638. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/src/df_test_framework/core/protocols/__init__.py +0 -0
  639. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/src/df_test_framework/core/protocols/client.py +0 -0
  640. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/src/df_test_framework/core/protocols/event.py +0 -0
  641. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/src/df_test_framework/core/protocols/plugin.py +0 -0
  642. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/src/df_test_framework/core/protocols/repository.py +0 -0
  643. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/src/df_test_framework/core/protocols/telemetry.py +0 -0
  644. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/src/df_test_framework/core/types.py +0 -0
  645. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/src/df_test_framework/infrastructure/__init__.py +0 -0
  646. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/src/df_test_framework/infrastructure/config/__init__.py +0 -0
  647. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/src/df_test_framework/infrastructure/config/loader.py +0 -0
  648. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/src/df_test_framework/infrastructure/config/middleware_schema.py +0 -0
  649. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/src/df_test_framework/infrastructure/config/pipeline.py +0 -0
  650. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/src/df_test_framework/infrastructure/config/schema.py +0 -0
  651. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/src/df_test_framework/infrastructure/config/settings.py +0 -0
  652. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/src/df_test_framework/infrastructure/config/sources.py +0 -0
  653. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/src/df_test_framework/infrastructure/context/__init__.py +0 -0
  654. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/src/df_test_framework/infrastructure/context/carriers/__init__.py +0 -0
  655. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/src/df_test_framework/infrastructure/context/carriers/grpc.py +0 -0
  656. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/src/df_test_framework/infrastructure/context/carriers/http.py +0 -0
  657. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/src/df_test_framework/infrastructure/context/carriers/mq.py +0 -0
  658. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/src/df_test_framework/infrastructure/events/__init__.py +0 -0
  659. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/src/df_test_framework/infrastructure/events/bus.py +0 -0
  660. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/src/df_test_framework/infrastructure/events/handlers/__init__.py +0 -0
  661. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/src/df_test_framework/infrastructure/helpers/__init__.py +0 -0
  662. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/src/df_test_framework/infrastructure/helpers/crypto.py +0 -0
  663. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/src/df_test_framework/infrastructure/helpers/hash.py +0 -0
  664. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/src/df_test_framework/infrastructure/helpers/network.py +0 -0
  665. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/src/df_test_framework/infrastructure/helpers/signature.py +0 -0
  666. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/src/df_test_framework/infrastructure/logging/__init__.py +0 -0
  667. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/src/df_test_framework/infrastructure/logging/config.py +0 -0
  668. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/src/df_test_framework/infrastructure/logging/interface.py +0 -0
  669. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/src/df_test_framework/infrastructure/logging/logger.py +0 -0
  670. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/src/df_test_framework/infrastructure/logging/observability.py +0 -0
  671. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/src/df_test_framework/infrastructure/metrics/__init__.py +0 -0
  672. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/src/df_test_framework/infrastructure/metrics/decorators.py +0 -0
  673. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/src/df_test_framework/infrastructure/metrics/manager.py +0 -0
  674. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/src/df_test_framework/infrastructure/metrics/observer.py +0 -0
  675. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/src/df_test_framework/infrastructure/metrics/performance.py +0 -0
  676. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/src/df_test_framework/infrastructure/metrics/registry.py +0 -0
  677. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/src/df_test_framework/infrastructure/metrics/types.py +0 -0
  678. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/src/df_test_framework/infrastructure/plugins/__init__.py +0 -0
  679. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/src/df_test_framework/infrastructure/plugins/hooks.py +0 -0
  680. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/src/df_test_framework/infrastructure/plugins/manager.py +0 -0
  681. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/src/df_test_framework/infrastructure/resilience/__init__.py +0 -0
  682. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/src/df_test_framework/infrastructure/resilience/circuit_breaker.py +0 -0
  683. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/src/df_test_framework/infrastructure/sanitize/__init__.py +0 -0
  684. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/src/df_test_framework/infrastructure/sanitize/service.py +0 -0
  685. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/src/df_test_framework/infrastructure/telemetry/__init__.py +0 -0
  686. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/src/df_test_framework/infrastructure/telemetry/exporters/__init__.py +0 -0
  687. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/src/df_test_framework/infrastructure/telemetry/facade.py +0 -0
  688. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/src/df_test_framework/infrastructure/telemetry/noop.py +0 -0
  689. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/src/df_test_framework/infrastructure/tracing/__init__.py +0 -0
  690. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/src/df_test_framework/infrastructure/tracing/context.py +0 -0
  691. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/src/df_test_framework/infrastructure/tracing/decorators.py +0 -0
  692. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/src/df_test_framework/infrastructure/tracing/exporters.py +0 -0
  693. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/src/df_test_framework/infrastructure/tracing/integrations/__init__.py +0 -0
  694. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/src/df_test_framework/infrastructure/tracing/integrations/database.py +0 -0
  695. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/src/df_test_framework/infrastructure/tracing/integrations/sqlalchemy_instrumentation.py +0 -0
  696. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/src/df_test_framework/infrastructure/tracing/interceptors/__init__.py +0 -0
  697. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/src/df_test_framework/infrastructure/tracing/interceptors/grpc.py +0 -0
  698. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/src/df_test_framework/infrastructure/tracing/interceptors/http.py +0 -0
  699. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/src/df_test_framework/infrastructure/tracing/manager.py +0 -0
  700. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/src/df_test_framework/plugins/__init__.py +0 -0
  701. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/src/df_test_framework/plugins/builtin/__init__.py +0 -0
  702. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/src/df_test_framework/plugins/builtin/monitoring/__init__.py +0 -0
  703. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/src/df_test_framework/plugins/builtin/monitoring/plugin.py +0 -0
  704. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/src/df_test_framework/plugins/builtin/reporting/__init__.py +0 -0
  705. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/src/df_test_framework/plugins/builtin/reporting/allure_plugin.py +0 -0
  706. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/src/df_test_framework/plugins/builtin/reporting/oms_reporter_plugin.py +0 -0
  707. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/src/df_test_framework/testing/__init__.py +0 -0
  708. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/src/df_test_framework/testing/assertions/__init__.py +0 -0
  709. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/src/df_test_framework/testing/assertions/helper.py +0 -0
  710. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/src/df_test_framework/testing/assertions/json_schema.py +0 -0
  711. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/src/df_test_framework/testing/assertions/matchers.py +0 -0
  712. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/src/df_test_framework/testing/assertions/response.py +0 -0
  713. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/src/df_test_framework/testing/data/builders/__init__.py +0 -0
  714. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/src/df_test_framework/testing/data/builders/base.py +0 -0
  715. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/src/df_test_framework/testing/data/factories/__init__.py +0 -0
  716. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/src/df_test_framework/testing/data/factories/base.py +0 -0
  717. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/src/df_test_framework/testing/data/factories/examples.py +0 -0
  718. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/src/df_test_framework/testing/data/generators/__init__.py +0 -0
  719. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/src/df_test_framework/testing/data/generators/data_generator.py +0 -0
  720. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/src/df_test_framework/testing/data/loaders/__init__.py +0 -0
  721. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/src/df_test_framework/testing/data/loaders/base.py +0 -0
  722. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/src/df_test_framework/testing/data/loaders/csv_loader.py +0 -0
  723. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/src/df_test_framework/testing/data/loaders/json_loader.py +0 -0
  724. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/src/df_test_framework/testing/data/loaders/yaml_loader.py +0 -0
  725. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/src/df_test_framework/testing/debugging/__init__.py +0 -0
  726. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/src/df_test_framework/testing/debugging/console.py +0 -0
  727. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/src/df_test_framework/testing/decorators/__init__.py +0 -0
  728. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/src/df_test_framework/testing/decorators/actions_class.py +0 -0
  729. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/src/df_test_framework/testing/decorators/api_class.py +0 -0
  730. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/src/df_test_framework/testing/decorators/service_client.py +0 -0
  731. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/src/df_test_framework/testing/decorators/ui_client.py +0 -0
  732. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/src/df_test_framework/testing/fixtures/__init__.py +0 -0
  733. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/src/df_test_framework/testing/fixtures/auth.py +0 -0
  734. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/src/df_test_framework/testing/fixtures/cleanup.py +0 -0
  735. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/src/df_test_framework/testing/fixtures/core.py +0 -0
  736. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/src/df_test_framework/testing/fixtures/debugging.py +0 -0
  737. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/src/df_test_framework/testing/fixtures/http_recorder.py +0 -0
  738. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/src/df_test_framework/testing/fixtures/message_queue.py +0 -0
  739. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/src/df_test_framework/testing/fixtures/metrics.py +0 -0
  740. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/src/df_test_framework/testing/fixtures/monitoring.py +0 -0
  741. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/src/df_test_framework/testing/fixtures/ui.py +0 -0
  742. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/src/df_test_framework/testing/mocking/__init__.py +0 -0
  743. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/src/df_test_framework/testing/mocking/database_mock.py +0 -0
  744. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/src/df_test_framework/testing/mocking/http_mock.py +0 -0
  745. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/src/df_test_framework/testing/mocking/redis_mock.py +0 -0
  746. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/src/df_test_framework/testing/mocking/time_mock.py +0 -0
  747. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/src/df_test_framework/testing/plugins/__init__.py +0 -0
  748. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/src/df_test_framework/testing/plugins/api_autodiscovery.py +0 -0
  749. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/src/df_test_framework/testing/plugins/debug.py +0 -0
  750. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/src/df_test_framework/testing/plugins/env_plugin.py +0 -0
  751. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/src/df_test_framework/testing/plugins/logging_plugin.py +0 -0
  752. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/src/df_test_framework/testing/plugins/markers.py +0 -0
  753. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/src/df_test_framework/testing/reporting/__init__.py +0 -0
  754. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/src/df_test_framework/testing/reporting/allure/__init__.py +0 -0
  755. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/src/df_test_framework/testing/reporting/allure/helper.py +0 -0
  756. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/src/df_test_framework/testing/reporting/allure/observer.py +0 -0
  757. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/tests/README.md +0 -0
  758. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/tests/bootstrap/__init__.py +0 -0
  759. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/tests/bootstrap/test_bootstrap.py +0 -0
  760. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/tests/bootstrap/test_providers.py +0 -0
  761. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/tests/capabilities/__init__.py +0 -0
  762. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/tests/capabilities/clients/graphql/__init__.py +0 -0
  763. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/tests/capabilities/clients/graphql/test_client.py +0 -0
  764. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/tests/capabilities/clients/graphql/test_middleware.py +0 -0
  765. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/tests/capabilities/clients/graphql/test_models.py +0 -0
  766. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/tests/capabilities/clients/graphql/test_query_builder.py +0 -0
  767. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/tests/capabilities/clients/grpc/__init__.py +0 -0
  768. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/tests/capabilities/clients/grpc/test_client.py +0 -0
  769. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/tests/capabilities/clients/grpc/test_middleware.py +0 -0
  770. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/tests/capabilities/clients/grpc/test_models.py +0 -0
  771. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/tests/capabilities/clients/http/auth/signature/test_strategies.py +0 -0
  772. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/tests/capabilities/clients/http/core/__init__.py +0 -0
  773. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/tests/capabilities/clients/http/core/test_multipart.py +0 -0
  774. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/tests/capabilities/clients/http/core/test_request.py +0 -0
  775. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/tests/capabilities/clients/http/core/test_response.py +0 -0
  776. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/tests/capabilities/clients/http/middleware/__init__.py +0 -0
  777. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/tests/capabilities/clients/http/middleware/test_factory.py +0 -0
  778. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/tests/capabilities/clients/http/middleware/test_logging.py +0 -0
  779. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/tests/capabilities/clients/http/rest/test_async_base_api.py +0 -0
  780. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/tests/capabilities/clients/http/rest/test_async_client.py +0 -0
  781. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/tests/capabilities/clients/http/rest/test_auth_control.py +0 -0
  782. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/tests/capabilities/clients/http/rest/test_base_api.py +0 -0
  783. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/tests/capabilities/clients/http/rest/test_factory.py +0 -0
  784. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/tests/capabilities/clients/http/rest/test_http_client.py +0 -0
  785. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/tests/capabilities/databases/redis/test_async_redis.py +0 -0
  786. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/tests/capabilities/databases/redis/test_redis_client.py +0 -0
  787. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/tests/capabilities/databases/test_async_database.py +0 -0
  788. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/tests/capabilities/databases/test_database.py +0 -0
  789. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/tests/capabilities/databases/test_database_factory.py +0 -0
  790. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/tests/capabilities/databases/test_query_builder.py +0 -0
  791. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/tests/capabilities/databases/test_repositories.py +0 -0
  792. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/tests/capabilities/databases/test_uow.py +0 -0
  793. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/tests/capabilities/drivers/web/playwright/test_async_browser_pool.py +0 -0
  794. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/tests/capabilities/drivers/web/test_async_ui.py +0 -0
  795. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/tests/capabilities/drivers/web/test_modern_ui.py +0 -0
  796. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/tests/capabilities/messengers/__init__.py +0 -0
  797. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/tests/capabilities/messengers/test_kafka_client.py +0 -0
  798. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/tests/capabilities/messengers/test_rabbitmq_client.py +0 -0
  799. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/tests/capabilities/messengers/test_rocketmq_client.py +0 -0
  800. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/tests/capabilities/storages/__init__.py +0 -0
  801. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/tests/capabilities/storages/test_local_file.py +0 -0
  802. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/tests/capabilities/storages/test_oss.py +0 -0
  803. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/tests/capabilities/storages/test_s3.py +0 -0
  804. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/tests/cli/__init__.py +0 -0
  805. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/tests/cli/test_env_cmd.py +0 -0
  806. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/tests/cli/test_generate_cmd.py +0 -0
  807. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/tests/cli/test_init_cmd.py +0 -0
  808. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/tests/cli/test_interactive_cmd.py +0 -0
  809. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/tests/cli/test_main.py +0 -0
  810. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/tests/cli/test_utils.py +0 -0
  811. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/tests/core/protocols/test_client.py +0 -0
  812. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/tests/core/protocols/test_event.py +0 -0
  813. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/tests/core/protocols/test_plugin.py +0 -0
  814. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/tests/core/protocols/test_repository.py +0 -0
  815. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/tests/core/protocols/test_telemetry.py +0 -0
  816. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/tests/core/test_context.py +0 -0
  817. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/tests/core/test_decorators.py +0 -0
  818. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/tests/core/test_event_types.py +0 -0
  819. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/tests/core/test_events.py +0 -0
  820. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/tests/core/test_middleware.py +0 -0
  821. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/tests/core/test_types.py +0 -0
  822. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/tests/infrastructure/__init__.py +0 -0
  823. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/tests/infrastructure/config/test_loader.py +0 -0
  824. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/tests/infrastructure/config/test_middleware_schema.py +0 -0
  825. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/tests/infrastructure/context/test_carriers.py +0 -0
  826. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/tests/infrastructure/events/__init__.py +0 -0
  827. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/tests/infrastructure/events/test_bus.py +0 -0
  828. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/tests/infrastructure/metrics/__init__.py +0 -0
  829. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/tests/infrastructure/metrics/test_decorators.py +0 -0
  830. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/tests/infrastructure/metrics/test_manager.py +0 -0
  831. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/tests/infrastructure/metrics/test_observer.py +0 -0
  832. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/tests/infrastructure/metrics/test_performance.py +0 -0
  833. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/tests/infrastructure/metrics/test_registry.py +0 -0
  834. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/tests/infrastructure/metrics/test_types.py +0 -0
  835. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/tests/infrastructure/plugins/test_manager.py +0 -0
  836. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/tests/infrastructure/resilience/__init__.py +0 -0
  837. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/tests/infrastructure/resilience/test_circuit_breaker.py +0 -0
  838. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/tests/infrastructure/sanitize/__init__.py +0 -0
  839. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/tests/infrastructure/sanitize/test_service.py +0 -0
  840. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/tests/infrastructure/telemetry/__init__.py +0 -0
  841. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/tests/infrastructure/telemetry/test_facade.py +0 -0
  842. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/tests/infrastructure/telemetry/test_noop.py +0 -0
  843. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/tests/infrastructure/test_bootstrap.py +0 -0
  844. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/tests/infrastructure/test_helpers.py +0 -0
  845. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/tests/infrastructure/test_logging.py +0 -0
  846. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/tests/infrastructure/test_pipeline.py +0 -0
  847. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/tests/infrastructure/test_runtime.py +0 -0
  848. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/tests/infrastructure/test_settings.py +0 -0
  849. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/tests/infrastructure/test_sources.py +0 -0
  850. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/tests/infrastructure/tracing/__init__.py +0 -0
  851. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/tests/infrastructure/tracing/test_context.py +0 -0
  852. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/tests/infrastructure/tracing/test_decorators.py +0 -0
  853. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/tests/infrastructure/tracing/test_exporters.py +0 -0
  854. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/tests/infrastructure/tracing/test_integrations.py +0 -0
  855. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/tests/infrastructure/tracing/test_interceptors.py +0 -0
  856. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/tests/infrastructure/tracing/test_manager.py +0 -0
  857. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/tests/integration/__init__.py +0 -0
  858. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/tests/integration/test_config_environment.py +0 -0
  859. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/tests/integration/test_event_observability.py +0 -0
  860. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/tests/integration/test_factory_assertions.py +0 -0
  861. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/tests/integration/test_middleware_chain.py +0 -0
  862. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/tests/migration/__init__.py +0 -0
  863. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/tests/migration/test_v3_13_to_v3_14_examples.py +0 -0
  864. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/tests/plugins/__init__.py +0 -0
  865. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/tests/plugins/builtin/__init__.py +0 -0
  866. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/tests/plugins/builtin/monitoring/__init__.py +0 -0
  867. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/tests/plugins/builtin/monitoring/test_plugin.py +0 -0
  868. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/tests/test_json_to_model_generator.py +0 -0
  869. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/tests/testing/assertions/__init__.py +0 -0
  870. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/tests/testing/assertions/test_json_schema.py +0 -0
  871. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/tests/testing/assertions/test_matchers.py +0 -0
  872. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/tests/testing/data/__init__.py +0 -0
  873. {df_test_framework-4.5.0/tests/testing/debugging → df_test_framework-4.7.1/tests/testing/data/pipeline}/__init__.py +0 -0
  874. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/tests/testing/data/test_builders.py +0 -0
  875. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/tests/testing/data/test_data_generator.py +0 -0
  876. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/tests/testing/data/test_factories.py +0 -0
  877. {df_test_framework-4.5.0/tests/testing/decorators → df_test_framework-4.7.1/tests/testing/debugging}/__init__.py +0 -0
  878. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/tests/testing/debugging/test_console_debug_observer.py +0 -0
  879. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/tests/testing/decorators/test_actions_class.py +0 -0
  880. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/tests/testing/decorators/test_api_class.py +0 -0
  881. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/tests/testing/decorators/test_service_client.py +0 -0
  882. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/tests/testing/decorators/test_ui_client.py +0 -0
  883. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/tests/testing/fixtures/__init__.py +0 -0
  884. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/tests/testing/fixtures/test_cleanup.py +0 -0
  885. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/tests/testing/fixtures/test_fixtures_core.py +0 -0
  886. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/tests/testing/fixtures/test_fixtures_debugging.py +0 -0
  887. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/tests/testing/fixtures/test_fixtures_message_queue.py +0 -0
  888. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/tests/testing/fixtures/test_fixtures_monitoring.py +0 -0
  889. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/tests/testing/fixtures/test_http_recorder.py +0 -0
  890. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/tests/testing/fixtures/test_monitoring_metrics.py +0 -0
  891. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/tests/testing/fixtures/test_ui_fixtures.py +0 -0
  892. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/tests/testing/mocking/__init__.py +0 -0
  893. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/tests/testing/mocking/test_database_mock.py +0 -0
  894. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/tests/testing/mocking/test_http_mock.py +0 -0
  895. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/tests/testing/mocking/test_redis_mock.py +0 -0
  896. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/tests/testing/mocking/test_time_mock.py +0 -0
  897. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/tests/testing/plugins/test_api_autodiscovery.py +0 -0
  898. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/tests/testing/plugins/test_debug_plugin.py +0 -0
  899. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/tests/testing/plugins/test_env_plugin.py +0 -0
  900. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/tests/testing/plugins/test_logging_plugin.py +0 -0
  901. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/tests/testing/plugins/test_markers.py +0 -0
  902. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/tests/testing/reporting/test_allure_observer.py +0 -0
  903. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/tests/testing/test_allure_helper.py +0 -0
  904. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/tests/testing/test_assertions.py +0 -0
  905. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/tests/testing/test_data_loaders.py +0 -0
  906. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/tests/testing/test_factories_presets.py +0 -0
  907. {df_test_framework-4.5.0 → df_test_framework-4.7.1}/verify_fixes.py +0 -0
@@ -5,6 +5,49 @@
5
5
  格式基于 [Keep a Changelog](https://keepachangelog.com/zh-CN/1.0.0/),
6
6
  版本号遵循 [语义化版本](https://semver.org/lang/zh-CN/)。
7
7
 
8
+ ## [4.7.1] - 2026-05-22
9
+
10
+ ### 🐛 修复
11
+
12
+ - **Allure 报告重复记录**(`testing/fixtures/allure.py`):`_auto_allure_observer` autouse fixture 在每次测试结束后未取消 EventBus 订阅,导致 handler 随测试数量线性累积,后续测试的每个 HTTP/DB 事件被 N 个遗留 observer 重复写入报告。现改为在 `finally` 块中逐一 unsubscribe,彻底消除重复。
13
+
14
+ ## [4.7.0] - 2026-05-19
15
+
16
+ ### ✨ 新增
17
+
18
+ - **`RuntimeContext.metadata` 字段**:`dict[str, Any]` 类型,默认空字典;用于携带跨进程/跨插件的平台业务上下文(`tenant_id`、`execution_id` 等),避免将业务键值编码到 scope 字符串中
19
+ - **`RuntimeContext.with_metadata(**kwargs)`**:返回 metadata 已合并的新 RuntimeContext(不可变,新键覆盖同名旧键);`with_scope()` / `with_overrides()` 自动传播 metadata
20
+ - **`RuntimeContext.register_async_database(name, connection_string, **kwargs)`**:按名称注册多个 AsyncDatabase 连接池(`SingletonProvider` 延迟创建),支持多数据库场景(如 OMS DbStepExecutor 按 URL 缓存);同名重复注册自动 shutdown 旧实例
21
+ - **`RuntimeContext.get_async_database(name=None)`**:按名称获取已注册的 AsyncDatabase 实例;`name=None` 时返回由 `settings.db` 配置的默认实例
22
+ - **`RuntimeBuilder.with_metadata(metadata)`**:构建时注入初始 metadata
23
+
24
+ ## [4.6.1] - 2026-05-18
25
+
26
+ ### ✨ 新增
27
+
28
+ - **`CaseContext.skip` / `.xfail`**:YAML stage 元数据支持 `skip: "原因"` / `xfail: "原因"`(或 `true`),自动转换为对应 pytest mark,无需在 conftest 手写
29
+ - **`CaseContext.seed`(YAML 级别)**:`tests.{stage}.seed: 42` 设置 case 级别随机种子;CLI `--seed` 全局覆盖优先级更高
30
+ - **`--case-file` CLI 选项**:按数据文件路径过滤(部分匹配),多数据集项目可精准指定只跑某个文件的 case
31
+ - **pytest 插件自动 Allure**:`pytest_runtest_setup` 钩子自动调用 `CaseReporter.attach_to_allure()`,写标题/标签/附件,测试函数无需手动调用
32
+ - **pytest 插件自动 seed**:有 seed 的 case 自动 `random.seed()` + `Faker.seed()`(Faker 不可用时静默跳过)
33
+ - **`pytest_collection_modifyitems`**:自动清除因空参数过滤产生的 `NotSetType` 占位用例,避免空壳测试出现在报告
34
+ - **复现命令补充 `--seed`**:失败用例有 seed 时复现命令自动附带 `--seed=N`
35
+ - **`DataAssetResolver` 路径安全**:`resolve()` / `resolve_file()` 禁止绝对路径和 `../` 路径逃逸,违规时 `raise ValueError`
36
+ - **脚手架 `models/cases/`**:`df-test init` 自动创建 `src/{project}/models/cases/__init__.py`,作为场景领域模型的标准目录
37
+
38
+ ## [4.6.0] - 2026-05-18
39
+
40
+ ### ✨ 新增
41
+
42
+ - **测试数据管线**:从 YAML/JSON 到 pytest 参数化的完整基础设施(`testing/data/pipeline/`)
43
+ - `case_dataset(path, model, root_key, id_field)` — 工厂函数,延迟加载 case 文件,支持 dict-of-dicts(key=case_id)和 list-of-dicts 两种 YAML 格式
44
+ - `CaseContext[T]` — 泛型 case 上下文冻结 dataclass,承载 domain data + stage/title/tags/marks/timeout/seed/source_path/raw
45
+ - `CaseDataset[T].parametrize(metafunc, fixture_name, stage)` — pytest_generate_tests 一行注入,读取 CLI 过滤选项
46
+ - `CaseDataset[T].all(stage)` — 不经参数化直接返回 CaseContext 列表,适合脚本/单元测试场景
47
+ - `DataAssetResolver` — 自动发现项目根(pyproject.toml + tests/),统一解析 `tests/data/fixtures/` 与 `tests/data/files/`
48
+ - `CaseReporter.attach_to_allure(ctx)` — 写 Allure 动态标题、case_id/stage 标签、tags,附 case 元信息 JSON 附件
49
+ - **pytest 插件 `df_test_framework_data_pipeline`**:全局注册 `--case`、`--case-stage`、`--case-tag`、`--seed` CLI 过滤选项;测试失败时自动在报告 section 输出最小复现命令
50
+
8
51
  ## [4.5.0] - 2026-05-12
9
52
 
10
53
  ### ✨ 新增
@@ -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.2.2
12
- - **更新时间**: 2026-04-15
11
+ - **版本**: v4.7.0
12
+ - **更新时间**: 2026-05-19
13
13
  - **Python**: 3.12+
14
14
  - **核心技术栈**: pytest + httpx + Playwright + Pydantic v2 + SQLAlchemy 2.0 + Pluggy
15
15
  - **架构**: 五层架构 + 横切关注点(能力层驱动设计)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: df-test-framework
3
- Version: 4.5.0
3
+ Version: 4.7.1
4
4
  Summary: 基于交互模式的现代化测试自动化框架,支持多种测试场景
5
5
  Project-URL: Homepage, https://github.com/yourorg/df-test-framework
6
6
  Project-URL: Repository, https://github.com/yourorg/df-test-framework
@@ -22,7 +22,7 @@ Requires-Python: >=3.12
22
22
  Requires-Dist: allure-pytest>=2.13.0
23
23
  Requires-Dist: assertpy>=1.1
24
24
  Requires-Dist: faker>=38.2.0
25
- Requires-Dist: filelock>=3.20.1
25
+ Requires-Dist: filelock>=3.29.0
26
26
  Requires-Dist: freezegun>=1.5.0
27
27
  Requires-Dist: h2>=4.3.0
28
28
  Requires-Dist: hpack>=4.1.0
@@ -40,15 +40,15 @@ Requires-Dist: pymysql>=1.1.0
40
40
  Requires-Dist: pypinyin>=0.53.0
41
41
  Requires-Dist: pytest-asyncio>=1.3.0
42
42
  Requires-Dist: pytest-timeout>=2.2.0
43
- Requires-Dist: pytest==9.0.3
43
+ Requires-Dist: pytest>=9.0.3
44
44
  Requires-Dist: python-dotenv>=1.0.0
45
45
  Requires-Dist: pyyaml>=6.0.0
46
46
  Requires-Dist: questionary>=2.0.0
47
47
  Requires-Dist: redis>=5.0.0
48
- Requires-Dist: requests>=2.32.4
48
+ Requires-Dist: requests>=2.34.2
49
49
  Requires-Dist: sqlalchemy>=2.0.0
50
50
  Requires-Dist: structlog>=25.4.0
51
- Requires-Dist: urllib3>=2.6.0
51
+ Requires-Dist: urllib3>=2.7.0
52
52
  Provides-Extra: all
53
53
  Requires-Dist: aiomysql>=0.2.0; extra == 'all'
54
54
  Requires-Dist: aiosqlite>=0.20.0; extra == 'all'
@@ -1,7 +1,7 @@
1
1
  # DF Test Framework
2
2
 
3
- > **版本**: v4.0.0
4
- > **更新时间**: 2026-01-16
3
+ > **版本**: v4.7.0
4
+ > **更新时间**: 2026-05-19
5
5
  > 简单、强大、可扩展的现代化 Python 测试自动化框架
6
6
 
7
7
  [![PyPI version](https://img.shields.io/pypi/v/df-test-framework.svg)](https://pypi.org/project/df-test-framework/)
@@ -14,6 +14,19 @@
14
14
 
15
15
  ### 当前版本亮点 ⚡🔭📊
16
16
 
17
+ **🆕 v4.7.0 Bootstrap 多数据库 + 平台元数据**:
18
+ - ✨ **`register_async_database(name, url)`** - 按名称注册多个异步连接池,多数据库场景(OMS/BPM 等)
19
+ - ✨ **`get_async_database(name)`** - 每次返回绑定当前 RuntimeContext 的视图,事件携带 scope/metadata
20
+ - ✨ **`RuntimeContext.metadata`** - 跨插件/跨进程平台上下文(tenant_id、execution_id 等)
21
+ - ✨ **`with_metadata(**kwargs)`** - 不可变合并,与 `with_scope()` 自动联动传播
22
+
23
+ **🆕 v4.6.x 测试数据管线(标准能力完整版)**:
24
+ - ✨ **`case_dataset()` + `CaseContext[T]`** - YAML → pytest 参数化全链路,支持泛型领域模型
25
+ - ✨ **YAML 级 skip/xfail/seed/timeout/marks/tags** - 在数据文件中声明测试行为,无需 conftest 手写
26
+ - ✨ **自动 Allure**:pytest 插件 setup 阶段自动写标题/标签/附件,测试函数零样板
27
+ - ✨ **CLI 过滤**:`--case`/`--case-stage`/`--case-tag`/`--case-file`/`--seed` 精准复现
28
+ - ✨ **`DataAssetResolver`**:文件资产路径安全(禁绝对路径 + `../` 逃逸)
29
+
17
30
  **🚀 v4.0.0 全面异步化 - 性能飞跃**:
18
31
  - ✨ **AsyncHttpClient** - 异步 HTTP 客户端,并发性能提升 **10-30 倍**
19
32
  - ✨ **AsyncDatabase** - 异步数据库客户端,基于 SQLAlchemy 2.0 AsyncEngine
@@ -1,7 +1,7 @@
1
1
  # Bootstrap 引导系统指南
2
2
 
3
- > **最后更新**: 2026-01-17
4
- > **适用版本**: v3.16.0+(Bootstrap 架构),v4.0.0+(异步支持)
3
+ > **最后更新**: 2026-05-19
4
+ > **适用版本**: v3.16.0+(Bootstrap 架构),v4.0.0+(异步支持),v4.7.0+(多数据库 + 平台元数据)
5
5
 
6
6
  ## 概述
7
7
 
@@ -396,6 +396,66 @@ finally:
396
396
 
397
397
  ---
398
398
 
399
+ ---
400
+
401
+ ## v4.7.0 扩展:多数据库 + 平台元数据
402
+
403
+ ### 命名 AsyncDatabase 注册(多数据库场景)
404
+
405
+ ```python
406
+ # conftest.py — session 级一次性注册
407
+ @pytest.fixture(scope="session", autouse=True)
408
+ def register_named_databases(runtime):
409
+ settings = runtime.settings
410
+ runtime.register_async_database("oms", settings.oms_db_url)
411
+ runtime.register_async_database("bpm", settings.bpm_db_url)
412
+
413
+ # 测试侧 — 按名称获取,每次绑定调用时的 RuntimeContext
414
+ async def test_order_sync(runtime):
415
+ oms_db = runtime.get_async_database("oms") # 连接池复用,runtime 视图是当前 context
416
+ bpm_db = runtime.get_async_database("bpm")
417
+
418
+ order = await oms_db.query_one("SELECT * FROM orders WHERE id = :id", {"id": 1})
419
+ task = await bpm_db.query_one("SELECT * FROM tasks WHERE order_id = :id", {"id": 1})
420
+ assert task["status"] == "approved"
421
+ ```
422
+
423
+ **核心设计**:
424
+ - `register_async_database(name, url)` 用 `SingletonProvider` 延迟创建引擎(首次 `get_async_database` 时才建连接)
425
+ - `get_async_database(name)` 每次返回 `db.with_runtime(self)` 视图:engine/session_factory 共享,`_runtime` 绑定当前 RuntimeContext
426
+ - 事件(`DatabaseQueryStartEvent` 等)携带调用时的 scope 和 metadata,不会丢失测试上下文
427
+
428
+ ### RuntimeContext.metadata — 平台业务上下文
429
+
430
+ ```python
431
+ # 创建携带租户/执行 ID 的运行时
432
+ exec_runtime = (
433
+ runtime
434
+ .with_scope(request.node.nodeid)
435
+ .with_metadata(tenant_id="t-123", execution_id="exec-456")
436
+ )
437
+
438
+ # 插件或 DB 事件处理侧读取
439
+ tenant_id = runtime.metadata.get("tenant_id")
440
+ ```
441
+
442
+ `with_scope()` / `with_overrides()` 自动传播 metadata,不需要重复传入。
443
+
444
+ ### RuntimeBuilder 初始化时注入 metadata
445
+
446
+ ```python
447
+ runtime = (
448
+ RuntimeBuilder()
449
+ .with_settings(settings)
450
+ .with_logger(logger)
451
+ .with_event_bus(event_bus)
452
+ .with_metadata({"env": "staging", "suite": "regression"})
453
+ .build()
454
+ )
455
+ ```
456
+
457
+ ---
458
+
399
459
  ## 相关文档
400
460
 
401
461
  - [配置系统指南](config_guide.md) - FrameworkSettings 详细说明
@@ -406,4 +466,4 @@ finally:
406
466
 
407
467
  ---
408
468
 
409
- **完成时间**: 2026-01-17
469
+ **完成时间**: 2026-01-17 | **最后更新**: 2026-05-19(v4.7.0)
@@ -6,6 +6,12 @@
6
6
 
7
7
  ---
8
8
 
9
+ 本文专注“运行期前置造数链”。如果要从数据文件、Case Model、pytest 参数化一路设计到
10
+ 前置准备、清理和报告,请先阅读
11
+ [测试数据管线设计指南](test_data_pipeline_design.md)。
12
+
13
+ ---
14
+
9
15
  ## 目录
10
16
 
11
17
  - [问题:为什么需要这个范式](#问题为什么需要这个范式)
@@ -6,6 +6,16 @@
6
6
 
7
7
  ---
8
8
 
9
+ ## 阅读路径
10
+
11
+ 如果只需要加载 JSON / CSV / YAML 或生成假数据,阅读本文即可。
12
+
13
+ 如果要设计完整的数据驱动测试链路,包括 case 元信息、pytest 参数化、前置造数、
14
+ cleanup、文件资产和报告,请阅读
15
+ [测试数据管线设计指南](test_data_pipeline_design.md)。
16
+
17
+ ---
18
+
9
19
  ## 概述
10
20
 
11
21
  测试数据工具包含三大模块:
@@ -0,0 +1,389 @@
1
+ # 测试数据管线设计指南
2
+
3
+ > 最后更新: 2026-05-15
4
+ > 适用范围: 参数化、数据驱动、测试造数、前置准备、清理和报告
5
+
6
+ 本文记录 df-test-framework 后续在测试数据方向的标准设计。它不是替代
7
+ `test_data.md` 或 `fixture_chain_pattern.md`,而是把二者串成一条完整的数据管线:
8
+
9
+ ```text
10
+ 静态场景数据 -> Case Model -> 参数矩阵 -> 前置准备 -> 测试执行 -> 断言 -> 清理 -> 报告
11
+ ```
12
+
13
+ ## 一句话结论
14
+
15
+ 框架应该提供“测试数据管线基础设施”,业务项目负责“领域数据和领域造数逻辑”。
16
+
17
+ 框架负责:
18
+
19
+ - 数据文件定位和加载。
20
+ - Case 元信息、参数化、过滤和 pytest id。
21
+ - 文件资产路径解析。
22
+ - 随机 seed 管理。
23
+ - 前置准备协议。
24
+ - cleanup 挂钩。
25
+ - Allure / 日志中的 case 元信息记录。
26
+ - 脚手架模板和规范文档。
27
+
28
+ 业务项目负责:
29
+
30
+ - 领域模型,例如订单、合同、会签、客户、产品。
31
+ - 领域 YAML / JSON / CSV 数据。
32
+ - 领域 API / UI Actions。
33
+ - 领域造数步骤,例如创建客户、生成合同、提交审批。
34
+ - 领域断言,例如 DB 字段、页面结果、业务状态。
35
+
36
+ ## 业界模式
37
+
38
+ 主流自动化测试框架大致都分为同一组能力:
39
+
40
+ | 关注点 | 业界常见做法 | 框架对应方向 |
41
+ | --- | --- | --- |
42
+ | 参数化 | pytest `parametrize` / `pytest_generate_tests`,JUnit `ParameterizedTest`,TestNG `DataProvider` | `parametrize_cases()` |
43
+ | 昂贵前置 | fixture 间接参数化,setup fixture | `Provisioner` 协议 |
44
+ | 动态造数 | factory / builder / seed data | `Factory` / `DataGenerator` / 项目 factory |
45
+ | 清理 | teardown、transaction rollback、cleanup manager | `cleanup` / `uow` / `data_preparer` |
46
+ | UI 登录态 | storage state、role based context、worker auth state | `AuthSetup` / `ui_client(storage_state=...)` |
47
+ | 外部依赖 | Testcontainers、临时 DB、隔离服务 | 后续可选增强 |
48
+
49
+ 参考资料:
50
+
51
+ - pytest 参数化: <https://docs.pytest.org/en/stable/how-to/parametrize.html>
52
+ - pytest indirect parametrization: <https://docs.pytest.org/en/stable/example/parametrize.html>
53
+ - Playwright 认证态复用: <https://playwright.dev/docs/auth>
54
+ - factory_boy: <https://factory-boy.readthedocs.io/>
55
+ - Testcontainers: <https://docs.docker.com/testcontainers/>
56
+
57
+ ## 数据分类
58
+
59
+ 测试数据不要混成一个“大 data 目录”。标准分为五类:
60
+
61
+ | 类型 | 推荐位置 | 说明 |
62
+ | --- | --- | --- |
63
+ | 场景主数据 | `tests/data/fixtures/{domain}/` | YAML / JSON / CSV,表达业务场景和预期 |
64
+ | 文件资产 | `tests/data/files/{domain}/` | 上传、导入、下载比对文件 |
65
+ | 环境配置 | `config/` | 地址、开关、环境差异 |
66
+ | 敏感值 | `config/secrets/` 或环境变量 | 密码、token、cookie、私钥 |
67
+ | 动态造数 | `src/{project}/fixtures/*_chain.py` | 运行期通过 API / DB / UI 准备数据 |
68
+
69
+ 重要边界:
70
+
71
+ - CI 主输入优先是文本数据文件,不依赖二进制 Excel。
72
+ - Excel 可以作为业务维护视图,但需要先转换为 YAML / JSON 再进入测试。
73
+ - Apifox / OpenAPI 导出是请求模板来源,不是业务场景列表。
74
+ - Actions / API Flow 不在 import 阶段读取数据文件。
75
+ - 绝对路径不进入 case 数据,文件资产必须由框架或项目 resolver 解析。
76
+
77
+ ## 标准数据流
78
+
79
+ ```mermaid
80
+ flowchart TD
81
+ A["tests/data/fixtures/{domain}/*.yaml"] --> B["CaseLoader"]
82
+ B --> C["Case Model / Schema"]
83
+ C --> D["CaseContext"]
84
+ D --> E["parametrize_cases / pytest_generate_tests"]
85
+ E --> F["test function"]
86
+ F --> G["Provisioner / fixture chain"]
87
+ G --> H["API / UI / DB 准备"]
88
+ H --> I["Actions / API Flow"]
89
+ I --> J["assertions"]
90
+ J --> K["cleanup / uow rollback"]
91
+ D --> L["Allure case metadata"]
92
+ G --> L
93
+ ```
94
+
95
+ 运行期要遵守两个阶段:
96
+
97
+ 1. 收集阶段只做轻量工作:读取数据、校验 schema、生成 pytest 参数。
98
+ 2. 执行阶段才做昂贵前置:API 造数、DB 写入、UI 操作、外部服务调用。
99
+
100
+ 这与 pytest 的 indirect parametrization 思路一致:昂贵 setup 应放在 fixture 执行期,
101
+ 而不是 collection 期。
102
+
103
+ ## 推荐对象模型
104
+
105
+ 框架后续可以提供通用对象,业务项目只补领域模型。
106
+
107
+ ```python
108
+ from dataclasses import dataclass, field
109
+ from pathlib import Path
110
+ from typing import Any, Generic, TypeVar
111
+
112
+ T = TypeVar("T")
113
+
114
+
115
+ @dataclass(frozen=True)
116
+ class CaseContext(Generic[T]):
117
+ """测试场景上下文。"""
118
+
119
+ case_id: str
120
+ data: T
121
+ source_path: Path
122
+ stage: str | None = None
123
+ title: str | None = None
124
+ tags: tuple[str, ...] = ()
125
+ marks: tuple[str, ...] = ()
126
+ seed: int | None = None
127
+ raw: dict[str, Any] = field(default_factory=dict)
128
+ ```
129
+
130
+ 业务项目仍然定义自己的领域模型:
131
+
132
+ ```python
133
+ from dataclasses import dataclass
134
+
135
+
136
+ @dataclass(frozen=True)
137
+ class OrderCase:
138
+ case_id: str
139
+ customer_name: str
140
+ products: tuple[str, ...]
141
+ expected_status: str
142
+ ```
143
+
144
+ ## 参数化标准
145
+
146
+ 推荐测试入口只消费一个 case 对象或 context 对象:
147
+
148
+ ```python
149
+ def test_create_order(order_case: CaseContext[OrderCase], order_actions):
150
+ result = order_actions.create(order_case.data)
151
+ assert result.status == order_case.data.expected_status
152
+ ```
153
+
154
+ 参数化层应该统一处理:
155
+
156
+ - pytest id:默认 `stage-case_id` 或 `case_id`。
157
+ - `marks`:从数据映射为 pytest mark。
158
+ - `skip` / `xfail`:从数据或 CLI 过滤策略进入 pytest 参数。
159
+ - `tags`:用于 `--case-tag` 过滤。
160
+ - `stage`:用于同一 case 在不同阶段复用。
161
+ - `seed`:用于可复现随机。
162
+
163
+ 未来框架 API 可以长这样:
164
+
165
+ ```python
166
+ from df_test_framework.testing.data.pipeline import case_dataset
167
+
168
+
169
+ direct_cases = case_dataset(
170
+ path="countersign/direct_cases.yaml",
171
+ model=DirectCountersignInput,
172
+ root_key="cases",
173
+ id_field="case_id",
174
+ )
175
+
176
+
177
+ def pytest_generate_tests(metafunc):
178
+ direct_cases.parametrize(
179
+ metafunc,
180
+ fixture_name="direct_case",
181
+ stage="approving",
182
+ )
183
+ ```
184
+
185
+ 更进一步可以提供装饰器:
186
+
187
+ ```python
188
+ @data_cases(
189
+ path="countersign/direct_cases.yaml",
190
+ model=DirectCountersignInput,
191
+ stages=("approving", "archive"),
192
+ )
193
+ def test_direct_countersign(case):
194
+ ...
195
+ ```
196
+
197
+ 装饰器方案体验更好,但 pytest hook 方案更透明。框架应优先落透明的底层 API,
198
+ 再考虑装饰器糖。
199
+
200
+ ## 前置准备标准
201
+
202
+ 前置准备分三层:
203
+
204
+ ```text
205
+ step_* 单个原子业务动作
206
+ provision_* 组合一段业务链路
207
+ fixture pytest 暴露入口
208
+ ```
209
+
210
+ 标准写法:
211
+
212
+ ```python
213
+ from dataclasses import dataclass
214
+
215
+
216
+ @dataclass(frozen=True)
217
+ class CustomerData:
218
+ customer_id: str
219
+ customer_name: str
220
+
221
+
222
+ def step_create_customer(customer_api, case, cleanup) -> CustomerData:
223
+ response = customer_api.create(name=case.customer_name)
224
+ customer_id = response["data"]["id"]
225
+ cleanup.add("customers", customer_id)
226
+ return CustomerData(customer_id=customer_id, customer_name=case.customer_name)
227
+
228
+
229
+ def provision_order_case(order_case, customer_api, cleanup) -> PreparedOrderCase:
230
+ customer = step_create_customer(customer_api, order_case, cleanup)
231
+ return PreparedOrderCase(case=order_case, customer=customer)
232
+ ```
233
+
234
+ 规则:
235
+
236
+ - `step_*` 函数公开签名,不加下划线。
237
+ - `step_*` 成功创建数据后立刻注册 cleanup。
238
+ - 返回 frozen dataclass,不返回裸 dict。
239
+ - 能通过 API 造数就不通过 UI 造数。
240
+ - DB 直写只用于基础数据或无 API 的场景,并优先走 `uow` / `prepare_data`。
241
+ - UI 前置优先使用 `storage_state`,复杂 UI 状态才考虑 fixture chain。
242
+
243
+ ## 框架能力设计
244
+
245
+ ### CaseLoader
246
+
247
+ 职责:
248
+
249
+ - 基于项目根目录解析 `tests/data/fixtures`。
250
+ - 支持 YAML / JSON / CSV。
251
+ - 支持 `root_key`、`id_field`、`include`、`exclude`。
252
+ - 支持 schema/model 校验。
253
+ - 报错时包含文件路径、case_id、字段路径。
254
+
255
+ ### CaseContext
256
+
257
+ 职责:
258
+
259
+ - 统一承载 case 元信息。
260
+ - 给 Allure、日志、过滤器、fixture chain 使用。
261
+ - 支持原始数据 `raw`,便于排查数据转换问题。
262
+
263
+ ### CaseMatrix / parametrize_cases
264
+
265
+ 职责:
266
+
267
+ - 生成 pytest 参数。
268
+ - 处理 `marks`、`ids`、`skip`、`xfail`。
269
+ - 支持 `stage` 和 `tag` 过滤。
270
+ - 支持 CLI 参数:`--case`、`--case-tag`、`--case-stage`、`--case-file`、`--seed`。
271
+
272
+ ### DataAssetResolver
273
+
274
+ 职责:
275
+
276
+ - 解析 `tests/data/files/{domain}` 下的相对路径。
277
+ - 禁止 case 数据使用本机绝对路径。
278
+ - 报告缺失文件。
279
+ - 支持调试时输出实际解析路径。
280
+
281
+ ### Provisioner 协议
282
+
283
+ 职责:
284
+
285
+ - 标准化运行期前置准备。
286
+ - 将 `CaseContext[T]` 转成 `PreparedCase[T]`。
287
+ - 自动接入 cleanup 和 Allure step。
288
+ - 将前置准备失败归因到 case,而不是普通 fixture error。
289
+
290
+ ### CaseReporter
291
+
292
+ 职责:
293
+
294
+ - 在 Allure 附件中记录 case_id、title、stage、tags、source_path、seed。
295
+ - 记录脱敏后的关键输入。
296
+ - 失败时输出数据来源和复现命令。
297
+
298
+ ## 不建议进入框架的内容
299
+
300
+ 这些必须留在业务项目:
301
+
302
+ - 业务实体字段。
303
+ - 业务 API 调用顺序。
304
+ - 业务 DB 表结构。
305
+ - Apifox 某个请求名或中文接口名。
306
+ - 某个系统的登录账号、角色、流程节点。
307
+ - Excel 模板列定义。
308
+
309
+ 框架可以提供模板和协议,但不内置任何业务假设。
310
+
311
+ ## 落地路线
312
+
313
+ ### 阶段 1:文档和脚手架
314
+
315
+ - 补充本文档。
316
+ - 在项目模板中生成 `tests/data/fixtures/.gitkeep`、`tests/data/files/.gitkeep`。
317
+ - 在 fixture chain 模板中补充 CaseContext 风格示例。
318
+
319
+ ### 阶段 2:最小 API
320
+
321
+ 新增包:
322
+
323
+ ```text
324
+ src/df_test_framework/testing/data/pipeline/
325
+ __init__.py
326
+ context.py
327
+ dataset.py
328
+ resolver.py
329
+ parametrize.py
330
+ ```
331
+
332
+ 最小能力:
333
+
334
+ - `CaseContext`
335
+ - `DataAssetResolver`
336
+ - `case_dataset()`
337
+ - `CaseDataset.parametrize()`
338
+
339
+ ### 阶段 3:CLI 过滤
340
+
341
+ - 增加 `--case`、`--case-tag`、`--case-stage`、`--seed`。
342
+ - 支持逗号分隔和多次传参。
343
+ - 支持失败时输出复现命令。
344
+
345
+ ### 阶段 4:报告和诊断
346
+
347
+ - 自动写入 Allure case metadata。
348
+ - 支持脱敏后的 case 输入附件。
349
+ - 支持数据源路径和 seed 记录。
350
+
351
+ ### 阶段 5:高级能力
352
+
353
+ - Pydantic / JSON Schema 集成。
354
+ - Excel 导入导出模板工具。
355
+ - Testcontainers / 临时依赖环境的可选集成。
356
+ - 数据依赖图可视化。
357
+
358
+ ## 与现有能力的关系
359
+
360
+ | 现有能力 | 保留 | 新管线如何使用 |
361
+ | --- | --- | --- |
362
+ | `YAMLLoader` / `JSONLoader` / `CSVLoader` | 保留 | 作为底层 loader |
363
+ | `DataGenerator` | 保留 | 生成动态字段和 seed 数据 |
364
+ | `Factory` / `ModelFactory` | 保留 | 构建领域对象默认值 |
365
+ | `cleanup` | 保留 | 前置准备成功后注册清理 |
366
+ | `uow` / `prepare_data` | 保留 | DB 前置准备和事务管理 |
367
+ | `fixture_chain_pattern` | 保留 | 作为 Provisioner 的项目侧范式 |
368
+ | `AuthSetup` / `ui_client` | 保留 | UI 登录态和多角色入口 |
369
+
370
+ ## 反模式
371
+
372
+ - 测试函数里直接读取 YAML / Excel。
373
+ - Actions 在 import 阶段读取数据文件。
374
+ - 用 Excel 作为 CI 唯一主数据源。
375
+ - 在 case 数据里写本地绝对路径。
376
+ - 动态随机没有 seed。
377
+ - 造数成功但 cleanup 留给测试函数手动注册。
378
+ - 在 `pytest_generate_tests` 中执行 API / DB / UI 前置。
379
+ - 业务项目为了参数化复制多个几乎一样的测试函数。
380
+
381
+ ## 设计原则
382
+
383
+ 1. 收集期轻,执行期重。
384
+ 2. 数据表达业务意图,代码表达业务动作。
385
+ 3. 主数据文本化,二进制文件只做资产。
386
+ 4. 随机必须可复现。
387
+ 5. 造数和清理是一个原子操作。
388
+ 6. 框架提供协议和通用工具,业务项目保留领域判断。
389
+ 7. 先用透明 API 落地,再补装饰器语法糖。