quadkit-testing 0.0.3__tar.gz → 0.0.41__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 (199) hide show
  1. quadkit_testing-0.0.41/PKG-INFO +254 -0
  2. quadkit_testing-0.0.3/PKG-INFO → quadkit_testing-0.0.41/README.md +60 -64
  3. {quadkit_testing-0.0.3 → quadkit_testing-0.0.41}/pyproject.toml +21 -22
  4. quadkit_testing-0.0.41/src/quadkit/testing/README.md +233 -0
  5. quadkit_testing-0.0.41/src/quadkit/testing/__init__.py +345 -0
  6. quadkit_testing-0.0.41/src/quadkit/testing/_lazy_exports.py +72 -0
  7. {quadkit_testing-0.0.3 → quadkit_testing-0.0.41}/src/quadkit/testing/clients/ai/client.py +21 -11
  8. quadkit_testing-0.0.41/src/quadkit/testing/clients/web/__init__.py +45 -0
  9. {quadkit_testing-0.0.3 → quadkit_testing-0.0.41}/src/quadkit/testing/clients/web/client.py +25 -6
  10. {quadkit_testing-0.0.3 → quadkit_testing-0.0.41}/src/quadkit/testing/compliance/__init__.py +41 -32
  11. {quadkit_testing-0.0.3 → quadkit_testing-0.0.41}/src/quadkit/testing/compliance/flags.py +5 -3
  12. {quadkit_testing-0.0.3 → quadkit_testing-0.0.41}/src/quadkit/testing/fakes/__init__.py +29 -6
  13. quadkit_testing-0.0.41/src/quadkit/testing/fixtures/__init__.py +170 -0
  14. {quadkit_testing-0.0.3 → quadkit_testing-0.0.41}/src/quadkit/testing/fixtures/core.py +6 -6
  15. {quadkit_testing-0.0.3 → quadkit_testing-0.0.41}/src/quadkit/testing/harness/overrides.py +1 -1
  16. {quadkit_testing-0.0.3 → quadkit_testing-0.0.41}/src/quadkit/testing/integration/__init__.py +31 -8
  17. {quadkit_testing-0.0.3 → quadkit_testing-0.0.41}/src/quadkit/testing/lib/__init__.py +0 -6
  18. {quadkit_testing-0.0.3 → quadkit_testing-0.0.41}/src/quadkit/testing/lib/assertions.py +0 -3
  19. {quadkit_testing-0.0.3 → quadkit_testing-0.0.41}/src/quadkit/testing/lib/factory.py +0 -3
  20. {quadkit_testing-0.0.3 → quadkit_testing-0.0.41}/src/quadkit/testing/memory/cqrs.py +2 -2
  21. {quadkit_testing-0.0.3 → quadkit_testing-0.0.41}/src/quadkit/testing/memory/lock.py +13 -14
  22. quadkit_testing-0.0.41/src/quadkit/testing/plugins/pytest/__init__.py +31 -0
  23. quadkit_testing-0.0.3/src/quadkit/testing/plugins/pytest/__init__.py → quadkit_testing-0.0.41/src/quadkit/testing/plugins/pytest/plugin.py +1 -1
  24. {quadkit_testing-0.0.3 → quadkit_testing-0.0.41}/src/quadkit/testing/testkit/environment.py +10 -2
  25. quadkit_testing-0.0.41/tests/unit/_integration_helpers.py +88 -0
  26. quadkit_testing-0.0.41/tests/unit/conftest.py +12 -0
  27. {quadkit_testing-0.0.3 → quadkit_testing-0.0.41}/tests/unit/test_factory.py +7 -5
  28. quadkit_testing-0.0.41/tests/unit/test_fakes_cluster.py +369 -0
  29. quadkit_testing-0.0.41/tests/unit/test_fakes_lifecycle.py +135 -0
  30. quadkit_testing-0.0.41/tests/unit/test_harness_testkit.py +191 -0
  31. quadkit_testing-0.0.41/tests/unit/test_integration_cleanup.py +155 -0
  32. quadkit_testing-0.0.41/tests/unit/test_integration_cluster.py +100 -0
  33. quadkit_testing-0.0.41/tests/unit/test_integration_fixtures.py +311 -0
  34. quadkit_testing-0.0.41/tests/unit/test_integration_probes.py +129 -0
  35. quadkit_testing-0.0.41/tests/unit/test_lib_admin_client.py +191 -0
  36. quadkit_testing-0.0.41/tests/unit/test_lib_async_helpers.py +168 -0
  37. quadkit_testing-0.0.41/tests/unit/test_lib_helpers.py +347 -0
  38. {quadkit_testing-0.0.3 → quadkit_testing-0.0.41}/tests/unit/test_memory_lock.py +26 -0
  39. {quadkit_testing-0.0.3 → quadkit_testing-0.0.41}/tests/unit/test_override_context_manager_revert.py +20 -20
  40. quadkit_testing-0.0.41/tests/unit/test_test_environment.py +277 -0
  41. quadkit_testing-0.0.41/tests/unit/test_test_environment_facade.py +159 -0
  42. quadkit_testing-0.0.41/tests/unit/test_test_environment_overrides.py +209 -0
  43. {quadkit_testing-0.0.3 → quadkit_testing-0.0.41}/tests/unit/test_testing_utils.py +11 -7
  44. quadkit_testing-0.0.41/tests/unit/test_testkit_surface.py +174 -0
  45. quadkit_testing-0.0.3/README.md +0 -146
  46. quadkit_testing-0.0.3/src/quadkit/testing/README.md +0 -338
  47. quadkit_testing-0.0.3/src/quadkit/testing/__init__.py +0 -235
  48. quadkit_testing-0.0.3/src/quadkit/testing/clients/web/__init__.py +0 -14
  49. quadkit_testing-0.0.3/src/quadkit/testing/fixtures/__init__.py +0 -152
  50. quadkit_testing-0.0.3/src/quadkit/testing/fixtures/_lazy.py +0 -40
  51. quadkit_testing-0.0.3/tests/unit/test_integration_cluster.py +0 -724
  52. quadkit_testing-0.0.3/tests/unit/test_lib_helpers.py +0 -688
  53. quadkit_testing-0.0.3/tests/unit/test_test_environment.py +0 -627
  54. {quadkit_testing-0.0.3 → quadkit_testing-0.0.41}/.gitignore +0 -0
  55. {quadkit_testing-0.0.3 → quadkit_testing-0.0.41}/LICENSE +0 -0
  56. {quadkit_testing-0.0.3 → quadkit_testing-0.0.41}/NOTICE +0 -0
  57. {quadkit_testing-0.0.3 → quadkit_testing-0.0.41}/src/quadkit/py.typed +0 -0
  58. {quadkit_testing-0.0.3 → quadkit_testing-0.0.41}/src/quadkit/testing/clients/ai/__init__.py +0 -0
  59. {quadkit_testing-0.0.3 → quadkit_testing-0.0.41}/src/quadkit/testing/clients/ai/bed.py +0 -0
  60. {quadkit_testing-0.0.3 → quadkit_testing-0.0.41}/src/quadkit/testing/clients/ai/data.py +0 -0
  61. {quadkit_testing-0.0.3 → quadkit_testing-0.0.41}/src/quadkit/testing/clients/db/__init__.py +0 -0
  62. {quadkit_testing-0.0.3 → quadkit_testing-0.0.41}/src/quadkit/testing/clients/db/bed.py +0 -0
  63. {quadkit_testing-0.0.3 → quadkit_testing-0.0.41}/src/quadkit/testing/clients/db/client.py +0 -0
  64. {quadkit_testing-0.0.3 → quadkit_testing-0.0.41}/src/quadkit/testing/clients/web/bed.py +0 -0
  65. {quadkit_testing-0.0.3 → quadkit_testing-0.0.41}/src/quadkit/testing/clients/web/py.typed +0 -0
  66. {quadkit_testing-0.0.3 → quadkit_testing-0.0.41}/src/quadkit/testing/clock.py +0 -0
  67. {quadkit_testing-0.0.3 → quadkit_testing-0.0.41}/src/quadkit/testing/compliance/audit.py +0 -0
  68. {quadkit_testing-0.0.3 → quadkit_testing-0.0.41}/src/quadkit/testing/compliance/blob_store.py +0 -0
  69. {quadkit_testing-0.0.3 → quadkit_testing-0.0.41}/src/quadkit/testing/compliance/cache.py +0 -0
  70. {quadkit_testing-0.0.3 → quadkit_testing-0.0.41}/src/quadkit/testing/compliance/database.py +0 -0
  71. {quadkit_testing-0.0.3 → quadkit_testing-0.0.41}/src/quadkit/testing/compliance/distributed_lock.py +0 -0
  72. {quadkit_testing-0.0.3 → quadkit_testing-0.0.41}/src/quadkit/testing/compliance/event_bus.py +0 -0
  73. {quadkit_testing-0.0.3 → quadkit_testing-0.0.41}/src/quadkit/testing/compliance/middleware.py +0 -0
  74. {quadkit_testing-0.0.3 → quadkit_testing-0.0.41}/src/quadkit/testing/compliance/notification.py +0 -0
  75. {quadkit_testing-0.0.3 → quadkit_testing-0.0.41}/src/quadkit/testing/compliance/queue_backend.py +0 -0
  76. {quadkit_testing-0.0.3 → quadkit_testing-0.0.41}/src/quadkit/testing/compliance/repository.py +0 -0
  77. {quadkit_testing-0.0.3 → quadkit_testing-0.0.41}/src/quadkit/testing/compliance/search.py +0 -0
  78. {quadkit_testing-0.0.3 → quadkit_testing-0.0.41}/src/quadkit/testing/compliance/secrets.py +0 -0
  79. {quadkit_testing-0.0.3 → quadkit_testing-0.0.41}/src/quadkit/testing/compliance/task_queue.py +0 -0
  80. {quadkit_testing-0.0.3 → quadkit_testing-0.0.41}/src/quadkit/testing/compliance/vector_store.py +0 -0
  81. {quadkit_testing-0.0.3 → quadkit_testing-0.0.41}/src/quadkit/testing/compliance/webhook.py +0 -0
  82. {quadkit_testing-0.0.3 → quadkit_testing-0.0.41}/src/quadkit/testing/config.py +0 -0
  83. {quadkit_testing-0.0.3 → quadkit_testing-0.0.41}/src/quadkit/testing/constants.py +0 -0
  84. {quadkit_testing-0.0.3 → quadkit_testing-0.0.41}/src/quadkit/testing/decorators.py +0 -0
  85. {quadkit_testing-0.0.3 → quadkit_testing-0.0.41}/src/quadkit/testing/di/__init__.py +0 -0
  86. {quadkit_testing-0.0.3 → quadkit_testing-0.0.41}/src/quadkit/testing/events.py +0 -0
  87. {quadkit_testing-0.0.3 → quadkit_testing-0.0.41}/src/quadkit/testing/exceptions.py +0 -0
  88. {quadkit_testing-0.0.3 → quadkit_testing-0.0.41}/src/quadkit/testing/fakes/audit.py +0 -0
  89. {quadkit_testing-0.0.3 → quadkit_testing-0.0.41}/src/quadkit/testing/fakes/buses.py +0 -0
  90. {quadkit_testing-0.0.3 → quadkit_testing-0.0.41}/src/quadkit/testing/fakes/cache.py +0 -0
  91. {quadkit_testing-0.0.3 → quadkit_testing-0.0.41}/src/quadkit/testing/fakes/clock.py +0 -0
  92. {quadkit_testing-0.0.3 → quadkit_testing-0.0.41}/src/quadkit/testing/fakes/config.py +0 -0
  93. {quadkit_testing-0.0.3 → quadkit_testing-0.0.41}/src/quadkit/testing/fakes/events.py +0 -0
  94. {quadkit_testing-0.0.3 → quadkit_testing-0.0.41}/src/quadkit/testing/fakes/governance.py +0 -0
  95. {quadkit_testing-0.0.3 → quadkit_testing-0.0.41}/src/quadkit/testing/fakes/lifecycle.py +0 -0
  96. {quadkit_testing-0.0.3 → quadkit_testing-0.0.41}/src/quadkit/testing/fakes/logging.py +0 -0
  97. {quadkit_testing-0.0.3 → quadkit_testing-0.0.41}/src/quadkit/testing/fakes/monitoring.py +0 -0
  98. {quadkit_testing-0.0.3 → quadkit_testing-0.0.41}/src/quadkit/testing/fakes/redis.py +0 -0
  99. {quadkit_testing-0.0.3 → quadkit_testing-0.0.41}/src/quadkit/testing/fakes/tracing.py +0 -0
  100. {quadkit_testing-0.0.3 → quadkit_testing-0.0.41}/src/quadkit/testing/fixtures/bed.py +0 -0
  101. {quadkit_testing-0.0.3 → quadkit_testing-0.0.41}/src/quadkit/testing/fixtures/container.py +0 -0
  102. {quadkit_testing-0.0.3 → quadkit_testing-0.0.41}/src/quadkit/testing/fixtures/containers.py +0 -0
  103. {quadkit_testing-0.0.3 → quadkit_testing-0.0.41}/src/quadkit/testing/fixtures/py.typed +0 -0
  104. {quadkit_testing-0.0.3 → quadkit_testing-0.0.41}/src/quadkit/testing/fixtures/web.py +0 -0
  105. {quadkit_testing-0.0.3 → quadkit_testing-0.0.41}/src/quadkit/testing/generators.py +0 -0
  106. {quadkit_testing-0.0.3 → quadkit_testing-0.0.41}/src/quadkit/testing/generators_contract.py +0 -0
  107. {quadkit_testing-0.0.3 → quadkit_testing-0.0.41}/src/quadkit/testing/harness/__init__.py +0 -0
  108. {quadkit_testing-0.0.3 → quadkit_testing-0.0.41}/src/quadkit/testing/harness/container.py +0 -0
  109. {quadkit_testing-0.0.3 → quadkit_testing-0.0.41}/src/quadkit/testing/harness/decorators.py +0 -0
  110. {quadkit_testing-0.0.3 → quadkit_testing-0.0.41}/src/quadkit/testing/harness/testbed.py +0 -0
  111. {quadkit_testing-0.0.3 → quadkit_testing-0.0.41}/src/quadkit/testing/hooks.py +0 -0
  112. {quadkit_testing-0.0.3 → quadkit_testing-0.0.41}/src/quadkit/testing/integration/cleanup.py +0 -0
  113. {quadkit_testing-0.0.3 → quadkit_testing-0.0.41}/src/quadkit/testing/integration/config.py +0 -0
  114. {quadkit_testing-0.0.3 → quadkit_testing-0.0.41}/src/quadkit/testing/integration/fixtures.py +0 -0
  115. {quadkit_testing-0.0.3 → quadkit_testing-0.0.41}/src/quadkit/testing/integration/markers.py +0 -0
  116. {quadkit_testing-0.0.3 → quadkit_testing-0.0.41}/src/quadkit/testing/integration/probes.py +0 -0
  117. {quadkit_testing-0.0.3 → quadkit_testing-0.0.41}/src/quadkit/testing/lib/admin_helpers.py +0 -0
  118. {quadkit_testing-0.0.3 → quadkit_testing-0.0.41}/src/quadkit/testing/lib/async_helper.py +0 -0
  119. {quadkit_testing-0.0.3 → quadkit_testing-0.0.41}/src/quadkit/testing/lib/smoke.py +0 -0
  120. {quadkit_testing-0.0.3 → quadkit_testing-0.0.41}/src/quadkit/testing/lib/snapshots.py +0 -0
  121. {quadkit_testing-0.0.3 → quadkit_testing-0.0.41}/src/quadkit/testing/lib/stubs.py +0 -0
  122. {quadkit_testing-0.0.3 → quadkit_testing-0.0.41}/src/quadkit/testing/memory/__init__.py +0 -0
  123. {quadkit_testing-0.0.3 → quadkit_testing-0.0.41}/src/quadkit/testing/memory/audit.py +0 -0
  124. {quadkit_testing-0.0.3 → quadkit_testing-0.0.41}/src/quadkit/testing/memory/blob_store.py +0 -0
  125. {quadkit_testing-0.0.3 → quadkit_testing-0.0.41}/src/quadkit/testing/memory/cache.py +0 -0
  126. {quadkit_testing-0.0.3 → quadkit_testing-0.0.41}/src/quadkit/testing/memory/config/__init__.py +0 -0
  127. {quadkit_testing-0.0.3 → quadkit_testing-0.0.41}/src/quadkit/testing/memory/config/models.py +0 -0
  128. {quadkit_testing-0.0.3 → quadkit_testing-0.0.41}/src/quadkit/testing/memory/constants.py +0 -0
  129. {quadkit_testing-0.0.3 → quadkit_testing-0.0.41}/src/quadkit/testing/memory/di/__init__.py +0 -0
  130. {quadkit_testing-0.0.3 → quadkit_testing-0.0.41}/src/quadkit/testing/memory/di/provider.py +0 -0
  131. {quadkit_testing-0.0.3 → quadkit_testing-0.0.41}/src/quadkit/testing/memory/event_bus.py +0 -0
  132. {quadkit_testing-0.0.3 → quadkit_testing-0.0.41}/src/quadkit/testing/memory/exceptions.py +0 -0
  133. {quadkit_testing-0.0.3 → quadkit_testing-0.0.41}/src/quadkit/testing/memory/notification.py +0 -0
  134. {quadkit_testing-0.0.3 → quadkit_testing-0.0.41}/src/quadkit/testing/memory/outbox.py +0 -0
  135. {quadkit_testing-0.0.3 → quadkit_testing-0.0.41}/src/quadkit/testing/memory/queue.py +0 -0
  136. {quadkit_testing-0.0.3 → quadkit_testing-0.0.41}/src/quadkit/testing/memory/repository.py +0 -0
  137. {quadkit_testing-0.0.3 → quadkit_testing-0.0.41}/src/quadkit/testing/memory/search.py +0 -0
  138. {quadkit_testing-0.0.3 → quadkit_testing-0.0.41}/src/quadkit/testing/memory/uow.py +0 -0
  139. {quadkit_testing-0.0.3 → quadkit_testing-0.0.41}/src/quadkit/testing/mocks/__init__.py +0 -0
  140. {quadkit_testing-0.0.3 → quadkit_testing-0.0.41}/src/quadkit/testing/mocks/base.py +0 -0
  141. {quadkit_testing-0.0.3 → quadkit_testing-0.0.41}/src/quadkit/testing/mocks/test_provider.py +0 -0
  142. {quadkit_testing-0.0.3 → quadkit_testing-0.0.41}/src/quadkit/testing/module.py +0 -0
  143. {quadkit_testing-0.0.3 → quadkit_testing-0.0.41}/src/quadkit/testing/plugins/__init__.py +0 -0
  144. {quadkit_testing-0.0.3 → quadkit_testing-0.0.41}/src/quadkit/testing/protocols.py +0 -0
  145. {quadkit_testing-0.0.3 → quadkit_testing-0.0.41}/src/quadkit/testing/py.typed +0 -0
  146. {quadkit_testing-0.0.3 → quadkit_testing-0.0.41}/src/quadkit/testing/testkit/__init__.py +0 -0
  147. {quadkit_testing-0.0.3 → quadkit_testing-0.0.41}/src/quadkit/testing/testkit/assertions.py +0 -0
  148. {quadkit_testing-0.0.3 → quadkit_testing-0.0.41}/src/quadkit/testing/testkit/fakes.py +0 -0
  149. {quadkit_testing-0.0.3 → quadkit_testing-0.0.41}/src/quadkit/testing/testkit/fixtures.py +0 -0
  150. {quadkit_testing-0.0.3 → quadkit_testing-0.0.41}/src/quadkit/testing/types.py +0 -0
  151. {quadkit_testing-0.0.3 → quadkit_testing-0.0.41}/src/quadkit/testing/websocket/__init__.py +0 -0
  152. {quadkit_testing-0.0.3 → quadkit_testing-0.0.41}/src/quadkit/testing/websocket/client.py +0 -0
  153. {quadkit_testing-0.0.3 → quadkit_testing-0.0.41}/src/quadkit/testing/workflow/__init__.py +0 -0
  154. {quadkit_testing-0.0.3 → quadkit_testing-0.0.41}/src/quadkit/testing/workflow/harness.py +0 -0
  155. {quadkit_testing-0.0.3 → quadkit_testing-0.0.41}/tests/__snapshots__/test_snapshot_function.json +0 -0
  156. {quadkit_testing-0.0.3 → quadkit_testing-0.0.41}/tests/conftest.py +0 -0
  157. {quadkit_testing-0.0.3 → quadkit_testing-0.0.41}/tests/integration/test_web_client.py +0 -0
  158. {quadkit_testing-0.0.3 → quadkit_testing-0.0.41}/tests/test_package_structure_p1.py +0 -0
  159. {quadkit_testing-0.0.3 → quadkit_testing-0.0.41}/tests/unit/__snapshots__/test_snapshot_function.json +0 -0
  160. {quadkit_testing-0.0.3 → quadkit_testing-0.0.41}/tests/unit/test_ai_client_budget.py +0 -0
  161. {quadkit_testing-0.0.3 → quadkit_testing-0.0.41}/tests/unit/test_ai_clients.py +0 -0
  162. {quadkit_testing-0.0.3 → quadkit_testing-0.0.41}/tests/unit/test_app_testbed.py +0 -0
  163. {quadkit_testing-0.0.3 → quadkit_testing-0.0.41}/tests/unit/test_app_testbed_from_factory_overrides.py +0 -0
  164. {quadkit_testing-0.0.3 → quadkit_testing-0.0.41}/tests/unit/test_assertion_helpers.py +0 -0
  165. {quadkit_testing-0.0.3 → quadkit_testing-0.0.41}/tests/unit/test_async_helper.py +0 -0
  166. {quadkit_testing-0.0.3 → quadkit_testing-0.0.41}/tests/unit/test_container.py +0 -0
  167. {quadkit_testing-0.0.3 → quadkit_testing-0.0.41}/tests/unit/test_container_bind.py +0 -0
  168. {quadkit_testing-0.0.3 → quadkit_testing-0.0.41}/tests/unit/test_container_factory_auto_registration.py +0 -0
  169. {quadkit_testing-0.0.3 → quadkit_testing-0.0.41}/tests/unit/test_container_try_resolve.py +0 -0
  170. {quadkit_testing-0.0.3 → quadkit_testing-0.0.41}/tests/unit/test_db_clients.py +0 -0
  171. {quadkit_testing-0.0.3 → quadkit_testing-0.0.41}/tests/unit/test_environment_lifecycle.py +0 -0
  172. {quadkit_testing-0.0.3 → quadkit_testing-0.0.41}/tests/unit/test_exceptions.py +0 -0
  173. {quadkit_testing-0.0.3 → quadkit_testing-0.0.41}/tests/unit/test_fake_audit.py +0 -0
  174. {quadkit_testing-0.0.3 → quadkit_testing-0.0.41}/tests/unit/test_fake_event_bus_ordering.py +0 -0
  175. {quadkit_testing-0.0.3 → quadkit_testing-0.0.41}/tests/unit/test_fake_tracer.py +0 -0
  176. {quadkit_testing-0.0.3 → quadkit_testing-0.0.41}/tests/unit/test_fakes.py +0 -0
  177. {quadkit_testing-0.0.3 → quadkit_testing-0.0.41}/tests/unit/test_generators_util.py +0 -0
  178. {quadkit_testing-0.0.3 → quadkit_testing-0.0.41}/tests/unit/test_memory_backends.py +0 -0
  179. {quadkit_testing-0.0.3 → quadkit_testing-0.0.41}/tests/unit/test_memory_cqrs.py +0 -0
  180. {quadkit_testing-0.0.3 → quadkit_testing-0.0.41}/tests/unit/test_memory_event_bus.py +0 -0
  181. {quadkit_testing-0.0.3 → quadkit_testing-0.0.41}/tests/unit/test_memory_outbox.py +0 -0
  182. {quadkit_testing-0.0.3 → quadkit_testing-0.0.41}/tests/unit/test_memory_repository.py +0 -0
  183. {quadkit_testing-0.0.3 → quadkit_testing-0.0.41}/tests/unit/test_mocks.py +0 -0
  184. {quadkit_testing-0.0.3 → quadkit_testing-0.0.41}/tests/unit/test_mocks_cluster.py +0 -0
  185. {quadkit_testing-0.0.3 → quadkit_testing-0.0.41}/tests/unit/test_plugin.py +0 -0
  186. {quadkit_testing-0.0.3 → quadkit_testing-0.0.41}/tests/unit/test_public_exports.py +0 -0
  187. {quadkit_testing-0.0.3 → quadkit_testing-0.0.41}/tests/unit/test_pytest_plugin_fixtures.py +0 -0
  188. {quadkit_testing-0.0.3 → quadkit_testing-0.0.41}/tests/unit/test_service_probe_connectivity.py +0 -0
  189. {quadkit_testing-0.0.3 → quadkit_testing-0.0.41}/tests/unit/test_small_modules.py +0 -0
  190. {quadkit_testing-0.0.3 → quadkit_testing-0.0.41}/tests/unit/test_smoke.py +0 -0
  191. {quadkit_testing-0.0.3 → quadkit_testing-0.0.41}/tests/unit/test_snapshot_asserter_create_compare.py +0 -0
  192. {quadkit_testing-0.0.3 → quadkit_testing-0.0.41}/tests/unit/test_snapshots.py +0 -0
  193. {quadkit_testing-0.0.3 → quadkit_testing-0.0.41}/tests/unit/test_stubs.py +0 -0
  194. {quadkit_testing-0.0.3 → quadkit_testing-0.0.41}/tests/unit/test_subpackage_exports.py +0 -0
  195. {quadkit_testing-0.0.3 → quadkit_testing-0.0.41}/tests/unit/test_testing_constants.py +0 -0
  196. {quadkit_testing-0.0.3 → quadkit_testing-0.0.41}/tests/unit/test_testing_module.py +0 -0
  197. {quadkit_testing-0.0.3 → quadkit_testing-0.0.41}/tests/unit/test_utilities.py +0 -0
  198. {quadkit_testing-0.0.3 → quadkit_testing-0.0.41}/tests/unit/test_web_clients.py +0 -0
  199. {quadkit_testing-0.0.3 → quadkit_testing-0.0.41}/tests/unit/test_workflow_websocket_plugins.py +0 -0
@@ -0,0 +1,254 @@
1
+ Metadata-Version: 2.5
2
+ Name: quadkit-testing
3
+ Version: 0.0.41
4
+ Summary: Centralized testing infrastructure for Quadkit Framework - Fixtures, factories, and utilities
5
+ Project-URL: Homepage, https://dbtinoy-.github.io/quadkit/
6
+ Project-URL: Repository, https://github.com/dbtinoy-/quadkit
7
+ Project-URL: Documentation, https://dbtinoy-.github.io/quadkit/
8
+ Project-URL: Issues, https://github.com/dbtinoy-/quadkit/issues
9
+ Project-URL: Changelog, https://github.com/dbtinoy-/quadkit/blob/main/CHANGELOG.md
10
+ Author-email: Quadkit Framework Team <team@quadkit.dev>
11
+ Maintainer-email: Quadkit Framework Team <team@quadkit.dev>
12
+ License: Apache-2.0
13
+ License-File: LICENSE
14
+ License-File: NOTICE
15
+ Keywords: async,factories,fixtures,framework,mocking,pytest,testing
16
+ Classifier: Development Status :: 3 - Alpha
17
+ Classifier: Framework :: AsyncIO
18
+ Classifier: Framework :: Pytest
19
+ Classifier: Intended Audience :: Developers
20
+ Classifier: License :: OSI Approved :: Apache Software License
21
+ Classifier: Operating System :: OS Independent
22
+ Classifier: Programming Language :: Python :: 3
23
+ Classifier: Programming Language :: Python :: 3.11
24
+ Classifier: Programming Language :: Python :: 3.12
25
+ Classifier: Programming Language :: Python :: 3.13
26
+ Classifier: Topic :: Software Development :: Testing
27
+ Classifier: Typing :: Typed
28
+ Requires-Python: >=3.11
29
+ Requires-Dist: pytest-asyncio<2,>=0.21.0
30
+ Requires-Dist: pytest-cov<8,>=4.0.0
31
+ Requires-Dist: pytest-mock<4,>=3.10.0
32
+ Requires-Dist: pytest<10,>=8.0.0
33
+ Requires-Dist: quadkit-contracts>=0.0.2
34
+ Requires-Dist: quadkit>=0.0.2
35
+ Provides-Extra: db
36
+ Requires-Dist: aiosqlite>=0.19.0; extra == 'db'
37
+ Requires-Dist: asyncpg>=0.29.0; extra == 'db'
38
+ Provides-Extra: dev
39
+ Requires-Dist: black<27,>=23.0.0; extra == 'dev'
40
+ Requires-Dist: mypy<3,>=1.0.0; extra == 'dev'
41
+ Requires-Dist: ruff<1,>=0.16.4; extra == 'dev'
42
+ Provides-Extra: integration
43
+ Requires-Dist: aiokafka<1,>=0.12.0; extra == 'integration'
44
+ Requires-Dist: aiosqlite<1,>=0.19.0; extra == 'integration'
45
+ Requires-Dist: asyncpg<1,>=0.29.0; extra == 'integration'
46
+ Requires-Dist: elasticsearch[async]<10,>=8.12.0; extra == 'integration'
47
+ Requires-Dist: motor<4,>=3.3.0; extra == 'integration'
48
+ Requires-Dist: neo4j<7,>=5.18.0; extra == 'integration'
49
+ Requires-Dist: qdrant-client<2,>=1.9.0; extra == 'integration'
50
+ Requires-Dist: redis<9,>=5.0.0; extra == 'integration'
51
+ Provides-Extra: web
52
+ Requires-Dist: httpx2<3,>=2.0.0; extra == 'web'
53
+ Requires-Dist: httpx<1,>=0.26.0; extra == 'web'
54
+ Requires-Dist: starlette<2,>=0.28.0; extra == 'web'
55
+ Description-Content-Type: text/markdown
56
+
57
+ # quadkit-testing
58
+
59
+ ![Quadkit](https://raw.githubusercontent.com/dbtinoy-/quadkit/main/banner.jpg)
60
+
61
+ [![PyPI](https://img.shields.io/pypi/v/quadkit-testing?color=%2322c55e&label=pypi)](https://pypi.org/project/quadkit-testing/)
62
+ [![Python](https://img.shields.io/pypi/pyversions/quadkit-testing?color=%2322c55e)](https://pypi.org/project/quadkit-testing/)
63
+ [![License](https://img.shields.io/pypi/l/quadkit-testing?color=%2322c55e)](https://github.com/dbtinoy-/quadkit/blob/main/LICENSE)
64
+
65
+ Test harnesses, fakes, and fixtures for Quadkit applications: boot the
66
+ real application in-process, substitute bindings instead of mocking
67
+ import sites, and assert on responses with helpers that say what
68
+ failed.
69
+
70
+ For anyone writing tests against Quadkit applications — and for tooling
71
+ that needs drop-in implementations of the framework's protocols.
72
+
73
+ ## The quadkit family
74
+
75
+ | Package | Role |
76
+ | --- | --- |
77
+ | [`quadkit-contracts`](https://pypi.org/project/quadkit-contracts/) | zero-dependency protocols, types, exception hierarchy |
78
+ | [`quadkit`](https://pypi.org/project/quadkit/) | the framework core — DI container, modules, config, logging, `Result` |
79
+ | [`quadkit-web`](https://pypi.org/project/quadkit-web/) | ASGI layer — controllers, routing, middleware, OpenAPI docs |
80
+ | [`quadkit-cli`](https://pypi.org/project/quadkit-cli/) | project scaffolding and code generators |
81
+ | [`quadkit-testing`](https://pypi.org/project/quadkit-testing/) | in-process test beds, fakes, fixtures |
82
+
83
+ ## Installation
84
+
85
+ ```bash
86
+ uv add --dev quadkit-testing
87
+ ```
88
+
89
+ Requires **Python >= 3.11**.
90
+
91
+ ## Minimal working example
92
+
93
+ Test an HTTP route with the real application, in-process:
94
+
95
+ ```python
96
+ import pytest
97
+
98
+ from quadkit.testing import WebTestBed
99
+
100
+ from my_app import create_app
101
+
102
+
103
+ @pytest.mark.asyncio
104
+ async def test_hello() -> None:
105
+ async with WebTestBed(create_app()) as bed:
106
+ response = bed.get("/hello", params={"name": "quadkit"})
107
+ response.assert_status(200)
108
+ assert response.json == {"message": "hello, quadkit"}
109
+ ```
110
+
111
+ Or test services directly, with binding overrides:
112
+
113
+ ```python
114
+ async def test_service() -> None:
115
+ from quadkit.testing import AppTestBed
116
+
117
+ async with AppTestBed.from_factory(
118
+ create_app, overrides={Cache: FakeCache()}
119
+ ) as bed:
120
+ service = await bed.app.container.resolve(UserService)
121
+ ```
122
+
123
+ A pytest plugin registers automatically via entry points — no
124
+ `conftest.py` wiring — and provides auto-registered fixtures including
125
+ `fake_cache`, `fake_event_bus`, `fake_logger`, `fake_clock`,
126
+ `fake_command_bus`, `fake_query_bus`, `fake_unit_of_work`,
127
+ `fake_metrics`, `fake_config`, `fake_state_store`, `test_bed`,
128
+ `test_container`, and `test_data`:
129
+
130
+ ```python
131
+ import pytest
132
+
133
+ from quadkit.contracts.domain.events import DomainEvent
134
+
135
+
136
+ class UserCreated(DomainEvent):
137
+ user_id: str
138
+ email: str
139
+
140
+
141
+ @pytest.mark.asyncio
142
+ async def test_signup_publishes(fake_event_bus) -> None:
143
+ await fake_event_bus.publish(UserCreated(user_id="1", email="a@b.c"))
144
+ fake_event_bus.assert_published(UserCreated, user_id="1")
145
+
146
+
147
+ def test_trial_expiry_is_deterministic(fake_clock) -> None:
148
+ t0 = fake_clock.now()
149
+ fake_clock.advance(30 * 24 * 3600)
150
+ assert (fake_clock.now() - t0).days == 30
151
+ ```
152
+
153
+ ## Optional extras
154
+
155
+ | Extra | Contents |
156
+ | --- | --- |
157
+ | `[web]` | `httpx` + Starlette — the `WebTestBed` client transport |
158
+ | `[db]` | `aiosqlite`, `asyncpg` — drivers for your async DB test suites |
159
+ | `[integration]` | service clients for integration suites (Redis, MongoDB, Kafka, Elasticsearch, Neo4j, Qdrant, PostgreSQL, SQLite) |
160
+ | `[dev]` | `ruff`, `mypy`, `black` |
161
+
162
+ ## Public API entry points
163
+
164
+ ### Test beds
165
+
166
+ ```python
167
+ from quadkit.testing import AppTestBed, WebTestBed
168
+ ```
169
+
170
+ - `AppTestBed.from_factory(factory, overrides=None)` /
171
+ `AppTestBed.from_app(app)` — application-level beds.
172
+ - `WebTestBed(app_or_provider, raise_server_exceptions=True)` with
173
+ `get/post/put/patch/delete`, `override(Contract, impl)` (before
174
+ boot), and `TestResponse` — `status_code`, `headers`, `text`,
175
+ `json` (property), `assert_status`, `assert_json`,
176
+ `assert_json_path`, `assert_header`.
177
+ - `quadkit.testing.fixtures.container.ContainerTestFixture` — DI-level
178
+ fixture with `mock()`, `override()`, `get()`, `get_optional()`.
179
+ - `quadkit.testing.fixtures.bed.TestEnvironment` — programmatic
180
+ environment builder (`use_provider`, `override`, `fake`, `resolve`).
181
+ - `quadkit.testing.lib.factory.TestDataFactory` — deterministic
182
+ `create_user()`, `create_task()`, `create_message()`,
183
+ `create_request()`.
184
+
185
+ ### Fakes (`quadkit.testing.fakes`)
186
+
187
+ All in-process, async-native, implementing the same contracts as the
188
+ real services:
189
+
190
+ | Class | Covers |
191
+ | --- | --- |
192
+ | `FakeCache` / `FakeStateStore` | cache and state storage |
193
+ | `FakeEventBus` | in-process events with `assert_published()`, `published_of_type()`, `assert_events_in_order()` and friends |
194
+ | `FakeCommandBus` / `FakeQueryBus` | command / query dispatch |
195
+ | `FakeUnitOfWork` | unit-of-work context |
196
+ | `FakeClock` (+ `Clock`, `SystemClock`) | deterministic time |
197
+ | `FakeConfig` | config overrides |
198
+ | `FakeLogger` (+ `LogEntry`) | structlog-compatible sink |
199
+ | `FakeMetricsCollector` / `FakeResourceUnitTracker` | metrics / resource tracking |
200
+ | `FakeRedisClient` | Redis-protocol client |
201
+ | `FakeAuditLogger` | audit records |
202
+ | `FakeTracer` / `FakeSpan` | tracing |
203
+
204
+ The published wheel carries the `ai`, `db` and `web` test clients and beds
205
+ plus the fakes and fixtures that need no private package. The `auth`,
206
+ `cache`, `events`, `search`, `storage`, `tasks`, `ui` test clients, the
207
+ AI/DB/task fixture modules, the secrets fake and `IntegrationEnvironment`
208
+ stay in this repository until their packages publish; asking the published
209
+ wheel for one raises `AttributeError` naming the module.
210
+
211
+ ## Configuration
212
+
213
+ None required — the pytest plugin self-registers. Mark suites for
214
+ external services and gate them yourself (e.g.
215
+ `uv run pytest -m "not integration"`).
216
+
217
+ ## Error handling
218
+
219
+ Test beds surface failures, they don't hide them: with
220
+ `raise_server_exceptions=True` (the default) unexpected exceptions
221
+ re-raise into your test with their original traceback; HTTP-expected
222
+ failures assert on the response instead.
223
+
224
+ ## Testing
225
+
226
+ Ironically self-hosted: this package's public tests are among the
227
+ suite the release executes from the exported tree against the built
228
+ wheels.
229
+
230
+ ## Security
231
+
232
+ Fakes are in-process and safe to wire into unit suites. Report
233
+ vulnerabilities privately per [SECURITY.md](https://github.com/dbtinoy-/quadkit/blob/main/SECURITY.md).
234
+
235
+ ## Stability
236
+
237
+ Version `0.0.3` in the `0.x` series, released in lockstep with the
238
+ other four distributions; APIs may change between minor versions until
239
+ 1.0 — pin an exact version (`quadkit-testing==0.0.3`) or a tight range
240
+ (`>=0.0.3,<0.1.0`). Full policy:
241
+ [stability and compatibility](https://dbtinoy-.github.io/quadkit/reference/stability/).
242
+
243
+ ## Links
244
+
245
+ - **Documentation** — <https://dbtinoy-.github.io/quadkit/>
246
+ - **Getting started** — <https://dbtinoy-.github.io/quadkit/getting-started/installation/>
247
+ - **Changelog** — <https://github.com/dbtinoy-/quadkit/blob/main/CHANGELOG.md>
248
+ - **Issues** — <https://github.com/dbtinoy-/quadkit/issues>
249
+ - **Security** — report privately per [SECURITY.md](https://github.com/dbtinoy-/quadkit/blob/main/SECURITY.md)
250
+ - **Contributing** — [CONTRIBUTING.md](https://github.com/dbtinoy-/quadkit/blob/main/CONTRIBUTING.md)
251
+
252
+ Apache-2.0 — see [LICENSE](https://github.com/dbtinoy-/quadkit/blob/main/LICENSE). "Quadkit" and the
253
+ Quadkit logo are trademarks of the project — see
254
+ [TRADEMARK.md](https://github.com/dbtinoy-/quadkit/blob/main/TRADEMARK.md).
@@ -1,61 +1,11 @@
1
- Metadata-Version: 2.5
2
- Name: quadkit-testing
3
- Version: 0.0.3
4
- Summary: Centralized testing infrastructure for Quadkit Framework - Fixtures, factories, and utilities
5
- Project-URL: Homepage, https://quadkit.dev
6
- Project-URL: Repository, https://github.com/dbtinoy-/quadkit
7
- Project-URL: Documentation, https://quadkit.dev
8
- Project-URL: Issues, https://github.com/dbtinoy-/quadkit/issues
9
- Project-URL: Changelog, https://github.com/dbtinoy-/quadkit/blob/main/CHANGELOG.md
10
- Author-email: Quadkit Framework Team <team@quadkit.dev>
11
- Maintainer-email: Quadkit Framework Team <team@quadkit.dev>
12
- License: Apache-2.0
13
- License-File: LICENSE
14
- License-File: NOTICE
15
- Keywords: async,factories,fixtures,framework,mocking,pytest,testing
16
- Classifier: Development Status :: 3 - Alpha
17
- Classifier: Framework :: AsyncIO
18
- Classifier: Framework :: Pytest
19
- Classifier: Intended Audience :: Developers
20
- Classifier: License :: OSI Approved :: Apache Software License
21
- Classifier: Operating System :: OS Independent
22
- Classifier: Programming Language :: Python :: 3
23
- Classifier: Programming Language :: Python :: 3.11
24
- Classifier: Programming Language :: Python :: 3.12
25
- Classifier: Programming Language :: Python :: 3.13
26
- Classifier: Topic :: Software Development :: Testing
27
- Classifier: Typing :: Typed
28
- Requires-Python: >=3.11
29
- Requires-Dist: pytest-asyncio>=0.21.0
30
- Requires-Dist: pytest-cov>=4.0.0
31
- Requires-Dist: pytest-mock>=3.10.0
32
- Requires-Dist: pytest>=8.0.0
33
- Requires-Dist: quadkit-contracts>=0.0.2
34
- Requires-Dist: quadkit>=0.0.2
35
- Provides-Extra: db
36
- Requires-Dist: aiosqlite>=0.19.0; extra == 'db'
37
- Requires-Dist: asyncpg>=0.29.0; extra == 'db'
38
- Provides-Extra: dev
39
- Requires-Dist: black>=23.0.0; extra == 'dev'
40
- Requires-Dist: mypy>=1.0.0; extra == 'dev'
41
- Requires-Dist: ruff>=0.16.4; extra == 'dev'
42
- Provides-Extra: integration
43
- Requires-Dist: aiokafka>=0.12.0; extra == 'integration'
44
- Requires-Dist: aiosqlite>=0.19.0; extra == 'integration'
45
- Requires-Dist: asyncpg>=0.29.0; extra == 'integration'
46
- Requires-Dist: elasticsearch[async]>=8.12.0; extra == 'integration'
47
- Requires-Dist: motor>=3.3.0; extra == 'integration'
48
- Requires-Dist: neo4j>=5.18.0; extra == 'integration'
49
- Requires-Dist: qdrant-client>=1.9.0; extra == 'integration'
50
- Requires-Dist: redis>=5.0.0; extra == 'integration'
51
- Provides-Extra: web
52
- Requires-Dist: httpx2>=2.0.0; extra == 'web'
53
- Requires-Dist: httpx>=0.26.0; extra == 'web'
54
- Requires-Dist: starlette>=0.28.0; extra == 'web'
55
- Description-Content-Type: text/markdown
56
-
57
1
  # quadkit-testing
58
2
 
3
+ ![Quadkit](https://raw.githubusercontent.com/dbtinoy-/quadkit/main/banner.jpg)
4
+
5
+ [![PyPI](https://img.shields.io/pypi/v/quadkit-testing?color=%2322c55e&label=pypi)](https://pypi.org/project/quadkit-testing/)
6
+ [![Python](https://img.shields.io/pypi/pyversions/quadkit-testing?color=%2322c55e)](https://pypi.org/project/quadkit-testing/)
7
+ [![License](https://img.shields.io/pypi/l/quadkit-testing?color=%2322c55e)](https://github.com/dbtinoy-/quadkit/blob/main/LICENSE)
8
+
59
9
  Test harnesses, fakes, and fixtures for Quadkit applications: boot the
60
10
  real application in-process, substitute bindings instead of mocking
61
11
  import sites, and assert on responses with helpers that say what
@@ -64,6 +14,16 @@ failed.
64
14
  For anyone writing tests against Quadkit applications — and for tooling
65
15
  that needs drop-in implementations of the framework's protocols.
66
16
 
17
+ ## The quadkit family
18
+
19
+ | Package | Role |
20
+ | --- | --- |
21
+ | [`quadkit-contracts`](https://pypi.org/project/quadkit-contracts/) | zero-dependency protocols, types, exception hierarchy |
22
+ | [`quadkit`](https://pypi.org/project/quadkit/) | the framework core — DI container, modules, config, logging, `Result` |
23
+ | [`quadkit-web`](https://pypi.org/project/quadkit-web/) | ASGI layer — controllers, routing, middleware, OpenAPI docs |
24
+ | [`quadkit-cli`](https://pypi.org/project/quadkit-cli/) | project scaffolding and code generators |
25
+ | [`quadkit-testing`](https://pypi.org/project/quadkit-testing/) | in-process test beds, fakes, fixtures |
26
+
67
27
  ## Installation
68
28
 
69
29
  ```bash
@@ -109,11 +69,32 @@ A pytest plugin registers automatically via entry points — no
109
69
  `fake_cache`, `fake_event_bus`, `fake_logger`, `fake_clock`,
110
70
  `fake_command_bus`, `fake_query_bus`, `fake_unit_of_work`,
111
71
  `fake_metrics`, `fake_config`, `fake_state_store`, `test_bed`,
112
- `test_container`, and `test_data`.
72
+ `test_container`, and `test_data`:
73
+
74
+ ```python
75
+ import pytest
76
+
77
+ from quadkit.contracts.domain.events import DomainEvent
113
78
 
114
- ## Optional extras
115
79
 
116
- Verified against the package's `pyproject.toml`:
80
+ class UserCreated(DomainEvent):
81
+ user_id: str
82
+ email: str
83
+
84
+
85
+ @pytest.mark.asyncio
86
+ async def test_signup_publishes(fake_event_bus) -> None:
87
+ await fake_event_bus.publish(UserCreated(user_id="1", email="a@b.c"))
88
+ fake_event_bus.assert_published(UserCreated, user_id="1")
89
+
90
+
91
+ def test_trial_expiry_is_deterministic(fake_clock) -> None:
92
+ t0 = fake_clock.now()
93
+ fake_clock.advance(30 * 24 * 3600)
94
+ assert (fake_clock.now() - t0).days == 30
95
+ ```
96
+
97
+ ## Optional extras
117
98
 
118
99
  | Extra | Contents |
119
100
  | --- | --- |
@@ -164,8 +145,12 @@ real services:
164
145
  | `FakeAuditLogger` | audit records |
165
146
  | `FakeTracer` / `FakeSpan` | tracing |
166
147
 
167
- Fakes that depend on packages outside the published set are not
168
- included in this distribution.
148
+ The published wheel carries the `ai`, `db` and `web` test clients and beds
149
+ plus the fakes and fixtures that need no private package. The `auth`,
150
+ `cache`, `events`, `search`, `storage`, `tasks`, `ui` test clients, the
151
+ AI/DB/task fixture modules, the secrets fake and `IntegrationEnvironment`
152
+ stay in this repository until their packages publish; asking the published
153
+ wheel for one raises `AttributeError` naming the module.
169
154
 
170
155
  ## Configuration
171
156
 
@@ -189,7 +174,7 @@ wheels.
189
174
  ## Security
190
175
 
191
176
  Fakes are in-process and safe to wire into unit suites. Report
192
- vulnerabilities privately per [SECURITY.md](../../SECURITY.md).
177
+ vulnerabilities privately per [SECURITY.md](https://github.com/dbtinoy-/quadkit/blob/main/SECURITY.md).
193
178
 
194
179
  ## Stability
195
180
 
@@ -197,6 +182,17 @@ Version `0.0.3` in the `0.x` series, released in lockstep with the
197
182
  other four distributions; APIs may change between minor versions until
198
183
  1.0 — pin an exact version (`quadkit-testing==0.0.3`) or a tight range
199
184
  (`>=0.0.3,<0.1.0`). Full policy:
200
- [stability and compatibility](../../docs/reference/stability.md).
185
+ [stability and compatibility](https://dbtinoy-.github.io/quadkit/reference/stability/).
186
+
187
+ ## Links
188
+
189
+ - **Documentation** — <https://dbtinoy-.github.io/quadkit/>
190
+ - **Getting started** — <https://dbtinoy-.github.io/quadkit/getting-started/installation/>
191
+ - **Changelog** — <https://github.com/dbtinoy-/quadkit/blob/main/CHANGELOG.md>
192
+ - **Issues** — <https://github.com/dbtinoy-/quadkit/issues>
193
+ - **Security** — report privately per [SECURITY.md](https://github.com/dbtinoy-/quadkit/blob/main/SECURITY.md)
194
+ - **Contributing** — [CONTRIBUTING.md](https://github.com/dbtinoy-/quadkit/blob/main/CONTRIBUTING.md)
201
195
 
202
- Issues: <https://github.com/dbtinoy-/quadkit/issues>
196
+ Apache-2.0 — see [LICENSE](https://github.com/dbtinoy-/quadkit/blob/main/LICENSE). "Quadkit" and the
197
+ Quadkit logo are trademarks of the project — see
198
+ [TRADEMARK.md](https://github.com/dbtinoy-/quadkit/blob/main/TRADEMARK.md).
@@ -6,7 +6,7 @@ build-backend = "hatchling.build"
6
6
 
7
7
  [project]
8
8
  name = "quadkit-testing"
9
- version = "0.0.3"
9
+ version = "0.0.41"
10
10
  description = "Centralized testing infrastructure for Quadkit Framework - Fixtures, factories, and utilities"
11
11
  readme = "README.md"
12
12
  requires-python = ">=3.11"
@@ -36,10 +36,10 @@ classifiers = [
36
36
  dependencies = [
37
37
  "quadkit>=0.0.2",
38
38
  "quadkit-contracts>=0.0.2",
39
- "pytest>=8.0.0",
40
- "pytest-asyncio>=0.21.0",
41
- "pytest-cov>=4.0.0",
42
- "pytest-mock>=3.10.0",
39
+ "pytest>=8.0.0,<10",
40
+ "pytest-asyncio>=0.21.0,<2",
41
+ "pytest-cov>=4.0.0,<8",
42
+ "pytest-mock>=3.10.0,<4",
43
43
  ]
44
44
  authors = [
45
45
  { name = "Quadkit Framework Team", email = "team@quadkit.dev" },
@@ -57,30 +57,30 @@ db = [
57
57
  "asyncpg>=0.29.0",
58
58
  ]
59
59
  web = [
60
- "httpx>=0.26.0",
61
- "httpx2>=2.0.0",
62
- "starlette>=0.28.0",
60
+ "httpx>=0.26.0,<1",
61
+ "httpx2>=2.0.0,<3",
62
+ "starlette>=0.28.0,<2",
63
63
  ]
64
64
  dev = [
65
- "black>=23.0.0",
66
- "ruff>=0.16.4",
67
- "mypy>=1.0.0",
65
+ "black>=23.0.0,<27",
66
+ "ruff>=0.16.4,<1",
67
+ "mypy>=1.0.0,<3",
68
68
  ]
69
69
  integration = [
70
- "asyncpg>=0.29.0",
71
- "aiosqlite>=0.19.0",
72
- "redis>=5.0.0",
73
- "aiokafka>=0.12.0",
74
- "motor>=3.3.0",
75
- "qdrant-client>=1.9.0",
76
- "neo4j>=5.18.0",
77
- "elasticsearch[async]>=8.12.0",
70
+ "asyncpg>=0.29.0,<1",
71
+ "aiosqlite>=0.19.0,<1",
72
+ "redis>=5.0.0,<9",
73
+ "aiokafka>=0.12.0,<1",
74
+ "motor>=3.3.0,<4",
75
+ "qdrant-client>=1.9.0,<2",
76
+ "neo4j>=5.18.0,<7",
77
+ "elasticsearch[async]>=8.12.0,<10",
78
78
  ]
79
79
 
80
80
  [project.urls]
81
- Homepage = "https://quadkit.dev"
81
+ Homepage = "https://dbtinoy-.github.io/quadkit/"
82
82
  Repository = "https://github.com/dbtinoy-/quadkit"
83
- Documentation = "https://quadkit.dev"
83
+ Documentation = "https://dbtinoy-.github.io/quadkit/"
84
84
  Issues = "https://github.com/dbtinoy-/quadkit/issues"
85
85
  Changelog = "https://github.com/dbtinoy-/quadkit/blob/main/CHANGELOG.md"
86
86
 
@@ -192,4 +192,3 @@ markers = [
192
192
  packages = [
193
193
  "src/quadkit",
194
194
  ]
195
-