df-test-framework 4.8.0__tar.gz → 4.9.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (927) hide show
  1. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/AGENTS.md +2 -2
  2. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/CHANGELOG.md +100 -0
  3. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/CLAUDE.md +2 -2
  4. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/PKG-INFO +2 -2
  5. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/README.md +2 -2
  6. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/ESSENTIAL_DOCS.md +2 -2
  7. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/README.md +1 -1
  8. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/guides/assertions_guide.md +67 -2
  9. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/guides/test_data_cleanup.md +80 -0
  10. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/releases/README.md +10 -3
  11. df_test_framework-4.9.0/docs/releases/v4.8.1.md +136 -0
  12. df_test_framework-4.9.0/docs/releases/v4.9.0.md +204 -0
  13. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/pyproject.toml +1 -1
  14. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/__init__.py +19 -1
  15. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/infrastructure/helpers/gmcrypto.py +11 -4
  16. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/testing/__init__.py +13 -0
  17. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/testing/assertions/__init__.py +14 -0
  18. df_test_framework-4.9.0/src/df_test_framework/testing/assertions/waiting.py +283 -0
  19. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/testing/data/__init__.py +17 -0
  20. df_test_framework-4.9.0/src/df_test_framework/testing/data/naming.py +400 -0
  21. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/testing/fixtures/__init__.py +4 -0
  22. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/testing/fixtures/core.py +62 -10
  23. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/testing/plugins/env_plugin.py +5 -1
  24. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/infrastructure/test_gmcrypto.py +29 -2
  25. df_test_framework-4.9.0/tests/testing/assertions/test_waiting.py +210 -0
  26. df_test_framework-4.9.0/tests/testing/data/test_naming.py +338 -0
  27. df_test_framework-4.9.0/tests/testing/fixtures/test_cleanup_scopes_integration.py +193 -0
  28. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/testing/fixtures/test_fixtures_core.py +28 -8
  29. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/testing/plugins/test_env_plugin.py +5 -5
  30. df_test_framework-4.9.0/uv.lock +2773 -0
  31. df_test_framework-4.8.0/uv.lock +0 -2665
  32. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/.editorconfig +0 -0
  33. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/.env.example +0 -0
  34. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/.gitattributes +0 -0
  35. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/.github/workflows/README.md +0 -0
  36. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/.github/workflows/lint.yml +0 -0
  37. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/.github/workflows/release.yml +0 -0
  38. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/.github/workflows/scheduled.yml +0 -0
  39. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/.github/workflows/security.yml +0 -0
  40. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/.github/workflows/test.yml +0 -0
  41. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/.gitignore +0 -0
  42. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/.gitleaks.toml +0 -0
  43. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/.gitleaksignore +0 -0
  44. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/.pre-commit-config.yaml +0 -0
  45. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/.python-version +0 -0
  46. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/CONTRIBUTING.md +0 -0
  47. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/README_PYPI.md +0 -0
  48. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/CONTRIBUTOR_GUIDE.md +0 -0
  49. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/DOC_REORGANIZATION_PLAN_v4.0.md +0 -0
  50. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/FAQ.md +0 -0
  51. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/LEARNING_PATH.md +0 -0
  52. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/api-reference/README.md +0 -0
  53. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/api-reference/clients.md +0 -0
  54. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/api-reference/core/README.md +0 -0
  55. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/api-reference/core/context.md +0 -0
  56. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/api-reference/core/events.md +0 -0
  57. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/api-reference/core/exceptions.md +0 -0
  58. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/api-reference/core/middleware.md +0 -0
  59. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/api-reference/core/protocols.md +0 -0
  60. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/api-reference/core/types.md +0 -0
  61. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/api-reference/core.md +0 -0
  62. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/api-reference/databases.md +0 -0
  63. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/api-reference/drivers.md +0 -0
  64. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/api-reference/extensions.md +0 -0
  65. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/api-reference/infrastructure.md +0 -0
  66. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/api-reference/patterns.md +0 -0
  67. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/api-reference/testing.md +0 -0
  68. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/architecture/ARCHITECTURE_V4.0.md +0 -0
  69. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/architecture/CODE_STRUCTURE.md +0 -0
  70. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/architecture/PLUGIN_SYSTEM_V3.37.md +0 -0
  71. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/architecture/README.md +0 -0
  72. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/architecture/TEST_EXECUTION_LIFECYCLE.md +0 -0
  73. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/architecture/archive/README.md +0 -0
  74. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/architecture/archive/REFACTORING_PLAN_V3.md +0 -0
  75. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/architecture/archive/REFACTORING_PLAN_V3_REVISED.md +0 -0
  76. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/architecture/archive/design/DI_STRATEGY.md +0 -0
  77. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/architecture/archive/design/PREPARE_DATA_DESIGN.md +0 -0
  78. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/architecture/archive/design/TESTING_MODULE_OPTIMIZATION.md +0 -0
  79. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/architecture/archive/design/UOW_CLEANUP_ARCHITECTURE.md +0 -0
  80. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/architecture/archive/design/UOW_REFACTORING_PROPOSAL.md +0 -0
  81. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/architecture/archive/design/allure_integration_modes.md +0 -0
  82. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/architecture/archive/design/capability_plan_vs_current.md +0 -0
  83. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/architecture/archive/design/config-driven-design.md +0 -0
  84. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/architecture/archive/design/config-management-analysis.md +0 -0
  85. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/architecture/archive/design/eventbus-integration-analysis.md +0 -0
  86. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/architecture/archive/design/failure-diagnosis-v2-design.md +0 -0
  87. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/architecture/archive/design/future_allure_plugin_plans.md +0 -0
  88. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/architecture/archive/design/http-vs-web-comparison.md +0 -0
  89. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/architecture/archive/design/observability-debugging-unification.md +0 -0
  90. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/architecture/archive/design/provider-pattern-deep-dive.md +0 -0
  91. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/architecture/archive/design/tech-debt-cleanup-plan.md +0 -0
  92. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/architecture/archive/design/ui-failure-diagnosis-implementation-v3.46.3.md +0 -0
  93. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/architecture/archive/design/ui-observability-design.md +0 -0
  94. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/architecture/archive/discussion_1_initial_issues.md +0 -0
  95. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/architecture/archive/v3_complete_draft.md +0 -0
  96. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/architecture/archive/v3_final_draft.md +0 -0
  97. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/architecture/archive/versions/FRAMEWORK_ARCHITECTURE_v3.6.2.md +0 -0
  98. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/architecture/archive/versions/OVERVIEW_V3.17.md +0 -0
  99. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/architecture/archive/versions/V3.14_ENTERPRISE_PLATFORM_DESIGN.md +0 -0
  100. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/architecture/archive/versions/V3.16_LAYER4_BOOTSTRAP_ARCHITECTURE.md +0 -0
  101. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/architecture/archive/versions/V3.17_EVENT_SYSTEM_REDESIGN.md +0 -0
  102. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/architecture/archive/versions/V3_ARCHITECTURE.md +0 -0
  103. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/architecture/archive/versions/V3_IMPLEMENTATION.md +0 -0
  104. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/architecture/archive/versions/overview.md +0 -0
  105. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/architecture/archive/versions/v2-architecture.md +0 -0
  106. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/architecture/extension-points.md +0 -0
  107. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/architecture/failure-diagnosis-hook-example.py +0 -0
  108. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/architecture/multi-project-reuse.md +0 -0
  109. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/architecture/observability-architecture.md +0 -0
  110. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/architecture/observability-modernization.md +0 -0
  111. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/architecture/test-type-support.md +0 -0
  112. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/architecture//344/272/224/345/261/202/346/236/266/346/236/204/350/257/246/350/247/243.md" +0 -0
  113. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/archive/README.md +0 -0
  114. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/archive/analysis/ACTION_PLAN_v2.0.md +0 -0
  115. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/archive/analysis/AUDIT_VERIFICATION_REPORT.md +0 -0
  116. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/archive/analysis/AUTH_PLACEMENT_ANALYSIS.md +0 -0
  117. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/archive/analysis/CODE_REVIEW_f95e08cd.md +0 -0
  118. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/archive/analysis/COMPREHENSIVE_FEATURE_AUDIT.md +0 -0
  119. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/archive/analysis/FRAMEWORK_OPTIMIZATION_ANALYSIS_2025.md +0 -0
  120. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/archive/analysis/PHASE2_COMPARISON_ANALYSIS.md +0 -0
  121. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/archive/analysis/PHASE2_COMPLETION_REPORT.md +0 -0
  122. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/archive/analysis/PHASE2_SUMMARY.md +0 -0
  123. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/archive/analysis/README.md +0 -0
  124. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/archive/analysis/V3_REFACTORING_COMPLETE.md +0 -0
  125. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/archive/analysis_2025/ALLURE_HTTP_LOGGING_ISSUE.md +0 -0
  126. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/archive/analysis_2025/ALLURE_INTEGRATION_CHECK_REPORT.md +0 -0
  127. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/archive/analysis_2025/ALLURE_INTEGRATION_DESIGN.md +0 -0
  128. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/archive/analysis_2025/ALLURE_INTEGRATION_SUMMARY.md +0 -0
  129. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/archive/analysis_2025/ALLURE_ROOT_CAUSE_ANALYSIS.md +0 -0
  130. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/archive/analysis_2025/CODE_ANALYSIS_AND_PROGRESS.md +0 -0
  131. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/archive/analysis_2025/COMPREHENSIVE_FRAMEWORK_EVALUATION.md +0 -0
  132. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/archive/analysis_2025/CONFIG_MODERNIZATION_ANALYSIS.md +0 -0
  133. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/archive/design/ARCHITECTURE_AUDIT.md +0 -0
  134. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/archive/design/FUTURE_ENHANCEMENTS.md +0 -0
  135. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/archive/design/IMPLEMENTATION_SUMMARY.md +0 -0
  136. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/archive/design/MIDDLEWARE_V3.14_DESIGN.md +0 -0
  137. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/archive/design/ROADMAP_V3.29_ENHANCEMENTS.md +0 -0
  138. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/archive/design/SIGNATURE_FRAMEWORK_CAPABILITIES.md +0 -0
  139. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/archive/design/TEMPLATE_DEBUG_FIXTURES_ISSUE.md +0 -0
  140. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/archive/design/observability-config-design.md +0 -0
  141. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/archive/design/ui-best-practices-2026.md +0 -0
  142. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/archive/design/web-architecture-consistency-design.md +0 -0
  143. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/archive/design/web-event-driven-comparison.md +0 -0
  144. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/archive/evaluations_2025/DUAL_AI_ANALYSIS_COMPARISON.md +0 -0
  145. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/archive/evaluations_2025/FRAMEWORK_ASSESSMENT.md +0 -0
  146. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/archive/evaluations_2025/FRAMEWORK_BEST_PRACTICES_UPDATE.md +0 -0
  147. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/archive/evaluations_2025/FRAMEWORK_CAPABILITIES.md +0 -0
  148. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/archive/evaluations_2025/FRAMEWORK_IMPROVEMENT_PROPOSALS.md +0 -0
  149. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/archive/guides/async_database_guide.md +0 -0
  150. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/archive/guides/async_http_client.md +0 -0
  151. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/archive/guides/httpx_advanced_usage.md +0 -0
  152. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/archive/guides/logging_configuration.md +0 -0
  153. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/archive/guides/logging_pytest_integration.md +0 -0
  154. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/archive/guides/modern_logging_best_practices.md +0 -0
  155. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/archive/guides/repository_uow_guide.md +0 -0
  156. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/archive/interceptor_refactoring/111.md +0 -0
  157. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/archive/interceptor_refactoring/CONFIG_AND_INTERCEPTOR_INTEGRATION.md +0 -0
  158. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/archive/interceptor_refactoring/DIRECTORY_STRUCTURE_REFACTORING.md +0 -0
  159. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/archive/interceptor_refactoring/INTERCEPTOR_ARCHITECTURE.md +0 -0
  160. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/archive/interceptor_refactoring/INTERCEPTOR_ARCHITECTURE_VERIFICATION.md +0 -0
  161. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/archive/interceptor_refactoring/INTERCEPTOR_CONFIG_BEST_PRACTICES.md +0 -0
  162. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/archive/interceptor_refactoring/INTERCEPTOR_IDEAL_DESIGN.md +0 -0
  163. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/archive/interceptor_refactoring/INTERCEPTOR_IDEAL_VS_ACTUAL.md +0 -0
  164. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/archive/interceptor_refactoring/INTERCEPTOR_LOCATION_DECISION.md +0 -0
  165. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/archive/interceptor_refactoring/INTERCEPTOR_NAMING_STANDARDS.md +0 -0
  166. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/archive/interceptor_refactoring/INTERCEPTOR_PERFORMANCE_ANALYSIS.md +0 -0
  167. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/archive/interceptor_refactoring/README.md +0 -0
  168. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/archive/interceptor_refactoring/REFACTORING_IMPLEMENTATION_PLAN.md +0 -0
  169. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/archive/interceptor_refactoring/REFACTORING_PROGRESS.md +0 -0
  170. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/archive/issues/README.md +0 -0
  171. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/archive/issues/summary.md +0 -0
  172. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/archive/issues/v1.md +0 -0
  173. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/archive/migration/README.md +0 -0
  174. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/archive/migration/v3.15-to-v3.16.md +0 -0
  175. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/archive/plans/CAPABILITY_LAYER_OPTIMIZATION.md +0 -0
  176. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/archive/plans/REFACTORING_PLAN_v2.md +0 -0
  177. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/archive/plans/REFACTORING_TASKS_v2.md +0 -0
  178. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/archive/plans/RFC_MULTIPART_FORM_DATA_SUPPORT.md +0 -0
  179. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/archive/plans/RFC_MULTIPART_IMPLEMENTATION_CODE.md +0 -0
  180. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/archive/plans/UV_SYNC_MIGRATION_SUMMARY.md +0 -0
  181. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/archive/plans/UV_SYNC_QUICK_START.md +0 -0
  182. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/archive/plans/v2-migration-plan-draft.md +0 -0
  183. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/archive/reports_2025/CHANGELOG_AUDIT_REPORT.md +0 -0
  184. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/archive/reports_2025/CODE_QUALITY_FIXES_2025-11-09.md +0 -0
  185. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/archive/reports_2025/CORE_DOCS_UPDATE_PLAN.md +0 -0
  186. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/archive/reports_2025/DOCUMENTATION_AUDIT_REPORT_2025-12-05.md +0 -0
  187. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/archive/reports_2025/DOCUMENTATION_CLEANUP_SUMMARY.md +0 -0
  188. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/archive/reports_2025/DOCUMENTATION_INDEX.md +0 -0
  189. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/archive/reports_2025/DOCUMENTATION_MAINTENANCE_COMPLETE.md +0 -0
  190. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/archive/reports_2025/DOCUMENTATION_UPDATE_CHECKLIST.md +0 -0
  191. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/archive/reports_2025/DOC_UPDATE_SUMMARY.md +0 -0
  192. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/archive/reports_2025/IMPROVEMENTS_2025-01-09.md +0 -0
  193. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/archive/reports_2025/PHASE3_COMPLETION_REPORT.md +0 -0
  194. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/archive/reports_2025/PYTHON_VERSION_UNIFICATION.md +0 -0
  195. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/archive/reports_2025/REFACTORING_COMPLETION_CHECK.md +0 -0
  196. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/archive/reports_2025/TEST_CODE_GENERATION_ANALYSIS.md +0 -0
  197. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/archive/reports_2025/V3.3.0_DOCUMENTATION_UPDATE_SUMMARY.md +0 -0
  198. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/archive/reports_2025/V3.3.0_MIGRATION_CHECKLIST.md +0 -0
  199. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/archive/reports_2025/V3.5_ALLURE_INTEGRATION_PLAN.md +0 -0
  200. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/archive/reports_2025/V3.5_DOCUMENTATION_COMPLETE.md +0 -0
  201. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/archive/reports_2025/V3.5_OBSERVABILITY_FINAL_STATUS.md +0 -0
  202. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/archive/reports_2025/V3.5_PHASE2_ACCEPTANCE_REPORT.md +0 -0
  203. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/archive/reports_2025/V3.5_REFACTOR_PLAN.md +0 -0
  204. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/archive/reports_2025/V3.5_REFACTOR_PLAN_REVISED.md +0 -0
  205. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/archive/reports_2025/VERIFIED_BEST_PRACTICES_INTEGRATION_COMPLETE.md +0 -0
  206. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/archive/reports_2025/async_http_client_design.md +0 -0
  207. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/archive/user-guide/PHASE3_FEATURES.md +0 -0
  208. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/archive/user-guide/extensions.md +0 -0
  209. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/archive/user-guide/ui-testing.md +0 -0
  210. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/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
  211. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/archive/v1/FRAMEWORK_DESIGN_PRINCIPLES.md +0 -0
  212. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/archive/v1/README.md +0 -0
  213. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/archive/v1/UPGRADE_SUMMARY_v1.3.1.md +0 -0
  214. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/archive/v1/architecture.md +0 -0
  215. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/archive/v1/best-practices.md +0 -0
  216. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/archive/v1/config-integration-guide.md +0 -0
  217. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/archive/v1/optimization-report.md +0 -0
  218. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/archive/v1/publishing.md +0 -0
  219. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/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
  220. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/archive/versions/QUICK_START_V3.14.md +0 -0
  221. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/archive/versions/QUICK_START_V3.5.md +0 -0
  222. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/ci-templates/README.md +0 -0
  223. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/ci-templates/github-actions.yml +0 -0
  224. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/ci-templates/gitlab-ci.yml +0 -0
  225. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/development/DOCUMENTATION_MAINTENANCE.md +0 -0
  226. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/development/FRAMEWORK_DEPENDENCY_MANAGEMENT.md +0 -0
  227. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/development/RELEASE.md +0 -0
  228. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/development/VERSION_CONTROL_RULES.md +0 -0
  229. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/development/local-development.md +0 -0
  230. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/guides/DECIMAL_GUIDE.md +0 -0
  231. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/guides/allure_plugin.md +0 -0
  232. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/guides/async_api_guide.md +0 -0
  233. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/guides/auth_session_guide.md +0 -0
  234. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/guides/bootstrap_guide.md +0 -0
  235. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/guides/config_guide.md +0 -0
  236. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/guides/database_guide.md +0 -0
  237. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/guides/decorators_guide.md +0 -0
  238. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/guides/distributed_tracing.md +0 -0
  239. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/guides/event_bus_guide.md +0 -0
  240. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/guides/extensions.md +0 -0
  241. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/guides/factory_guide.md +0 -0
  242. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/guides/fixture_chain_pattern.md +0 -0
  243. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/guides/fixtures_guide.md +0 -0
  244. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/guides/graphql_client.md +0 -0
  245. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/guides/grpc_client.md +0 -0
  246. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/guides/helpers_guide.md +0 -0
  247. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/guides/http_client_guide.md +0 -0
  248. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/guides/integration-guide.md +0 -0
  249. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/guides/local_debug_quickstart.md +0 -0
  250. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/guides/logging_guide.md +0 -0
  251. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/guides/message_queue.md +0 -0
  252. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/guides/middleware_guide.md +0 -0
  253. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/guides/mocking.md +0 -0
  254. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/guides/monitoring_plugin.md +0 -0
  255. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/guides/openapi_guide.md +0 -0
  256. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/guides/plugin_hooks_guide.md +0 -0
  257. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/guides/plugins_guide.md +0 -0
  258. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/guides/prometheus_metrics.md +0 -0
  259. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/guides/redis_guide.md +0 -0
  260. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/guides/resilience_guide.md +0 -0
  261. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/guides/sanitize_guide.md +0 -0
  262. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/guides/scaffold_cli_guide.md +0 -0
  263. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/guides/service_client_guide.md +0 -0
  264. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/guides/storage.md +0 -0
  265. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/guides/telemetry_guide.md +0 -0
  266. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/guides/test_data.md +0 -0
  267. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/guides/test_data_pipeline_design.md +0 -0
  268. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/guides/testing-development.md +0 -0
  269. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/guides/web-ui-testing.md +0 -0
  270. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/migration/README.md +0 -0
  271. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/migration/v3-to-v4.md +0 -0
  272. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/releases/v3.0.0-alpha.md +0 -0
  273. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/releases/v3.1.0.md +0 -0
  274. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/releases/v3.10.0.md +0 -0
  275. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/releases/v3.11.0.md +0 -0
  276. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/releases/v3.11.1.md +0 -0
  277. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/releases/v3.12.0.md +0 -0
  278. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/releases/v3.12.1.md +0 -0
  279. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/releases/v3.13.0.md +0 -0
  280. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/releases/v3.14.0.md +0 -0
  281. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/releases/v3.14.0_completion_report.md +0 -0
  282. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/releases/v3.14.0_implementation_complete.md +0 -0
  283. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/releases/v3.16.0.md +0 -0
  284. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/releases/v3.17.0.md +0 -0
  285. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/releases/v3.17.1.md +0 -0
  286. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/releases/v3.17.2.md +0 -0
  287. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/releases/v3.18.0.md +0 -0
  288. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/releases/v3.18.1-bugfix.md +0 -0
  289. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/releases/v3.18.1.md +0 -0
  290. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/releases/v3.19.0.md +0 -0
  291. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/releases/v3.2.0.md +0 -0
  292. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/releases/v3.20.0.md +0 -0
  293. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/releases/v3.21.0.md +0 -0
  294. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/releases/v3.22.0.md +0 -0
  295. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/releases/v3.22.1.md +0 -0
  296. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/releases/v3.23.0.md +0 -0
  297. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/releases/v3.24.0.md +0 -0
  298. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/releases/v3.25.0.md +0 -0
  299. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/releases/v3.26.0.md +0 -0
  300. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/releases/v3.27.0.md +0 -0
  301. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/releases/v3.28.0.md +0 -0
  302. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/releases/v3.28.1.md +0 -0
  303. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/releases/v3.29.0.md +0 -0
  304. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/releases/v3.3.0.md +0 -0
  305. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/releases/v3.30.0.md +0 -0
  306. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/releases/v3.31.0.md +0 -0
  307. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/releases/v3.32.0.md +0 -0
  308. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/releases/v3.33.0.md +0 -0
  309. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/releases/v3.34.0.md +0 -0
  310. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/releases/v3.34.1.md +0 -0
  311. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/releases/v3.35.0.md +0 -0
  312. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/releases/v3.35.1.md +0 -0
  313. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/releases/v3.35.2.md +0 -0
  314. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/releases/v3.35.3.md +0 -0
  315. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/releases/v3.35.4.md +0 -0
  316. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/releases/v3.35.5.md +0 -0
  317. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/releases/v3.35.6.md +0 -0
  318. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/releases/v3.35.7.md +0 -0
  319. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/releases/v3.36.0.md +0 -0
  320. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/releases/v3.36.1.md +0 -0
  321. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/releases/v3.37.0.md +0 -0
  322. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/releases/v3.38.0.md +0 -0
  323. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/releases/v3.38.10.md +0 -0
  324. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/releases/v3.38.2.md +0 -0
  325. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/releases/v3.38.4.md +0 -0
  326. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/releases/v3.38.5.md +0 -0
  327. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/releases/v3.38.7.md +0 -0
  328. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/releases/v3.38.8.md +0 -0
  329. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/releases/v3.38.9.md +0 -0
  330. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/releases/v3.39.0.md +0 -0
  331. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/releases/v3.39.1.md +0 -0
  332. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/releases/v3.4.0.md +0 -0
  333. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/releases/v3.40.0.md +0 -0
  334. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/releases/v3.41.0.md +0 -0
  335. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/releases/v3.41.1.md +0 -0
  336. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/releases/v3.42.0.md +0 -0
  337. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/releases/v3.43.0.md +0 -0
  338. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/releases/v3.44.0.md +0 -0
  339. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/releases/v3.45.0.md +0 -0
  340. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/releases/v3.46.1.md +0 -0
  341. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/releases/v3.46.2.md +0 -0
  342. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/releases/v3.46.3.md +0 -0
  343. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/releases/v3.5.0.md +0 -0
  344. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/releases/v3.6.0.md +0 -0
  345. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/releases/v3.6.1.md +0 -0
  346. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/releases/v3.6.2.md +0 -0
  347. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/releases/v3.7.0.md +0 -0
  348. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/releases/v3.8.0.md +0 -0
  349. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/releases/v3.9.0.md +0 -0
  350. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/releases/v4.0.0.md +0 -0
  351. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/releases/v4.0.1.md +0 -0
  352. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/releases/v4.0.2.md +0 -0
  353. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/releases/v4.0.3.md +0 -0
  354. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/releases/v4.0.4.md +0 -0
  355. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/releases/v4.1.0.md +0 -0
  356. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/releases/v4.1.1.md +0 -0
  357. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/releases/v4.1.2.md +0 -0
  358. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/releases/v4.2.0.md +0 -0
  359. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/releases/v4.2.1.md +0 -0
  360. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/releases/v4.2.2.md +0 -0
  361. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/releases/v4.3.0.md +0 -0
  362. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/releases/v4.3.1.md +0 -0
  363. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/releases/v4.4.0.md +0 -0
  364. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/releases/v4.4.1.md +0 -0
  365. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/releases/v4.4.2.md +0 -0
  366. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/releases/v4.4.3.md +0 -0
  367. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/releases/v4.4.4.md +0 -0
  368. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/releases/v4.5.0.md +0 -0
  369. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/releases/v4.6.0.md +0 -0
  370. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/releases/v4.6.1.md +0 -0
  371. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/releases/v4.7.0.md +0 -0
  372. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/releases/v4.7.1.md +0 -0
  373. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/releases/v4.7.2.md +0 -0
  374. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/releases/v4.7.3.md +0 -0
  375. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/releases/v4.7.4.md +0 -0
  376. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/releases/v4.7.5.md +0 -0
  377. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/releases/v4.8.0.md +0 -0
  378. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/skills/write-code.zip +0 -0
  379. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/skills/write-test.zip +0 -0
  380. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/troubleshooting/README.md +0 -0
  381. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/troubleshooting/common-errors.md +0 -0
  382. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/troubleshooting/debugging-guide.md +0 -0
  383. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/user-guide/BEST_PRACTICES.md +0 -0
  384. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/user-guide/QUICK_REFERENCE.md +0 -0
  385. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/user-guide/QUICK_START.md +0 -0
  386. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/user-guide/README.md +0 -0
  387. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/user-guide/USER_MANUAL.md +0 -0
  388. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/user-guide/VERIFIED_BEST_PRACTICES.md +0 -0
  389. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/user-guide/ci-cd.md +0 -0
  390. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/user-guide/code-generation.md +0 -0
  391. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/user-guide/configuration.md +0 -0
  392. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/user-guide/cross-project-sharing.md +0 -0
  393. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/user-guide/debugging.md +0 -0
  394. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/user-guide/examples.md +0 -0
  395. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/user-guide/multi-repo.md +0 -0
  396. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/user-guide/nested-settings-guide.md +0 -0
  397. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/docs/user-guide/security-best-practices.md +0 -0
  398. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/examples/01-basic/README.md +0 -0
  399. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/examples/01-basic/database_operations.py +0 -0
  400. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/examples/01-basic/http_client_usage.py +0 -0
  401. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/examples/01-basic/redis_cache.py +0 -0
  402. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/examples/01-basic/storage_usage.py +0 -0
  403. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/examples/02-bootstrap/README.md +0 -0
  404. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/examples/02-bootstrap/custom_providers.py +0 -0
  405. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/examples/02-bootstrap/custom_settings.py +0 -0
  406. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/examples/02-bootstrap/minimal_bootstrap.py +0 -0
  407. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/examples/02-bootstrap/with_extensions.py +0 -0
  408. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/examples/03-testing/README.md +0 -0
  409. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/examples/03-testing/conftest.py +0 -0
  410. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/examples/03-testing/test_api.py +0 -0
  411. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/examples/03-testing/test_database.py +0 -0
  412. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/examples/03-testing/test_with_fixtures.py +0 -0
  413. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/examples/04-patterns/README.md +0 -0
  414. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/examples/04-patterns/builder_pattern.py +0 -0
  415. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/examples/04-patterns/combined_patterns.py +0 -0
  416. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/examples/04-patterns/repository_pattern.py +0 -0
  417. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/examples/05-extensions/README.md +0 -0
  418. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/examples/05-extensions/allure_enhancement_extension.py +0 -0
  419. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/examples/05-extensions/custom_extension.py +0 -0
  420. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/examples/05-extensions/data_factory_extension.py +0 -0
  421. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/examples/05-extensions/environment_validator_extension.py +0 -0
  422. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/examples/05-extensions/monitoring_extension.py +0 -0
  423. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/examples/05-extensions/mq_monitor_extension.py +0 -0
  424. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/examples/05-extensions/notification_extension.py +0 -0
  425. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/examples/06-ui-testing/README.md +0 -0
  426. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/examples/06-ui-testing/basic_ui_test.py +0 -0
  427. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/examples/06-ui-testing/conftest.py +0 -0
  428. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/examples/06-ui-testing/page_object_example.py +0 -0
  429. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/examples/07-message-queue/README.md +0 -0
  430. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/examples/07-message-queue/docker-compose-kafka.yml +0 -0
  431. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/examples/07-message-queue/docker-compose-rabbitmq.yml +0 -0
  432. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/examples/07-message-queue/docker-compose-rocketmq.yml +0 -0
  433. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/examples/07-message-queue/kafka_basic.py +0 -0
  434. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/examples/07-message-queue/kafka_ssl.py +0 -0
  435. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/examples/07-message-queue/rabbitmq_basic.py +0 -0
  436. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/examples/07-message-queue/rabbitmq_topic.py +0 -0
  437. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/examples/07-message-queue/rocketmq-broker.conf +0 -0
  438. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/examples/07-message-queue/rocketmq_basic.py +0 -0
  439. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/examples/07-v35-features/01_configurable_interceptors.py +0 -0
  440. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/examples/07-v35-features/02_profile_configuration.py +0 -0
  441. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/examples/07-v35-features/03_runtime_overrides.py +0 -0
  442. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/examples/07-v35-features/04_observability.py +0 -0
  443. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/examples/07-v35-features/README.md +0 -0
  444. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/examples/08-v37-features/01_unit_of_work_basics.py +0 -0
  445. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/examples/08-v37-features/02_repository_v37.py +0 -0
  446. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/examples/08-v37-features/03_auto_rollback_testing.py +0 -0
  447. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/examples/08-v37-features/04_multi_repository_transactions.py +0 -0
  448. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/examples/08-v37-features/05_project_uow.py +0 -0
  449. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/examples/08-v37-features/06_exception_handling_with_uow.py +0 -0
  450. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/examples/08-v37-features/README.md +0 -0
  451. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/examples/README.md +0 -0
  452. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/scripts/fetch_swagger.py +0 -0
  453. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/scripts/security-scan.bat +0 -0
  454. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/scripts/security-scan.sh +0 -0
  455. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/bootstrap/__init__.py +0 -0
  456. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/bootstrap/bootstrap.py +0 -0
  457. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/bootstrap/providers.py +0 -0
  458. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/bootstrap/runtime.py +0 -0
  459. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/capabilities/__init__.py +0 -0
  460. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/capabilities/clients/__init__.py +0 -0
  461. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/capabilities/clients/graphql/__init__.py +0 -0
  462. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/capabilities/clients/graphql/client.py +0 -0
  463. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/capabilities/clients/graphql/middleware/__init__.py +0 -0
  464. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/capabilities/clients/graphql/middleware/base.py +0 -0
  465. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/capabilities/clients/graphql/middleware/event_publisher.py +0 -0
  466. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/capabilities/clients/graphql/middleware/logging.py +0 -0
  467. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/capabilities/clients/graphql/middleware/retry.py +0 -0
  468. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/capabilities/clients/graphql/models.py +0 -0
  469. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/capabilities/clients/graphql/query_builder.py +0 -0
  470. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/capabilities/clients/grpc/__init__.py +0 -0
  471. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/capabilities/clients/grpc/client.py +0 -0
  472. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/capabilities/clients/grpc/middleware/__init__.py +0 -0
  473. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/capabilities/clients/grpc/middleware/base.py +0 -0
  474. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/capabilities/clients/grpc/middleware/event_publisher.py +0 -0
  475. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/capabilities/clients/grpc/middleware/logging.py +0 -0
  476. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/capabilities/clients/grpc/middleware/metadata.py +0 -0
  477. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/capabilities/clients/grpc/middleware/retry.py +0 -0
  478. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/capabilities/clients/grpc/middleware/timing.py +0 -0
  479. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/capabilities/clients/grpc/models.py +0 -0
  480. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/capabilities/clients/http/__init__.py +0 -0
  481. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/capabilities/clients/http/core/__init__.py +0 -0
  482. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/capabilities/clients/http/core/request.py +0 -0
  483. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/capabilities/clients/http/core/response.py +0 -0
  484. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/capabilities/clients/http/middleware/__init__.py +0 -0
  485. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/capabilities/clients/http/middleware/auth.py +0 -0
  486. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/capabilities/clients/http/middleware/event_publisher.py +0 -0
  487. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/capabilities/clients/http/middleware/factory.py +0 -0
  488. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/capabilities/clients/http/middleware/logging.py +0 -0
  489. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/capabilities/clients/http/middleware/retry.py +0 -0
  490. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/capabilities/clients/http/middleware/signature.py +0 -0
  491. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/capabilities/clients/http/middleware/telemetry.py +0 -0
  492. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/capabilities/clients/http/rest/__init__.py +0 -0
  493. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/capabilities/clients/http/rest/factory.py +0 -0
  494. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/capabilities/clients/http/rest/httpx/__init__.py +0 -0
  495. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/capabilities/clients/http/rest/httpx/async_base_api.py +0 -0
  496. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/capabilities/clients/http/rest/httpx/async_client.py +0 -0
  497. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/capabilities/clients/http/rest/httpx/base_api.py +0 -0
  498. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/capabilities/clients/http/rest/httpx/client.py +0 -0
  499. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/capabilities/clients/http/rest/protocols.py +0 -0
  500. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/capabilities/databases/__init__.py +0 -0
  501. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/capabilities/databases/async_database.py +0 -0
  502. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/capabilities/databases/database.py +0 -0
  503. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/capabilities/databases/factory.py +0 -0
  504. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/capabilities/databases/query_builder.py +0 -0
  505. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/capabilities/databases/redis/__init__.py +0 -0
  506. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/capabilities/databases/redis/async_redis.py +0 -0
  507. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/capabilities/databases/redis/redis_client.py +0 -0
  508. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/capabilities/databases/repositories/__init__.py +0 -0
  509. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/capabilities/databases/repositories/base.py +0 -0
  510. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/capabilities/databases/repositories/query_spec.py +0 -0
  511. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/capabilities/databases/uow.py +0 -0
  512. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/capabilities/drivers/__init__.py +0 -0
  513. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/capabilities/drivers/web/__init__.py +0 -0
  514. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/capabilities/drivers/web/app_actions.py +0 -0
  515. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/capabilities/drivers/web/async_app_actions.py +0 -0
  516. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/capabilities/drivers/web/factory.py +0 -0
  517. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/capabilities/drivers/web/playwright/__init__.py +0 -0
  518. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/capabilities/drivers/web/playwright/async_browser.py +0 -0
  519. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/capabilities/drivers/web/playwright/async_browser_pool.py +0 -0
  520. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/capabilities/drivers/web/playwright/async_page.py +0 -0
  521. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/capabilities/drivers/web/playwright/browser.py +0 -0
  522. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/capabilities/drivers/web/playwright/component.py +0 -0
  523. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/capabilities/drivers/web/playwright/locator.py +0 -0
  524. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/capabilities/drivers/web/playwright/page.py +0 -0
  525. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/capabilities/drivers/web/protocols.py +0 -0
  526. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/capabilities/engines/__init__.py +0 -0
  527. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/capabilities/engines/batch/__init__.py +0 -0
  528. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/capabilities/engines/batch/spark/__init__.py +0 -0
  529. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/capabilities/engines/olap/__init__.py +0 -0
  530. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/capabilities/engines/stream/__init__.py +0 -0
  531. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/capabilities/engines/stream/flink/__init__.py +0 -0
  532. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/capabilities/messengers/__init__.py +0 -0
  533. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/capabilities/messengers/pubsub/__init__.py +0 -0
  534. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/capabilities/messengers/queue/__init__.py +0 -0
  535. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/capabilities/messengers/queue/kafka/__init__.py +0 -0
  536. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/capabilities/messengers/queue/kafka/client.py +0 -0
  537. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/capabilities/messengers/queue/kafka/config.py +0 -0
  538. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/capabilities/messengers/queue/rabbitmq/__init__.py +0 -0
  539. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/capabilities/messengers/queue/rabbitmq/client.py +0 -0
  540. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/capabilities/messengers/queue/rabbitmq/config.py +0 -0
  541. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/capabilities/messengers/queue/rocketmq/__init__.py +0 -0
  542. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/capabilities/messengers/queue/rocketmq/client.py +0 -0
  543. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/capabilities/messengers/queue/rocketmq/config.py +0 -0
  544. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/capabilities/storages/__init__.py +0 -0
  545. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/capabilities/storages/blob/__init__.py +0 -0
  546. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/capabilities/storages/file/__init__.py +0 -0
  547. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/capabilities/storages/file/local/__init__.py +0 -0
  548. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/capabilities/storages/file/local/client.py +0 -0
  549. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/capabilities/storages/file/local/config.py +0 -0
  550. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/capabilities/storages/object/__init__.py +0 -0
  551. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/capabilities/storages/object/oss/__init__.py +0 -0
  552. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/capabilities/storages/object/oss/client.py +0 -0
  553. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/capabilities/storages/object/oss/config.py +0 -0
  554. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/capabilities/storages/object/s3/__init__.py +0 -0
  555. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/capabilities/storages/object/s3/client.py +0 -0
  556. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/capabilities/storages/object/s3/config.py +0 -0
  557. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/cli/__init__.py +0 -0
  558. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/cli/__main__.py +0 -0
  559. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/cli/commands/__init__.py +0 -0
  560. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/cli/commands/cicd.py +0 -0
  561. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/cli/commands/env.py +0 -0
  562. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/cli/commands/generate_cmd.py +0 -0
  563. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/cli/commands/init_cmd.py +0 -0
  564. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/cli/commands/interactive.py +0 -0
  565. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/cli/generators/__init__.py +0 -0
  566. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/cli/generators/json_to_model.py +0 -0
  567. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/cli/generators/openapi_generator.py +0 -0
  568. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/cli/generators/openapi_parser.py +0 -0
  569. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/cli/main.py +0 -0
  570. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/cli/templates/__init__.py +0 -0
  571. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/cli/templates/cicd/.github/workflows/release.yml +0 -0
  572. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/cli/templates/cicd/.github/workflows/scheduled.yml +0 -0
  573. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/cli/templates/cicd/.github/workflows/test-full.yml +0 -0
  574. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/cli/templates/cicd/.github/workflows/test.yml +0 -0
  575. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/cli/templates/cicd/.gitlab-ci.yml +0 -0
  576. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/cli/templates/cicd/Jenkinsfile +0 -0
  577. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/cli/templates/cicd/docker/.dockerignore +0 -0
  578. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/cli/templates/cicd/docker/Dockerfile +0 -0
  579. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/cli/templates/cicd/docker/docker-compose.yml +0 -0
  580. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/cli/templates/generators/__init__.py +0 -0
  581. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/cli/templates/generators/actions.py +0 -0
  582. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/cli/templates/generators/api_client.py +0 -0
  583. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/cli/templates/generators/builder.py +0 -0
  584. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/cli/templates/generators/env_files.py +0 -0
  585. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/cli/templates/generators/graphql_client.py +0 -0
  586. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/cli/templates/generators/redis_example.py +0 -0
  587. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/cli/templates/generators/repository.py +0 -0
  588. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/cli/templates/generators/settings_enhanced.py +0 -0
  589. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/cli/templates/generators/test.py +0 -0
  590. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/cli/templates/generators/test_complete.py +0 -0
  591. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/cli/templates/generators/test_graphql.py +0 -0
  592. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/cli/templates/project/__init__.py +0 -0
  593. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/cli/templates/project/async_example_api.py +0 -0
  594. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/cli/templates/project/async_ui_app_actions.py +0 -0
  595. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/cli/templates/project/base_api.py +0 -0
  596. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/cli/templates/project/conftest.py +0 -0
  597. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/cli/templates/project/constants.py +0 -0
  598. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/cli/templates/project/data_cleaners.py +0 -0
  599. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/cli/templates/project/default_http_client.py +0 -0
  600. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/cli/templates/project/docs_api.py +0 -0
  601. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/cli/templates/project/editorconfig.py +0 -0
  602. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/cli/templates/project/enhanced_gitignore.py +0 -0
  603. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/cli/templates/project/env.py +0 -0
  604. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/cli/templates/project/fixture_chain_example.py +0 -0
  605. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/cli/templates/project/fixtures_init.py +0 -0
  606. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/cli/templates/project/full_conftest.py +0 -0
  607. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/cli/templates/project/full_settings.py +0 -0
  608. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/cli/templates/project/gitattributes.py +0 -0
  609. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/cli/templates/project/gitignore.py +0 -0
  610. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/cli/templates/project/models_requests_example.py +0 -0
  611. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/cli/templates/project/models_responses_example.py +0 -0
  612. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/cli/templates/project/pyproject_toml.py +0 -0
  613. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/cli/templates/project/readme.py +0 -0
  614. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/cli/templates/project/script_fetch_swagger.py +0 -0
  615. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/cli/templates/project/script_run_tests.py +0 -0
  616. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/cli/templates/project/settings.py +0 -0
  617. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/cli/templates/project/test_async_example.py +0 -0
  618. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/cli/templates/project/test_example.py +0 -0
  619. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/cli/templates/project/ui_app_actions.py +0 -0
  620. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/cli/templates/project/ui_clients.py +0 -0
  621. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/cli/templates/project/ui_conftest.py +0 -0
  622. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/cli/templates/project/ui_fixtures_init.py +0 -0
  623. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/cli/templates/project/ui_page_object.py +0 -0
  624. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/cli/templates/project/ui_settings.py +0 -0
  625. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/cli/templates/project/ui_test_example.py +0 -0
  626. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/cli/templates/project/uow.py +0 -0
  627. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/cli/templates/project/user_api_example.py +0 -0
  628. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/cli/templates/project/utils_converters.py +0 -0
  629. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/cli/templates/project/utils_validators.py +0 -0
  630. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/cli/templates/project/vscode_settings.py +0 -0
  631. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/cli/utils.py +0 -0
  632. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/core/__init__.py +0 -0
  633. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/core/context/__init__.py +0 -0
  634. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/core/context/execution.py +0 -0
  635. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/core/context/propagation.py +0 -0
  636. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/core/decorators.py +0 -0
  637. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/core/events/__init__.py +0 -0
  638. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/core/events/types.py +0 -0
  639. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/core/exceptions.py +0 -0
  640. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/core/middleware/__init__.py +0 -0
  641. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/core/middleware/base.py +0 -0
  642. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/core/middleware/chain.py +0 -0
  643. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/core/middleware/decorator.py +0 -0
  644. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/core/middleware/protocol.py +0 -0
  645. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/core/models/__init__.py +0 -0
  646. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/core/models/base.py +0 -0
  647. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/core/protocols/__init__.py +0 -0
  648. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/core/protocols/client.py +0 -0
  649. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/core/protocols/event.py +0 -0
  650. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/core/protocols/plugin.py +0 -0
  651. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/core/protocols/repository.py +0 -0
  652. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/core/protocols/telemetry.py +0 -0
  653. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/core/types.py +0 -0
  654. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/infrastructure/__init__.py +0 -0
  655. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/infrastructure/config/__init__.py +0 -0
  656. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/infrastructure/config/loader.py +0 -0
  657. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/infrastructure/config/middleware_schema.py +0 -0
  658. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/infrastructure/config/pipeline.py +0 -0
  659. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/infrastructure/config/schema.py +0 -0
  660. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/infrastructure/config/settings.py +0 -0
  661. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/infrastructure/config/sources.py +0 -0
  662. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/infrastructure/context/__init__.py +0 -0
  663. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/infrastructure/context/carriers/__init__.py +0 -0
  664. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/infrastructure/context/carriers/grpc.py +0 -0
  665. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/infrastructure/context/carriers/http.py +0 -0
  666. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/infrastructure/context/carriers/mq.py +0 -0
  667. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/infrastructure/events/__init__.py +0 -0
  668. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/infrastructure/events/bus.py +0 -0
  669. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/infrastructure/events/handlers/__init__.py +0 -0
  670. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/infrastructure/helpers/__init__.py +0 -0
  671. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/infrastructure/helpers/crypto.py +0 -0
  672. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/infrastructure/helpers/hash.py +0 -0
  673. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/infrastructure/helpers/network.py +0 -0
  674. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/infrastructure/helpers/signature.py +0 -0
  675. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/infrastructure/logging/__init__.py +0 -0
  676. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/infrastructure/logging/config.py +0 -0
  677. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/infrastructure/logging/interface.py +0 -0
  678. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/infrastructure/logging/logger.py +0 -0
  679. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/infrastructure/logging/observability.py +0 -0
  680. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/infrastructure/metrics/__init__.py +0 -0
  681. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/infrastructure/metrics/decorators.py +0 -0
  682. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/infrastructure/metrics/manager.py +0 -0
  683. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/infrastructure/metrics/observer.py +0 -0
  684. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/infrastructure/metrics/performance.py +0 -0
  685. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/infrastructure/metrics/registry.py +0 -0
  686. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/infrastructure/metrics/types.py +0 -0
  687. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/infrastructure/plugins/__init__.py +0 -0
  688. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/infrastructure/plugins/hooks.py +0 -0
  689. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/infrastructure/plugins/manager.py +0 -0
  690. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/infrastructure/resilience/__init__.py +0 -0
  691. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/infrastructure/resilience/circuit_breaker.py +0 -0
  692. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/infrastructure/sanitize/__init__.py +0 -0
  693. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/infrastructure/sanitize/service.py +0 -0
  694. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/infrastructure/telemetry/__init__.py +0 -0
  695. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/infrastructure/telemetry/exporters/__init__.py +0 -0
  696. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/infrastructure/telemetry/facade.py +0 -0
  697. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/infrastructure/telemetry/noop.py +0 -0
  698. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/infrastructure/tracing/__init__.py +0 -0
  699. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/infrastructure/tracing/context.py +0 -0
  700. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/infrastructure/tracing/decorators.py +0 -0
  701. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/infrastructure/tracing/exporters.py +0 -0
  702. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/infrastructure/tracing/integrations/__init__.py +0 -0
  703. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/infrastructure/tracing/integrations/database.py +0 -0
  704. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/infrastructure/tracing/integrations/sqlalchemy_instrumentation.py +0 -0
  705. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/infrastructure/tracing/interceptors/__init__.py +0 -0
  706. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/infrastructure/tracing/interceptors/grpc.py +0 -0
  707. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/infrastructure/tracing/interceptors/http.py +0 -0
  708. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/infrastructure/tracing/manager.py +0 -0
  709. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/plugins/__init__.py +0 -0
  710. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/plugins/builtin/__init__.py +0 -0
  711. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/plugins/builtin/monitoring/__init__.py +0 -0
  712. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/plugins/builtin/monitoring/plugin.py +0 -0
  713. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/plugins/builtin/reporting/__init__.py +0 -0
  714. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/plugins/builtin/reporting/allure_plugin.py +0 -0
  715. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/testing/assertions/helper.py +0 -0
  716. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/testing/assertions/json_schema.py +0 -0
  717. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/testing/assertions/matchers.py +0 -0
  718. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/testing/assertions/response.py +0 -0
  719. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/testing/data/builders/__init__.py +0 -0
  720. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/testing/data/builders/base.py +0 -0
  721. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/testing/data/factories/__init__.py +0 -0
  722. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/testing/data/factories/base.py +0 -0
  723. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/testing/data/factories/examples.py +0 -0
  724. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/testing/data/generators/__init__.py +0 -0
  725. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/testing/data/generators/data_generator.py +0 -0
  726. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/testing/data/loaders/__init__.py +0 -0
  727. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/testing/data/loaders/base.py +0 -0
  728. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/testing/data/loaders/csv_loader.py +0 -0
  729. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/testing/data/loaders/json_loader.py +0 -0
  730. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/testing/data/loaders/yaml_loader.py +0 -0
  731. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/testing/data/pipeline/__init__.py +0 -0
  732. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/testing/data/pipeline/_registry.py +0 -0
  733. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/testing/data/pipeline/context.py +0 -0
  734. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/testing/data/pipeline/dataset.py +0 -0
  735. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/testing/data/pipeline/loader.py +0 -0
  736. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/testing/data/pipeline/reporter.py +0 -0
  737. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/testing/data/pipeline/resolver.py +0 -0
  738. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/testing/debugging/__init__.py +0 -0
  739. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/testing/debugging/console.py +0 -0
  740. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/testing/decorators/__init__.py +0 -0
  741. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/testing/decorators/actions_class.py +0 -0
  742. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/testing/decorators/api_class.py +0 -0
  743. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/testing/decorators/service_client.py +0 -0
  744. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/testing/decorators/ui_client.py +0 -0
  745. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/testing/fixtures/allure.py +0 -0
  746. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/testing/fixtures/auth.py +0 -0
  747. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/testing/fixtures/cleanup.py +0 -0
  748. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/testing/fixtures/debugging.py +0 -0
  749. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/testing/fixtures/http_recorder.py +0 -0
  750. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/testing/fixtures/message_queue.py +0 -0
  751. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/testing/fixtures/metrics.py +0 -0
  752. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/testing/fixtures/monitoring.py +0 -0
  753. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/testing/fixtures/ui.py +0 -0
  754. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/testing/mocking/__init__.py +0 -0
  755. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/testing/mocking/database_mock.py +0 -0
  756. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/testing/mocking/http_mock.py +0 -0
  757. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/testing/mocking/redis_mock.py +0 -0
  758. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/testing/mocking/time_mock.py +0 -0
  759. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/testing/plugins/__init__.py +0 -0
  760. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/testing/plugins/api_autodiscovery.py +0 -0
  761. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/testing/plugins/data_pipeline.py +0 -0
  762. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/testing/plugins/debug.py +0 -0
  763. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/testing/plugins/logging_plugin.py +0 -0
  764. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/testing/plugins/markers.py +0 -0
  765. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/testing/reporting/__init__.py +0 -0
  766. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/testing/reporting/allure/__init__.py +0 -0
  767. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/testing/reporting/allure/helper.py +0 -0
  768. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/src/df_test_framework/testing/reporting/allure/observer.py +0 -0
  769. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/README.md +0 -0
  770. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/bootstrap/__init__.py +0 -0
  771. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/bootstrap/test_bootstrap.py +0 -0
  772. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/bootstrap/test_plugin_middlewares.py +0 -0
  773. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/bootstrap/test_providers.py +0 -0
  774. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/bootstrap/test_runtime.py +0 -0
  775. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/capabilities/__init__.py +0 -0
  776. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/capabilities/clients/graphql/__init__.py +0 -0
  777. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/capabilities/clients/graphql/test_client.py +0 -0
  778. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/capabilities/clients/graphql/test_middleware.py +0 -0
  779. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/capabilities/clients/graphql/test_models.py +0 -0
  780. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/capabilities/clients/graphql/test_query_builder.py +0 -0
  781. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/capabilities/clients/grpc/__init__.py +0 -0
  782. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/capabilities/clients/grpc/test_client.py +0 -0
  783. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/capabilities/clients/grpc/test_middleware.py +0 -0
  784. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/capabilities/clients/grpc/test_models.py +0 -0
  785. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/capabilities/clients/http/auth/signature/test_strategies.py +0 -0
  786. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/capabilities/clients/http/core/__init__.py +0 -0
  787. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/capabilities/clients/http/core/test_multipart.py +0 -0
  788. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/capabilities/clients/http/core/test_request.py +0 -0
  789. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/capabilities/clients/http/core/test_response.py +0 -0
  790. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/capabilities/clients/http/middleware/__init__.py +0 -0
  791. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/capabilities/clients/http/middleware/test_event_publisher.py +0 -0
  792. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/capabilities/clients/http/middleware/test_factory.py +0 -0
  793. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/capabilities/clients/http/middleware/test_logging.py +0 -0
  794. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/capabilities/clients/http/rest/test_async_base_api.py +0 -0
  795. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/capabilities/clients/http/rest/test_async_client.py +0 -0
  796. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/capabilities/clients/http/rest/test_auth_control.py +0 -0
  797. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/capabilities/clients/http/rest/test_base_api.py +0 -0
  798. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/capabilities/clients/http/rest/test_factory.py +0 -0
  799. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/capabilities/clients/http/rest/test_http_client.py +0 -0
  800. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/capabilities/databases/redis/test_async_redis.py +0 -0
  801. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/capabilities/databases/redis/test_redis_client.py +0 -0
  802. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/capabilities/databases/test_async_database.py +0 -0
  803. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/capabilities/databases/test_database.py +0 -0
  804. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/capabilities/databases/test_database_factory.py +0 -0
  805. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/capabilities/databases/test_query_builder.py +0 -0
  806. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/capabilities/databases/test_repositories.py +0 -0
  807. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/capabilities/databases/test_uow.py +0 -0
  808. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/capabilities/drivers/web/playwright/test_async_browser_pool.py +0 -0
  809. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/capabilities/drivers/web/test_async_ui.py +0 -0
  810. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/capabilities/drivers/web/test_modern_ui.py +0 -0
  811. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/capabilities/messengers/__init__.py +0 -0
  812. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/capabilities/messengers/test_kafka_client.py +0 -0
  813. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/capabilities/messengers/test_rabbitmq_client.py +0 -0
  814. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/capabilities/messengers/test_rocketmq_client.py +0 -0
  815. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/capabilities/storages/__init__.py +0 -0
  816. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/capabilities/storages/test_local_file.py +0 -0
  817. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/capabilities/storages/test_oss.py +0 -0
  818. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/capabilities/storages/test_s3.py +0 -0
  819. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/cli/__init__.py +0 -0
  820. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/cli/test_env_cmd.py +0 -0
  821. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/cli/test_generate_cmd.py +0 -0
  822. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/cli/test_init_cmd.py +0 -0
  823. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/cli/test_interactive_cmd.py +0 -0
  824. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/cli/test_main.py +0 -0
  825. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/cli/test_utils.py +0 -0
  826. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/conftest.py +0 -0
  827. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/core/protocols/test_client.py +0 -0
  828. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/core/protocols/test_event.py +0 -0
  829. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/core/protocols/test_plugin.py +0 -0
  830. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/core/protocols/test_repository.py +0 -0
  831. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/core/protocols/test_telemetry.py +0 -0
  832. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/core/test_context.py +0 -0
  833. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/core/test_decorators.py +0 -0
  834. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/core/test_event_types.py +0 -0
  835. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/core/test_events.py +0 -0
  836. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/core/test_middleware.py +0 -0
  837. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/core/test_types.py +0 -0
  838. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/infrastructure/__init__.py +0 -0
  839. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/infrastructure/config/test_loader.py +0 -0
  840. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/infrastructure/config/test_middleware_schema.py +0 -0
  841. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/infrastructure/context/test_carriers.py +0 -0
  842. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/infrastructure/events/__init__.py +0 -0
  843. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/infrastructure/events/test_bus.py +0 -0
  844. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/infrastructure/metrics/__init__.py +0 -0
  845. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/infrastructure/metrics/test_decorators.py +0 -0
  846. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/infrastructure/metrics/test_manager.py +0 -0
  847. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/infrastructure/metrics/test_observer.py +0 -0
  848. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/infrastructure/metrics/test_performance.py +0 -0
  849. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/infrastructure/metrics/test_registry.py +0 -0
  850. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/infrastructure/metrics/test_types.py +0 -0
  851. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/infrastructure/plugins/test_manager.py +0 -0
  852. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/infrastructure/resilience/__init__.py +0 -0
  853. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/infrastructure/resilience/test_circuit_breaker.py +0 -0
  854. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/infrastructure/sanitize/__init__.py +0 -0
  855. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/infrastructure/sanitize/test_service.py +0 -0
  856. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/infrastructure/telemetry/__init__.py +0 -0
  857. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/infrastructure/telemetry/test_facade.py +0 -0
  858. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/infrastructure/telemetry/test_noop.py +0 -0
  859. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/infrastructure/test_bootstrap.py +0 -0
  860. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/infrastructure/test_helpers.py +0 -0
  861. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/infrastructure/test_logging.py +0 -0
  862. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/infrastructure/test_pipeline.py +0 -0
  863. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/infrastructure/test_runtime.py +0 -0
  864. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/infrastructure/test_settings.py +0 -0
  865. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/infrastructure/test_sources.py +0 -0
  866. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/infrastructure/tracing/__init__.py +0 -0
  867. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/infrastructure/tracing/test_context.py +0 -0
  868. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/infrastructure/tracing/test_decorators.py +0 -0
  869. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/infrastructure/tracing/test_exporters.py +0 -0
  870. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/infrastructure/tracing/test_integrations.py +0 -0
  871. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/infrastructure/tracing/test_interceptors.py +0 -0
  872. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/infrastructure/tracing/test_manager.py +0 -0
  873. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/integration/__init__.py +0 -0
  874. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/integration/test_config_environment.py +0 -0
  875. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/integration/test_event_observability.py +0 -0
  876. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/integration/test_factory_assertions.py +0 -0
  877. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/integration/test_middleware_chain.py +0 -0
  878. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/migration/__init__.py +0 -0
  879. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/migration/test_v3_13_to_v3_14_examples.py +0 -0
  880. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/plugins/__init__.py +0 -0
  881. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/plugins/builtin/__init__.py +0 -0
  882. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/plugins/builtin/monitoring/__init__.py +0 -0
  883. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/plugins/builtin/monitoring/test_plugin.py +0 -0
  884. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/test_json_to_model_generator.py +0 -0
  885. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/testing/assertions/__init__.py +0 -0
  886. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/testing/assertions/test_json_schema.py +0 -0
  887. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/testing/assertions/test_matchers.py +0 -0
  888. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/testing/data/__init__.py +0 -0
  889. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/testing/data/pipeline/__init__.py +0 -0
  890. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/testing/data/pipeline/test_pipeline.py +0 -0
  891. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/testing/data/pipeline/test_pipeline_plugin.py +0 -0
  892. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/testing/data/test_builders.py +0 -0
  893. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/testing/data/test_data_generator.py +0 -0
  894. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/testing/data/test_factories.py +0 -0
  895. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/testing/debugging/__init__.py +0 -0
  896. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/testing/debugging/test_console_debug_observer.py +0 -0
  897. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/testing/decorators/__init__.py +0 -0
  898. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/testing/decorators/test_actions_class.py +0 -0
  899. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/testing/decorators/test_api_class.py +0 -0
  900. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/testing/decorators/test_service_client.py +0 -0
  901. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/testing/decorators/test_ui_client.py +0 -0
  902. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/testing/fixtures/__init__.py +0 -0
  903. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/testing/fixtures/test_allure_fixture.py +0 -0
  904. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/testing/fixtures/test_cleanup.py +0 -0
  905. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/testing/fixtures/test_fixtures_debugging.py +0 -0
  906. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/testing/fixtures/test_fixtures_message_queue.py +0 -0
  907. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/testing/fixtures/test_fixtures_monitoring.py +0 -0
  908. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/testing/fixtures/test_http_recorder.py +0 -0
  909. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/testing/fixtures/test_lifecycle_hooks.py +0 -0
  910. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/testing/fixtures/test_monitoring_metrics.py +0 -0
  911. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/testing/fixtures/test_plugin_lifecycle_integration.py +0 -0
  912. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/testing/fixtures/test_ui_fixtures.py +0 -0
  913. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/testing/mocking/__init__.py +0 -0
  914. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/testing/mocking/test_database_mock.py +0 -0
  915. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/testing/mocking/test_http_mock.py +0 -0
  916. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/testing/mocking/test_redis_mock.py +0 -0
  917. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/testing/mocking/test_time_mock.py +0 -0
  918. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/testing/plugins/test_api_autodiscovery.py +0 -0
  919. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/testing/plugins/test_debug_plugin.py +0 -0
  920. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/testing/plugins/test_logging_plugin.py +0 -0
  921. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/testing/plugins/test_markers.py +0 -0
  922. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/testing/reporting/test_allure_observer.py +0 -0
  923. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/testing/test_allure_helper.py +0 -0
  924. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/testing/test_assertions.py +0 -0
  925. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/testing/test_data_loaders.py +0 -0
  926. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/tests/testing/test_factories_presets.py +0 -0
  927. {df_test_framework-4.8.0 → df_test_framework-4.9.0}/verify_fixes.py +0 -0
@@ -8,8 +8,8 @@ This file provides guidance to Codex (Codex.ai/code) when working with code in t
8
8
 
9
9
  **DF Test Framework** - 现代化 Python 测试自动化框架
10
10
 
11
- - **版本**: v4.8.0
12
- - **更新时间**: 2026-08-10
11
+ - **版本**: v4.9.0
12
+ - **更新时间**: 2026-08-11
13
13
  - **Python**: 3.12+
14
14
  - **核心技术栈**: pytest + httpx + Playwright + Pydantic v2 + SQLAlchemy 2.0 + Pluggy
15
15
  - **架构**: 五层架构 + 横切关注点(能力层驱动设计)
@@ -7,6 +7,106 @@
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
+ ## [4.9.0] - 2026-08-11
11
+
12
+ ### ⚠️ 破坏性变更
13
+
14
+ - **`NamingRegistry.case_match_patterns()` 对不可直接认领的规则改为抛错**。声明了
15
+ `joins_via` 或非 `Lifecycle.CASE` 的规则调用它会 `ValueError`。改用
16
+ `claimable_keys()` 遍历,或先用 `is_directly_claimable()` 判断。
17
+ `NamingRegistry` 在 v4.8.1 才引入,受影响面小,故未升 MAJOR。
18
+
19
+ ### 🐛 修复
20
+
21
+ - **SM2 短私钥导致偶发失败**(`infrastructure/helpers/gmcrypto.py`):`_normalize_private_key`
22
+ 此前只接受恰好 32 字节的裸私钥。私钥本质是大整数,首字节为 0 时最短表示只有 31 字节,
23
+ 实测 `gmalg.generate_keypair()` 约 **1/256** 的概率产出(3000 次采样中 8 次)。
24
+ 现对 1~32 字节裸私钥左侧补零,空值与超长仍拒绝。
25
+ - 影响:v4.8.1 起任何自行生成密钥对的调用方都会周期性踩到,且失败与输入无关、难以复现。
26
+ 框架自身的国密测试用 class 级 keypair fixture,一旦踩中整个测试类一起失败。
27
+
28
+ - **`case_match_patterns()` 违背框架自己的契约**(`testing/data/naming.py`):`NamingRule`
29
+ 文档写明声明了 `joins_via` 的字段"只能跟父对象级联删除",该方法却照样返回其宽匹配式,
30
+ 把防误删的责任推给每个调用方。现在直接拒绝,并新增 `is_directly_claimable()`
31
+ 与 `claimable_keys()` 表达这一语义。
32
+ - 判定同时覆盖生命周期:非 `Lifecycle.CASE` 的规则同样不可直接认领。此前 `lifecycle`
33
+ 字段只是摆设 —— 合法的 `BASELINE` 规则会被 `case_match_patterns()` 当作用例级返回,
34
+ 又被 `self_check()` 判成"会命中基准池前缀",自相矛盾。
35
+
36
+ ### ✨ 新增
37
+
38
+ - **`wait_until` / `async_wait_until` 轮询等待**(`testing/assertions/waiting.py`):等异步结果落地的通用封装,
39
+ 超时抛 `WaitTimeoutError`(继承 `AssertionError`,pytest 报成断言失败),消息带最后一次探测值
40
+ 和探测次数。
41
+ - 动机:业务项目手写了 **52 个**形状相同的 `_wait_for_*`,每个都要重复 deadline、循环、间隔、
42
+ 超时报错四件事。写 `time.sleep(5)` 只要一行、写轮询要十行,工具缺位直接导致盲等泛滥 ——
43
+ 某个业务文件里一个 5 秒盲等被用了 7 次,占该文件 44 秒耗时中的 35 秒。
44
+ - `ready` 判定默认为 `bool`,覆盖最常见的"查到行就继续";剩余时间不足一个间隔时按剩余时间睡,
45
+ 不会睡过 `timeout`;探测函数自身抛错立即传播,不会被当成超时吞掉。
46
+ - 参数在入口校验:`timeout` 非负有限、`interval` 正有限。`NaN` 会让比较恒假从而死循环,
47
+ `inf` 让超时形同虚设,负 `interval` 要等到 `time.sleep` 才抛错、报错位置离病因很远。
48
+ `timeout=0` 合法,表示只探测一次。
49
+
50
+ - **`assert_consistently` / `async_assert_consistently`**:否定断言的框架抽象 ——
51
+ 在整个窗口内反复采样,要求条件**始终**成立。用于幂等(重推不产生新流水)、被拒后不落库、
52
+ MQ 重投不重复扣款;这类场景 `wait_until` 帮不上忙(条件一开始就成立,它立刻返回)。
53
+ 比裸 `time.sleep(n)` 强在:能抓到"中途变了又变回来"、一旦破坏立即失败而非等满、
54
+ 报错带第几次采样和当时的值。
55
+
56
+ - **`like_to_regex(pattern, case_sensitive=...)`**:声明从"语义与 MySQL 一致"降级为
57
+ **词法近似**,并支持大小写开关。框架支持 MySQL / MSSQL / PostgreSQL / SQLite 四种方言,
58
+ 而它们的 `LIKE` 并不等价:
59
+ - 大小写——MySQL 与 MSSQL 默认排序规则不敏感、SQLite 对 ASCII 不敏感、PostgreSQL 敏感;
60
+ - 字符类——MSSQL 的 `[abc]` 是字符类,其余三家当普通字符;
61
+ - 转义——`NO_BACKSLASH_ESCAPES` 与显式 `ESCAPE` 会改变转义符。
62
+
63
+ `self_check()` 因此改为按**最宽松口径过近似**(大小写不敏感),并检出模式中含 `[`、`]`
64
+ 这类随方言改变含义的字符。安全检查里误报只是让人收紧模式,漏报会真删数据 ——
65
+ 修复前的实测:模式 `AUTO_CASE_商品_%` 对值 `auto_case_商品_x` 自检判"安全",
66
+ 而 MySQL 默认排序规则下 `DELETE` 会命中。清理 SQL 仍应显式写 `ESCAPE` 并明确大小写语义。
67
+
68
+ - **`cleanup_module` / `cleanup_session` fixture**:`cleanup` 之外新增 module 与 session 作用域,
69
+ 三者构造逻辑同源,只在作用域上不同。
70
+ - 动机:`cleanup` 此前只有 function 级,而 pytest 规则下依赖它的前置 fixture 也只能是 function 级 ——
71
+ 业务项目因此无法让同模块用例共享前置数据,每条用例都要把"供应商→通道→商品→客户"整条链
72
+ 重建一遍。这是框架施加的硬约束,项目层绕不过去。
73
+ - 能否共享的判据是断言锚点:锚在自己的业务单据上可共享;锚在共享对象的总量或状态
74
+ (余额、可用库存、流水条数)上仍须用 function 级 `cleanup`。同一判据也决定用例能否并行。
75
+ - `@pytest.mark.keep_data` 是函数级标记,宽作用域下取不到;`--keep-test-data` 与
76
+ `KEEP_TEST_DATA` 配置照常生效。
77
+
78
+ ## [4.8.1] - 2026-08-11
79
+
80
+ ### ✨ 新增
81
+
82
+ - **测试数据命名注册表 `NamingRegistry`**(`testing/data/naming.py`,从 master_test 项目下沉):
83
+ 把「生成名字」(`template`)、「认领名字」(`match` SQL LIKE 模式)、「字段上限」(`max_length`)
84
+ 绑在同一条 `NamingRule` 里,生成端与兜底清理端读同一份定义,消除两端手抄漂移。
85
+ - `make(key, test_id, suffix)`:未登记的 key 抛 `KeyError`(逼迫新命名先登记),超长抛
86
+ `ValueError`(不静默截断)。
87
+ - `scoped(test_id, label)`:一条用例造多套前置数据时显式附加场景标签。宽字段(`{tid}` 模板)
88
+ 把完整标签放在语义位(域标签之后、test_id 之前);长度吃紧字段(`{sid}` 模板)让标签参与
89
+ 短 id 哈希保证唯一,不占名字文本。标签限定 `[A-Za-z0-9_-]`,拒绝嵌套。
90
+ - `self_check(sample_test_id, protected_names=...)`:自洽校验(模板产出必能被自己的模式认领、
91
+ 任何模式不许命中基准池前缀与保护名单、`joins_via` 指向已登记规则),项目单测一行断言即获持续保护。
92
+ - `short_id()`(哈希短 id)、`like_to_regex()`(MySQL LIKE 语义)、`Lifecycle`
93
+ (`AUTO_BASE` 基准池 / `AUTO_CASE` 用例级前缀约定)一并公开。
94
+ - 规则表由各项目自行登记,框架只提供机制。顶层导出 `NamingRegistry` / `NamingRule`。
95
+
96
+ ### 🔧 修复
97
+
98
+ - **清理 pytest 10 将移除的弃用 API**(pytest 9.1 起告警):
99
+ - `testing/fixtures/core.py`、`testing/plugins/env_plugin.py` 不再用 `config.inicfg` 做
100
+ 「ini 项是否已注册」的守卫,改为直接 `config.getini()` 并捕获 `ValueError`。两个 ini 项
101
+ (`df_settings_class` / `df_plugins`)注册时默认值均为空串,`or` 优先级链行为不变。
102
+ - `core.py` 抽出私有 helper `_read_ini()`,两处调用点共用。
103
+
104
+ ### 🔧 依赖
105
+
106
+ - 开发依赖整体升级:`pytest` 9.0.3 → 9.1.1、`ruff` 0.15.14 → 0.16.2、`redis` 7.4.0 → 8.1.0、
107
+ `sqlalchemy` 2.0.50 → 2.0.51、`structlog` 25.5.0 → 26.1.0 等。
108
+ - `openapi-spec-validator` 仍锁定 0.7.2:上游 `prance[osv]` 约束为 `~=0.7.1`,无法升至 0.9.x。
109
+
10
110
  ## [4.8.0] - 2026-08-10
11
111
 
12
112
  ### ✨ 新增
@@ -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.8.0
12
- - **更新时间**: 2026-08-10
11
+ - **版本**: v4.9.0
12
+ - **更新时间**: 2026-08-11
13
13
  - **Python**: 3.12+
14
14
  - **核心技术栈**: pytest + httpx + Playwright + Pydantic v2 + SQLAlchemy 2.0 + Pluggy
15
15
  - **架构**: 五层架构 + 横切关注点(能力层驱动设计)
@@ -1,6 +1,6 @@
1
- Metadata-Version: 2.4
1
+ Metadata-Version: 2.5
2
2
  Name: df-test-framework
3
- Version: 4.8.0
3
+ Version: 4.9.0
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
@@ -1,7 +1,7 @@
1
1
  # DF Test Framework
2
2
 
3
- > **版本**: v4.8.0
4
- > **更新时间**: 2026-08-10
3
+ > **版本**: v4.9.0
4
+ > **更新时间**: 2026-08-11
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/)
@@ -1,8 +1,8 @@
1
1
  # 核心文档导航 - 真正有价值的文档清单
2
2
 
3
3
  > **目标读者**: 测试开发人员、框架使用者、新团队成员
4
- > **更新日期**: 2026-08-10
5
- > **框架版本**: v4.8.0
4
+ > **更新日期**: 2026-08-11
5
+ > **框架版本**: v4.9.0
6
6
 
7
7
  ---
8
8
 
@@ -1,6 +1,6 @@
1
1
  # DF Test Framework 文档中心
2
2
 
3
- > 版本:v4.8.0 · 最近更新:2026-08-10
3
+ > 版本:v4.9.0 · 最近更新:2026-08-11
4
4
  > 现代化 Python 测试自动化框架的官方知识库。
5
5
 
6
6
  ---
@@ -1,10 +1,10 @@
1
1
  # 断言系统使用指南
2
2
 
3
- > **版本**: v3.38.0 | **更新**: 2025-12-24
3
+ > **版本**: v4.9.0 | **更新**: 2026-08-11
4
4
  > **引入版本**: v3.30.0
5
5
  > **模块**: `df_test_framework.testing.assertions`
6
6
 
7
- 断言系统提供丰富的断言辅助方法,简化 API 测试代码。包含 HTTP 响应断言、JSON Schema 验证、自定义匹配器三大功能模块。
7
+ 断言系统提供丰富的断言辅助方法,简化 API 测试代码。包含 HTTP 响应断言、JSON Schema 验证、自定义匹配器、异步结果等待四大功能模块。
8
8
 
9
9
  ---
10
10
 
@@ -437,6 +437,71 @@ matcher.assert_matches(50, message="年龄必须在 1-100 之间")
437
437
 
438
438
  ---
439
439
 
440
+ ## 异步结果的等待(v4.9.0)
441
+
442
+ 测真实系统时,写库、发 MQ、跑定时任务都是异步完成的,断言前必须等。
443
+ 盲等固定秒数既慢又不可靠 —— 等短了偶发失败,等长了整条回归被拖垮。
444
+
445
+ ```python
446
+ from df_test_framework import wait_until
447
+
448
+ # 等到查得到行(默认判定为「返回值为真」)
449
+ order = wait_until(
450
+ lambda: db.query_one("SELECT * FROM orders WHERE no = :n", {"n": no}),
451
+ message=f"订单 {no} 未落库",
452
+ )
453
+
454
+ # 自定义判定
455
+ wait_until(
456
+ lambda: count_trades(order_no),
457
+ lambda n: n >= 2,
458
+ timeout=20,
459
+ interval=0.5,
460
+ message="调价流水未落齐",
461
+ )
462
+ ```
463
+
464
+ 超时抛 `WaitTimeoutError`(继承 `AssertionError`,pytest 报成断言失败),
465
+ 消息里带**最后一次探测到的值**和探测次数 —— 排查时最需要的就是它:
466
+
467
+ ```
468
+ 调价流水未落齐(超时 20s,实际等待 20.0s,探测 40 次,最后一次结果:1)
469
+ ```
470
+
471
+ 异步探测用 `async_wait_until`,签名一致。
472
+
473
+ ### 否定断言用 `assert_consistently`
474
+
475
+ `wait_until` 只用于等「应该发生的事」。断言「不该发生」——幂等、被拒后不落库、
476
+ MQ 重投不重复扣款——轮询帮不上忙:条件一开始就成立,它立刻返回,等于没等。
477
+ 这类场景要观察完整窗口:
478
+
479
+ ```python
480
+ from df_test_framework import assert_consistently
481
+
482
+ assert_consistently(
483
+ lambda: count_trades(order_no),
484
+ lambda n: n == 1,
485
+ duration=3,
486
+ interval=0.5,
487
+ message="重复回调不该产生第二条流水",
488
+ )
489
+ ```
490
+
491
+ 比裸 `time.sleep(3)` 强在三点:窗口内多次采样提高「中途变过又变回来」被发现的
492
+ 概率;一旦发现破坏立即失败而不必等满;报错带第几次采样和当时的值。
493
+
494
+ ```
495
+ 重复回调不该产生第二条流水(窗口 3s,第 1.5s 的第 4 次采样已不满足,当时结果:2)
496
+ ```
497
+
498
+ 采样是离散的:短于 `interval` 的瞬时变化仍可能错过,缩小 `interval` 只提高概率、
499
+ 不提供保证。要确定性捕获中间态得靠事件或变更日志,不是轮询。
500
+
501
+ 异步版本是 `async_assert_consistently`。
502
+
503
+ ---
504
+
440
505
  ## 实战示例
441
506
 
442
507
  ### 完整的 API 测试
@@ -146,6 +146,86 @@ def cleanup_orders(request, database):
146
146
 
147
147
  ---
148
148
 
149
+ ### 2.6 NamingRegistry - 命名注册表(v4.8.1)
150
+
151
+ 清理有两条腿:用例正常结束时 cleanup fixture 按登记的 ID 清;用例崩溃/被中断时,
152
+ 兜底脚本只能按**名字模式**认领残留。命名注册表让生成端与认领端读同一份定义,
153
+ 消除两端各写一份手抄定义导致的漂移。
154
+
155
+ ```python
156
+ from df_test_framework.testing.data import NamingRegistry, NamingRule, scoped
157
+
158
+ REGISTRY = NamingRegistry([
159
+ NamingRule(
160
+ key="supplier_name",
161
+ table="supplier",
162
+ column="SUPPLIER_NAME",
163
+ template="AUTO_CASE_供应商_{tid}", # {tid} 完整 test_id,{sid} 8 位哈希
164
+ match="AUTO_CASE_供应商_%", # 兜底清理按此认领,必须锚定
165
+ max_length=100, # 超长直接报错,不静默截断
166
+ ),
167
+ ])
168
+
169
+ # 生成
170
+ name = REGISTRY.make("supplier_name", test_id)
171
+
172
+ # 一条用例造多套前置数据时,用 scoped 附加场景标签(完整保留语义)
173
+ name = REGISTRY.make("supplier_name", scoped(test_id, "np_agree"))
174
+ # → AUTO_CASE_供应商_np_agree_ORD2026…(宽字段:标签在语义位)
175
+ # {sid} 模板的短字段则让标签参与哈希,不占文本
176
+
177
+ # 清理脚本取认领模式
178
+ patterns = REGISTRY.case_match_patterns("supplier_name")
179
+ ```
180
+
181
+ 项目单测一行断言即可持续校验「模板产出必能被自己认领、绝不误伤保护名单」:
182
+
183
+ ```python
184
+ def test_naming_registry_is_consistent():
185
+ assert REGISTRY.self_check(
186
+ "ORD202608071318033693331512",
187
+ protected_names=("基准池样本", "同事手工数据样本"),
188
+ ) == []
189
+ ```
190
+
191
+ 生命周期约定:`AUTO_BASE`(基准池,兜底清理永不触碰)/ `AUTO_CASE`(用例级,
192
+ 随用随清)。规则表由各项目自行登记,框架只提供机制。
193
+
194
+ ### 2.7 cleanup 的三种作用域(v4.9.0)
195
+
196
+ ```python
197
+ cleanup # function 级,每条用例结束就清(默认)
198
+ cleanup_module # module 级,整个模块跑完才清
199
+ cleanup_session # session 级,整轮跑完才清
200
+ ```
201
+
202
+ 作用域决定**前置数据能不能跨用例共享**:前置 fixture 一旦依赖 function 级的
203
+ `cleanup`,pytest 规则下它自己也只能是 function 级,于是每条用例都要把前置链
204
+ 重建一遍。改依赖 `cleanup_module` 后才能这样写:
205
+
206
+ ```python
207
+ @pytest.fixture(scope="module")
208
+ def shared_supplier(supplier_api, cleanup_module):
209
+ """整个模块共用一个供应商,不再每条用例重建。"""
210
+ return create_supplier(supplier_api, cleanup_module)
211
+ ```
212
+
213
+ **什么时候不能共享**:判据是断言锚在什么上。
214
+
215
+ | 断言锚点 | 能否共享 |
216
+ |---------|---------|
217
+ | 自己的业务单据(订单号、批次号) | ✅ 可共享 |
218
+ | 共享对象的总量或状态(余额、可用库存、某客户的流水条数) | ❌ 用 `cleanup` |
219
+ | 被测对象就是「创建过程」本身 | ❌ 用 `cleanup` |
220
+ | 要消耗或改变共享资源 | ❌ 用 `cleanup` |
221
+
222
+ 这条判据同时决定了用例能不能并行:锚在自己单据上的,共享和并发都安全。
223
+
224
+ 注意 `@pytest.mark.keep_data` 是函数级标记,宽作用域下取不到;
225
+ `--keep-test-data` 与 `KEEP_TEST_DATA` 配置照常生效。
226
+
227
+ ---
228
+
149
229
  ## 3. 项目实现示例
150
230
 
151
231
  ### 3.1 简单列表模式
@@ -1,16 +1,23 @@
1
1
  # Release Notes 发布说明索引
2
2
 
3
- > 当前版本:**v4.8.0** · 最近更新:2026-08-10
3
+ > 当前版本:**v4.9.0** · 最近更新:2026-08-11
4
4
 
5
5
  完整变更摘要见 [CHANGELOG.md](../../CHANGELOG.md)。
6
6
 
7
7
  ---
8
8
 
9
- ## v4.8.x(当前系列)
9
+ ## v4.9.x(当前系列)
10
10
 
11
11
  | 版本 | 发布日期 | 核心特性 |
12
12
  |------|----------|----------|
13
- | **[v4.8.0](v4.8.0.md)** ⭐ 当前 | 2026-08-10 | 国密 SM2/SM3/SM4 + 签名模块两层拆分(`build_sign_source` / `digest_sign`)|
13
+ | **[v4.9.0](v4.9.0.md)** ⭐ 当前 | 2026-08-11 | 轮询等待与观察窗口断言、cleanup 作用域扩展、命名认领契约落地、SM2 短私钥修复 |
14
+
15
+ ## v4.8.x
16
+
17
+ | 版本 | 发布日期 | 核心特性 |
18
+ |------|----------|----------|
19
+ | [v4.8.1](v4.8.1.md) | 2026-08-11 | 测试数据命名注册表 `NamingRegistry` + pytest 10 弃用 API 清理 |
20
+ | [v4.8.0](v4.8.0.md) | 2026-08-10 | 国密 SM2/SM3/SM4 + 签名模块两层拆分(`build_sign_source` / `digest_sign`)|
14
21
 
15
22
  ## v4.7.x
16
23
 
@@ -0,0 +1,136 @@
1
+ # v4.8.1 - 测试数据命名注册表 NamingRegistry + pytest 10 弃用 API 清理
2
+
3
+ **发布日期**: 2026-08-11
4
+
5
+ ## 概述
6
+
7
+ 本版本两件事:
8
+
9
+ - **`NamingRegistry`**:把测试数据的「怎么生成名字」和「兜底清理怎么认领这个名字」绑进同一份
10
+ 定义。这套东西在 master_test 项目里已经跑了一段时间,本次下沉到框架。
11
+ - **pytest 10 弃用 API 清理**:pytest 9.1 开始对 `config.inicfg` 告警,框架内两处用法已改掉。
12
+
13
+ ---
14
+
15
+ ## 新增
16
+
17
+ ### 测试数据命名注册表 `NamingRegistry`
18
+
19
+ **要解决的问题**:共享测试环境里,用例造的数据得能被兜底脚本清掉,靠的是名字前缀。
20
+ 但「生成名字」写在 fixture 里、「认领名字」写在清理脚本的 SQL LIKE 里,两边各抄一份。
21
+ 改了一边忘了另一边,结果是数据悄悄堆积 —— 而且没有任何报错,直到某天环境被撑爆才发现。
22
+
23
+ `NamingRule` 把生成模板、认领模式、字段上限绑在一起,两端读同一份定义:
24
+
25
+ ```python
26
+ from df_test_framework import NamingRegistry, NamingRule
27
+ from df_test_framework.testing.data.naming import Lifecycle
28
+
29
+ REGISTRY = NamingRegistry([
30
+ NamingRule(
31
+ key="supplier_name",
32
+ table="supplier", column="name",
33
+ template="AUTO_CASE_供应商_{tid}", # 生成
34
+ match="AUTO_CASE\\_供应商\\_%", # 认领(SQL LIKE)
35
+ max_length=64,
36
+ lifecycle=Lifecycle.CASE,
37
+ ),
38
+ NamingRule(
39
+ key="login_name",
40
+ table="sys_user", column="login_name",
41
+ template="ac_{sid}", # varchar(30),塞不下可辨识前缀
42
+ match="ac\\_%",
43
+ max_length=30,
44
+ joins_via="supplier_name", # 认领不了,跟着父对象级联删
45
+ ),
46
+ ])
47
+ ```
48
+
49
+ **生成**:
50
+
51
+ ```python
52
+ REGISTRY.make("supplier_name", test_id) # AUTO_CASE_供应商_t20260811_a1b2
53
+ REGISTRY.make("supplier_name", test_id, "电子面单") # 追加业务标签,计入长度校验
54
+ ```
55
+
56
+ `make()` 有两个刻意的「不宽容」设计:
57
+
58
+ | 情况 | 行为 | 为什么 |
59
+ |------|------|--------|
60
+ | key 未登记 | 抛 `KeyError` | 新命名必须先登记,否则它天然逃出清理覆盖 |
61
+ | 结果超长 | 抛 `ValueError` | 静默截断会把可辨识前缀切掉,认领模式再也匹配不上 |
62
+
63
+ **一条用例造多套数据**时用 `scoped()` 附加场景标签:
64
+
65
+ ```python
66
+ from df_test_framework.testing.data.naming import scoped
67
+
68
+ REGISTRY.make("supplier_name", scoped(test_id, "sender"))
69
+ REGISTRY.make("supplier_name", scoped(test_id, "receiver"))
70
+ ```
71
+
72
+ 标签的去向按模板分流 —— `{tid}` 宽字段把完整标签放在语义位(域标签之后、test_id 之前),
73
+ 这样展示端截断只会吃掉没信息量的 test_id 尾部;`{sid}` 长度吃紧字段则让标签参与短 id 哈希,
74
+ 保证唯一但不占名字文本。
75
+
76
+ **自洽校验**:项目单测一行断言,持续防止规则表自己长歪:
77
+
78
+ ```python
79
+ def test_naming_registry_self_consistent():
80
+ assert REGISTRY.self_check(SAMPLE_TEST_ID, protected_names=PROTECTED) == []
81
+ ```
82
+
83
+ 校验三件事:模板产出必须能被自己的 `match` 认领;任何模式都不许命中基准池前缀与保护名单
84
+ (否则兜底脚本会删掉不属于它的数据);`joins_via` 必须指向已登记的规则。
85
+
86
+ **生命周期**:`Lifecycle.BASELINE`(`AUTO_BASE`,基准池,跨用例复用,兜底清理永不触碰)与
87
+ `Lifecycle.CASE`(`AUTO_CASE`,用例级,随用随清)。枚举值即推荐前缀。
88
+
89
+ 框架只提供机制,**规则表由各项目自行登记**。`NamingRegistry` / `NamingRule` 从包顶层导入;
90
+ `Lifecycle`、`scoped()`、`short_id()`(哈希短 id)、`like_to_regex()`(按 MySQL 语义把 LIKE
91
+ 翻成正则,清理脚本可在 Python 侧预演匹配范围)从 `df_test_framework.testing.data.naming` 导入。
92
+
93
+ ---
94
+
95
+ ## 修复
96
+
97
+ ### pytest 10 弃用 API 清理
98
+
99
+ pytest 9.1 起,`config.inicfg` 会触发 `PytestRemovedIn10Warning`。框架内两处用它来做
100
+ 「这个 ini 项注册了吗」的守卫:
101
+
102
+ - `testing/fixtures/core.py`
103
+ - `testing/plugins/env_plugin.py`
104
+
105
+ 改为直接调 `config.getini()` 并捕获 `ValueError`。**行为完全等价** —— `df_settings_class`
106
+ 与 `df_plugins` 注册时默认值均为空串,是 falsy,CLI > ini > 环境变量 > 默认的优先级链不变。
107
+ `core.py` 顺带抽出私有 helper `_read_ini()` 供两个调用点共用。
108
+
109
+ 对使用方无影响,无需改动项目代码。
110
+
111
+ ---
112
+
113
+ ## 依赖
114
+
115
+ 开发依赖整体升级,其中值得注意的:
116
+
117
+ | 包 | 变化 |
118
+ |---|---|
119
+ | `pytest` | 9.0.3 → 9.1.1 |
120
+ | `ruff` | 0.15.14 → 0.16.2 |
121
+ | `redis` | 7.4.0 → 8.1.0 |
122
+ | `sqlalchemy` | 2.0.50 → 2.0.51 |
123
+ | `structlog` | 25.5.0 → 26.1.0 |
124
+
125
+ `openapi-spec-validator` 仍锁在 0.7.2(最新为 0.9.0):上游 `prance[osv]` 的约束是
126
+ `~=0.7.1`,锁死 0.7.x。等 prance 放宽后才能跟进。
127
+
128
+ ---
129
+
130
+ ## 升级
131
+
132
+ ```bash
133
+ pip install --upgrade df-test-framework==4.8.1
134
+ ```
135
+
136
+ 无破坏性变更,直接升级即可。