pyplaykit 1.30.1__tar.gz → 1.30.2__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 (222) hide show
  1. {pyplaykit-1.30.1 → pyplaykit-1.30.2}/CHANGELOG.md +8 -0
  2. {pyplaykit-1.30.1/pyplaykit.egg-info → pyplaykit-1.30.2}/PKG-INFO +1 -1
  3. {pyplaykit-1.30.1 → pyplaykit-1.30.2}/pyplaykit/cli.py +81 -0
  4. {pyplaykit-1.30.1 → pyplaykit-1.30.2/pyplaykit.egg-info}/PKG-INFO +1 -1
  5. {pyplaykit-1.30.1 → pyplaykit-1.30.2}/pyplaykit.egg-info/SOURCES.txt +0 -3
  6. {pyplaykit-1.30.1 → pyplaykit-1.30.2}/pyproject.toml +1 -1
  7. pyplaykit-1.30.1/pyplaykit/config/projects/customs_modernization.yaml +0 -78
  8. pyplaykit-1.30.1/pyplaykit/config/projects/dispatcho.yaml +0 -71
  9. pyplaykit-1.30.1/pyplaykit/config/projects/timelyquote.yaml +0 -66
  10. {pyplaykit-1.30.1 → pyplaykit-1.30.2}/.github/copilot-instructions.md +0 -0
  11. {pyplaykit-1.30.1 → pyplaykit-1.30.2}/.github/prompts/review-execution-plan-and-implement-next-task.prompt.md +0 -0
  12. {pyplaykit-1.30.1 → pyplaykit-1.30.2}/.github/prompts/run-unit-tests-and-coverage.prompt.md +0 -0
  13. {pyplaykit-1.30.1 → pyplaykit-1.30.2}/.github/prompts/security-audit-and-consolidated-report.prompt.md +0 -0
  14. {pyplaykit-1.30.1 → pyplaykit-1.30.2}/CHOOSE_YOUR_STRUCTURE.md +0 -0
  15. {pyplaykit-1.30.1 → pyplaykit-1.30.2}/CLAUDE.md +0 -0
  16. {pyplaykit-1.30.1 → pyplaykit-1.30.2}/COLUMN_MAPPING_AND_IGNORE_FIELDS_GUIDE.md +0 -0
  17. {pyplaykit-1.30.1 → pyplaykit-1.30.2}/COMMANDS_FOR_YOUR_PROJECTS.md +0 -0
  18. {pyplaykit-1.30.1 → pyplaykit-1.30.2}/COMMIT_SUMMARY.md +0 -0
  19. {pyplaykit-1.30.1 → pyplaykit-1.30.2}/CONTRIBUTING.md +0 -0
  20. {pyplaykit-1.30.1 → pyplaykit-1.30.2}/CORRECTED_PROJECT_NAMES.md +0 -0
  21. {pyplaykit-1.30.1 → pyplaykit-1.30.2}/DATABASE_IMPLEMENTATION_SUMMARY.md +0 -0
  22. {pyplaykit-1.30.1 → pyplaykit-1.30.2}/DELIVERABLES_SUMMARY.md +0 -0
  23. {pyplaykit-1.30.1 → pyplaykit-1.30.2}/ENTERPRISE_TEST_STRUCTURE.md +0 -0
  24. {pyplaykit-1.30.1 → pyplaykit-1.30.2}/FINAL_PROJECT_SETUP.md +0 -0
  25. {pyplaykit-1.30.1 → pyplaykit-1.30.2}/GAP_TRACKER.md +0 -0
  26. {pyplaykit-1.30.1 → pyplaykit-1.30.2}/HOW_TO_ACCESS_DOCS.md +0 -0
  27. {pyplaykit-1.30.1 → pyplaykit-1.30.2}/INIT_COMMAND_EXAMPLES.md +0 -0
  28. {pyplaykit-1.30.1 → pyplaykit-1.30.2}/KEY_BASED_MATCHING_SOLUTION.md +0 -0
  29. {pyplaykit-1.30.1 → pyplaykit-1.30.2}/MANIFEST.in +0 -0
  30. {pyplaykit-1.30.1 → pyplaykit-1.30.2}/MIGRATION_COMPLETE.md +0 -0
  31. {pyplaykit-1.30.1 → pyplaykit-1.30.2}/MIGRATION_PLAN.md +0 -0
  32. {pyplaykit-1.30.1 → pyplaykit-1.30.2}/PIP_INSTALL_GUIDE.md +0 -0
  33. {pyplaykit-1.30.1 → pyplaykit-1.30.2}/PYPLAYKIT_CLIENT_OVERVIEW.md +0 -0
  34. {pyplaykit-1.30.1 → pyplaykit-1.30.2}/QUICK_DB_REFERENCE.md +0 -0
  35. {pyplaykit-1.30.1 → pyplaykit-1.30.2}/QUICK_REFERENCE_COMPARISON_FEATURES.md +0 -0
  36. {pyplaykit-1.30.1 → pyplaykit-1.30.2}/QUICK_START_QE.md +0 -0
  37. {pyplaykit-1.30.1 → pyplaykit-1.30.2}/README.md +0 -0
  38. {pyplaykit-1.30.1 → pyplaykit-1.30.2}/STRUCTURE_COMPARISON.md +0 -0
  39. {pyplaykit-1.30.1 → pyplaykit-1.30.2}/TEST_LOCATION_CHEATSHEET.md +0 -0
  40. {pyplaykit-1.30.1 → pyplaykit-1.30.2}/VISUAL_COMPARISON.md +0 -0
  41. {pyplaykit-1.30.1 → pyplaykit-1.30.2}/WINDOWS_INSTALL_GUIDE.md +0 -0
  42. {pyplaykit-1.30.1 → pyplaykit-1.30.2}/YOUR_PROJECTS_IMPLEMENTATION_GUIDE.md +0 -0
  43. {pyplaykit-1.30.1 → pyplaykit-1.30.2}/YOUR_SETUP_SUMMARY.md +0 -0
  44. {pyplaykit-1.30.1 → pyplaykit-1.30.2}/bin/README.md +0 -0
  45. {pyplaykit-1.30.1 → pyplaykit-1.30.2}/components/__init__.py +0 -0
  46. {pyplaykit-1.30.1 → pyplaykit-1.30.2}/components/base_component.py +0 -0
  47. {pyplaykit-1.30.1 → pyplaykit-1.30.2}/components/data_table.py +0 -0
  48. {pyplaykit-1.30.1 → pyplaykit-1.30.2}/components/form_field.py +0 -0
  49. {pyplaykit-1.30.1 → pyplaykit-1.30.2}/components/modal.py +0 -0
  50. {pyplaykit-1.30.1 → pyplaykit-1.30.2}/config/config.yaml +0 -0
  51. {pyplaykit-1.30.1 → pyplaykit-1.30.2}/config/data_comparison_profiles.yaml +0 -0
  52. {pyplaykit-1.30.1 → pyplaykit-1.30.2}/config/environments.yaml +0 -0
  53. {pyplaykit-1.30.1 → pyplaykit-1.30.2}/config/projects/customs_modernization.yaml +0 -0
  54. {pyplaykit-1.30.1 → pyplaykit-1.30.2}/config/projects/dispatcho.yaml +0 -0
  55. {pyplaykit-1.30.1 → pyplaykit-1.30.2}/config/projects/timelyquote.yaml +0 -0
  56. {pyplaykit-1.30.1 → pyplaykit-1.30.2}/core/__init__.py +0 -0
  57. {pyplaykit-1.30.1 → pyplaykit-1.30.2}/core/base_page.py +0 -0
  58. {pyplaykit-1.30.1 → pyplaykit-1.30.2}/core/base_test.py +0 -0
  59. {pyplaykit-1.30.1 → pyplaykit-1.30.2}/core/browser_factory.py +0 -0
  60. {pyplaykit-1.30.1 → pyplaykit-1.30.2}/core/playwright_manager.py +0 -0
  61. {pyplaykit-1.30.1 → pyplaykit-1.30.2}/core/quality_gate.py +0 -0
  62. {pyplaykit-1.30.1 → pyplaykit-1.30.2}/demo/README.md +0 -0
  63. {pyplaykit-1.30.1 → pyplaykit-1.30.2}/demo/functional/database/file_comparison/README.md +0 -0
  64. {pyplaykit-1.30.1 → pyplaykit-1.30.2}/demo/functional/database/postgres_src_tgt/README.md +0 -0
  65. {pyplaykit-1.30.1 → pyplaykit-1.30.2}/dist_pkg/__init__.py +0 -0
  66. {pyplaykit-1.30.1 → pyplaykit-1.30.2}/dist_pkg/distribution.py +0 -0
  67. {pyplaykit-1.30.1 → pyplaykit-1.30.2}/docs/API_TESTING_GUIDE.md +0 -0
  68. {pyplaykit-1.30.1 → pyplaykit-1.30.2}/docs/ARCHITECTURE.md +0 -0
  69. {pyplaykit-1.30.1 → pyplaykit-1.30.2}/docs/CI_INTEGRATION.md +0 -0
  70. {pyplaykit-1.30.1 → pyplaykit-1.30.2}/docs/CLI_REFERENCE.md +0 -0
  71. {pyplaykit-1.30.1 → pyplaykit-1.30.2}/docs/COMPETITIVE_ANALYSIS.md +0 -0
  72. {pyplaykit-1.30.1 → pyplaykit-1.30.2}/docs/COVERAGE_IMPROVEMENTS.md +0 -0
  73. {pyplaykit-1.30.1 → pyplaykit-1.30.2}/docs/CUSTOMER_SCENARIOS.md +0 -0
  74. {pyplaykit-1.30.1 → pyplaykit-1.30.2}/docs/DATABASE_SUPPORT.md +0 -0
  75. {pyplaykit-1.30.1 → pyplaykit-1.30.2}/docs/DATA_VALIDATION_GUIDE.md +0 -0
  76. {pyplaykit-1.30.1 → pyplaykit-1.30.2}/docs/DELIVERABLES_INDEX.md +0 -0
  77. {pyplaykit-1.30.1 → pyplaykit-1.30.2}/docs/EXAMPLE_TESTS_SUMMARY.md +0 -0
  78. {pyplaykit-1.30.1 → pyplaykit-1.30.2}/docs/Enterprise-Framework-Assessment-REVISED.md +0 -0
  79. {pyplaykit-1.30.1 → pyplaykit-1.30.2}/docs/Enterprise-Readiness-Assessment.md +0 -0
  80. {pyplaykit-1.30.1 → pyplaykit-1.30.2}/docs/Example-Tests-Guide.md +0 -0
  81. {pyplaykit-1.30.1 → pyplaykit-1.30.2}/docs/Execution-Plan-Backlog-and-Closure-Tracker.md +0 -0
  82. {pyplaykit-1.30.1 → pyplaykit-1.30.2}/docs/FRAMEWORK_CONTRIBUTION_GUIDE.md +0 -0
  83. {pyplaykit-1.30.1 → pyplaykit-1.30.2}/docs/KT/01_ARCHITECTURE.md +0 -0
  84. {pyplaykit-1.30.1 → pyplaykit-1.30.2}/docs/KT/02_DEPLOYMENT_RUNBOOK.md +0 -0
  85. {pyplaykit-1.30.1 → pyplaykit-1.30.2}/docs/KT/03_ACCESS_MATRIX.md +0 -0
  86. {pyplaykit-1.30.1 → pyplaykit-1.30.2}/docs/KT/04_CLIENT_CONTACT_MATRIX.md +0 -0
  87. {pyplaykit-1.30.1 → pyplaykit-1.30.2}/docs/KT/05_OPEN_RISKS_REGISTER.md +0 -0
  88. {pyplaykit-1.30.1 → pyplaykit-1.30.2}/docs/KT/06_PENDING_ENHANCEMENTS.md +0 -0
  89. {pyplaykit-1.30.1 → pyplaykit-1.30.2}/docs/KT/07_PRODUCT_ROADMAP.md +0 -0
  90. {pyplaykit-1.30.1 → pyplaykit-1.30.2}/docs/KT/08_ENVIRONMENT_DETAILS.md +0 -0
  91. {pyplaykit-1.30.1 → pyplaykit-1.30.2}/docs/KT/09_OPERATIONAL_SOPS.md +0 -0
  92. {pyplaykit-1.30.1 → pyplaykit-1.30.2}/docs/KT/10_ESCALATION_MATRIX.md +0 -0
  93. {pyplaykit-1.30.1 → pyplaykit-1.30.2}/docs/KT/11_KT_RECORDINGS_INDEX.md +0 -0
  94. {pyplaykit-1.30.1 → pyplaykit-1.30.2}/docs/KT/12_REVERSE_KT_SIGNOFF.md +0 -0
  95. {pyplaykit-1.30.1 → pyplaykit-1.30.2}/docs/KT/13_LEADERSHIP_SIGNOFF.md +0 -0
  96. {pyplaykit-1.30.1 → pyplaykit-1.30.2}/docs/KT/README.md +0 -0
  97. {pyplaykit-1.30.1 → pyplaykit-1.30.2}/docs/MCP_SERVER_DESIGN.md +0 -0
  98. {pyplaykit-1.30.1 → pyplaykit-1.30.2}/docs/MULTI_DB_VALIDATION_GUIDE.md +0 -0
  99. {pyplaykit-1.30.1 → pyplaykit-1.30.2}/docs/MULTI_PROJECT_STRUCTURE.md +0 -0
  100. {pyplaykit-1.30.1 → pyplaykit-1.30.2}/docs/OBSERVABILITY.md +0 -0
  101. {pyplaykit-1.30.1 → pyplaykit-1.30.2}/docs/PIP_INSTALL_GUIDE.md +0 -0
  102. {pyplaykit-1.30.1 → pyplaykit-1.30.2}/docs/PLUGIN_AUTHORING_GUIDE.md +0 -0
  103. {pyplaykit-1.30.1 → pyplaykit-1.30.2}/docs/PyPlayKit-Framework-Overview.md +0 -0
  104. {pyplaykit-1.30.1 → pyplaykit-1.30.2}/docs/PyPlayKit-Usage-Scenarios.md +0 -0
  105. {pyplaykit-1.30.1 → pyplaykit-1.30.2}/docs/QE_VISUAL_GUIDE.md +0 -0
  106. {pyplaykit-1.30.1 → pyplaykit-1.30.2}/docs/RESILIENCE_GUIDE.md +0 -0
  107. {pyplaykit-1.30.1 → pyplaykit-1.30.2}/docs/RUN_TESTS_QUICK_REFERENCE.md +0 -0
  108. {pyplaykit-1.30.1 → pyplaykit-1.30.2}/docs/SECRETS_AND_GOVERNANCE.md +0 -0
  109. {pyplaykit-1.30.1 → pyplaykit-1.30.2}/docs/TEST_ORGANIZATION.md +0 -0
  110. {pyplaykit-1.30.1 → pyplaykit-1.30.2}/docs/Usage-Scenarios-Feasibility-Analysis.md +0 -0
  111. {pyplaykit-1.30.1 → pyplaykit-1.30.2}/integrations/__init__.py +0 -0
  112. {pyplaykit-1.30.1 → pyplaykit-1.30.2}/integrations/adapters.py +0 -0
  113. {pyplaykit-1.30.1 → pyplaykit-1.30.2}/mcp_server/__init__.py +0 -0
  114. {pyplaykit-1.30.1 → pyplaykit-1.30.2}/mcp_server/_ast_utils.py +0 -0
  115. {pyplaykit-1.30.1 → pyplaykit-1.30.2}/mcp_server/_config_utils.py +0 -0
  116. {pyplaykit-1.30.1 → pyplaykit-1.30.2}/mcp_server/cli.py +0 -0
  117. {pyplaykit-1.30.1 → pyplaykit-1.30.2}/mcp_server/server.py +0 -0
  118. {pyplaykit-1.30.1 → pyplaykit-1.30.2}/mcp_server/tools/__init__.py +0 -0
  119. {pyplaykit-1.30.1 → pyplaykit-1.30.2}/mcp_server/tools/package_discovery.py +0 -0
  120. {pyplaykit-1.30.1 → pyplaykit-1.30.2}/mcp_server/tools/project_introspection.py +0 -0
  121. {pyplaykit-1.30.1 → pyplaykit-1.30.2}/mcp_server/tools/project_state.py +0 -0
  122. {pyplaykit-1.30.1 → pyplaykit-1.30.2}/orchestration/__init__.py +0 -0
  123. {pyplaykit-1.30.1 → pyplaykit-1.30.2}/orchestration/enforcer.py +0 -0
  124. {pyplaykit-1.30.1 → pyplaykit-1.30.2}/orchestration/planner.py +0 -0
  125. {pyplaykit-1.30.1 → pyplaykit-1.30.2}/pages/__init__.py +0 -0
  126. {pyplaykit-1.30.1 → pyplaykit-1.30.2}/pages/dashboard_page.py +0 -0
  127. {pyplaykit-1.30.1 → pyplaykit-1.30.2}/pages/login_page.py +0 -0
  128. {pyplaykit-1.30.1 → pyplaykit-1.30.2}/pages/orangehrm_login_page.py +0 -0
  129. {pyplaykit-1.30.1 → pyplaykit-1.30.2}/pages/saucedemo_inventory_page.py +0 -0
  130. {pyplaykit-1.30.1 → pyplaykit-1.30.2}/pages/saucedemo_login_page.py +0 -0
  131. {pyplaykit-1.30.1 → pyplaykit-1.30.2}/plugins/__init__.py +0 -0
  132. {pyplaykit-1.30.1 → pyplaykit-1.30.2}/plugins/api_plugin.py +0 -0
  133. {pyplaykit-1.30.1 → pyplaykit-1.30.2}/plugins/base.py +0 -0
  134. {pyplaykit-1.30.1 → pyplaykit-1.30.2}/plugins/data_plugin.py +0 -0
  135. {pyplaykit-1.30.1 → pyplaykit-1.30.2}/plugins/manifest.py +0 -0
  136. {pyplaykit-1.30.1 → pyplaykit-1.30.2}/plugins/registry.py +0 -0
  137. {pyplaykit-1.30.1 → pyplaykit-1.30.2}/plugins/security_plugin.py +0 -0
  138. {pyplaykit-1.30.1 → pyplaykit-1.30.2}/pyplaykit/PIP_INSTALL_GUIDE.md +0 -0
  139. {pyplaykit-1.30.1 → pyplaykit-1.30.2}/pyplaykit/README.md +0 -0
  140. {pyplaykit-1.30.1 → pyplaykit-1.30.2}/pyplaykit/__init__.py +0 -0
  141. {pyplaykit-1.30.1 → pyplaykit-1.30.2}/pyplaykit/config/__init__.py +0 -0
  142. {pyplaykit-1.30.1 → pyplaykit-1.30.2}/pyplaykit/config/config.yaml +0 -0
  143. {pyplaykit-1.30.1 → pyplaykit-1.30.2}/pyplaykit/config/environments.yaml +0 -0
  144. {pyplaykit-1.30.1 → pyplaykit-1.30.2}/pyplaykit/plugin.py +0 -0
  145. {pyplaykit-1.30.1 → pyplaykit-1.30.2}/pyplaykit/show_docs.py +0 -0
  146. {pyplaykit-1.30.1 → pyplaykit-1.30.2}/pyplaykit.egg-info/dependency_links.txt +0 -0
  147. {pyplaykit-1.30.1 → pyplaykit-1.30.2}/pyplaykit.egg-info/entry_points.txt +0 -0
  148. {pyplaykit-1.30.1 → pyplaykit-1.30.2}/pyplaykit.egg-info/requires.txt +0 -0
  149. {pyplaykit-1.30.1 → pyplaykit-1.30.2}/pyplaykit.egg-info/top_level.txt +0 -0
  150. {pyplaykit-1.30.1 → pyplaykit-1.30.2}/resilience/__init__.py +0 -0
  151. {pyplaykit-1.30.1 → pyplaykit-1.30.2}/resilience/locator_recovery.py +0 -0
  152. {pyplaykit-1.30.1 → pyplaykit-1.30.2}/setup.cfg +0 -0
  153. {pyplaykit-1.30.1 → pyplaykit-1.30.2}/test_data/api/ecom/auth_payloads.json +0 -0
  154. {pyplaykit-1.30.1 → pyplaykit-1.30.2}/test_data/api/ecom/product_payloads.json +0 -0
  155. {pyplaykit-1.30.1 → pyplaykit-1.30.2}/test_data/api_test_data.json +0 -0
  156. {pyplaykit-1.30.1 → pyplaykit-1.30.2}/test_data/data_validation_test_data.json +0 -0
  157. {pyplaykit-1.30.1 → pyplaykit-1.30.2}/test_data/login_test_data.json +0 -0
  158. {pyplaykit-1.30.1 → pyplaykit-1.30.2}/test_data/orangehrm_login_data.json +0 -0
  159. {pyplaykit-1.30.1 → pyplaykit-1.30.2}/test_data/pacts/README.md +0 -0
  160. {pyplaykit-1.30.1 → pyplaykit-1.30.2}/test_data/ui_test_data.json +0 -0
  161. {pyplaykit-1.30.1 → pyplaykit-1.30.2}/tests/projects/README.md +0 -0
  162. {pyplaykit-1.30.1 → pyplaykit-1.30.2}/tests/projects/customs_modernization/README.md +0 -0
  163. {pyplaykit-1.30.1 → pyplaykit-1.30.2}/tests/projects/demo/functional/README.md +0 -0
  164. {pyplaykit-1.30.1 → pyplaykit-1.30.2}/tests/projects/demo/functional/api/README.md +0 -0
  165. {pyplaykit-1.30.1 → pyplaykit-1.30.2}/tests/projects/demo/functional/database/README.md +0 -0
  166. {pyplaykit-1.30.1 → pyplaykit-1.30.2}/tests/projects/demo/functional/ui/README.md +0 -0
  167. {pyplaykit-1.30.1 → pyplaykit-1.30.2}/tests/projects/demo/integration/README.md +0 -0
  168. {pyplaykit-1.30.1 → pyplaykit-1.30.2}/tests/projects/dispatcho/README.md +0 -0
  169. {pyplaykit-1.30.1 → pyplaykit-1.30.2}/tests/projects/timelyquote/README.md +0 -0
  170. {pyplaykit-1.30.1 → pyplaykit-1.30.2}/utils/__init__.py +0 -0
  171. {pyplaykit-1.30.1 → pyplaykit-1.30.2}/utils/api_client.py +0 -0
  172. {pyplaykit-1.30.1 → pyplaykit-1.30.2}/utils/api_test_helper.py +0 -0
  173. {pyplaykit-1.30.1 → pyplaykit-1.30.2}/utils/assertion_helper.py +0 -0
  174. {pyplaykit-1.30.1 → pyplaykit-1.30.2}/utils/auth_manager.py +0 -0
  175. {pyplaykit-1.30.1 → pyplaykit-1.30.2}/utils/comparison_config_loader.py +0 -0
  176. {pyplaykit-1.30.1 → pyplaykit-1.30.2}/utils/contract/__init__.py +0 -0
  177. {pyplaykit-1.30.1 → pyplaykit-1.30.2}/utils/contract/pact_consumer.py +0 -0
  178. {pyplaykit-1.30.1 → pyplaykit-1.30.2}/utils/dashboard.py +0 -0
  179. {pyplaykit-1.30.1 → pyplaykit-1.30.2}/utils/data_comparison_report.py +0 -0
  180. {pyplaykit-1.30.1 → pyplaykit-1.30.2}/utils/data_comparison_utils.py +0 -0
  181. {pyplaykit-1.30.1 → pyplaykit-1.30.2}/utils/data_loader.py +0 -0
  182. {pyplaykit-1.30.1 → pyplaykit-1.30.2}/utils/data_source.py +0 -0
  183. {pyplaykit-1.30.1 → pyplaykit-1.30.2}/utils/data_validator.py +0 -0
  184. {pyplaykit-1.30.1 → pyplaykit-1.30.2}/utils/database_clients.py +0 -0
  185. {pyplaykit-1.30.1 → pyplaykit-1.30.2}/utils/db_client.py +0 -0
  186. {pyplaykit-1.30.1 → pyplaykit-1.30.2}/utils/db_drivers/__init__.py +0 -0
  187. {pyplaykit-1.30.1 → pyplaykit-1.30.2}/utils/db_drivers/db2.py +0 -0
  188. {pyplaykit-1.30.1 → pyplaykit-1.30.2}/utils/db_drivers/informix.py +0 -0
  189. {pyplaykit-1.30.1 → pyplaykit-1.30.2}/utils/db_drivers/mongodb.py +0 -0
  190. {pyplaykit-1.30.1 → pyplaykit-1.30.2}/utils/db_drivers/mysql.py +0 -0
  191. {pyplaykit-1.30.1 → pyplaykit-1.30.2}/utils/db_drivers/oracle.py +0 -0
  192. {pyplaykit-1.30.1 → pyplaykit-1.30.2}/utils/db_drivers/snowflake.py +0 -0
  193. {pyplaykit-1.30.1 → pyplaykit-1.30.2}/utils/db_drivers/sqlite.py +0 -0
  194. {pyplaykit-1.30.1 → pyplaykit-1.30.2}/utils/db_drivers/sqlserver.py +0 -0
  195. {pyplaykit-1.30.1 → pyplaykit-1.30.2}/utils/db_factory.py +0 -0
  196. {pyplaykit-1.30.1 → pyplaykit-1.30.2}/utils/db_fixtures.py +0 -0
  197. {pyplaykit-1.30.1 → pyplaykit-1.30.2}/utils/db_pool.py +0 -0
  198. {pyplaykit-1.30.1 → pyplaykit-1.30.2}/utils/db_validation_helper.py +0 -0
  199. {pyplaykit-1.30.1 → pyplaykit-1.30.2}/utils/environment_validator.py +0 -0
  200. {pyplaykit-1.30.1 → pyplaykit-1.30.2}/utils/file_reader.py +0 -0
  201. {pyplaykit-1.30.1 → pyplaykit-1.30.2}/utils/governance.py +0 -0
  202. {pyplaykit-1.30.1 → pyplaykit-1.30.2}/utils/graphql_client.py +0 -0
  203. {pyplaykit-1.30.1 → pyplaykit-1.30.2}/utils/logger.py +0 -0
  204. {pyplaykit-1.30.1 → pyplaykit-1.30.2}/utils/observability.py +0 -0
  205. {pyplaykit-1.30.1 → pyplaykit-1.30.2}/utils/observability_report.py +0 -0
  206. {pyplaykit-1.30.1 → pyplaykit-1.30.2}/utils/org_governance.py +0 -0
  207. {pyplaykit-1.30.1 → pyplaykit-1.30.2}/utils/project_config.py +0 -0
  208. {pyplaykit-1.30.1 → pyplaykit-1.30.2}/utils/response_validator.py +0 -0
  209. {pyplaykit-1.30.1 → pyplaykit-1.30.2}/utils/screenshot_helper.py +0 -0
  210. {pyplaykit-1.30.1 → pyplaykit-1.30.2}/utils/secrets/__init__.py +0 -0
  211. {pyplaykit-1.30.1 → pyplaykit-1.30.2}/utils/secrets/aws_provider.py +0 -0
  212. {pyplaykit-1.30.1 → pyplaykit-1.30.2}/utils/secrets/azure_provider.py +0 -0
  213. {pyplaykit-1.30.1 → pyplaykit-1.30.2}/utils/secrets/base.py +0 -0
  214. {pyplaykit-1.30.1 → pyplaykit-1.30.2}/utils/secrets/env_provider.py +0 -0
  215. {pyplaykit-1.30.1 → pyplaykit-1.30.2}/utils/secrets/vault_provider.py +0 -0
  216. {pyplaykit-1.30.1 → pyplaykit-1.30.2}/utils/soap_client.py +0 -0
  217. {pyplaykit-1.30.1 → pyplaykit-1.30.2}/utils/tdm.py +0 -0
  218. {pyplaykit-1.30.1 → pyplaykit-1.30.2}/utils/telemetry.py +0 -0
  219. {pyplaykit-1.30.1 → pyplaykit-1.30.2}/utils/transformation_validator.py +0 -0
  220. {pyplaykit-1.30.1 → pyplaykit-1.30.2}/utils/ui_db_validator.py +0 -0
  221. {pyplaykit-1.30.1 → pyplaykit-1.30.2}/utils/version_checker.py +0 -0
  222. {pyplaykit-1.30.1 → pyplaykit-1.30.2}/utils/yaml_config_reader.py +0 -0
@@ -11,6 +11,14 @@ Versioning follows [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
11
11
 
12
12
  ---
13
13
 
14
+ ## [1.30.2] — 2026-08-20
15
+
16
+ ### Changed
17
+
18
+ - **`pyplaykit init` now scaffolds a clean, complete project surface.** Two `init` corrections make a freshly-scaffolded project self-consistent: (1) the three example project configs that used to ship in the bundled package config (`customs_modernization.yaml`, `dispatcho.yaml`, `timelyquote.yaml`) are no longer bundled, so `config/projects/` no longer contains stray sample projects unrelated to the user's own scaffold; and (2) a fully-populated **`config/projects/demo.yaml`** is now written on every `init`, so the runnable reference tests under `tests/demo/` resolve to a real `demo` project (auto-detected by path, or via `--pyplaykit-project demo`) instead of silently falling back to the flat `environments.yaml` defaults. The demo project is environment-agnostic — every environment targets the same public, zero-setup services the reference tests already use (saucedemo.com UI, JSONPlaceholder API, the bundled SQLite `test_data/demo.db`) — so it doubles as a complete worked example of the multi-project environment-resolution construct. After this change a default `pyplaykit init` yields exactly `config/projects/{demo,project1}.yaml`. Covered by two new unit tests (`test_init_creates_demo_project_config`, `test_init_omits_stray_sample_projects`).
19
+
20
+ ---
21
+
14
22
  ## [1.30.1] — 2026-08-20
15
23
 
16
24
  ### Fixed
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: pyplaykit
3
- Version: 1.30.1
3
+ Version: 1.30.2
4
4
  Summary: Enterprise Python + Playwright automation framework
5
5
  Author-email: Shan Konduru <shankonduru@gmail.com>
6
6
  License: MIT
@@ -177,6 +177,80 @@ project:
177
177
  retries: 2
178
178
  '''
179
179
 
180
+ # Fully-populated example project config that backs the runnable reference tests
181
+ # under tests/demo/. It is always written by `pyplaykit init` so tests/demo/
182
+ # resolves to a real 'demo' project and serves as a worked multi-project example.
183
+ # The demo is environment-agnostic: every environment targets the same public,
184
+ # zero-setup services (saucedemo.com UI, JSONPlaceholder API, bundled SQLite
185
+ # test_data/demo.db), so the reference tests run out of the box on any env.
186
+ _DEMO_PROJECT_CONFIG = '''\
187
+ # demo Project Configuration (written by `pyplaykit init`)
188
+ #
189
+ # This is a fully-populated, working example that backs the runnable reference
190
+ # tests under tests/demo/. Because tests/demo/ maps to this 'demo' project,
191
+ # running `pytest tests/demo/` (or `--pyplaykit-project demo`) resolves these
192
+ # settings, deep-merged over the global config/environments.yaml defaults.
193
+
194
+ project:
195
+ name: "demo"
196
+ description: "Runnable reference project backing tests/demo/"
197
+ team:
198
+ lead: "PyPlayKit"
199
+ engineers: []
200
+ slack_channel: "#pyplaykit-demo"
201
+
202
+ markers:
203
+ - demo
204
+
205
+ # Every environment targets the same public demo services so the reference
206
+ # tests run with zero setup regardless of --pyplaykit-env.
207
+ environments:
208
+ dev:
209
+ base_url: "https://www.saucedemo.com"
210
+ api_base_url: "https://jsonplaceholder.typicode.com"
211
+ database_url: "sqlite:///test_data/demo.db"
212
+ qa:
213
+ base_url: "https://www.saucedemo.com"
214
+ api_base_url: "https://jsonplaceholder.typicode.com"
215
+ database_url: "sqlite:///test_data/demo.db"
216
+ uat:
217
+ base_url: "https://www.saucedemo.com"
218
+ api_base_url: "https://jsonplaceholder.typicode.com"
219
+ database_url: "sqlite:///test_data/demo.db"
220
+ prod:
221
+ base_url: "https://www.saucedemo.com"
222
+ api_base_url: "https://jsonplaceholder.typicode.com"
223
+ database_url: "sqlite:///test_data/demo.db"
224
+
225
+ # API endpoints (relative to api_base_url) exercised by test_demo_api.py.
226
+ api_endpoints:
227
+ posts: "/posts"
228
+ users: "/users"
229
+ comments: "/comments"
230
+
231
+ # Test users — SauceDemo's public standard_user. Credentials still come from
232
+ # environment variables; set them before running the UI demo:
233
+ # PYPLAYKIT_TEST_USERNAME=standard_user
234
+ # PYPLAYKIT_TEST_PASSWORD=secret_sauce
235
+ test_users:
236
+ standard_user:
237
+ username: "${PYPLAYKIT_TEST_USERNAME}"
238
+ password: "${PYPLAYKIT_TEST_PASSWORD}"
239
+
240
+ # Feature flags used by the reference tests.
241
+ features:
242
+ ui_demo: true
243
+ api_demo: true
244
+ database_demo: true
245
+
246
+ # Test execution settings.
247
+ execution:
248
+ browser: "chromium"
249
+ headless: true
250
+ timeout: 30000
251
+ retries: 1
252
+ '''
253
+
180
254
  # Org / portfolio governance scaffold (GAP-30). Written under config/org/ so a
181
255
  # central QE platform team can set baseline policy that business units and
182
256
  # projects refine within bounds. Disabled-by-default: the framework only reads
@@ -2253,6 +2327,13 @@ def _init(
2253
2327
  print(" Creating SINGLE-PROJECT test structure...")
2254
2328
  _create_functional_structure(tests_root / "functional", tests_root)
2255
2329
 
2330
+ # Always ship a fully-populated 'demo' project config alongside the demo
2331
+ # tests, so tests/demo/ resolves to a real project and users get a complete,
2332
+ # working multi-project example (not just placeholder templates).
2333
+ projects_config_dir = config_dest / "projects"
2334
+ projects_config_dir.mkdir(parents=True, exist_ok=True)
2335
+ _write_if_new(projects_config_dir / "demo.yaml", _DEMO_PROJECT_CONFIG)
2336
+
2256
2337
  # Create the demo/ folder — runnable reference tests mirroring the same
2257
2338
  # functional/{ui,api,database} layout as the project test tree.
2258
2339
  _create_demo_structure(tests_root, test_data_dir)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: pyplaykit
3
- Version: 1.30.1
3
+ Version: 1.30.2
4
4
  Summary: Enterprise Python + Playwright automation framework
5
5
  Author-email: Shan Konduru <shankonduru@gmail.com>
6
6
  License: MIT
@@ -143,9 +143,6 @@ pyplaykit.egg-info/top_level.txt
143
143
  pyplaykit/config/__init__.py
144
144
  pyplaykit/config/config.yaml
145
145
  pyplaykit/config/environments.yaml
146
- pyplaykit/config/projects/customs_modernization.yaml
147
- pyplaykit/config/projects/dispatcho.yaml
148
- pyplaykit/config/projects/timelyquote.yaml
149
146
  resilience/__init__.py
150
147
  resilience/locator_recovery.py
151
148
  test_data/api_test_data.json
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "pyplaykit"
7
- version = "1.30.1"
7
+ version = "1.30.2"
8
8
  description = "Enterprise Python + Playwright automation framework"
9
9
  readme = "README.md"
10
10
  license = { text = "MIT" }
@@ -1,78 +0,0 @@
1
- # Customers Modernization Project Configuration
2
-
3
- project:
4
- name: "Customers Modernization"
5
- description: "Customer management system modernization initiative"
6
- team:
7
- lead: "TBD"
8
- engineers: []
9
- slack_channel: "#customers-qa"
10
-
11
- markers:
12
- - customers_modernization
13
- - customer_mgmt
14
- - modernization
15
-
16
- # Environment-specific URLs. database_url carries only the non-secret
17
- # host/port/database; DB credentials come from the SRC_DB_USER / SRC_DB_PASSWORD
18
- # (and TGT_*) environment variables — never store passwords here.
19
- environments:
20
- dev:
21
- base_url: "https://dev.customers.internal.com"
22
- api_base_url: "https://api.dev.customers.internal.com"
23
- database_url: "postgresql://dev-db:5432/customers_dev"
24
-
25
- qa:
26
- base_url: "https://qa.customers.internal.com"
27
- api_base_url: "https://api.qa.customers.internal.com"
28
- database_url: "postgresql://qa-db:5432/customers_qa"
29
-
30
- uat:
31
- base_url: "https://uat.customers.internal.com"
32
- api_base_url: "https://api.uat.customers.internal.com"
33
- database_url: "postgresql://uat-db:5432/customers_uat"
34
-
35
- prod:
36
- base_url: "https://customers.internal.com"
37
- api_base_url: "https://api.customers.internal.com"
38
- database_url: "postgresql://prod-db:5432/customers_prod"
39
-
40
- # API endpoints
41
- api_endpoints:
42
- customers: "/api/v1/customers"
43
- accounts: "/api/v1/accounts"
44
- profiles: "/api/v1/profiles"
45
- preferences: "/api/v1/preferences"
46
- contacts: "/api/v1/contacts"
47
-
48
- # Test data
49
- test_users:
50
- standard_user:
51
- username: "${CUSTOMERS_USERNAME}"
52
- password: "${CUSTOMERS_PASSWORD}"
53
- admin_user:
54
- username: "${CUSTOMERS_ADMIN_USERNAME}"
55
- password: "${CUSTOMERS_ADMIN_PASSWORD}"
56
- data_analyst:
57
- username: "${CUSTOMERS_ANALYST_USERNAME}"
58
- password: "${CUSTOMERS_ANALYST_PASSWORD}"
59
-
60
- # Feature flags
61
- features:
62
- customer_360_view: true
63
- data_migration: true
64
- legacy_integration: true
65
- analytics_dashboard: true
66
-
67
- # Test execution settings
68
- execution:
69
- browser: "chromium"
70
- headless: true
71
- timeout: 30000
72
- retries: 2
73
-
74
- # Migration-specific settings
75
- migration:
76
- legacy_system_url: "https://legacy.customers.internal.com"
77
- data_validation: true
78
- parallel_run: true # Run both old and new systems in parallel
@@ -1,71 +0,0 @@
1
- # Dispatcho Project Configuration
2
-
3
- project:
4
- name: "Dispatcho"
5
- description: "Dispatch and logistics management system"
6
- team:
7
- lead: "TBD"
8
- engineers: []
9
- slack_channel: "#dispatcho-qa"
10
-
11
- markers:
12
- - dispatcho
13
- - logistics
14
- - dispatch
15
-
16
- # Environment-specific URLs. database_url carries only the non-secret
17
- # host/port/database; DB credentials come from the SRC_DB_USER / SRC_DB_PASSWORD
18
- # (and TGT_*) environment variables — never store passwords here.
19
- environments:
20
- dev:
21
- base_url: "https://dev.dispatcho.com"
22
- api_base_url: "https://api.dev.dispatcho.com"
23
- database_url: "postgresql://dev-db:5432/dispatcho_dev"
24
-
25
- qa:
26
- base_url: "https://qa.dispatcho.com"
27
- api_base_url: "https://api.qa.dispatcho.com"
28
- database_url: "postgresql://qa-db:5432/dispatcho_qa"
29
-
30
- uat:
31
- base_url: "https://uat.dispatcho.com"
32
- api_base_url: "https://api.uat.dispatcho.com"
33
- database_url: "postgresql://uat-db:5432/dispatcho_uat"
34
-
35
- prod:
36
- base_url: "https://www.dispatcho.com"
37
- api_base_url: "https://api.dispatcho.com"
38
- database_url: "postgresql://prod-db:5432/dispatcho_prod"
39
-
40
- # API endpoints
41
- api_endpoints:
42
- orders: "/api/v1/orders"
43
- drivers: "/api/v1/drivers"
44
- routes: "/api/v1/routes"
45
- tracking: "/api/v1/tracking"
46
- dispatches: "/api/v1/dispatches"
47
-
48
- # Test data
49
- test_users:
50
- dispatcher:
51
- username: "${DISPATCHO_DISPATCHER_USERNAME}"
52
- password: "${DISPATCHO_DISPATCHER_PASSWORD}"
53
- driver:
54
- username: "${DISPATCHO_DRIVER_USERNAME}"
55
- password: "${DISPATCHO_DRIVER_PASSWORD}"
56
- admin_user:
57
- username: "${DISPATCHO_ADMIN_USERNAME}"
58
- password: "${DISPATCHO_ADMIN_PASSWORD}"
59
-
60
- # Feature flags
61
- features:
62
- real_time_tracking: true
63
- route_optimization: true
64
- driver_mobile_app: true
65
-
66
- # Test execution settings
67
- execution:
68
- browser: "chromium"
69
- headless: true
70
- timeout: 30000
71
- retries: 2
@@ -1,66 +0,0 @@
1
- # TimelyQuote Project Configuration
2
-
3
- project:
4
- name: "TimelyQuote"
5
- description: "Quote management and generation system"
6
- team:
7
- lead: "TBD"
8
- engineers: []
9
- slack_channel: "#timelyquote-qa"
10
-
11
- markers:
12
- - timelyquote
13
- - quotes
14
-
15
- # Environment-specific URLs. database_url carries only the non-secret
16
- # host/port/database; DB credentials come from the SRC_DB_USER / SRC_DB_PASSWORD
17
- # (and TGT_*) environment variables — never store passwords here.
18
- environments:
19
- dev:
20
- base_url: "https://dev.timelyquote.com"
21
- api_base_url: "https://api.dev.timelyquote.com"
22
- database_url: "postgresql://dev-db:5432/timelyquote_dev"
23
-
24
- qa:
25
- base_url: "https://qa.timelyquote.com"
26
- api_base_url: "https://api.qa.timelyquote.com"
27
- database_url: "postgresql://qa-db:5432/timelyquote_qa"
28
-
29
- uat:
30
- base_url: "https://uat.timelyquote.com"
31
- api_base_url: "https://api.uat.timelyquote.com"
32
- database_url: "postgresql://uat-db:5432/timelyquote_uat"
33
-
34
- prod:
35
- base_url: "https://www.timelyquote.com"
36
- api_base_url: "https://api.timelyquote.com"
37
- database_url: "postgresql://prod-db:5432/timelyquote_prod"
38
-
39
- # API endpoints
40
- api_endpoints:
41
- quotes: "/api/v1/quotes"
42
- customers: "/api/v1/customers"
43
- products: "/api/v1/products"
44
- pricing: "/api/v1/pricing"
45
-
46
- # Test data
47
- test_users:
48
- standard_user:
49
- username: "${TIMELYQUOTE_USERNAME}"
50
- password: "${TIMELYQUOTE_PASSWORD}"
51
- admin_user:
52
- username: "${TIMELYQUOTE_ADMIN_USERNAME}"
53
- password: "${TIMELYQUOTE_ADMIN_PASSWORD}"
54
-
55
- # Feature flags
56
- features:
57
- quote_generation: true
58
- pdf_export: true
59
- email_notifications: true
60
-
61
- # Test execution settings
62
- execution:
63
- browser: "chromium"
64
- headless: true
65
- timeout: 30000
66
- retries: 2
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes