taskito 0.16.4__tar.gz → 0.18.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 (343) hide show
  1. {taskito-0.16.4 → taskito-0.18.0}/Cargo.lock +217 -35
  2. {taskito-0.16.4 → taskito-0.18.0}/PKG-INFO +2 -1
  3. {taskito-0.16.4 → taskito-0.18.0}/crates/taskito-core/Cargo.toml +1 -1
  4. {taskito-0.16.4 → taskito-0.18.0}/crates/taskito-core/src/job.rs +3 -4
  5. {taskito-0.16.4 → taskito-0.18.0}/crates/taskito-core/src/scheduler/maintenance.rs +59 -1
  6. {taskito-0.16.4 → taskito-0.18.0}/crates/taskito-core/src/scheduler/mod.rs +115 -0
  7. {taskito-0.16.4 → taskito-0.18.0}/crates/taskito-core/src/scheduler/poller.rs +6 -3
  8. {taskito-0.16.4 → taskito-0.18.0}/crates/taskito-core/src/storage/diesel_common/dead_letter.rs +39 -11
  9. {taskito-0.16.4 → taskito-0.18.0}/crates/taskito-core/src/storage/diesel_common/jobs.rs +86 -125
  10. {taskito-0.16.4 → taskito-0.18.0}/crates/taskito-core/src/storage/diesel_common/locks.rs +29 -0
  11. {taskito-0.16.4 → taskito-0.18.0}/crates/taskito-core/src/storage/diesel_common/migrations.rs +25 -22
  12. {taskito-0.16.4 → taskito-0.18.0}/crates/taskito-core/src/storage/mod.rs +71 -0
  13. {taskito-0.16.4 → taskito-0.18.0}/crates/taskito-core/src/storage/models.rs +5 -21
  14. {taskito-0.16.4 → taskito-0.18.0}/crates/taskito-core/src/storage/postgres/archival.rs +0 -11
  15. taskito-0.18.0/crates/taskito-core/src/storage/postgres/jobs.rs +73 -0
  16. {taskito-0.16.4 → taskito-0.18.0}/crates/taskito-core/src/storage/postgres/mod.rs +9 -5
  17. {taskito-0.16.4 → taskito-0.18.0}/crates/taskito-core/src/storage/postgres/periodic.rs +32 -0
  18. {taskito-0.16.4 → taskito-0.18.0}/crates/taskito-core/src/storage/redis_backend/dead_letter.rs +78 -0
  19. {taskito-0.16.4 → taskito-0.18.0}/crates/taskito-core/src/storage/redis_backend/jobs/maintenance.rs +42 -0
  20. {taskito-0.16.4 → taskito-0.18.0}/crates/taskito-core/src/storage/redis_backend/locks.rs +43 -0
  21. {taskito-0.16.4 → taskito-0.18.0}/crates/taskito-core/src/storage/redis_backend/periodic.rs +88 -0
  22. {taskito-0.16.4 → taskito-0.18.0}/crates/taskito-core/src/storage/schema.rs +0 -9
  23. {taskito-0.16.4 → taskito-0.18.0}/crates/taskito-core/src/storage/sqlite/archival.rs +0 -11
  24. {taskito-0.16.4 → taskito-0.18.0}/crates/taskito-core/src/storage/sqlite/jobs.rs +26 -1
  25. {taskito-0.16.4 → taskito-0.18.0}/crates/taskito-core/src/storage/sqlite/mod.rs +9 -5
  26. {taskito-0.16.4 → taskito-0.18.0}/crates/taskito-core/src/storage/sqlite/periodic.rs +32 -0
  27. {taskito-0.16.4 → taskito-0.18.0}/crates/taskito-core/src/storage/sqlite/tests.rs +166 -41
  28. {taskito-0.16.4 → taskito-0.18.0}/crates/taskito-core/src/storage/traits.rs +26 -0
  29. {taskito-0.16.4 → taskito-0.18.0}/crates/taskito-core/tests/rust/storage_tests.rs +244 -15
  30. {taskito-0.16.4 → taskito-0.18.0}/crates/taskito-python/Cargo.toml +1 -1
  31. {taskito-0.16.4 → taskito-0.18.0}/crates/taskito-python/src/py_queue/inspection.rs +44 -0
  32. {taskito-0.16.4 → taskito-0.18.0}/crates/taskito-python/src/py_queue/mod.rs +33 -0
  33. {taskito-0.16.4 → taskito-0.18.0}/crates/taskito-python/src/py_queue/worker.rs +7 -2
  34. {taskito-0.16.4 → taskito-0.18.0}/crates/taskito-workflows/Cargo.toml +1 -1
  35. {taskito-0.16.4 → taskito-0.18.0}/pyproject.toml +2 -1
  36. {taskito-0.16.4 → taskito-0.18.0}/taskito/__init__.py +1 -1
  37. {taskito-0.16.4 → taskito-0.18.0}/taskito/_taskito.pyi +8 -0
  38. taskito-0.16.4/crates/taskito-core/src/storage/postgres/jobs.rs +0 -29
  39. {taskito-0.16.4 → taskito-0.18.0}/Cargo.toml +0 -0
  40. {taskito-0.16.4 → taskito-0.18.0}/LICENSE +0 -0
  41. {taskito-0.16.4 → taskito-0.18.0}/README.md +0 -0
  42. {taskito-0.16.4 → taskito-0.18.0}/crates/taskito-core/BINDING_CONTRACT.md +0 -0
  43. {taskito-0.16.4 → taskito-0.18.0}/crates/taskito-core/src/error.rs +0 -0
  44. {taskito-0.16.4 → taskito-0.18.0}/crates/taskito-core/src/lib.rs +0 -0
  45. {taskito-0.16.4 → taskito-0.18.0}/crates/taskito-core/src/periodic.rs +0 -0
  46. {taskito-0.16.4 → taskito-0.18.0}/crates/taskito-core/src/resilience/circuit_breaker.rs +0 -0
  47. {taskito-0.16.4 → taskito-0.18.0}/crates/taskito-core/src/resilience/dlq.rs +0 -0
  48. {taskito-0.16.4 → taskito-0.18.0}/crates/taskito-core/src/resilience/mod.rs +0 -0
  49. {taskito-0.16.4 → taskito-0.18.0}/crates/taskito-core/src/resilience/rate_limiter.rs +0 -0
  50. {taskito-0.16.4 → taskito-0.18.0}/crates/taskito-core/src/resilience/retry.rs +0 -0
  51. {taskito-0.16.4 → taskito-0.18.0}/crates/taskito-core/src/scheduler/result_handler.rs +0 -0
  52. {taskito-0.16.4 → taskito-0.18.0}/crates/taskito-core/src/scheduler/wake.rs +0 -0
  53. {taskito-0.16.4 → taskito-0.18.0}/crates/taskito-core/src/storage/diesel_common/archival.rs +0 -0
  54. {taskito-0.16.4 → taskito-0.18.0}/crates/taskito-core/src/storage/diesel_common/logs.rs +0 -0
  55. {taskito-0.16.4 → taskito-0.18.0}/crates/taskito-core/src/storage/diesel_common/metrics.rs +0 -0
  56. {taskito-0.16.4 → taskito-0.18.0}/crates/taskito-core/src/storage/diesel_common/mod.rs +0 -0
  57. {taskito-0.16.4 → taskito-0.18.0}/crates/taskito-core/src/storage/diesel_common/workers.rs +0 -0
  58. {taskito-0.16.4 → taskito-0.18.0}/crates/taskito-core/src/storage/notify.rs +0 -0
  59. {taskito-0.16.4 → taskito-0.18.0}/crates/taskito-core/src/storage/postgres/circuit_breakers.rs +0 -0
  60. {taskito-0.16.4 → taskito-0.18.0}/crates/taskito-core/src/storage/postgres/dashboard_settings.rs +0 -0
  61. {taskito-0.16.4 → taskito-0.18.0}/crates/taskito-core/src/storage/postgres/dead_letter.rs +0 -0
  62. {taskito-0.16.4 → taskito-0.18.0}/crates/taskito-core/src/storage/postgres/listener.rs +0 -0
  63. {taskito-0.16.4 → taskito-0.18.0}/crates/taskito-core/src/storage/postgres/locks.rs +0 -0
  64. {taskito-0.16.4 → taskito-0.18.0}/crates/taskito-core/src/storage/postgres/logs.rs +0 -0
  65. {taskito-0.16.4 → taskito-0.18.0}/crates/taskito-core/src/storage/postgres/metrics.rs +0 -0
  66. {taskito-0.16.4 → taskito-0.18.0}/crates/taskito-core/src/storage/postgres/queue_state.rs +0 -0
  67. {taskito-0.16.4 → taskito-0.18.0}/crates/taskito-core/src/storage/postgres/rate_limits.rs +0 -0
  68. {taskito-0.16.4 → taskito-0.18.0}/crates/taskito-core/src/storage/postgres/trait_impl.rs +0 -0
  69. {taskito-0.16.4 → taskito-0.18.0}/crates/taskito-core/src/storage/postgres/workers.rs +0 -0
  70. {taskito-0.16.4 → taskito-0.18.0}/crates/taskito-core/src/storage/redis_backend/archival.rs +0 -0
  71. {taskito-0.16.4 → taskito-0.18.0}/crates/taskito-core/src/storage/redis_backend/circuit_breakers.rs +0 -0
  72. {taskito-0.16.4 → taskito-0.18.0}/crates/taskito-core/src/storage/redis_backend/dashboard_settings.rs +0 -0
  73. {taskito-0.16.4 → taskito-0.18.0}/crates/taskito-core/src/storage/redis_backend/jobs/dequeue.rs +0 -0
  74. {taskito-0.16.4 → taskito-0.18.0}/crates/taskito-core/src/storage/redis_backend/jobs/enqueue.rs +0 -0
  75. {taskito-0.16.4 → taskito-0.18.0}/crates/taskito-core/src/storage/redis_backend/jobs/errors.rs +0 -0
  76. {taskito-0.16.4 → taskito-0.18.0}/crates/taskito-core/src/storage/redis_backend/jobs/helpers.rs +0 -0
  77. {taskito-0.16.4 → taskito-0.18.0}/crates/taskito-core/src/storage/redis_backend/jobs/mod.rs +0 -0
  78. {taskito-0.16.4 → taskito-0.18.0}/crates/taskito-core/src/storage/redis_backend/jobs/query.rs +0 -0
  79. {taskito-0.16.4 → taskito-0.18.0}/crates/taskito-core/src/storage/redis_backend/jobs/state.rs +0 -0
  80. {taskito-0.16.4 → taskito-0.18.0}/crates/taskito-core/src/storage/redis_backend/listener.rs +0 -0
  81. {taskito-0.16.4 → taskito-0.18.0}/crates/taskito-core/src/storage/redis_backend/logs.rs +0 -0
  82. {taskito-0.16.4 → taskito-0.18.0}/crates/taskito-core/src/storage/redis_backend/metrics.rs +0 -0
  83. {taskito-0.16.4 → taskito-0.18.0}/crates/taskito-core/src/storage/redis_backend/mod.rs +0 -0
  84. {taskito-0.16.4 → taskito-0.18.0}/crates/taskito-core/src/storage/redis_backend/queue_state.rs +0 -0
  85. {taskito-0.16.4 → taskito-0.18.0}/crates/taskito-core/src/storage/redis_backend/rate_limits.rs +0 -0
  86. {taskito-0.16.4 → taskito-0.18.0}/crates/taskito-core/src/storage/redis_backend/trait_impl.rs +0 -0
  87. {taskito-0.16.4 → taskito-0.18.0}/crates/taskito-core/src/storage/redis_backend/workers.rs +0 -0
  88. {taskito-0.16.4 → taskito-0.18.0}/crates/taskito-core/src/storage/sqlite/circuit_breakers.rs +0 -0
  89. {taskito-0.16.4 → taskito-0.18.0}/crates/taskito-core/src/storage/sqlite/dashboard_settings.rs +0 -0
  90. {taskito-0.16.4 → taskito-0.18.0}/crates/taskito-core/src/storage/sqlite/dead_letter.rs +0 -0
  91. {taskito-0.16.4 → taskito-0.18.0}/crates/taskito-core/src/storage/sqlite/locks.rs +0 -0
  92. {taskito-0.16.4 → taskito-0.18.0}/crates/taskito-core/src/storage/sqlite/logs.rs +0 -0
  93. {taskito-0.16.4 → taskito-0.18.0}/crates/taskito-core/src/storage/sqlite/metrics.rs +0 -0
  94. {taskito-0.16.4 → taskito-0.18.0}/crates/taskito-core/src/storage/sqlite/queue_state.rs +0 -0
  95. {taskito-0.16.4 → taskito-0.18.0}/crates/taskito-core/src/storage/sqlite/rate_limits.rs +0 -0
  96. {taskito-0.16.4 → taskito-0.18.0}/crates/taskito-core/src/storage/sqlite/trait_impl.rs +0 -0
  97. {taskito-0.16.4 → taskito-0.18.0}/crates/taskito-core/src/storage/sqlite/workers.rs +0 -0
  98. {taskito-0.16.4 → taskito-0.18.0}/crates/taskito-core/src/worker.rs +0 -0
  99. {taskito-0.16.4 → taskito-0.18.0}/crates/taskito-core/tests/rust.rs +0 -0
  100. {taskito-0.16.4 → taskito-0.18.0}/crates/taskito-python/src/async_worker.rs +0 -0
  101. {taskito-0.16.4 → taskito-0.18.0}/crates/taskito-python/src/lib.rs +0 -0
  102. {taskito-0.16.4 → taskito-0.18.0}/crates/taskito-python/src/native_async/mod.rs +0 -0
  103. {taskito-0.16.4 → taskito-0.18.0}/crates/taskito-python/src/native_async/pool.rs +0 -0
  104. {taskito-0.16.4 → taskito-0.18.0}/crates/taskito-python/src/native_async/result_sender.rs +0 -0
  105. {taskito-0.16.4 → taskito-0.18.0}/crates/taskito-python/src/native_async/task_executor.rs +0 -0
  106. {taskito-0.16.4 → taskito-0.18.0}/crates/taskito-python/src/prefork/child.rs +0 -0
  107. {taskito-0.16.4 → taskito-0.18.0}/crates/taskito-python/src/prefork/dispatch.rs +0 -0
  108. {taskito-0.16.4 → taskito-0.18.0}/crates/taskito-python/src/prefork/mod.rs +0 -0
  109. {taskito-0.16.4 → taskito-0.18.0}/crates/taskito-python/src/prefork/protocol.rs +0 -0
  110. {taskito-0.16.4 → taskito-0.18.0}/crates/taskito-python/src/prefork/slot.rs +0 -0
  111. {taskito-0.16.4 → taskito-0.18.0}/crates/taskito-python/src/prefork/watchdog.rs +0 -0
  112. {taskito-0.16.4 → taskito-0.18.0}/crates/taskito-python/src/py_config.rs +0 -0
  113. {taskito-0.16.4 → taskito-0.18.0}/crates/taskito-python/src/py_job.rs +0 -0
  114. {taskito-0.16.4 → taskito-0.18.0}/crates/taskito-python/src/py_queue/workflow_ops/fan_out.rs +0 -0
  115. {taskito-0.16.4 → taskito-0.18.0}/crates/taskito-python/src/py_queue/workflow_ops/gates.rs +0 -0
  116. {taskito-0.16.4 → taskito-0.18.0}/crates/taskito-python/src/py_queue/workflow_ops/lifecycle.rs +0 -0
  117. {taskito-0.16.4 → taskito-0.18.0}/crates/taskito-python/src/py_queue/workflow_ops/mod.rs +0 -0
  118. {taskito-0.16.4 → taskito-0.18.0}/crates/taskito-python/src/py_queue/workflow_ops/nodes.rs +0 -0
  119. {taskito-0.16.4 → taskito-0.18.0}/crates/taskito-python/src/py_queue/workflow_ops/queries.rs +0 -0
  120. {taskito-0.16.4 → taskito-0.18.0}/crates/taskito-python/src/py_queue/workflow_ops/saga.rs +0 -0
  121. {taskito-0.16.4 → taskito-0.18.0}/crates/taskito-python/src/py_queue/workflow_ops/test_helpers.rs +0 -0
  122. {taskito-0.16.4 → taskito-0.18.0}/crates/taskito-python/src/py_worker.rs +0 -0
  123. {taskito-0.16.4 → taskito-0.18.0}/crates/taskito-python/src/py_workflow/mod.rs +0 -0
  124. {taskito-0.16.4 → taskito-0.18.0}/crates/taskito-workflows/src/common.rs +0 -0
  125. {taskito-0.16.4 → taskito-0.18.0}/crates/taskito-workflows/src/definition.rs +0 -0
  126. {taskito-0.16.4 → taskito-0.18.0}/crates/taskito-workflows/src/diesel_common.rs +0 -0
  127. {taskito-0.16.4 → taskito-0.18.0}/crates/taskito-workflows/src/error.rs +0 -0
  128. {taskito-0.16.4 → taskito-0.18.0}/crates/taskito-workflows/src/lib.rs +0 -0
  129. {taskito-0.16.4 → taskito-0.18.0}/crates/taskito-workflows/src/node.rs +0 -0
  130. {taskito-0.16.4 → taskito-0.18.0}/crates/taskito-workflows/src/postgres_store.rs +0 -0
  131. {taskito-0.16.4 → taskito-0.18.0}/crates/taskito-workflows/src/redis_store.rs +0 -0
  132. {taskito-0.16.4 → taskito-0.18.0}/crates/taskito-workflows/src/run.rs +0 -0
  133. {taskito-0.16.4 → taskito-0.18.0}/crates/taskito-workflows/src/sqlite_store.rs +0 -0
  134. {taskito-0.16.4 → taskito-0.18.0}/crates/taskito-workflows/src/state.rs +0 -0
  135. {taskito-0.16.4 → taskito-0.18.0}/crates/taskito-workflows/src/storage.rs +0 -0
  136. {taskito-0.16.4 → taskito-0.18.0}/crates/taskito-workflows/src/tests.rs +0 -0
  137. {taskito-0.16.4 → taskito-0.18.0}/crates/taskito-workflows/src/topology.rs +0 -0
  138. {taskito-0.16.4 → taskito-0.18.0}/crates/taskito-workflows/tests/storage_contract.rs +0 -0
  139. {taskito-0.16.4 → taskito-0.18.0}/taskito/_active_context.py +0 -0
  140. {taskito-0.16.4 → taskito-0.18.0}/taskito/app.py +0 -0
  141. {taskito-0.16.4 → taskito-0.18.0}/taskito/async_support/__init__.py +0 -0
  142. {taskito-0.16.4 → taskito-0.18.0}/taskito/async_support/canvas.py +0 -0
  143. {taskito-0.16.4 → taskito-0.18.0}/taskito/async_support/context.py +0 -0
  144. {taskito-0.16.4 → taskito-0.18.0}/taskito/async_support/executor.py +0 -0
  145. {taskito-0.16.4 → taskito-0.18.0}/taskito/async_support/helpers.py +0 -0
  146. {taskito-0.16.4 → taskito-0.18.0}/taskito/async_support/locks.py +0 -0
  147. {taskito-0.16.4 → taskito-0.18.0}/taskito/async_support/mixins.py +0 -0
  148. {taskito-0.16.4 → taskito-0.18.0}/taskito/async_support/result.py +0 -0
  149. {taskito-0.16.4 → taskito-0.18.0}/taskito/autoscale/__init__.py +0 -0
  150. {taskito-0.16.4 → taskito-0.18.0}/taskito/autoscale/config.py +0 -0
  151. {taskito-0.16.4 → taskito-0.18.0}/taskito/autoscale/controller.py +0 -0
  152. {taskito-0.16.4 → taskito-0.18.0}/taskito/autoscale/process_manager.py +0 -0
  153. {taskito-0.16.4 → taskito-0.18.0}/taskito/batching/__init__.py +0 -0
  154. {taskito-0.16.4 → taskito-0.18.0}/taskito/batching/accumulator.py +0 -0
  155. {taskito-0.16.4 → taskito-0.18.0}/taskito/batching/config.py +0 -0
  156. {taskito-0.16.4 → taskito-0.18.0}/taskito/batching/item_result.py +0 -0
  157. {taskito-0.16.4 → taskito-0.18.0}/taskito/batching/result.py +0 -0
  158. {taskito-0.16.4 → taskito-0.18.0}/taskito/canvas.py +0 -0
  159. {taskito-0.16.4 → taskito-0.18.0}/taskito/cli.py +0 -0
  160. {taskito-0.16.4 → taskito-0.18.0}/taskito/context.py +0 -0
  161. {taskito-0.16.4 → taskito-0.18.0}/taskito/contrib/__init__.py +0 -0
  162. {taskito-0.16.4 → taskito-0.18.0}/taskito/contrib/django/__init__.py +0 -0
  163. {taskito-0.16.4 → taskito-0.18.0}/taskito/contrib/django/admin.py +0 -0
  164. {taskito-0.16.4 → taskito-0.18.0}/taskito/contrib/django/apps.py +0 -0
  165. {taskito-0.16.4 → taskito-0.18.0}/taskito/contrib/django/management/__init__.py +0 -0
  166. {taskito-0.16.4 → taskito-0.18.0}/taskito/contrib/django/management/commands/__init__.py +0 -0
  167. {taskito-0.16.4 → taskito-0.18.0}/taskito/contrib/django/management/commands/taskito_dashboard.py +0 -0
  168. {taskito-0.16.4 → taskito-0.18.0}/taskito/contrib/django/management/commands/taskito_info.py +0 -0
  169. {taskito-0.16.4 → taskito-0.18.0}/taskito/contrib/django/management/commands/taskito_worker.py +0 -0
  170. {taskito-0.16.4 → taskito-0.18.0}/taskito/contrib/django/settings.py +0 -0
  171. {taskito-0.16.4 → taskito-0.18.0}/taskito/contrib/django/templates/taskito/admin/base.html +0 -0
  172. {taskito-0.16.4 → taskito-0.18.0}/taskito/contrib/django/templates/taskito/admin/dashboard.html +0 -0
  173. {taskito-0.16.4 → taskito-0.18.0}/taskito/contrib/django/templates/taskito/admin/dead_letters.html +0 -0
  174. {taskito-0.16.4 → taskito-0.18.0}/taskito/contrib/django/templates/taskito/admin/job_detail.html +0 -0
  175. {taskito-0.16.4 → taskito-0.18.0}/taskito/contrib/django/templates/taskito/admin/jobs.html +0 -0
  176. {taskito-0.16.4 → taskito-0.18.0}/taskito/contrib/django/templatetags/__init__.py +0 -0
  177. {taskito-0.16.4 → taskito-0.18.0}/taskito/contrib/django/templatetags/taskito_admin.py +0 -0
  178. {taskito-0.16.4 → taskito-0.18.0}/taskito/contrib/fastapi.py +0 -0
  179. {taskito-0.16.4 → taskito-0.18.0}/taskito/contrib/flask.py +0 -0
  180. {taskito-0.16.4 → taskito-0.18.0}/taskito/contrib/otel.py +0 -0
  181. {taskito-0.16.4 → taskito-0.18.0}/taskito/contrib/prometheus.py +0 -0
  182. {taskito-0.16.4 → taskito-0.18.0}/taskito/contrib/sentry.py +0 -0
  183. {taskito-0.16.4 → taskito-0.18.0}/taskito/dashboard/__init__.py +0 -0
  184. {taskito-0.16.4 → taskito-0.18.0}/taskito/dashboard/_testing.py +0 -0
  185. {taskito-0.16.4 → taskito-0.18.0}/taskito/dashboard/auth.py +0 -0
  186. {taskito-0.16.4 → taskito-0.18.0}/taskito/dashboard/delivery_store.py +0 -0
  187. {taskito-0.16.4 → taskito-0.18.0}/taskito/dashboard/errors.py +0 -0
  188. {taskito-0.16.4 → taskito-0.18.0}/taskito/dashboard/handlers/__init__.py +0 -0
  189. {taskito-0.16.4 → taskito-0.18.0}/taskito/dashboard/handlers/_qs.py +0 -0
  190. {taskito-0.16.4 → taskito-0.18.0}/taskito/dashboard/handlers/auth.py +0 -0
  191. {taskito-0.16.4 → taskito-0.18.0}/taskito/dashboard/handlers/dead_letters.py +0 -0
  192. {taskito-0.16.4 → taskito-0.18.0}/taskito/dashboard/handlers/jobs.py +0 -0
  193. {taskito-0.16.4 → taskito-0.18.0}/taskito/dashboard/handlers/logs.py +0 -0
  194. {taskito-0.16.4 → taskito-0.18.0}/taskito/dashboard/handlers/metrics.py +0 -0
  195. {taskito-0.16.4 → taskito-0.18.0}/taskito/dashboard/handlers/middleware.py +0 -0
  196. {taskito-0.16.4 → taskito-0.18.0}/taskito/dashboard/handlers/oauth.py +0 -0
  197. {taskito-0.16.4 → taskito-0.18.0}/taskito/dashboard/handlers/overrides.py +0 -0
  198. {taskito-0.16.4 → taskito-0.18.0}/taskito/dashboard/handlers/queues.py +0 -0
  199. {taskito-0.16.4 → taskito-0.18.0}/taskito/dashboard/handlers/scaler.py +0 -0
  200. {taskito-0.16.4 → taskito-0.18.0}/taskito/dashboard/handlers/settings.py +0 -0
  201. {taskito-0.16.4 → taskito-0.18.0}/taskito/dashboard/handlers/webhook_deliveries.py +0 -0
  202. {taskito-0.16.4 → taskito-0.18.0}/taskito/dashboard/handlers/webhooks.py +0 -0
  203. {taskito-0.16.4 → taskito-0.18.0}/taskito/dashboard/handlers/workflows.py +0 -0
  204. {taskito-0.16.4 → taskito-0.18.0}/taskito/dashboard/middleware_store.py +0 -0
  205. {taskito-0.16.4 → taskito-0.18.0}/taskito/dashboard/oauth/__init__.py +0 -0
  206. {taskito-0.16.4 → taskito-0.18.0}/taskito/dashboard/oauth/config.py +0 -0
  207. {taskito-0.16.4 → taskito-0.18.0}/taskito/dashboard/oauth/flow.py +0 -0
  208. {taskito-0.16.4 → taskito-0.18.0}/taskito/dashboard/oauth/identity.py +0 -0
  209. {taskito-0.16.4 → taskito-0.18.0}/taskito/dashboard/oauth/pkce.py +0 -0
  210. {taskito-0.16.4 → taskito-0.18.0}/taskito/dashboard/oauth/providers.py +0 -0
  211. {taskito-0.16.4 → taskito-0.18.0}/taskito/dashboard/oauth/state_store.py +0 -0
  212. {taskito-0.16.4 → taskito-0.18.0}/taskito/dashboard/overrides_store.py +0 -0
  213. {taskito-0.16.4 → taskito-0.18.0}/taskito/dashboard/request_context.py +0 -0
  214. {taskito-0.16.4 → taskito-0.18.0}/taskito/dashboard/routes.py +0 -0
  215. {taskito-0.16.4 → taskito-0.18.0}/taskito/dashboard/server.py +0 -0
  216. {taskito-0.16.4 → taskito-0.18.0}/taskito/dashboard/static.py +0 -0
  217. {taskito-0.16.4 → taskito-0.18.0}/taskito/dashboard/url_safety.py +0 -0
  218. {taskito-0.16.4 → taskito-0.18.0}/taskito/dashboard/webhook_store.py +0 -0
  219. {taskito-0.16.4 → taskito-0.18.0}/taskito/events.py +0 -0
  220. {taskito-0.16.4 → taskito-0.18.0}/taskito/exceptions.py +0 -0
  221. {taskito-0.16.4 → taskito-0.18.0}/taskito/health.py +0 -0
  222. {taskito-0.16.4 → taskito-0.18.0}/taskito/inject.py +0 -0
  223. {taskito-0.16.4 → taskito-0.18.0}/taskito/interception/__init__.py +0 -0
  224. {taskito-0.16.4 → taskito-0.18.0}/taskito/interception/built_in.py +0 -0
  225. {taskito-0.16.4 → taskito-0.18.0}/taskito/interception/converters.py +0 -0
  226. {taskito-0.16.4 → taskito-0.18.0}/taskito/interception/errors.py +0 -0
  227. {taskito-0.16.4 → taskito-0.18.0}/taskito/interception/interceptor.py +0 -0
  228. {taskito-0.16.4 → taskito-0.18.0}/taskito/interception/metrics.py +0 -0
  229. {taskito-0.16.4 → taskito-0.18.0}/taskito/interception/reconstruct.py +0 -0
  230. {taskito-0.16.4 → taskito-0.18.0}/taskito/interception/registry.py +0 -0
  231. {taskito-0.16.4 → taskito-0.18.0}/taskito/interception/strategy.py +0 -0
  232. {taskito-0.16.4 → taskito-0.18.0}/taskito/interception/walker.py +0 -0
  233. {taskito-0.16.4 → taskito-0.18.0}/taskito/locks.py +0 -0
  234. {taskito-0.16.4 → taskito-0.18.0}/taskito/log_config.py +0 -0
  235. {taskito-0.16.4 → taskito-0.18.0}/taskito/mesh.py +0 -0
  236. {taskito-0.16.4 → taskito-0.18.0}/taskito/middleware.py +0 -0
  237. {taskito-0.16.4 → taskito-0.18.0}/taskito/mixins/__init__.py +0 -0
  238. {taskito-0.16.4 → taskito-0.18.0}/taskito/mixins/_shared.py +0 -0
  239. {taskito-0.16.4 → taskito-0.18.0}/taskito/mixins/decorators.py +0 -0
  240. {taskito-0.16.4 → taskito-0.18.0}/taskito/mixins/events.py +0 -0
  241. {taskito-0.16.4 → taskito-0.18.0}/taskito/mixins/inspection.py +0 -0
  242. {taskito-0.16.4 → taskito-0.18.0}/taskito/mixins/lifecycle.py +0 -0
  243. {taskito-0.16.4 → taskito-0.18.0}/taskito/mixins/locks.py +0 -0
  244. {taskito-0.16.4 → taskito-0.18.0}/taskito/mixins/middleware_admin.py +0 -0
  245. {taskito-0.16.4 → taskito-0.18.0}/taskito/mixins/operations.py +0 -0
  246. {taskito-0.16.4 → taskito-0.18.0}/taskito/mixins/overrides.py +0 -0
  247. {taskito-0.16.4 → taskito-0.18.0}/taskito/mixins/predicates.py +0 -0
  248. {taskito-0.16.4 → taskito-0.18.0}/taskito/mixins/resources.py +0 -0
  249. {taskito-0.16.4 → taskito-0.18.0}/taskito/mixins/runtime_config.py +0 -0
  250. {taskito-0.16.4 → taskito-0.18.0}/taskito/mixins/settings.py +0 -0
  251. {taskito-0.16.4 → taskito-0.18.0}/taskito/notes.py +0 -0
  252. {taskito-0.16.4 → taskito-0.18.0}/taskito/predicates/__init__.py +0 -0
  253. {taskito-0.16.4 → taskito-0.18.0}/taskito/predicates/context.py +0 -0
  254. {taskito-0.16.4 → taskito-0.18.0}/taskito/predicates/core.py +0 -0
  255. {taskito-0.16.4 → taskito-0.18.0}/taskito/predicates/evaluate.py +0 -0
  256. {taskito-0.16.4 → taskito-0.18.0}/taskito/predicates/metrics.py +0 -0
  257. {taskito-0.16.4 → taskito-0.18.0}/taskito/predicates/outcomes.py +0 -0
  258. {taskito-0.16.4 → taskito-0.18.0}/taskito/predicates/parser.py +0 -0
  259. {taskito-0.16.4 → taskito-0.18.0}/taskito/predicates/providers.py +0 -0
  260. {taskito-0.16.4 → taskito-0.18.0}/taskito/predicates/recipes/__init__.py +0 -0
  261. {taskito-0.16.4 → taskito-0.18.0}/taskito/predicates/recipes/attributes.py +0 -0
  262. {taskito-0.16.4 → taskito-0.18.0}/taskito/predicates/recipes/config.py +0 -0
  263. {taskito-0.16.4 → taskito-0.18.0}/taskito/predicates/recipes/system.py +0 -0
  264. {taskito-0.16.4 → taskito-0.18.0}/taskito/predicates/recipes/time.py +0 -0
  265. {taskito-0.16.4 → taskito-0.18.0}/taskito/predicates/registry.py +0 -0
  266. {taskito-0.16.4 → taskito-0.18.0}/taskito/prefork/__init__.py +0 -0
  267. {taskito-0.16.4 → taskito-0.18.0}/taskito/prefork/__main__.py +0 -0
  268. {taskito-0.16.4 → taskito-0.18.0}/taskito/prefork/child.py +0 -0
  269. {taskito-0.16.4 → taskito-0.18.0}/taskito/proxies/__init__.py +0 -0
  270. {taskito-0.16.4 → taskito-0.18.0}/taskito/proxies/built_in.py +0 -0
  271. {taskito-0.16.4 → taskito-0.18.0}/taskito/proxies/handler.py +0 -0
  272. {taskito-0.16.4 → taskito-0.18.0}/taskito/proxies/handlers/__init__.py +0 -0
  273. {taskito-0.16.4 → taskito-0.18.0}/taskito/proxies/handlers/boto3_client.py +0 -0
  274. {taskito-0.16.4 → taskito-0.18.0}/taskito/proxies/handlers/file.py +0 -0
  275. {taskito-0.16.4 → taskito-0.18.0}/taskito/proxies/handlers/gcs_client.py +0 -0
  276. {taskito-0.16.4 → taskito-0.18.0}/taskito/proxies/handlers/httpx_client.py +0 -0
  277. {taskito-0.16.4 → taskito-0.18.0}/taskito/proxies/handlers/logger.py +0 -0
  278. {taskito-0.16.4 → taskito-0.18.0}/taskito/proxies/handlers/requests_session.py +0 -0
  279. {taskito-0.16.4 → taskito-0.18.0}/taskito/proxies/metrics.py +0 -0
  280. {taskito-0.16.4 → taskito-0.18.0}/taskito/proxies/no_proxy.py +0 -0
  281. {taskito-0.16.4 → taskito-0.18.0}/taskito/proxies/reconstruct.py +0 -0
  282. {taskito-0.16.4 → taskito-0.18.0}/taskito/proxies/registry.py +0 -0
  283. {taskito-0.16.4 → taskito-0.18.0}/taskito/proxies/schema.py +0 -0
  284. {taskito-0.16.4 → taskito-0.18.0}/taskito/proxies/signing.py +0 -0
  285. {taskito-0.16.4 → taskito-0.18.0}/taskito/py.typed +0 -0
  286. {taskito-0.16.4 → taskito-0.18.0}/taskito/resources/__init__.py +0 -0
  287. {taskito-0.16.4 → taskito-0.18.0}/taskito/resources/definition.py +0 -0
  288. {taskito-0.16.4 → taskito-0.18.0}/taskito/resources/frozen.py +0 -0
  289. {taskito-0.16.4 → taskito-0.18.0}/taskito/resources/graph.py +0 -0
  290. {taskito-0.16.4 → taskito-0.18.0}/taskito/resources/health.py +0 -0
  291. {taskito-0.16.4 → taskito-0.18.0}/taskito/resources/pool.py +0 -0
  292. {taskito-0.16.4 → taskito-0.18.0}/taskito/resources/runtime.py +0 -0
  293. {taskito-0.16.4 → taskito-0.18.0}/taskito/resources/thread_local.py +0 -0
  294. {taskito-0.16.4 → taskito-0.18.0}/taskito/resources/toml_config.py +0 -0
  295. {taskito-0.16.4 → taskito-0.18.0}/taskito/result.py +0 -0
  296. {taskito-0.16.4 → taskito-0.18.0}/taskito/scaler.py +0 -0
  297. {taskito-0.16.4 → taskito-0.18.0}/taskito/serializers.py +0 -0
  298. {taskito-0.16.4 → taskito-0.18.0}/taskito/static/dashboard/assets/ibm-plex-mono-latin-400-normal-CvHOgSBP.woff +0 -0
  299. {taskito-0.16.4 → taskito-0.18.0}/taskito/static/dashboard/assets/ibm-plex-mono-latin-400-normal-DMJ8VG8y.woff2 +0 -0
  300. {taskito-0.16.4 → taskito-0.18.0}/taskito/static/dashboard/assets/ibm-plex-mono-latin-500-normal-CB9ihrfo.woff +0 -0
  301. {taskito-0.16.4 → taskito-0.18.0}/taskito/static/dashboard/assets/ibm-plex-mono-latin-500-normal-DSY6xOcd.woff2 +0 -0
  302. {taskito-0.16.4 → taskito-0.18.0}/taskito/static/dashboard/assets/ibm-plex-mono-latin-600-normal-BgSNZQsw.woff2 +0 -0
  303. {taskito-0.16.4 → taskito-0.18.0}/taskito/static/dashboard/assets/ibm-plex-mono-latin-600-normal-DWFSQ4vo.woff +0 -0
  304. {taskito-0.16.4 → taskito-0.18.0}/taskito/static/dashboard/assets/ibm-plex-sans-latin-400-normal-CDDApCn2.woff2 +0 -0
  305. {taskito-0.16.4 → taskito-0.18.0}/taskito/static/dashboard/assets/ibm-plex-sans-latin-400-normal-CYLoc0-x.woff +0 -0
  306. {taskito-0.16.4 → taskito-0.18.0}/taskito/static/dashboard/assets/ibm-plex-sans-latin-500-normal-6ng42L7E.woff2 +0 -0
  307. {taskito-0.16.4 → taskito-0.18.0}/taskito/static/dashboard/assets/ibm-plex-sans-latin-500-normal-BgVn5rGT.woff +0 -0
  308. {taskito-0.16.4 → taskito-0.18.0}/taskito/static/dashboard/assets/ibm-plex-sans-latin-600-normal-Cu4Hd6ag.woff +0 -0
  309. {taskito-0.16.4 → taskito-0.18.0}/taskito/static/dashboard/assets/ibm-plex-sans-latin-600-normal-CuJfVYMP.woff2 +0 -0
  310. {taskito-0.16.4 → taskito-0.18.0}/taskito/static/dashboard/assets/ibm-plex-serif-latin-500-normal-C3_OdgN3.woff +0 -0
  311. {taskito-0.16.4 → taskito-0.18.0}/taskito/static/dashboard/assets/ibm-plex-serif-latin-500-normal-REKAfBVG.woff2 +0 -0
  312. {taskito-0.16.4 → taskito-0.18.0}/taskito/static/dashboard/assets/ibm-plex-serif-latin-600-normal-D3rpGdkS.woff +0 -0
  313. {taskito-0.16.4 → taskito-0.18.0}/taskito/static/dashboard/assets/ibm-plex-serif-latin-600-normal-DAxitmSu.woff2 +0 -0
  314. {taskito-0.16.4 → taskito-0.18.0}/taskito/static/dashboard/assets/index-CDFUchyu.js +0 -0
  315. {taskito-0.16.4 → taskito-0.18.0}/taskito/static/dashboard/assets/index-CM8gBS-q.css +0 -0
  316. {taskito-0.16.4 → taskito-0.18.0}/taskito/static/dashboard/assets/logs.lazy-BFbH9caD.js +0 -0
  317. {taskito-0.16.4 → taskito-0.18.0}/taskito/static/dashboard/assets/metrics.lazy-CgfKykLV.js +0 -0
  318. {taskito-0.16.4 → taskito-0.18.0}/taskito/static/dashboard/index.html +0 -0
  319. {taskito-0.16.4 → taskito-0.18.0}/taskito/task.py +0 -0
  320. {taskito-0.16.4 → taskito-0.18.0}/taskito/testing.py +0 -0
  321. {taskito-0.16.4 → taskito-0.18.0}/taskito/webhooks.py +0 -0
  322. {taskito-0.16.4 → taskito-0.18.0}/taskito/workflows/__init__.py +0 -0
  323. {taskito-0.16.4 → taskito-0.18.0}/taskito/workflows/analysis.py +0 -0
  324. {taskito-0.16.4 → taskito-0.18.0}/taskito/workflows/builder.py +0 -0
  325. {taskito-0.16.4 → taskito-0.18.0}/taskito/workflows/context.py +0 -0
  326. {taskito-0.16.4 → taskito-0.18.0}/taskito/workflows/fan_out.py +0 -0
  327. {taskito-0.16.4 → taskito-0.18.0}/taskito/workflows/incremental.py +0 -0
  328. {taskito-0.16.4 → taskito-0.18.0}/taskito/workflows/mixins.py +0 -0
  329. {taskito-0.16.4 → taskito-0.18.0}/taskito/workflows/run.py +0 -0
  330. {taskito-0.16.4 → taskito-0.18.0}/taskito/workflows/saga/__init__.py +0 -0
  331. {taskito-0.16.4 → taskito-0.18.0}/taskito/workflows/saga/context.py +0 -0
  332. {taskito-0.16.4 → taskito-0.18.0}/taskito/workflows/saga/orchestrator.py +0 -0
  333. {taskito-0.16.4 → taskito-0.18.0}/taskito/workflows/tracker/__init__.py +0 -0
  334. {taskito-0.16.4 → taskito-0.18.0}/taskito/workflows/tracker/dag.py +0 -0
  335. {taskito-0.16.4 → taskito-0.18.0}/taskito/workflows/tracker/event_routing.py +0 -0
  336. {taskito-0.16.4 → taskito-0.18.0}/taskito/workflows/tracker/fan_out.py +0 -0
  337. {taskito-0.16.4 → taskito-0.18.0}/taskito/workflows/tracker/finalization.py +0 -0
  338. {taskito-0.16.4 → taskito-0.18.0}/taskito/workflows/tracker/gates.py +0 -0
  339. {taskito-0.16.4 → taskito-0.18.0}/taskito/workflows/tracker/sub_workflows.py +0 -0
  340. {taskito-0.16.4 → taskito-0.18.0}/taskito/workflows/tracker/tracker.py +0 -0
  341. {taskito-0.16.4 → taskito-0.18.0}/taskito/workflows/tracker/types.py +0 -0
  342. {taskito-0.16.4 → taskito-0.18.0}/taskito/workflows/types.py +0 -0
  343. {taskito-0.16.4 → taskito-0.18.0}/taskito/workflows/visualization.py +0 -0
@@ -120,6 +120,12 @@ dependencies = [
120
120
  "shlex",
121
121
  ]
122
122
 
123
+ [[package]]
124
+ name = "cesu8"
125
+ version = "1.1.0"
126
+ source = "registry+https://github.com/rust-lang/crates.io-index"
127
+ checksum = "6d43a04d8753f35258c91f8ec639f792891f748a1edbd759cf1dcea3382ad83c"
128
+
123
129
  [[package]]
124
130
  name = "cfg-if"
125
131
  version = "1.0.4"
@@ -139,9 +145,9 @@ dependencies = [
139
145
 
140
146
  [[package]]
141
147
  name = "chrono"
142
- version = "0.4.44"
148
+ version = "0.4.45"
143
149
  source = "registry+https://github.com/rust-lang/crates.io-index"
144
- checksum = "c673075a2e0e5f4a1dde27ce9dee1ea4558c7ffe648f576438a20ca1d2acc4b0"
150
+ checksum = "1aa79e62e7697b8e29b513a68abacf485adcd1fe8284a4316c5ae868e6633327"
145
151
  dependencies = [
146
152
  "iana-time-zone",
147
153
  "js-sys",
@@ -243,7 +249,7 @@ dependencies = [
243
249
  "regex",
244
250
  "serde",
245
251
  "serde_json",
246
- "thiserror",
252
+ "thiserror 2.0.18",
247
253
  ]
248
254
 
249
255
  [[package]]
@@ -292,9 +298,9 @@ dependencies = [
292
298
 
293
299
  [[package]]
294
300
  name = "diesel"
295
- version = "2.3.8"
301
+ version = "2.3.10"
296
302
  source = "registry+https://github.com/rust-lang/crates.io-index"
297
- checksum = "78df0e4e8c596662edb07fbfbb7f23769cca35049827df5f909084d956b6aeaf"
303
+ checksum = "29fe29a87fb84c631ffb3ba21798c4b1f3a964701ba78f0dce4bf8668562ec88"
298
304
  dependencies = [
299
305
  "bitflags",
300
306
  "byteorder",
@@ -653,6 +659,50 @@ version = "1.0.17"
653
659
  source = "registry+https://github.com/rust-lang/crates.io-index"
654
660
  checksum = "92ecc6618181def0457392ccd0ee51198e065e016d1d527a7ac1b6dc7c1f09d2"
655
661
 
662
+ [[package]]
663
+ name = "jni"
664
+ version = "0.21.1"
665
+ source = "registry+https://github.com/rust-lang/crates.io-index"
666
+ checksum = "1a87aa2bb7d2af34197c04845522473242e1aa17c12f4935d5856491a7fb8c97"
667
+ dependencies = [
668
+ "cesu8",
669
+ "cfg-if",
670
+ "combine",
671
+ "jni-sys 0.3.1",
672
+ "log",
673
+ "thiserror 1.0.69",
674
+ "walkdir",
675
+ "windows-sys 0.45.0",
676
+ ]
677
+
678
+ [[package]]
679
+ name = "jni-sys"
680
+ version = "0.3.1"
681
+ source = "registry+https://github.com/rust-lang/crates.io-index"
682
+ checksum = "41a652e1f9b6e0275df1f15b32661cf0d4b78d4d87ddec5e0c3c20f097433258"
683
+ dependencies = [
684
+ "jni-sys 0.4.1",
685
+ ]
686
+
687
+ [[package]]
688
+ name = "jni-sys"
689
+ version = "0.4.1"
690
+ source = "registry+https://github.com/rust-lang/crates.io-index"
691
+ checksum = "c6377a88cb3910bee9b0fa88d4f42e1d2da8e79915598f65fb0c7ee14c878af2"
692
+ dependencies = [
693
+ "jni-sys-macros",
694
+ ]
695
+
696
+ [[package]]
697
+ name = "jni-sys-macros"
698
+ version = "0.4.1"
699
+ source = "registry+https://github.com/rust-lang/crates.io-index"
700
+ checksum = "38c0b942f458fe50cdac086d2f946512305e5631e720728f2a61aabcd47a6264"
701
+ dependencies = [
702
+ "quote",
703
+ "syn",
704
+ ]
705
+
656
706
  [[package]]
657
707
  name = "js-sys"
658
708
  version = "0.3.88"
@@ -719,9 +769,9 @@ dependencies = [
719
769
 
720
770
  [[package]]
721
771
  name = "log"
722
- version = "0.4.29"
772
+ version = "0.4.33"
723
773
  source = "registry+https://github.com/rust-lang/crates.io-index"
724
- checksum = "5e5032e24019045c762d3c0f28f5b6b8bbf38563a65908389bf7978758920897"
774
+ checksum = "0ceec5bc11778974d1bcb055b18002eba7f4b3518b6a0081b3af5f21666da9ad"
725
775
 
726
776
  [[package]]
727
777
  name = "memchr"
@@ -858,9 +908,9 @@ dependencies = [
858
908
 
859
909
  [[package]]
860
910
  name = "openssl-sys"
861
- version = "0.9.111"
911
+ version = "0.9.117"
862
912
  source = "registry+https://github.com/rust-lang/crates.io-index"
863
- checksum = "82cab2d520aa75e3c58898289429321eb788c3106963d0dc886ec7a5f4adc321"
913
+ checksum = "b47e7e6bb2c38cd930d25a23b40fa52e068c10e85f3e03a7f5ba5aaca5713695"
864
914
  dependencies = [
865
915
  "cc",
866
916
  "libc",
@@ -1171,9 +1221,9 @@ checksum = "63b8176103e19a2643978565ca18b50549f6101881c443590420e4dc998a3c69"
1171
1221
 
1172
1222
  [[package]]
1173
1223
  name = "redis"
1174
- version = "1.2.0"
1224
+ version = "1.2.4"
1175
1225
  source = "registry+https://github.com/rust-lang/crates.io-index"
1176
- checksum = "f44e94c96d8870a387d88ce3de3fdd608cbfc0705f03cb343cdde91509d3e49a"
1226
+ checksum = "bae41a63fd0b8a5372f82b21e810e09a316f5dd7efd96bf08e678fb240fc1918"
1177
1227
  dependencies = [
1178
1228
  "arcstr",
1179
1229
  "combine",
@@ -1232,7 +1282,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
1232
1282
  checksum = "a8a1f2315036ef6b1fbacd1972e8ee7688030b0a2121edfc2a6550febd41574d"
1233
1283
  dependencies = [
1234
1284
  "hashbrown 0.16.1",
1235
- "thiserror",
1285
+ "thiserror 2.0.18",
1236
1286
  ]
1237
1287
 
1238
1288
  [[package]]
@@ -1260,6 +1310,15 @@ version = "1.0.23"
1260
1310
  source = "registry+https://github.com/rust-lang/crates.io-index"
1261
1311
  checksum = "9774ba4a74de5f7b1c1451ed6cd5285a32eddb5cccb8cc655a4e50009e06477f"
1262
1312
 
1313
+ [[package]]
1314
+ name = "same-file"
1315
+ version = "1.0.6"
1316
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1317
+ checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502"
1318
+ dependencies = [
1319
+ "winapi-util",
1320
+ ]
1321
+
1263
1322
  [[package]]
1264
1323
  name = "scheduled-thread-pool"
1265
1324
  version = "0.2.7"
@@ -1313,9 +1372,9 @@ dependencies = [
1313
1372
 
1314
1373
  [[package]]
1315
1374
  name = "serde_json"
1316
- version = "1.0.149"
1375
+ version = "1.0.150"
1317
1376
  source = "registry+https://github.com/rust-lang/crates.io-index"
1318
- checksum = "83fc039473c5595ace860d8c4fafa220ff474b3fc6bfdb4293327f1a37e94d86"
1377
+ checksum = "e8014e44b4736ed0538adeecded0fce2a272f22dc9578a7eb6b2d9993c74cfb9"
1319
1378
  dependencies = [
1320
1379
  "itoa",
1321
1380
  "memchr",
@@ -1422,7 +1481,7 @@ checksum = "adb6935a6f5c20170eeceb1a3835a49e12e19d792f6dd344ccc76a985ca5a6ca"
1422
1481
 
1423
1482
  [[package]]
1424
1483
  name = "taskito-core"
1425
- version = "0.16.4"
1484
+ version = "0.18.0"
1426
1485
  dependencies = [
1427
1486
  "async-trait",
1428
1487
  "chrono",
@@ -1439,14 +1498,32 @@ dependencies = [
1439
1498
  "serde",
1440
1499
  "serde_json",
1441
1500
  "tempfile",
1442
- "thiserror",
1501
+ "thiserror 2.0.18",
1502
+ "tokio",
1503
+ "uuid",
1504
+ ]
1505
+
1506
+ [[package]]
1507
+ name = "taskito-java"
1508
+ version = "0.18.0"
1509
+ dependencies = [
1510
+ "async-trait",
1511
+ "crossbeam-channel",
1512
+ "gethostname",
1513
+ "jni",
1514
+ "log",
1515
+ "once_cell",
1516
+ "serde",
1517
+ "serde_json",
1518
+ "taskito-core",
1519
+ "taskito-workflows",
1443
1520
  "tokio",
1444
1521
  "uuid",
1445
1522
  ]
1446
1523
 
1447
1524
  [[package]]
1448
1525
  name = "taskito-mesh"
1449
- version = "0.16.4"
1526
+ version = "0.18.0"
1450
1527
  dependencies = [
1451
1528
  "base64",
1452
1529
  "bincode",
@@ -1461,7 +1538,7 @@ dependencies = [
1461
1538
 
1462
1539
  [[package]]
1463
1540
  name = "taskito-node"
1464
- version = "0.16.4"
1541
+ version = "0.18.0"
1465
1542
  dependencies = [
1466
1543
  "async-trait",
1467
1544
  "crossbeam-channel",
@@ -1480,7 +1557,7 @@ dependencies = [
1480
1557
 
1481
1558
  [[package]]
1482
1559
  name = "taskito-python"
1483
- version = "0.16.4"
1560
+ version = "0.18.0"
1484
1561
  dependencies = [
1485
1562
  "async-trait",
1486
1563
  "base64",
@@ -1500,7 +1577,7 @@ dependencies = [
1500
1577
 
1501
1578
  [[package]]
1502
1579
  name = "taskito-workflows"
1503
- version = "0.16.4"
1580
+ version = "0.18.0"
1504
1581
  dependencies = [
1505
1582
  "dagron-core",
1506
1583
  "diesel",
@@ -1514,9 +1591,9 @@ dependencies = [
1514
1591
 
1515
1592
  [[package]]
1516
1593
  name = "tempfile"
1517
- version = "3.25.0"
1594
+ version = "3.27.0"
1518
1595
  source = "registry+https://github.com/rust-lang/crates.io-index"
1519
- checksum = "0136791f7c95b1f6dd99f9cc786b91bb81c3800b639b3478e561ddb7be95e5f1"
1596
+ checksum = "32497e9a4c7b38532efcdebeef879707aa9f794296a4f0244f6f69e9bc8574bd"
1520
1597
  dependencies = [
1521
1598
  "fastrand",
1522
1599
  "getrandom 0.4.1",
@@ -1525,13 +1602,33 @@ dependencies = [
1525
1602
  "windows-sys 0.61.2",
1526
1603
  ]
1527
1604
 
1605
+ [[package]]
1606
+ name = "thiserror"
1607
+ version = "1.0.69"
1608
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1609
+ checksum = "b6aaf5339b578ea85b50e080feb250a3e8ae8cfcdff9a461c9ec2904bc923f52"
1610
+ dependencies = [
1611
+ "thiserror-impl 1.0.69",
1612
+ ]
1613
+
1528
1614
  [[package]]
1529
1615
  name = "thiserror"
1530
1616
  version = "2.0.18"
1531
1617
  source = "registry+https://github.com/rust-lang/crates.io-index"
1532
1618
  checksum = "4288b5bcbc7920c07a1149a35cf9590a2aa808e0bc1eafaade0b80947865fbc4"
1533
1619
  dependencies = [
1534
- "thiserror-impl",
1620
+ "thiserror-impl 2.0.18",
1621
+ ]
1622
+
1623
+ [[package]]
1624
+ name = "thiserror-impl"
1625
+ version = "1.0.69"
1626
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1627
+ checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1"
1628
+ dependencies = [
1629
+ "proc-macro2",
1630
+ "quote",
1631
+ "syn",
1535
1632
  ]
1536
1633
 
1537
1634
  [[package]]
@@ -1588,9 +1685,9 @@ dependencies = [
1588
1685
 
1589
1686
  [[package]]
1590
1687
  name = "tokio"
1591
- version = "1.49.0"
1688
+ version = "1.50.0"
1592
1689
  source = "registry+https://github.com/rust-lang/crates.io-index"
1593
- checksum = "72a2903cd7736441aac9df9d7688bd0ce48edccaadf181c3b90be801e81d3d86"
1690
+ checksum = "27ad5e34374e03cfffefc301becb44e9dc3c17584f414349ebe29ed26661822d"
1594
1691
  dependencies = [
1595
1692
  "bytes",
1596
1693
  "libc",
@@ -1652,9 +1749,9 @@ checksum = "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be"
1652
1749
 
1653
1750
  [[package]]
1654
1751
  name = "uuid"
1655
- version = "1.21.0"
1752
+ version = "1.23.3"
1656
1753
  source = "registry+https://github.com/rust-lang/crates.io-index"
1657
- checksum = "b672338555252d43fd2240c714dc444b8c6fb0a5c5335e65a07bba7742735ddb"
1754
+ checksum = "144d6b123cef80b301b8f72a9e2ca4370ddec21950d0a103dd22c437006d2db7"
1658
1755
  dependencies = [
1659
1756
  "getrandom 0.4.1",
1660
1757
  "js-sys",
@@ -1673,6 +1770,16 @@ version = "0.9.5"
1673
1770
  source = "registry+https://github.com/rust-lang/crates.io-index"
1674
1771
  checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a"
1675
1772
 
1773
+ [[package]]
1774
+ name = "walkdir"
1775
+ version = "2.5.0"
1776
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1777
+ checksum = "29790946404f91d9c5d06f9874efddea1dc06c5efe94541a7d6863108e3a5e4b"
1778
+ dependencies = [
1779
+ "same-file",
1780
+ "winapi-util",
1781
+ ]
1782
+
1676
1783
  [[package]]
1677
1784
  name = "wasi"
1678
1785
  version = "0.11.1+wasi-snapshot-preview1"
@@ -1776,6 +1883,15 @@ dependencies = [
1776
1883
  "semver",
1777
1884
  ]
1778
1885
 
1886
+ [[package]]
1887
+ name = "winapi-util"
1888
+ version = "0.1.11"
1889
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1890
+ checksum = "c2a7b1c03c876122aa43f3020e6c3c3ee5c05081c9a00739faf7503aeba10d22"
1891
+ dependencies = [
1892
+ "windows-sys 0.61.2",
1893
+ ]
1894
+
1779
1895
  [[package]]
1780
1896
  name = "windows-core"
1781
1897
  version = "0.62.2"
@@ -1835,13 +1951,22 @@ dependencies = [
1835
1951
  "windows-link",
1836
1952
  ]
1837
1953
 
1954
+ [[package]]
1955
+ name = "windows-sys"
1956
+ version = "0.45.0"
1957
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1958
+ checksum = "75283be5efb2831d37ea142365f009c02ec203cd29a3ebecbc093d52315b66d0"
1959
+ dependencies = [
1960
+ "windows-targets 0.42.2",
1961
+ ]
1962
+
1838
1963
  [[package]]
1839
1964
  name = "windows-sys"
1840
1965
  version = "0.60.2"
1841
1966
  source = "registry+https://github.com/rust-lang/crates.io-index"
1842
1967
  checksum = "f2f500e4d28234f72040990ec9d39e3a6b950f9f22d3dba18416c35882612bcb"
1843
1968
  dependencies = [
1844
- "windows-targets",
1969
+ "windows-targets 0.53.5",
1845
1970
  ]
1846
1971
 
1847
1972
  [[package]]
@@ -1853,6 +1978,21 @@ dependencies = [
1853
1978
  "windows-link",
1854
1979
  ]
1855
1980
 
1981
+ [[package]]
1982
+ name = "windows-targets"
1983
+ version = "0.42.2"
1984
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1985
+ checksum = "8e5180c00cd44c9b1c88adb3693291f1cd93605ded80c250a75d472756b4d071"
1986
+ dependencies = [
1987
+ "windows_aarch64_gnullvm 0.42.2",
1988
+ "windows_aarch64_msvc 0.42.2",
1989
+ "windows_i686_gnu 0.42.2",
1990
+ "windows_i686_msvc 0.42.2",
1991
+ "windows_x86_64_gnu 0.42.2",
1992
+ "windows_x86_64_gnullvm 0.42.2",
1993
+ "windows_x86_64_msvc 0.42.2",
1994
+ ]
1995
+
1856
1996
  [[package]]
1857
1997
  name = "windows-targets"
1858
1998
  version = "0.53.5"
@@ -1860,28 +2000,46 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
1860
2000
  checksum = "4945f9f551b88e0d65f3db0bc25c33b8acea4d9e41163edf90dcd0b19f9069f3"
1861
2001
  dependencies = [
1862
2002
  "windows-link",
1863
- "windows_aarch64_gnullvm",
1864
- "windows_aarch64_msvc",
1865
- "windows_i686_gnu",
2003
+ "windows_aarch64_gnullvm 0.53.1",
2004
+ "windows_aarch64_msvc 0.53.1",
2005
+ "windows_i686_gnu 0.53.1",
1866
2006
  "windows_i686_gnullvm",
1867
- "windows_i686_msvc",
1868
- "windows_x86_64_gnu",
1869
- "windows_x86_64_gnullvm",
1870
- "windows_x86_64_msvc",
2007
+ "windows_i686_msvc 0.53.1",
2008
+ "windows_x86_64_gnu 0.53.1",
2009
+ "windows_x86_64_gnullvm 0.53.1",
2010
+ "windows_x86_64_msvc 0.53.1",
1871
2011
  ]
1872
2012
 
2013
+ [[package]]
2014
+ name = "windows_aarch64_gnullvm"
2015
+ version = "0.42.2"
2016
+ source = "registry+https://github.com/rust-lang/crates.io-index"
2017
+ checksum = "597a5118570b68bc08d8d59125332c54f1ba9d9adeedeef5b99b02ba2b0698f8"
2018
+
1873
2019
  [[package]]
1874
2020
  name = "windows_aarch64_gnullvm"
1875
2021
  version = "0.53.1"
1876
2022
  source = "registry+https://github.com/rust-lang/crates.io-index"
1877
2023
  checksum = "a9d8416fa8b42f5c947f8482c43e7d89e73a173cead56d044f6a56104a6d1b53"
1878
2024
 
2025
+ [[package]]
2026
+ name = "windows_aarch64_msvc"
2027
+ version = "0.42.2"
2028
+ source = "registry+https://github.com/rust-lang/crates.io-index"
2029
+ checksum = "e08e8864a60f06ef0d0ff4ba04124db8b0fb3be5776a5cd47641e942e58c4d43"
2030
+
1879
2031
  [[package]]
1880
2032
  name = "windows_aarch64_msvc"
1881
2033
  version = "0.53.1"
1882
2034
  source = "registry+https://github.com/rust-lang/crates.io-index"
1883
2035
  checksum = "b9d782e804c2f632e395708e99a94275910eb9100b2114651e04744e9b125006"
1884
2036
 
2037
+ [[package]]
2038
+ name = "windows_i686_gnu"
2039
+ version = "0.42.2"
2040
+ source = "registry+https://github.com/rust-lang/crates.io-index"
2041
+ checksum = "c61d927d8da41da96a81f029489353e68739737d3beca43145c8afec9a31a84f"
2042
+
1885
2043
  [[package]]
1886
2044
  name = "windows_i686_gnu"
1887
2045
  version = "0.53.1"
@@ -1894,24 +2052,48 @@ version = "0.53.1"
1894
2052
  source = "registry+https://github.com/rust-lang/crates.io-index"
1895
2053
  checksum = "fa7359d10048f68ab8b09fa71c3daccfb0e9b559aed648a8f95469c27057180c"
1896
2054
 
2055
+ [[package]]
2056
+ name = "windows_i686_msvc"
2057
+ version = "0.42.2"
2058
+ source = "registry+https://github.com/rust-lang/crates.io-index"
2059
+ checksum = "44d840b6ec649f480a41c8d80f9c65108b92d89345dd94027bfe06ac444d1060"
2060
+
1897
2061
  [[package]]
1898
2062
  name = "windows_i686_msvc"
1899
2063
  version = "0.53.1"
1900
2064
  source = "registry+https://github.com/rust-lang/crates.io-index"
1901
2065
  checksum = "1e7ac75179f18232fe9c285163565a57ef8d3c89254a30685b57d83a38d326c2"
1902
2066
 
2067
+ [[package]]
2068
+ name = "windows_x86_64_gnu"
2069
+ version = "0.42.2"
2070
+ source = "registry+https://github.com/rust-lang/crates.io-index"
2071
+ checksum = "8de912b8b8feb55c064867cf047dda097f92d51efad5b491dfb98f6bbb70cb36"
2072
+
1903
2073
  [[package]]
1904
2074
  name = "windows_x86_64_gnu"
1905
2075
  version = "0.53.1"
1906
2076
  source = "registry+https://github.com/rust-lang/crates.io-index"
1907
2077
  checksum = "9c3842cdd74a865a8066ab39c8a7a473c0778a3f29370b5fd6b4b9aa7df4a499"
1908
2078
 
2079
+ [[package]]
2080
+ name = "windows_x86_64_gnullvm"
2081
+ version = "0.42.2"
2082
+ source = "registry+https://github.com/rust-lang/crates.io-index"
2083
+ checksum = "26d41b46a36d453748aedef1486d5c7a85db22e56aff34643984ea85514e94a3"
2084
+
1909
2085
  [[package]]
1910
2086
  name = "windows_x86_64_gnullvm"
1911
2087
  version = "0.53.1"
1912
2088
  source = "registry+https://github.com/rust-lang/crates.io-index"
1913
2089
  checksum = "0ffa179e2d07eee8ad8f57493436566c7cc30ac536a3379fdf008f47f6bb7ae1"
1914
2090
 
2091
+ [[package]]
2092
+ name = "windows_x86_64_msvc"
2093
+ version = "0.42.2"
2094
+ source = "registry+https://github.com/rust-lang/crates.io-index"
2095
+ checksum = "9aec5da331524158c6d1a4ac0ab1541149c0b9505fde06423b02f5ef0106b9f0"
2096
+
1915
2097
  [[package]]
1916
2098
  name = "windows_x86_64_msvc"
1917
2099
  version = "0.53.1"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: taskito
3
- Version: 0.16.4
3
+ Version: 0.18.0
4
4
  Classifier: Development Status :: 4 - Beta
5
5
  Classifier: Intended Audience :: Developers
6
6
  Classifier: License :: OSI Approved :: MIT License
@@ -9,6 +9,7 @@ Classifier: Programming Language :: Python :: 3.10
9
9
  Classifier: Programming Language :: Python :: 3.11
10
10
  Classifier: Programming Language :: Python :: 3.12
11
11
  Classifier: Programming Language :: Python :: 3.13
12
+ Classifier: Programming Language :: Python :: 3.14
12
13
  Classifier: Programming Language :: Rust
13
14
  Classifier: Topic :: Software Development :: Libraries :: Python Modules
14
15
  Classifier: Topic :: System :: Distributed Computing
@@ -1,6 +1,6 @@
1
1
  [package]
2
2
  name = "taskito-core"
3
- version = "0.16.4"
3
+ version = "0.18.0"
4
4
  edition = "2021"
5
5
 
6
6
  [features]
@@ -159,10 +159,9 @@ impl From<ArchivedJobRow> for Job {
159
159
  }
160
160
 
161
161
  impl Job {
162
- /// Assemble a [`Job`] from a blob-free [`NarrowJobRow`] plus the
163
- /// `payload`/`result` fetched separately from the `job_payloads` side
164
- /// table. The narrow row carries every non-blob column; the caller
165
- /// supplies the blobs after claiming the single job it wants.
162
+ /// Assemble a [`Job`] from a blob-free [`NarrowJobRow`] plus `payload`/
163
+ /// `result` supplied by the caller. The narrow row carries every non-blob
164
+ /// column; reap/listing paths that don't need the blobs pass empty ones.
166
165
  pub fn from_narrow(narrow: NarrowJobRow, payload: Vec<u8>, result: Option<Vec<u8>>) -> Self {
167
166
  Self {
168
167
  id: narrow.id,
@@ -3,7 +3,7 @@ use log::{error, info, warn};
3
3
  use crate::error::Result;
4
4
  use crate::job::{now_millis, NewJob};
5
5
  use crate::periodic::{next_cron_time, next_cron_time_tz};
6
- use crate::storage::Storage;
6
+ use crate::storage::{Storage, DEAD_WORKER_THRESHOLD_MS};
7
7
 
8
8
  use super::{JobResult, Scheduler};
9
9
 
@@ -45,6 +45,64 @@ impl Scheduler {
45
45
  })?;
46
46
  }
47
47
 
48
+ // Fast-path recovery: requeue jobs whose worker died, without waiting
49
+ // for their full timeout. Log-and-continue so a failure here never
50
+ // aborts the rest of the sweep.
51
+ if let Err(e) = self.recover_orphaned_jobs(now) {
52
+ warn!("recover_orphaned_jobs error: {e}");
53
+ }
54
+
55
+ Ok(())
56
+ }
57
+
58
+ /// Requeue `Running` jobs whose claiming worker is no longer alive (crashed
59
+ /// without finishing). A surviving scheduler detects the dead owner via the
60
+ /// heartbeat table, atomically reclaims the orphaned claim — so exactly one
61
+ /// survivor rescues each job — then routes it through the normal
62
+ /// retry/dead-letter path.
63
+ fn recover_orphaned_jobs(&self, now: i64) -> Result<()> {
64
+ // Live owners = workers with a fresh heartbeat, plus self: a scheduler
65
+ // must never orphan its own in-flight jobs (covers the startup window
66
+ // before its first heartbeat row is written).
67
+ let mut live: Vec<String> = self
68
+ .storage
69
+ .list_workers()?
70
+ .into_iter()
71
+ .filter(|w| w.last_heartbeat >= now - DEAD_WORKER_THRESHOLD_MS)
72
+ .map(|w| w.worker_id)
73
+ .collect();
74
+ live.push(self.claim_owner.clone());
75
+
76
+ for (job, dead_owner) in self.storage.reap_orphaned_jobs(&live, now)? {
77
+ // Atomic election: only the survivor that wins the claim transfer
78
+ // requeues the job, so concurrent schedulers can't double-retry it.
79
+ match self
80
+ .storage
81
+ .reclaim_execution(&job.id, &dead_owner, &self.claim_owner)
82
+ {
83
+ Ok(true) => {
84
+ let error = format!("worker {dead_owner} died; recovering in-flight job");
85
+ if let Err(e) = self.handle_result(JobResult::Failure {
86
+ job_id: job.id.clone(),
87
+ error,
88
+ retry_count: job.retry_count,
89
+ max_retries: job.max_retries,
90
+ task_name: job.task_name.clone(),
91
+ wall_time_ns: 0,
92
+ should_retry: true,
93
+ timed_out: false,
94
+ }) {
95
+ warn!(
96
+ "recover_orphaned_jobs: handle_result failed for {}: {e}",
97
+ job.id
98
+ );
99
+ }
100
+ }
101
+ Ok(false) => {} // another survivor won the race
102
+ Err(e) => warn!("reclaim_execution failed for {}: {e}", job.id),
103
+ }
104
+ }
105
+
48
106
  Ok(())
49
107
  }
50
108