taskflow 5.12.0__tar.gz → 6.0.1__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (360) hide show
  1. {taskflow-5.12.0 → taskflow-6.0.1}/.pre-commit-config.yaml +5 -0
  2. {taskflow-5.12.0 → taskflow-6.0.1}/.zuul.yaml +1 -0
  3. {taskflow-5.12.0 → taskflow-6.0.1}/AUTHORS +1 -0
  4. {taskflow-5.12.0 → taskflow-6.0.1}/ChangeLog +21 -0
  5. {taskflow-5.12.0 → taskflow-6.0.1}/PKG-INFO +1 -1
  6. {taskflow-5.12.0 → taskflow-6.0.1}/doc/source/conf.py +0 -1
  7. {taskflow-5.12.0 → taskflow-6.0.1}/doc/source/user/engines.rst +0 -1
  8. taskflow-6.0.1/pyproject.toml +3 -0
  9. taskflow-6.0.1/releasenotes/notes/mask-keys-74b9bb5c420d8091.yaml +7 -0
  10. taskflow-6.0.1/releasenotes/notes/remove-process_executor-f59d40a5dd287cd7.yaml +4 -0
  11. taskflow-6.0.1/releasenotes/source/2025.1.rst +6 -0
  12. {taskflow-5.12.0 → taskflow-6.0.1}/releasenotes/source/conf.py +0 -1
  13. {taskflow-5.12.0 → taskflow-6.0.1}/releasenotes/source/index.rst +1 -0
  14. {taskflow-5.12.0 → taskflow-6.0.1}/taskflow/atom.py +3 -5
  15. {taskflow-5.12.0 → taskflow-6.0.1}/taskflow/conductors/backends/__init__.py +0 -2
  16. {taskflow-5.12.0 → taskflow-6.0.1}/taskflow/conductors/backends/impl_blocking.py +1 -3
  17. {taskflow-5.12.0 → taskflow-6.0.1}/taskflow/conductors/backends/impl_executor.py +3 -6
  18. {taskflow-5.12.0 → taskflow-6.0.1}/taskflow/conductors/backends/impl_nonblocking.py +1 -3
  19. {taskflow-5.12.0 → taskflow-6.0.1}/taskflow/conductors/base.py +1 -3
  20. {taskflow-5.12.0 → taskflow-6.0.1}/taskflow/deciders.py +0 -2
  21. {taskflow-5.12.0 → taskflow-6.0.1}/taskflow/engines/__init__.py +0 -2
  22. {taskflow-5.12.0 → taskflow-6.0.1}/taskflow/engines/action_engine/actions/base.py +1 -3
  23. {taskflow-5.12.0 → taskflow-6.0.1}/taskflow/engines/action_engine/actions/retry.py +1 -3
  24. {taskflow-5.12.0 → taskflow-6.0.1}/taskflow/engines/action_engine/actions/task.py +1 -3
  25. {taskflow-5.12.0 → taskflow-6.0.1}/taskflow/engines/action_engine/builder.py +2 -4
  26. {taskflow-5.12.0 → taskflow-6.0.1}/taskflow/engines/action_engine/compiler.py +9 -11
  27. {taskflow-5.12.0 → taskflow-6.0.1}/taskflow/engines/action_engine/completer.py +5 -7
  28. {taskflow-5.12.0 → taskflow-6.0.1}/taskflow/engines/action_engine/deciders.py +1 -3
  29. {taskflow-5.12.0 → taskflow-6.0.1}/taskflow/engines/action_engine/engine.py +4 -26
  30. {taskflow-5.12.0 → taskflow-6.0.1}/taskflow/engines/action_engine/executor.py +2 -4
  31. {taskflow-5.12.0 → taskflow-6.0.1}/taskflow/engines/action_engine/runtime.py +1 -3
  32. {taskflow-5.12.0 → taskflow-6.0.1}/taskflow/engines/action_engine/scheduler.py +3 -5
  33. {taskflow-5.12.0 → taskflow-6.0.1}/taskflow/engines/action_engine/scopes.py +3 -5
  34. {taskflow-5.12.0 → taskflow-6.0.1}/taskflow/engines/action_engine/selector.py +1 -3
  35. {taskflow-5.12.0 → taskflow-6.0.1}/taskflow/engines/action_engine/traversal.py +0 -2
  36. {taskflow-5.12.0 → taskflow-6.0.1}/taskflow/engines/base.py +1 -3
  37. {taskflow-5.12.0 → taskflow-6.0.1}/taskflow/engines/helpers.py +0 -2
  38. {taskflow-5.12.0 → taskflow-6.0.1}/taskflow/engines/worker_based/dispatcher.py +2 -4
  39. {taskflow-5.12.0 → taskflow-6.0.1}/taskflow/engines/worker_based/endpoint.py +1 -3
  40. {taskflow-5.12.0 → taskflow-6.0.1}/taskflow/engines/worker_based/engine.py +1 -4
  41. {taskflow-5.12.0 → taskflow-6.0.1}/taskflow/engines/worker_based/executor.py +0 -2
  42. {taskflow-5.12.0 → taskflow-6.0.1}/taskflow/engines/worker_based/protocol.py +1 -3
  43. {taskflow-5.12.0 → taskflow-6.0.1}/taskflow/engines/worker_based/proxy.py +2 -4
  44. {taskflow-5.12.0 → taskflow-6.0.1}/taskflow/engines/worker_based/server.py +3 -5
  45. {taskflow-5.12.0 → taskflow-6.0.1}/taskflow/engines/worker_based/types.py +6 -7
  46. {taskflow-5.12.0 → taskflow-6.0.1}/taskflow/engines/worker_based/worker.py +4 -6
  47. {taskflow-5.12.0 → taskflow-6.0.1}/taskflow/examples/99_bottles.py +0 -2
  48. {taskflow-5.12.0 → taskflow-6.0.1}/taskflow/examples/alphabet_soup.py +0 -2
  49. {taskflow-5.12.0 → taskflow-6.0.1}/taskflow/examples/build_a_car.py +1 -3
  50. {taskflow-5.12.0 → taskflow-6.0.1}/taskflow/examples/buildsystem.py +1 -3
  51. {taskflow-5.12.0 → taskflow-6.0.1}/taskflow/examples/calculate_in_parallel.py +1 -3
  52. {taskflow-5.12.0 → taskflow-6.0.1}/taskflow/examples/calculate_linear.py +3 -5
  53. {taskflow-5.12.0 → taskflow-6.0.1}/taskflow/examples/create_parallel_volume.py +2 -5
  54. {taskflow-5.12.0 → taskflow-6.0.1}/taskflow/examples/delayed_return.py +1 -3
  55. {taskflow-5.12.0 → taskflow-6.0.1}/taskflow/examples/distance_calculator.py +12 -24
  56. {taskflow-5.12.0 → taskflow-6.0.1}/taskflow/examples/dump_memory_backend.py +1 -3
  57. {taskflow-5.12.0 → taskflow-6.0.1}/taskflow/examples/echo_listener.py +0 -2
  58. {taskflow-5.12.0 → taskflow-6.0.1}/taskflow/examples/example_utils.py +1 -3
  59. {taskflow-5.12.0 → taskflow-6.0.1}/taskflow/examples/fake_billing.py +9 -11
  60. {taskflow-5.12.0 → taskflow-6.0.1}/taskflow/examples/graph_flow.py +2 -4
  61. {taskflow-5.12.0 → taskflow-6.0.1}/taskflow/examples/hello_world.py +2 -4
  62. {taskflow-5.12.0 → taskflow-6.0.1}/taskflow/examples/jobboard_produce_consume_colors.py +3 -5
  63. {taskflow-5.12.0 → taskflow-6.0.1}/taskflow/examples/parallel_table_multiply.py +1 -3
  64. {taskflow-5.12.0 → taskflow-6.0.1}/taskflow/examples/persistence_example.py +1 -3
  65. {taskflow-5.12.0 → taskflow-6.0.1}/taskflow/examples/pseudo_scoping.py +2 -4
  66. {taskflow-5.12.0 → taskflow-6.0.1}/taskflow/examples/resume_from_backend.py +1 -3
  67. {taskflow-5.12.0 → taskflow-6.0.1}/taskflow/examples/resume_many_flows/my_flows.py +0 -2
  68. {taskflow-5.12.0 → taskflow-6.0.1}/taskflow/examples/resume_many_flows/resume_all.py +1 -3
  69. {taskflow-5.12.0 → taskflow-6.0.1}/taskflow/examples/resume_many_flows/run_flow.py +2 -4
  70. {taskflow-5.12.0 → taskflow-6.0.1}/taskflow/examples/resume_many_flows.py +0 -2
  71. {taskflow-5.12.0 → taskflow-6.0.1}/taskflow/examples/resume_vm_boot.py +12 -15
  72. {taskflow-5.12.0 → taskflow-6.0.1}/taskflow/examples/resume_volume_create.py +3 -5
  73. {taskflow-5.12.0 → taskflow-6.0.1}/taskflow/examples/retry_flow.py +0 -2
  74. {taskflow-5.12.0 → taskflow-6.0.1}/taskflow/examples/reverting_linear.py +1 -3
  75. {taskflow-5.12.0 → taskflow-6.0.1}/taskflow/examples/run_by_iter.py +0 -2
  76. {taskflow-5.12.0 → taskflow-6.0.1}/taskflow/examples/run_by_iter_enumerate.py +1 -3
  77. {taskflow-5.12.0 → taskflow-6.0.1}/taskflow/examples/share_engine_thread.py +2 -4
  78. {taskflow-5.12.0 → taskflow-6.0.1}/taskflow/examples/simple_linear.py +0 -2
  79. {taskflow-5.12.0 → taskflow-6.0.1}/taskflow/examples/simple_linear_listening.py +1 -3
  80. {taskflow-5.12.0 → taskflow-6.0.1}/taskflow/examples/simple_linear_pass.py +0 -2
  81. {taskflow-5.12.0 → taskflow-6.0.1}/taskflow/examples/simple_map_reduce.py +0 -2
  82. {taskflow-5.12.0 → taskflow-6.0.1}/taskflow/examples/switch_graph_flow.py +1 -3
  83. {taskflow-5.12.0 → taskflow-6.0.1}/taskflow/examples/timing_listener.py +1 -3
  84. {taskflow-5.12.0 → taskflow-6.0.1}/taskflow/examples/tox_conductor.py +3 -5
  85. {taskflow-5.12.0 → taskflow-6.0.1}/taskflow/examples/wbe_event_sender.py +0 -2
  86. {taskflow-5.12.0 → taskflow-6.0.1}/taskflow/examples/wbe_mandelbrot.py +0 -2
  87. {taskflow-5.12.0 → taskflow-6.0.1}/taskflow/examples/wbe_simple_linear.py +0 -2
  88. {taskflow-5.12.0 → taskflow-6.0.1}/taskflow/examples/wrapped_exception.py +0 -2
  89. {taskflow-5.12.0 → taskflow-6.0.1}/taskflow/exceptions.py +7 -9
  90. {taskflow-5.12.0 → taskflow-6.0.1}/taskflow/flow.py +1 -3
  91. {taskflow-5.12.0 → taskflow-6.0.1}/taskflow/formatters.py +22 -8
  92. {taskflow-5.12.0 → taskflow-6.0.1}/taskflow/jobs/backends/__init__.py +0 -2
  93. {taskflow-5.12.0 → taskflow-6.0.1}/taskflow/jobs/backends/impl_redis.py +22 -18
  94. {taskflow-5.12.0 → taskflow-6.0.1}/taskflow/jobs/backends/impl_zookeeper.py +7 -8
  95. {taskflow-5.12.0 → taskflow-6.0.1}/taskflow/jobs/base.py +5 -7
  96. {taskflow-5.12.0 → taskflow-6.0.1}/taskflow/listeners/base.py +1 -3
  97. {taskflow-5.12.0 → taskflow-6.0.1}/taskflow/listeners/capturing.py +1 -3
  98. {taskflow-5.12.0 → taskflow-6.0.1}/taskflow/listeners/claims.py +1 -3
  99. {taskflow-5.12.0 → taskflow-6.0.1}/taskflow/listeners/logging.py +10 -6
  100. {taskflow-5.12.0 → taskflow-6.0.1}/taskflow/listeners/printing.py +1 -3
  101. {taskflow-5.12.0 → taskflow-6.0.1}/taskflow/listeners/timing.py +10 -13
  102. {taskflow-5.12.0 → taskflow-6.0.1}/taskflow/logging.py +0 -2
  103. {taskflow-5.12.0 → taskflow-6.0.1}/taskflow/patterns/graph_flow.py +2 -4
  104. {taskflow-5.12.0 → taskflow-6.0.1}/taskflow/patterns/linear_flow.py +4 -9
  105. {taskflow-5.12.0 → taskflow-6.0.1}/taskflow/patterns/unordered_flow.py +4 -9
  106. {taskflow-5.12.0 → taskflow-6.0.1}/taskflow/persistence/backends/__init__.py +1 -3
  107. {taskflow-5.12.0 → taskflow-6.0.1}/taskflow/persistence/backends/impl_dir.py +3 -6
  108. {taskflow-5.12.0 → taskflow-6.0.1}/taskflow/persistence/backends/impl_memory.py +6 -9
  109. {taskflow-5.12.0 → taskflow-6.0.1}/taskflow/persistence/backends/impl_sqlalchemy.py +4 -6
  110. {taskflow-5.12.0 → taskflow-6.0.1}/taskflow/persistence/backends/impl_zookeeper.py +2 -4
  111. {taskflow-5.12.0 → taskflow-6.0.1}/taskflow/persistence/backends/sqlalchemy/alembic/env.py +0 -2
  112. taskflow-6.0.1/taskflow/persistence/backends/sqlalchemy/alembic/versions/00af93df9d77_add_unique_into_all_indexes.py +74 -0
  113. {taskflow-5.12.0 → taskflow-6.0.1}/taskflow/persistence/backends/sqlalchemy/alembic/versions/14b227d79a87_add_intention_column.py +0 -2
  114. {taskflow-5.12.0 → taskflow-6.0.1}/taskflow/persistence/backends/sqlalchemy/alembic/versions/1c783c0c2875_replace_exception_an.py +0 -2
  115. {taskflow-5.12.0 → taskflow-6.0.1}/taskflow/persistence/backends/sqlalchemy/alembic/versions/1cea328f0f65_initial_logbook_deta.py +0 -2
  116. {taskflow-5.12.0 → taskflow-6.0.1}/taskflow/persistence/backends/sqlalchemy/alembic/versions/2ad4984f2864_switch_postgres_to_json_native.py +0 -2
  117. {taskflow-5.12.0 → taskflow-6.0.1}/taskflow/persistence/backends/sqlalchemy/alembic/versions/3162c0f3f8e4_add_revert_results_and_revert_failure_.py +0 -2
  118. {taskflow-5.12.0 → taskflow-6.0.1}/taskflow/persistence/backends/sqlalchemy/alembic/versions/589dccdf2b6e_rename_taskdetails_to_atomdetails.py +0 -2
  119. {taskflow-5.12.0 → taskflow-6.0.1}/taskflow/persistence/backends/sqlalchemy/alembic/versions/84d6e888850_add_task_detail_type.py +0 -2
  120. {taskflow-5.12.0 → taskflow-6.0.1}/taskflow/persistence/backends/sqlalchemy/tables.py +0 -2
  121. {taskflow-5.12.0 → taskflow-6.0.1}/taskflow/persistence/base.py +2 -4
  122. {taskflow-5.12.0 → taskflow-6.0.1}/taskflow/persistence/models.py +19 -24
  123. {taskflow-5.12.0 → taskflow-6.0.1}/taskflow/persistence/path_based.py +1 -3
  124. {taskflow-5.12.0 → taskflow-6.0.1}/taskflow/retry.py +12 -18
  125. {taskflow-5.12.0 → taskflow-6.0.1}/taskflow/states.py +0 -2
  126. {taskflow-5.12.0 → taskflow-6.0.1}/taskflow/storage.py +9 -11
  127. {taskflow-5.12.0 → taskflow-6.0.1}/taskflow/task.py +15 -18
  128. {taskflow-5.12.0 → taskflow-6.0.1}/taskflow/test.py +5 -5
  129. {taskflow-5.12.0 → taskflow-6.0.1}/taskflow/tests/test_examples.py +0 -2
  130. {taskflow-5.12.0 → taskflow-6.0.1}/taskflow/tests/unit/action_engine/test_builder.py +1 -3
  131. {taskflow-5.12.0 → taskflow-6.0.1}/taskflow/tests/unit/action_engine/test_compile.py +4 -6
  132. {taskflow-5.12.0 → taskflow-6.0.1}/taskflow/tests/unit/action_engine/test_creation.py +0 -21
  133. {taskflow-5.12.0 → taskflow-6.0.1}/taskflow/tests/unit/action_engine/test_scoping.py +1 -3
  134. {taskflow-5.12.0 → taskflow-6.0.1}/taskflow/tests/unit/jobs/base.py +1 -3
  135. {taskflow-5.12.0 → taskflow-6.0.1}/taskflow/tests/unit/jobs/test_entrypoint.py +0 -2
  136. {taskflow-5.12.0 → taskflow-6.0.1}/taskflow/tests/unit/jobs/test_redis_job.py +1 -3
  137. {taskflow-5.12.0 → taskflow-6.0.1}/taskflow/tests/unit/jobs/test_zk_job.py +2 -4
  138. {taskflow-5.12.0 → taskflow-6.0.1}/taskflow/tests/unit/patterns/test_graph_flow.py +18 -20
  139. {taskflow-5.12.0 → taskflow-6.0.1}/taskflow/tests/unit/patterns/test_linear_flow.py +7 -9
  140. {taskflow-5.12.0 → taskflow-6.0.1}/taskflow/tests/unit/patterns/test_unordered_flow.py +12 -14
  141. {taskflow-5.12.0 → taskflow-6.0.1}/taskflow/tests/unit/persistence/base.py +2 -4
  142. {taskflow-5.12.0 → taskflow-6.0.1}/taskflow/tests/unit/persistence/test_dir_persistence.py +2 -4
  143. {taskflow-5.12.0 → taskflow-6.0.1}/taskflow/tests/unit/persistence/test_memory_persistence.py +2 -4
  144. {taskflow-5.12.0 → taskflow-6.0.1}/taskflow/tests/unit/persistence/test_sql_persistence.py +8 -10
  145. {taskflow-5.12.0 → taskflow-6.0.1}/taskflow/tests/unit/persistence/test_zk_persistence.py +2 -4
  146. {taskflow-5.12.0 → taskflow-6.0.1}/taskflow/tests/unit/test_arguments_passing.py +3 -25
  147. {taskflow-5.12.0 → taskflow-6.0.1}/taskflow/tests/unit/test_check_transition.py +3 -5
  148. {taskflow-5.12.0 → taskflow-6.0.1}/taskflow/tests/unit/test_conductors.py +0 -2
  149. {taskflow-5.12.0 → taskflow-6.0.1}/taskflow/tests/unit/test_deciders.py +1 -3
  150. {taskflow-5.12.0 → taskflow-6.0.1}/taskflow/tests/unit/test_engine_helpers.py +0 -2
  151. {taskflow-5.12.0 → taskflow-6.0.1}/taskflow/tests/unit/test_engines.py +19 -102
  152. {taskflow-5.12.0 → taskflow-6.0.1}/taskflow/tests/unit/test_exceptions.py +4 -6
  153. {taskflow-5.12.0 → taskflow-6.0.1}/taskflow/tests/unit/test_failure.py +10 -12
  154. {taskflow-5.12.0 → taskflow-6.0.1}/taskflow/tests/unit/test_flow_dependencies.py +62 -64
  155. {taskflow-5.12.0 → taskflow-6.0.1}/taskflow/tests/unit/test_formatters.py +0 -2
  156. {taskflow-5.12.0 → taskflow-6.0.1}/taskflow/tests/unit/test_functor_task.py +1 -3
  157. {taskflow-5.12.0 → taskflow-6.0.1}/taskflow/tests/unit/test_listeners.py +9 -11
  158. {taskflow-5.12.0 → taskflow-6.0.1}/taskflow/tests/unit/test_mapfunctor_task.py +1 -3
  159. {taskflow-5.12.0 → taskflow-6.0.1}/taskflow/tests/unit/test_notifier.py +1 -3
  160. {taskflow-5.12.0 → taskflow-6.0.1}/taskflow/tests/unit/test_progress.py +2 -4
  161. {taskflow-5.12.0 → taskflow-6.0.1}/taskflow/tests/unit/test_reducefunctor_task.py +1 -3
  162. {taskflow-5.12.0 → taskflow-6.0.1}/taskflow/tests/unit/test_retries.py +1 -25
  163. {taskflow-5.12.0 → taskflow-6.0.1}/taskflow/tests/unit/test_states.py +0 -2
  164. {taskflow-5.12.0 → taskflow-6.0.1}/taskflow/tests/unit/test_storage.py +10 -12
  165. {taskflow-5.12.0 → taskflow-6.0.1}/taskflow/tests/unit/test_suspend.py +2 -23
  166. {taskflow-5.12.0 → taskflow-6.0.1}/taskflow/tests/unit/test_task.py +17 -19
  167. {taskflow-5.12.0 → taskflow-6.0.1}/taskflow/tests/unit/test_types.py +4 -6
  168. {taskflow-5.12.0 → taskflow-6.0.1}/taskflow/tests/unit/test_utils.py +9 -11
  169. {taskflow-5.12.0 → taskflow-6.0.1}/taskflow/tests/unit/test_utils_async_utils.py +0 -2
  170. {taskflow-5.12.0 → taskflow-6.0.1}/taskflow/tests/unit/test_utils_binary.py +12 -14
  171. {taskflow-5.12.0 → taskflow-6.0.1}/taskflow/tests/unit/test_utils_iter_utils.py +1 -3
  172. {taskflow-5.12.0 → taskflow-6.0.1}/taskflow/tests/unit/test_utils_kazoo_utils.py +0 -2
  173. {taskflow-5.12.0 → taskflow-6.0.1}/taskflow/tests/unit/test_utils_threading_utils.py +1 -3
  174. {taskflow-5.12.0 → taskflow-6.0.1}/taskflow/tests/unit/worker_based/test_creation.py +0 -2
  175. {taskflow-5.12.0 → taskflow-6.0.1}/taskflow/tests/unit/worker_based/test_dispatcher.py +0 -2
  176. {taskflow-5.12.0 → taskflow-6.0.1}/taskflow/tests/unit/worker_based/test_endpoint.py +2 -4
  177. {taskflow-5.12.0 → taskflow-6.0.1}/taskflow/tests/unit/worker_based/test_executor.py +1 -3
  178. {taskflow-5.12.0 → taskflow-6.0.1}/taskflow/tests/unit/worker_based/test_message_pump.py +0 -2
  179. {taskflow-5.12.0 → taskflow-6.0.1}/taskflow/tests/unit/worker_based/test_pipeline.py +0 -2
  180. {taskflow-5.12.0 → taskflow-6.0.1}/taskflow/tests/unit/worker_based/test_protocol.py +2 -4
  181. {taskflow-5.12.0 → taskflow-6.0.1}/taskflow/tests/unit/worker_based/test_proxy.py +2 -4
  182. {taskflow-5.12.0 → taskflow-6.0.1}/taskflow/tests/unit/worker_based/test_server.py +3 -5
  183. {taskflow-5.12.0 → taskflow-6.0.1}/taskflow/tests/unit/worker_based/test_types.py +0 -2
  184. {taskflow-5.12.0 → taskflow-6.0.1}/taskflow/tests/unit/worker_based/test_worker.py +1 -3
  185. {taskflow-5.12.0 → taskflow-6.0.1}/taskflow/tests/utils.py +11 -15
  186. {taskflow-5.12.0 → taskflow-6.0.1}/taskflow/types/entity.py +1 -3
  187. {taskflow-5.12.0 → taskflow-6.0.1}/taskflow/types/failure.py +3 -6
  188. {taskflow-5.12.0 → taskflow-6.0.1}/taskflow/types/graph.py +14 -18
  189. {taskflow-5.12.0 → taskflow-6.0.1}/taskflow/types/latch.py +1 -3
  190. {taskflow-5.12.0 → taskflow-6.0.1}/taskflow/types/notifier.py +6 -9
  191. {taskflow-5.12.0 → taskflow-6.0.1}/taskflow/types/sets.py +2 -5
  192. {taskflow-5.12.0 → taskflow-6.0.1}/taskflow/types/timing.py +1 -3
  193. {taskflow-5.12.0 → taskflow-6.0.1}/taskflow/types/tree.py +6 -10
  194. {taskflow-5.12.0 → taskflow-6.0.1}/taskflow/utils/async_utils.py +0 -2
  195. {taskflow-5.12.0 → taskflow-6.0.1}/taskflow/utils/banner.py +8 -9
  196. {taskflow-5.12.0 → taskflow-6.0.1}/taskflow/utils/eventlet_utils.py +0 -2
  197. {taskflow-5.12.0 → taskflow-6.0.1}/taskflow/utils/iter_utils.py +0 -2
  198. {taskflow-5.12.0 → taskflow-6.0.1}/taskflow/utils/kazoo_utils.py +7 -9
  199. {taskflow-5.12.0 → taskflow-6.0.1}/taskflow/utils/kombu_utils.py +5 -7
  200. {taskflow-5.12.0 → taskflow-6.0.1}/taskflow/utils/misc.py +4 -6
  201. {taskflow-5.12.0 → taskflow-6.0.1}/taskflow/utils/persistence_utils.py +0 -2
  202. {taskflow-5.12.0 → taskflow-6.0.1}/taskflow/utils/redis_utils.py +2 -4
  203. {taskflow-5.12.0 → taskflow-6.0.1}/taskflow/utils/schema_utils.py +0 -2
  204. {taskflow-5.12.0 → taskflow-6.0.1}/taskflow/utils/threading_utils.py +1 -3
  205. {taskflow-5.12.0 → taskflow-6.0.1}/taskflow/version.py +1 -3
  206. {taskflow-5.12.0 → taskflow-6.0.1}/taskflow.egg-info/PKG-INFO +1 -1
  207. {taskflow-5.12.0 → taskflow-6.0.1}/taskflow.egg-info/SOURCES.txt +5 -2
  208. taskflow-6.0.1/taskflow.egg-info/pbr.json +1 -0
  209. {taskflow-5.12.0 → taskflow-6.0.1}/tools/speed_test.py +2 -2
  210. {taskflow-5.12.0 → taskflow-6.0.1}/tools/state_graph.py +2 -2
  211. {taskflow-5.12.0 → taskflow-6.0.1}/tools/subunit_trace.py +9 -9
  212. taskflow-5.12.0/taskflow/engines/action_engine/process_executor.py +0 -720
  213. taskflow-5.12.0/taskflow/tests/unit/action_engine/test_process_executor.py +0 -106
  214. taskflow-5.12.0/taskflow.egg-info/pbr.json +0 -1
  215. {taskflow-5.12.0 → taskflow-6.0.1}/.coveragerc +0 -0
  216. {taskflow-5.12.0 → taskflow-6.0.1}/.mailmap +0 -0
  217. {taskflow-5.12.0 → taskflow-6.0.1}/.pylintrc +0 -0
  218. {taskflow-5.12.0 → taskflow-6.0.1}/.stestr.conf +0 -0
  219. {taskflow-5.12.0 → taskflow-6.0.1}/CONTRIBUTING.rst +0 -0
  220. {taskflow-5.12.0 → taskflow-6.0.1}/LICENSE +0 -0
  221. {taskflow-5.12.0 → taskflow-6.0.1}/README.rst +0 -0
  222. {taskflow-5.12.0 → taskflow-6.0.1}/bindep.txt +0 -0
  223. {taskflow-5.12.0 → taskflow-6.0.1}/doc/diagrams/area_of_influence.graffle.tgz +0 -0
  224. {taskflow-5.12.0 → taskflow-6.0.1}/doc/diagrams/core.graffle.tgz +0 -0
  225. {taskflow-5.12.0 → taskflow-6.0.1}/doc/diagrams/jobboard.graffle.tgz +0 -0
  226. {taskflow-5.12.0 → taskflow-6.0.1}/doc/diagrams/tasks.graffle.tgz +0 -0
  227. {taskflow-5.12.0 → taskflow-6.0.1}/doc/diagrams/worker-engine.graffle.tgz +0 -0
  228. {taskflow-5.12.0 → taskflow-6.0.1}/doc/requirements.txt +0 -0
  229. {taskflow-5.12.0 → taskflow-6.0.1}/doc/source/index.rst +0 -0
  230. {taskflow-5.12.0 → taskflow-6.0.1}/doc/source/templates/layout.html +0 -0
  231. {taskflow-5.12.0 → taskflow-6.0.1}/doc/source/user/arguments_and_results.rst +0 -0
  232. {taskflow-5.12.0 → taskflow-6.0.1}/doc/source/user/atoms.rst +0 -0
  233. {taskflow-5.12.0 → taskflow-6.0.1}/doc/source/user/conductors.rst +0 -0
  234. {taskflow-5.12.0 → taskflow-6.0.1}/doc/source/user/examples.rst +0 -0
  235. {taskflow-5.12.0 → taskflow-6.0.1}/doc/source/user/exceptions.rst +0 -0
  236. {taskflow-5.12.0 → taskflow-6.0.1}/doc/source/user/history.rst +0 -0
  237. {taskflow-5.12.0 → taskflow-6.0.1}/doc/source/user/img/area_of_influence.svg +0 -0
  238. {taskflow-5.12.0 → taskflow-6.0.1}/doc/source/user/img/conductor.png +0 -0
  239. {taskflow-5.12.0 → taskflow-6.0.1}/doc/source/user/img/conductor_cycle.png +0 -0
  240. {taskflow-5.12.0 → taskflow-6.0.1}/doc/source/user/img/distributed_flow_rpc.png +0 -0
  241. {taskflow-5.12.0 → taskflow-6.0.1}/doc/source/user/img/engine_states.svg +0 -0
  242. {taskflow-5.12.0 → taskflow-6.0.1}/doc/source/user/img/flow_states.svg +0 -0
  243. {taskflow-5.12.0 → taskflow-6.0.1}/doc/source/user/img/job_states.svg +0 -0
  244. {taskflow-5.12.0 → taskflow-6.0.1}/doc/source/user/img/jobboard.png +0 -0
  245. {taskflow-5.12.0 → taskflow-6.0.1}/doc/source/user/img/mandelbrot.png +0 -0
  246. {taskflow-5.12.0 → taskflow-6.0.1}/doc/source/user/img/retry_states.svg +0 -0
  247. {taskflow-5.12.0 → taskflow-6.0.1}/doc/source/user/img/task_states.svg +0 -0
  248. {taskflow-5.12.0 → taskflow-6.0.1}/doc/source/user/img/tasks.png +0 -0
  249. {taskflow-5.12.0 → taskflow-6.0.1}/doc/source/user/img/wbe_request_states.svg +0 -0
  250. {taskflow-5.12.0 → taskflow-6.0.1}/doc/source/user/img/worker-engine.svg +0 -0
  251. {taskflow-5.12.0 → taskflow-6.0.1}/doc/source/user/index.rst +0 -0
  252. {taskflow-5.12.0 → taskflow-6.0.1}/doc/source/user/inputs_and_outputs.rst +0 -0
  253. {taskflow-5.12.0 → taskflow-6.0.1}/doc/source/user/jobs.rst +0 -0
  254. {taskflow-5.12.0 → taskflow-6.0.1}/doc/source/user/notifications.rst +0 -0
  255. {taskflow-5.12.0 → taskflow-6.0.1}/doc/source/user/patterns.rst +0 -0
  256. {taskflow-5.12.0 → taskflow-6.0.1}/doc/source/user/persistence.rst +0 -0
  257. {taskflow-5.12.0 → taskflow-6.0.1}/doc/source/user/resumption.rst +0 -0
  258. {taskflow-5.12.0 → taskflow-6.0.1}/doc/source/user/shelf.rst +0 -0
  259. {taskflow-5.12.0 → taskflow-6.0.1}/doc/source/user/states.rst +0 -0
  260. {taskflow-5.12.0 → taskflow-6.0.1}/doc/source/user/types.rst +0 -0
  261. {taskflow-5.12.0 → taskflow-6.0.1}/doc/source/user/utils.rst +0 -0
  262. {taskflow-5.12.0 → taskflow-6.0.1}/doc/source/user/workers.rst +0 -0
  263. {taskflow-5.12.0 → taskflow-6.0.1}/playbooks/tests/functional/Debian.yaml +0 -0
  264. {taskflow-5.12.0 → taskflow-6.0.1}/playbooks/tests/functional/RedHat.yaml +0 -0
  265. {taskflow-5.12.0 → taskflow-6.0.1}/playbooks/tests/functional/pre.yml +0 -0
  266. {taskflow-5.12.0 → taskflow-6.0.1}/releasenotes/notes/.placeholder +0 -0
  267. {taskflow-5.12.0 → taskflow-6.0.1}/releasenotes/notes/add-sentinel-redis-support-9fd16e2a5dd5c0c9.yaml +0 -0
  268. {taskflow-5.12.0 → taskflow-6.0.1}/releasenotes/notes/bug-2056656-871b67ddbc8cfc92.yaml +0 -0
  269. {taskflow-5.12.0 → taskflow-6.0.1}/releasenotes/notes/deprecate-eventlet-df4a34a7d56acc47.yaml +0 -0
  270. {taskflow-5.12.0 → taskflow-6.0.1}/releasenotes/notes/disable-process_executor-python-312-d1074c816bc8303e.yaml +0 -0
  271. {taskflow-5.12.0 → taskflow-6.0.1}/releasenotes/notes/drop-python-2-7-73d3113c69d724d6.yaml +0 -0
  272. {taskflow-5.12.0 → taskflow-6.0.1}/releasenotes/notes/etcd-jobboard-backend-8a9fea2238fb0f12.yaml +0 -0
  273. {taskflow-5.12.0 → taskflow-6.0.1}/releasenotes/notes/fix-endless-loop-on-storage-error-dd4467f0bbc66abf.yaml +0 -0
  274. {taskflow-5.12.0 → taskflow-6.0.1}/releasenotes/notes/fix-endless-loop-on-storage-failures-b98b30f0c34d25e1.yaml +0 -0
  275. {taskflow-5.12.0 → taskflow-6.0.1}/releasenotes/notes/fix-revert-all-revert-a0310cd7beaa7409.yaml +0 -0
  276. {taskflow-5.12.0 → taskflow-6.0.1}/releasenotes/notes/fix-storage-failure-handling-5c115d92daa0eb82.yaml +0 -0
  277. {taskflow-5.12.0 → taskflow-6.0.1}/releasenotes/notes/fix-zookeeper-option-parsing-f9d37fbc39af47f4.yaml +0 -0
  278. {taskflow-5.12.0 → taskflow-6.0.1}/releasenotes/notes/redis-username-df0eb33869db09a2.yaml +0 -0
  279. {taskflow-5.12.0 → taskflow-6.0.1}/releasenotes/notes/remove-py38-15af791146f479e1.yaml +0 -0
  280. {taskflow-5.12.0 → taskflow-6.0.1}/releasenotes/notes/remove-strict-redis-f2a5a924b314de41.yaml +0 -0
  281. {taskflow-5.12.0 → taskflow-6.0.1}/releasenotes/notes/sentinel-fallbacks-6fe2ab0d68959cdf.yaml +0 -0
  282. {taskflow-5.12.0 → taskflow-6.0.1}/releasenotes/notes/sentinel-ssl-399c56ed7067d282.yaml +0 -0
  283. {taskflow-5.12.0 → taskflow-6.0.1}/releasenotes/notes/sentinel-use-redis-creds-63f58b12ad46a2b5.yaml +0 -0
  284. {taskflow-5.12.0 → taskflow-6.0.1}/releasenotes/notes/zookeeper-ssl-support-b9abf24a39096b62.yaml +0 -0
  285. {taskflow-5.12.0 → taskflow-6.0.1}/releasenotes/source/2023.1.rst +0 -0
  286. {taskflow-5.12.0 → taskflow-6.0.1}/releasenotes/source/2023.2.rst +0 -0
  287. {taskflow-5.12.0 → taskflow-6.0.1}/releasenotes/source/2024.1.rst +0 -0
  288. {taskflow-5.12.0 → taskflow-6.0.1}/releasenotes/source/2024.2.rst +0 -0
  289. {taskflow-5.12.0 → taskflow-6.0.1}/releasenotes/source/_static/.placeholder +0 -0
  290. {taskflow-5.12.0 → taskflow-6.0.1}/releasenotes/source/_templates/.placeholder +0 -0
  291. {taskflow-5.12.0 → taskflow-6.0.1}/releasenotes/source/ocata.rst +0 -0
  292. {taskflow-5.12.0 → taskflow-6.0.1}/releasenotes/source/pike.rst +0 -0
  293. {taskflow-5.12.0 → taskflow-6.0.1}/releasenotes/source/queens.rst +0 -0
  294. {taskflow-5.12.0 → taskflow-6.0.1}/releasenotes/source/rocky.rst +0 -0
  295. {taskflow-5.12.0 → taskflow-6.0.1}/releasenotes/source/stein.rst +0 -0
  296. {taskflow-5.12.0 → taskflow-6.0.1}/releasenotes/source/train.rst +0 -0
  297. {taskflow-5.12.0 → taskflow-6.0.1}/releasenotes/source/unreleased.rst +0 -0
  298. {taskflow-5.12.0 → taskflow-6.0.1}/releasenotes/source/ussuri.rst +0 -0
  299. {taskflow-5.12.0 → taskflow-6.0.1}/releasenotes/source/victoria.rst +0 -0
  300. {taskflow-5.12.0 → taskflow-6.0.1}/requirements.txt +0 -0
  301. {taskflow-5.12.0 → taskflow-6.0.1}/run_tests.sh +0 -0
  302. {taskflow-5.12.0 → taskflow-6.0.1}/setup-etcd-env.sh +0 -0
  303. {taskflow-5.12.0 → taskflow-6.0.1}/setup.cfg +0 -0
  304. {taskflow-5.12.0 → taskflow-6.0.1}/setup.py +0 -0
  305. {taskflow-5.12.0 → taskflow-6.0.1}/taskflow/__init__.py +0 -0
  306. {taskflow-5.12.0 → taskflow-6.0.1}/taskflow/conductors/__init__.py +0 -0
  307. {taskflow-5.12.0 → taskflow-6.0.1}/taskflow/contrib/__init__.py +0 -0
  308. {taskflow-5.12.0 → taskflow-6.0.1}/taskflow/engines/action_engine/__init__.py +0 -0
  309. {taskflow-5.12.0 → taskflow-6.0.1}/taskflow/engines/action_engine/actions/__init__.py +0 -0
  310. {taskflow-5.12.0 → taskflow-6.0.1}/taskflow/engines/worker_based/__init__.py +0 -0
  311. {taskflow-5.12.0 → taskflow-6.0.1}/taskflow/examples/pseudo_scoping.out.txt +0 -0
  312. {taskflow-5.12.0 → taskflow-6.0.1}/taskflow/examples/resume_from_backend.out.txt +0 -0
  313. {taskflow-5.12.0 → taskflow-6.0.1}/taskflow/examples/resume_many_flows.out.txt +0 -0
  314. {taskflow-5.12.0 → taskflow-6.0.1}/taskflow/examples/retry_flow.out.txt +0 -0
  315. {taskflow-5.12.0 → taskflow-6.0.1}/taskflow/examples/reverting_linear.out.txt +0 -0
  316. {taskflow-5.12.0 → taskflow-6.0.1}/taskflow/examples/run_by_iter.out.txt +0 -0
  317. {taskflow-5.12.0 → taskflow-6.0.1}/taskflow/examples/run_by_iter_enumerate.out.txt +0 -0
  318. {taskflow-5.12.0 → taskflow-6.0.1}/taskflow/examples/simple_linear.out.txt +0 -0
  319. {taskflow-5.12.0 → taskflow-6.0.1}/taskflow/examples/simple_linear_listening.out.txt +0 -0
  320. {taskflow-5.12.0 → taskflow-6.0.1}/taskflow/examples/simple_linear_pass.out.txt +0 -0
  321. {taskflow-5.12.0 → taskflow-6.0.1}/taskflow/examples/wbe_mandelbrot.out.txt +0 -0
  322. {taskflow-5.12.0 → taskflow-6.0.1}/taskflow/examples/wbe_simple_linear.out.txt +0 -0
  323. {taskflow-5.12.0 → taskflow-6.0.1}/taskflow/jobs/__init__.py +0 -0
  324. {taskflow-5.12.0 → taskflow-6.0.1}/taskflow/jobs/backends/impl_etcd.py +0 -0
  325. {taskflow-5.12.0 → taskflow-6.0.1}/taskflow/listeners/__init__.py +0 -0
  326. {taskflow-5.12.0 → taskflow-6.0.1}/taskflow/patterns/__init__.py +0 -0
  327. {taskflow-5.12.0 → taskflow-6.0.1}/taskflow/persistence/__init__.py +0 -0
  328. {taskflow-5.12.0 → taskflow-6.0.1}/taskflow/persistence/backends/sqlalchemy/__init__.py +0 -0
  329. {taskflow-5.12.0 → taskflow-6.0.1}/taskflow/persistence/backends/sqlalchemy/alembic/README +0 -0
  330. {taskflow-5.12.0 → taskflow-6.0.1}/taskflow/persistence/backends/sqlalchemy/alembic/alembic.ini +0 -0
  331. {taskflow-5.12.0 → taskflow-6.0.1}/taskflow/persistence/backends/sqlalchemy/alembic/script.py.mako +0 -0
  332. {taskflow-5.12.0 → taskflow-6.0.1}/taskflow/persistence/backends/sqlalchemy/alembic/versions/0bc3e1a3c135_set_result_meduimtext_type.py +0 -0
  333. {taskflow-5.12.0 → taskflow-6.0.1}/taskflow/persistence/backends/sqlalchemy/alembic/versions/40fc8c914bd2_fix_atomdetails_failure_size.py +0 -0
  334. {taskflow-5.12.0 → taskflow-6.0.1}/taskflow/persistence/backends/sqlalchemy/alembic/versions/6df9422fcb43_fix_flowdetails_meta_size.py +0 -0
  335. {taskflow-5.12.0 → taskflow-6.0.1}/taskflow/persistence/backends/sqlalchemy/alembic/versions/README +0 -0
  336. {taskflow-5.12.0 → taskflow-6.0.1}/taskflow/persistence/backends/sqlalchemy/migration.py +0 -0
  337. {taskflow-5.12.0 → taskflow-6.0.1}/taskflow/tests/__init__.py +0 -0
  338. {taskflow-5.12.0 → taskflow-6.0.1}/taskflow/tests/fixtures.py +0 -0
  339. {taskflow-5.12.0 → taskflow-6.0.1}/taskflow/tests/unit/__init__.py +0 -0
  340. {taskflow-5.12.0 → taskflow-6.0.1}/taskflow/tests/unit/action_engine/__init__.py +0 -0
  341. {taskflow-5.12.0 → taskflow-6.0.1}/taskflow/tests/unit/jobs/__init__.py +0 -0
  342. {taskflow-5.12.0 → taskflow-6.0.1}/taskflow/tests/unit/jobs/test_etcd_job.py +0 -0
  343. {taskflow-5.12.0 → taskflow-6.0.1}/taskflow/tests/unit/patterns/__init__.py +0 -0
  344. {taskflow-5.12.0 → taskflow-6.0.1}/taskflow/tests/unit/persistence/__init__.py +0 -0
  345. {taskflow-5.12.0 → taskflow-6.0.1}/taskflow/tests/unit/worker_based/__init__.py +0 -0
  346. {taskflow-5.12.0 → taskflow-6.0.1}/taskflow/types/__init__.py +0 -0
  347. {taskflow-5.12.0 → taskflow-6.0.1}/taskflow/utils/__init__.py +0 -0
  348. {taskflow-5.12.0 → taskflow-6.0.1}/taskflow.egg-info/dependency_links.txt +0 -0
  349. {taskflow-5.12.0 → taskflow-6.0.1}/taskflow.egg-info/entry_points.txt +0 -0
  350. {taskflow-5.12.0 → taskflow-6.0.1}/taskflow.egg-info/not-zip-safe +0 -0
  351. {taskflow-5.12.0 → taskflow-6.0.1}/taskflow.egg-info/requires.txt +0 -0
  352. {taskflow-5.12.0 → taskflow-6.0.1}/taskflow.egg-info/top_level.txt +0 -0
  353. {taskflow-5.12.0 → taskflow-6.0.1}/test-requirements.txt +0 -0
  354. {taskflow-5.12.0 → taskflow-6.0.1}/tools/clear_zk.sh +0 -0
  355. {taskflow-5.12.0 → taskflow-6.0.1}/tools/env_builder.sh +0 -0
  356. {taskflow-5.12.0 → taskflow-6.0.1}/tools/pretty_tox.sh +0 -0
  357. {taskflow-5.12.0 → taskflow-6.0.1}/tools/schema_generator.py +0 -0
  358. {taskflow-5.12.0 → taskflow-6.0.1}/tools/test-setup.sh +0 -0
  359. {taskflow-5.12.0 → taskflow-6.0.1}/tools/update_states.sh +0 -0
  360. {taskflow-5.12.0 → taskflow-6.0.1}/tox.ini +0 -0
@@ -24,3 +24,8 @@ repos:
24
24
  - id: hacking
25
25
  additional_dependencies: []
26
26
  exclude: '^(doc|releasenotes|tools)/.*$'
27
+ - repo: https://github.com/asottile/pyupgrade
28
+ rev: v3.18.0
29
+ hooks:
30
+ - id: pyupgrade
31
+ args: [--py3-only]
@@ -6,6 +6,7 @@
6
6
  vars:
7
7
  tox_envlist: functional
8
8
  irrelevant-files:
9
+ - ^\.gitreview$
9
10
  - ^.*\.rst$
10
11
  - ^doc/.*$
11
12
  - ^LICENSE$
@@ -45,6 +45,7 @@ Jeremy Stanley <fungi@yuggoth.org>
45
45
  Jessica Lucci <jessica.lucci@rackspace.com>
46
46
  Ji-Wei <ji.wei3@zte.com.cn>
47
47
  Joe Gordon <joe.gordon0@gmail.com>
48
+ Jose Castro Leon <jose.castro.leon@cern.ch>
48
49
  Joshua Harlow <harlowja@gmail.com>
49
50
  Joshua Harlow <harlowja@yahoo-inc.com>
50
51
  Joshua Harlow <jxharlow@godaddy.com>
@@ -1,6 +1,27 @@
1
1
  CHANGES
2
2
  =======
3
3
 
4
+ 6.0.1
5
+ -----
6
+
7
+ * Fix skipped database persistence tests
8
+ * Fix duplicate table\_name argument
9
+
10
+ 6.0.0
11
+ -----
12
+
13
+ * add pyproject.toml to support pip 23.1
14
+ * Add release note for mask keys
15
+ * Add mask keys parameters to failure logging
16
+ * Run pyupgrade to clean up Python 2 syntaxes
17
+ * redis: Omit ssl options when ssl is disabled
18
+ * Skip functional tests for .gitreview update
19
+ * Remove process executor
20
+ * Keep taskflow doc job on Ubuntu Jammy
21
+ * Update master for stable/2025.1
22
+ * Use oslo.utils implementation to parse sentinel address
23
+ * Sets indexes for all tables in taskflow as unique
24
+
4
25
  5.12.0
5
26
  ------
6
27
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: taskflow
3
- Version: 5.12.0
3
+ Version: 6.0.1
4
4
  Summary: Taskflow structured state management library.
5
5
  Home-page: https://docs.openstack.org/taskflow/latest/
6
6
  Author: OpenStack
@@ -1,4 +1,3 @@
1
- # -*- coding: utf-8 -*-
2
1
  # Copyright (C) 2020 Red Hat, Inc.
3
2
  #
4
3
  # Licensed under the Apache License, Version 2.0 (the "License");
@@ -449,7 +449,6 @@ Components
449
449
  .. automodule:: taskflow.engines.action_engine.completer
450
450
  .. automodule:: taskflow.engines.action_engine.deciders
451
451
  .. automodule:: taskflow.engines.action_engine.executor
452
- .. automodule:: taskflow.engines.action_engine.process_executor
453
452
  .. automodule:: taskflow.engines.action_engine.runtime
454
453
  .. automodule:: taskflow.engines.action_engine.scheduler
455
454
  .. automodule:: taskflow.engines.action_engine.selector
@@ -0,0 +1,3 @@
1
+ [build-system]
2
+ requires = ["pbr>=6.1.1"]
3
+ build-backend = "pbr.build"
@@ -0,0 +1,7 @@
1
+ ---
2
+ features:
3
+ - |
4
+ Added ``mask_inputs_keys`` and ``mask_outputs_keys`` parameters to the
5
+ constructors for ``FailureFormatter`` and ``DynamicLoggingListener``
6
+ that can be used to mask sensitive information from the ``requires``
7
+ and ``provides`` fields respectively when logging a atom.
@@ -0,0 +1,4 @@
1
+ ---
2
+ upgrade:
3
+ - |
4
+ Process executor was removed.
@@ -0,0 +1,6 @@
1
+ ===========================
2
+ 2025.1 Series Release Notes
3
+ ===========================
4
+
5
+ .. release-notes::
6
+ :branch: stable/2025.1
@@ -1,4 +1,3 @@
1
- # -*- coding: utf-8 -*-
2
1
  # Copyright (C) 2020 Red Hat, Inc.
3
2
  #
4
3
  # Licensed under the Apache License, Version 2.0 (the "License");
@@ -6,6 +6,7 @@
6
6
  :maxdepth: 1
7
7
 
8
8
  unreleased
9
+ 2025.1
9
10
  2024.2
10
11
  2024.1
11
12
  2023.2
@@ -1,5 +1,3 @@
1
- # -*- coding: utf-8 -*-
2
-
3
1
  # Copyright (C) 2013 Rackspace Hosting Inc. All Rights Reserved.
4
2
  # Copyright (C) 2013 Yahoo! Inc. All Rights Reserved.
5
3
  #
@@ -159,7 +157,7 @@ def _build_arg_mapping(atom_name, reqs, rebind_args, function, do_infer,
159
157
  return required, optional
160
158
 
161
159
 
162
- class Atom(object, metaclass=abc.ABCMeta):
160
+ class Atom(metaclass=abc.ABCMeta):
163
161
  """An unit of work that causes a flow to progress (in some manner).
164
162
 
165
163
  An atom is a named object that operates with input data to perform
@@ -379,7 +377,7 @@ class Atom(object, metaclass=abc.ABCMeta):
379
377
  """
380
378
 
381
379
  def __str__(self):
382
- return '"%s==%s"' % (self.name, misc.get_version_string(self))
380
+ return '"{}=={}"'.format(self.name, misc.get_version_string(self))
383
381
 
384
382
  def __repr__(self):
385
- return '<%s %s>' % (reflection.get_class_name(self), self)
383
+ return '<{} {}>'.format(reflection.get_class_name(self), self)
@@ -1,5 +1,3 @@
1
- # -*- coding: utf-8 -*-
2
-
3
1
  # Copyright (C) 2014 Yahoo! Inc. All Rights Reserved.
4
2
  #
5
3
  # Licensed under the Apache License, Version 2.0 (the "License"); you may
@@ -1,5 +1,3 @@
1
- # -*- coding: utf-8 -*-
2
-
3
1
  # Licensed under the Apache License, Version 2.0 (the "License"); you may
4
2
  # not use this file except in compliance with the License. You may obtain
5
3
  # a copy of the License at
@@ -33,7 +31,7 @@ class BlockingConductor(impl_executor.ExecutorConductor):
33
31
  persistence=None, engine=None,
34
32
  engine_options=None, wait_timeout=None,
35
33
  log=None, max_simultaneous_jobs=MAX_SIMULTANEOUS_JOBS):
36
- super(BlockingConductor, self).__init__(
34
+ super().__init__(
37
35
  name, jobboard,
38
36
  persistence=persistence, engine=engine,
39
37
  engine_options=engine_options,
@@ -1,5 +1,3 @@
1
- # -*- coding: utf-8 -*-
2
-
3
1
  # Licensed under the Apache License, Version 2.0 (the "License"); you may
4
2
  # not use this file except in compliance with the License. You may obtain
5
3
  # a copy of the License at
@@ -104,7 +102,7 @@ class ExecutorConductor(base.Conductor, metaclass=abc.ABCMeta):
104
102
  persistence=None, engine=None,
105
103
  engine_options=None, wait_timeout=None,
106
104
  log=None, max_simultaneous_jobs=MAX_SIMULTANEOUS_JOBS):
107
- super(ExecutorConductor, self).__init__(
105
+ super().__init__(
108
106
  name, jobboard, persistence=persistence,
109
107
  engine=engine, engine_options=engine_options)
110
108
  self._wait_timeout = tt.convert_to_timeout(
@@ -139,8 +137,7 @@ class ExecutorConductor(base.Conductor, metaclass=abc.ABCMeta):
139
137
  return not self._dead.is_set()
140
138
 
141
139
  def _listeners_from_job(self, job, engine):
142
- listeners = super(ExecutorConductor, self)._listeners_from_job(
143
- job, engine)
140
+ listeners = super()._listeners_from_job(job, engine)
144
141
  listeners.append(logging_listener.LoggingListener(engine,
145
142
  log=self._log))
146
143
  return listeners
@@ -178,7 +175,7 @@ class ExecutorConductor(base.Conductor, metaclass=abc.ABCMeta):
178
175
  stage_func()
179
176
  self._notifier.notify("%s_end" % event_name, details)
180
177
  except excp.WrappedFailure as e:
181
- if all((f.check(*self.NO_CONSUME_EXCEPTIONS) for f in e)):
178
+ if all(f.check(*self.NO_CONSUME_EXCEPTIONS) for f in e):
182
179
  consume = False
183
180
  if self._log.isEnabledFor(logging.WARNING):
184
181
  if consume:
@@ -1,5 +1,3 @@
1
- # -*- coding: utf-8 -*-
2
-
3
1
  # Licensed under the Apache License, Version 2.0 (the "License"); you may
4
2
  # not use this file except in compliance with the License. You may obtain
5
3
  # a copy of the License at
@@ -54,7 +52,7 @@ class NonBlockingConductor(impl_executor.ExecutorConductor):
54
52
  engine_options=None, wait_timeout=None,
55
53
  log=None, max_simultaneous_jobs=MAX_SIMULTANEOUS_JOBS,
56
54
  executor_factory=None):
57
- super(NonBlockingConductor, self).__init__(
55
+ super().__init__(
58
56
  name, jobboard,
59
57
  persistence=persistence, engine=engine,
60
58
  engine_options=engine_options, wait_timeout=wait_timeout,
@@ -1,5 +1,3 @@
1
- # -*- coding: utf-8 -*-
2
-
3
1
  # Licensed under the Apache License, Version 2.0 (the "License"); you may
4
2
  # not use this file except in compliance with the License. You may obtain
5
3
  # a copy of the License at
@@ -25,7 +23,7 @@ from taskflow.types import notifier
25
23
  from taskflow.utils import misc
26
24
 
27
25
 
28
- class Conductor(object, metaclass=abc.ABCMeta):
26
+ class Conductor(metaclass=abc.ABCMeta):
29
27
  """Base for all conductor implementations.
30
28
 
31
29
  Conductors act as entities which extract jobs from a jobboard, assign
@@ -1,5 +1,3 @@
1
- # -*- coding: utf-8 -*-
2
-
3
1
  # Copyright (C) 2012 Yahoo! Inc. All Rights Reserved.
4
2
  #
5
3
  # Licensed under the Apache License, Version 2.0 (the "License"); you may
@@ -1,5 +1,3 @@
1
- # -*- coding: utf-8 -*-
2
-
3
1
  # Copyright (C) 2012 Yahoo! Inc. All Rights Reserved.
4
2
  #
5
3
  # Licensed under the Apache License, Version 2.0 (the "License"); you may
@@ -1,5 +1,3 @@
1
- # -*- coding: utf-8 -*-
2
-
3
1
  # Copyright (C) 2015 Yahoo! Inc. All Rights Reserved.
4
2
  #
5
3
  # Licensed under the Apache License, Version 2.0 (the "License"); you may
@@ -19,7 +17,7 @@ import abc
19
17
  from taskflow import states
20
18
 
21
19
 
22
- class Action(object, metaclass=abc.ABCMeta):
20
+ class Action(metaclass=abc.ABCMeta):
23
21
  """An action that handles executing, state changes, ... of atoms."""
24
22
 
25
23
  NO_RESULT = object()
@@ -1,5 +1,3 @@
1
- # -*- coding: utf-8 -*-
2
-
3
1
  # Copyright (C) 2012-2013 Yahoo! Inc. All Rights Reserved.
4
2
  #
5
3
  # Licensed under the Apache License, Version 2.0 (the "License"); you may
@@ -24,7 +22,7 @@ class RetryAction(base.Action):
24
22
  """An action that handles executing, state changes, ... of retry atoms."""
25
23
 
26
24
  def __init__(self, storage, notifier, retry_executor):
27
- super(RetryAction, self).__init__(storage, notifier)
25
+ super().__init__(storage, notifier)
28
26
  self._retry_executor = retry_executor
29
27
 
30
28
  def _get_retry_args(self, retry, revert=False, addons=None):
@@ -1,5 +1,3 @@
1
- # -*- coding: utf-8 -*-
2
-
3
1
  # Copyright (C) 2012-2013 Yahoo! Inc. All Rights Reserved.
4
2
  #
5
3
  # Licensed under the Apache License, Version 2.0 (the "License"); you may
@@ -29,7 +27,7 @@ class TaskAction(base.Action):
29
27
  """An action that handles scheduling, state changes, ... of task atoms."""
30
28
 
31
29
  def __init__(self, storage, notifier, task_executor):
32
- super(TaskAction, self).__init__(storage, notifier)
30
+ super().__init__(storage, notifier)
33
31
  self._task_executor = task_executor
34
32
 
35
33
  def _is_identity_transition(self, old_state, state, task, progress=None):
@@ -1,5 +1,3 @@
1
- # -*- coding: utf-8 -*-
2
-
3
1
  # Copyright (C) 2012 Yahoo! Inc. All Rights Reserved.
4
2
  #
5
3
  # Licensed under the Apache License, Version 2.0 (the "License"); you may
@@ -58,7 +56,7 @@ TIMED_STATES = (st.ANALYZING, st.RESUMING, st.SCHEDULING, st.WAITING)
58
56
  LOG = logging.getLogger(__name__)
59
57
 
60
58
 
61
- class MachineMemory(object):
59
+ class MachineMemory:
62
60
  """State machine memory."""
63
61
 
64
62
  def __init__(self):
@@ -73,7 +71,7 @@ class MachineMemory(object):
73
71
  fut.cancel()
74
72
 
75
73
 
76
- class MachineBuilder(object):
74
+ class MachineBuilder:
77
75
  """State machine *builder* that powers the engine components.
78
76
 
79
77
  NOTE(harlowja): the machine (states and events that will trigger
@@ -1,5 +1,3 @@
1
- # -*- coding: utf-8 -*-
2
-
3
1
  # Copyright (C) 2014 Yahoo! Inc. All Rights Reserved.
4
2
  #
5
3
  # Licensed under the Apache License, Version 2.0 (the "License"); you may
@@ -46,12 +44,12 @@ ATOMS = (TASK, RETRY)
46
44
  FLOWS = (FLOW, FLOW_END)
47
45
 
48
46
 
49
- class Terminator(object):
47
+ class Terminator:
50
48
  """Flow terminator class."""
51
49
 
52
50
  def __init__(self, flow):
53
51
  self._flow = flow
54
- self._name = "%s[$]" % (self._flow.name,)
52
+ self._name = "{}[$]".format(self._flow.name)
55
53
 
56
54
  @property
57
55
  def flow(self):
@@ -68,7 +66,7 @@ class Terminator(object):
68
66
  return '"%s[$]"' % flow_name
69
67
 
70
68
 
71
- class Compilation(object):
69
+ class Compilation:
72
70
  """The result of a compilers ``compile()`` is this *immutable* object."""
73
71
 
74
72
  #: Task nodes will have a ``kind`` metadata key with this value.
@@ -135,7 +133,7 @@ def _add_update_edges(graph, nodes_from, nodes_to, attr_dict=None):
135
133
  graph.add_edge(u, v, attr_dict=attr_dict.copy())
136
134
 
137
135
 
138
- class TaskCompiler(object):
136
+ class TaskCompiler:
139
137
  """Non-recursive compiler of tasks."""
140
138
 
141
139
  def compile(self, task, parent=None):
@@ -147,7 +145,7 @@ class TaskCompiler(object):
147
145
  return graph, node
148
146
 
149
147
 
150
- class FlowCompiler(object):
148
+ class FlowCompiler:
151
149
  """Recursive compiler of flows."""
152
150
 
153
151
  def __init__(self, deep_compiler_func):
@@ -162,9 +160,9 @@ class FlowCompiler(object):
162
160
  parent.add(tree_node)
163
161
  if flow.retry is not None:
164
162
  tree_node.add(tr.Node(flow.retry, kind=RETRY))
165
- decomposed = dict(
166
- (child, self._deep_compiler_func(child, parent=tree_node)[0])
167
- for child in flow)
163
+ decomposed = {
164
+ child: self._deep_compiler_func(child, parent=tree_node)[0]
165
+ for child in flow}
168
166
  decomposed_graphs = list(decomposed.values())
169
167
  graph = gr.merge_graphs(graph, *decomposed_graphs,
170
168
  overlap_detector=_overlap_occurrence_detector)
@@ -223,7 +221,7 @@ class FlowCompiler(object):
223
221
  return graph, tree_node
224
222
 
225
223
 
226
- class PatternCompiler(object):
224
+ class PatternCompiler:
227
225
  """Compiles a flow pattern (or task) into a compilation unit.
228
226
 
229
227
  Let's dive into the basic idea for how this works:
@@ -1,5 +1,3 @@
1
- # -*- coding: utf-8 -*-
2
-
3
1
  # Copyright (C) 2014 Yahoo! Inc. All Rights Reserved.
4
2
  #
5
3
  # Licensed under the Apache License, Version 2.0 (the "License"); you may
@@ -29,7 +27,7 @@ from taskflow import states as st
29
27
  LOG = logging.getLogger(__name__)
30
28
 
31
29
 
32
- class Strategy(object, metaclass=abc.ABCMeta):
30
+ class Strategy(metaclass=abc.ABCMeta):
33
31
  """Failure resolution strategy base class."""
34
32
 
35
33
  strategy = None
@@ -56,7 +54,7 @@ class RevertAndRetry(Strategy):
56
54
  strategy = retry_atom.RETRY
57
55
 
58
56
  def __init__(self, runtime, retry):
59
- super(RevertAndRetry, self).__init__(runtime)
57
+ super().__init__(runtime)
60
58
  self._retry = retry
61
59
 
62
60
  def apply(self):
@@ -73,7 +71,7 @@ class RevertAll(Strategy):
73
71
  strategy = retry_atom.REVERT_ALL
74
72
 
75
73
  def __init__(self, runtime):
76
- super(RevertAll, self).__init__(runtime)
74
+ super().__init__(runtime)
77
75
 
78
76
  def apply(self):
79
77
  return self._runtime.reset_atoms(
@@ -87,7 +85,7 @@ class Revert(Strategy):
87
85
  strategy = retry_atom.REVERT
88
86
 
89
87
  def __init__(self, runtime, atom):
90
- super(Revert, self).__init__(runtime)
88
+ super().__init__(runtime)
91
89
  self._atom = atom
92
90
 
93
91
  def apply(self):
@@ -98,7 +96,7 @@ class Revert(Strategy):
98
96
  return tweaked
99
97
 
100
98
 
101
- class Completer(object):
99
+ class Completer:
102
100
  """Completes atoms using actions to complete them."""
103
101
 
104
102
  def __init__(self, runtime):
@@ -1,5 +1,3 @@
1
- # -*- coding: utf-8 -*-
2
-
3
1
  # Copyright (C) 2015 Yahoo! Inc. All Rights Reserved.
4
2
  #
5
3
  # Licensed under the Apache License, Version 2.0 (the "License"); you may
@@ -26,7 +24,7 @@ from taskflow import states
26
24
  LOG = logging.getLogger(__name__)
27
25
 
28
26
 
29
- class Decider(object, metaclass=abc.ABCMeta):
27
+ class Decider(metaclass=abc.ABCMeta):
30
28
  """Base class for deciders.
31
29
 
32
30
  Provides interface to be implemented by sub-classes.
@@ -1,5 +1,3 @@
1
- # -*- coding: utf-8 -*-
2
-
3
1
  # Copyright (C) 2012 Yahoo! Inc. All Rights Reserved.
4
2
  #
5
3
  # Licensed under the Apache License, Version 2.0 (the "License"); you may
@@ -40,11 +38,6 @@ from taskflow import storage
40
38
  from taskflow.types import failure
41
39
  from taskflow.utils import misc
42
40
 
43
- try:
44
- from taskflow.engines.action_engine import process_executor
45
- except ImportError:
46
- process_executor = None
47
-
48
41
  LOG = logging.getLogger(__name__)
49
42
 
50
43
 
@@ -170,7 +163,7 @@ class ActionEngine(base.Engine):
170
163
  """
171
164
 
172
165
  def __init__(self, flow, flow_detail, backend, options):
173
- super(ActionEngine, self).__init__(flow, flow_detail, backend, options)
166
+ super().__init__(flow, flow_detail, backend, options)
174
167
  self._runtime = None
175
168
  self._compiled = False
176
169
  self._compilation = None
@@ -479,8 +472,7 @@ class SerialActionEngine(ActionEngine):
479
472
  """Engine that runs tasks in serial manner."""
480
473
 
481
474
  def __init__(self, flow, flow_detail, backend, options):
482
- super(SerialActionEngine, self).__init__(flow, flow_detail,
483
- backend, options)
475
+ super().__init__(flow, flow_detail, backend, options)
484
476
  self._task_executor = executor.SerialTaskExecutor()
485
477
 
486
478
 
@@ -548,7 +540,6 @@ String (case insensitive) Executor used
548
540
  polling while a higher number will involve less polling but a slower time
549
541
  for an engine to notice a task has completed.
550
542
 
551
- .. |pe| replace:: process_executor
552
543
  .. |cfp| replace:: concurrent.futures.process
553
544
  .. |cft| replace:: concurrent.futures.thread
554
545
  .. |cf| replace:: concurrent.futures
@@ -563,16 +554,9 @@ String (case insensitive) Executor used
563
554
  _executor_cls_matchers = [
564
555
  _ExecutorTypeMatch((futures.ThreadPoolExecutor,),
565
556
  executor.ParallelThreadTaskExecutor),
566
- ]
567
- if process_executor is not None:
568
- _executor_cls_matchers.append(
569
- _ExecutorTypeMatch((futures.ProcessPoolExecutor,),
570
- process_executor.ParallelProcessTaskExecutor)
571
- )
572
- _executor_cls_matchers.append(
573
557
  _ExecutorTypeMatch((futures.Executor,),
574
558
  executor.ParallelThreadTaskExecutor),
575
- )
559
+ ]
576
560
 
577
561
  # One of these should match when a string/text is provided for the
578
562
  # 'executor' option (a mixed case equivalent is allowed since the match
@@ -584,18 +568,12 @@ String (case insensitive) Executor used
584
568
  'greenthreaded']),
585
569
  executor.ParallelGreenThreadTaskExecutor),
586
570
  ]
587
- if process_executor is not None:
588
- _executor_str_matchers.append(
589
- _ExecutorTextMatch(frozenset(['processes', 'process']),
590
- process_executor.ParallelProcessTaskExecutor)
591
- )
592
571
 
593
572
  # Used when no executor is provided (either a string or object)...
594
573
  _default_executor_cls = executor.ParallelThreadTaskExecutor
595
574
 
596
575
  def __init__(self, flow, flow_detail, backend, options):
597
- super(ParallelActionEngine, self).__init__(flow, flow_detail,
598
- backend, options)
576
+ super().__init__(flow, flow_detail, backend, options)
599
577
  # This ensures that any provided executor will be validated before
600
578
  # we get to far in the compilation/execution pipeline...
601
579
  self._task_executor = self._fetch_task_executor(self._options)
@@ -1,5 +1,3 @@
1
- # -*- coding: utf-8 -*-
2
-
3
1
  # Copyright (C) 2013 Yahoo! Inc. All Rights Reserved.
4
2
  #
5
3
  # Licensed under the Apache License, Version 2.0 (the "License"); you may
@@ -78,7 +76,7 @@ def _revert_task(task, arguments, result, failures, progress_callback=None):
78
76
  return (REVERTED, result)
79
77
 
80
78
 
81
- class SerialRetryExecutor(object):
79
+ class SerialRetryExecutor:
82
80
  """Executes and reverts retries."""
83
81
 
84
82
  def __init__(self):
@@ -105,7 +103,7 @@ class SerialRetryExecutor(object):
105
103
  return fut
106
104
 
107
105
 
108
- class TaskExecutor(object, metaclass=abc.ABCMeta):
106
+ class TaskExecutor(metaclass=abc.ABCMeta):
109
107
  """Executes and reverts tasks.
110
108
 
111
109
  This class takes task and its arguments and executes or reverts it.
@@ -1,5 +1,3 @@
1
- # -*- coding: utf-8 -*-
2
-
3
1
  # Copyright (C) 2014 Yahoo! Inc. All Rights Reserved.
4
2
  #
5
3
  # Licensed under the Apache License, Version 2.0 (the "License"); you may
@@ -43,7 +41,7 @@ _EdgeDecider = collections.namedtuple('_EdgeDecider',
43
41
  LOG = logging.getLogger(__name__)
44
42
 
45
43
 
46
- class Runtime(object):
44
+ class Runtime:
47
45
  """A aggregate of runtime objects, properties, ... used during execution.
48
46
 
49
47
  This object contains various utility methods and properties that represent
@@ -1,5 +1,3 @@
1
- # -*- coding: utf-8 -*-
2
-
3
1
  # Copyright (C) 2014 Yahoo! Inc. All Rights Reserved.
4
2
  #
5
3
  # Licensed under the Apache License, Version 2.0 (the "License"); you may
@@ -21,7 +19,7 @@ from taskflow import states as st
21
19
  from taskflow.types import failure
22
20
 
23
21
 
24
- class RetryScheduler(object):
22
+ class RetryScheduler:
25
23
  """Schedules retry atoms."""
26
24
 
27
25
  def __init__(self, runtime):
@@ -52,7 +50,7 @@ class RetryScheduler(object):
52
50
  " intention: %s" % intention)
53
51
 
54
52
 
55
- class TaskScheduler(object):
53
+ class TaskScheduler:
56
54
  """Schedules task atoms."""
57
55
 
58
56
  def __init__(self, runtime):
@@ -75,7 +73,7 @@ class TaskScheduler(object):
75
73
  " intention: %s" % intention)
76
74
 
77
75
 
78
- class Scheduler(object):
76
+ class Scheduler:
79
77
  """Safely schedules atoms using a runtime ``fetch_scheduler`` routine."""
80
78
 
81
79
  def __init__(self, runtime):
@@ -1,5 +1,3 @@
1
- # -*- coding: utf-8 -*-
2
-
3
1
  # Copyright (C) 2014 Yahoo! Inc. All Rights Reserved.
4
2
  #
5
3
  # Licensed under the Apache License, Version 2.0 (the "License"); you may
@@ -21,7 +19,7 @@ from taskflow import logging
21
19
  LOG = logging.getLogger(__name__)
22
20
 
23
21
 
24
- class ScopeWalker(object):
22
+ class ScopeWalker:
25
23
  """Walks through the scopes of a atom using a engines compilation.
26
24
 
27
25
  NOTE(harlowja): for internal usage only.
@@ -79,9 +77,9 @@ class ScopeWalker(object):
79
77
  """
80
78
  graph = self._execution_graph
81
79
  if self._predecessors is None:
82
- predecessors = set(
80
+ predecessors = {
83
81
  node for node in graph.bfs_predecessors_iter(self._atom)
84
- if graph.nodes[node]['kind'] in co.ATOMS)
82
+ if graph.nodes[node]['kind'] in co.ATOMS}
85
83
  self._predecessors = predecessors.copy()
86
84
  else:
87
85
  predecessors = self._predecessors.copy()
@@ -1,5 +1,3 @@
1
- # -*- coding: utf-8 -*-
2
-
3
1
  # Copyright (C) 2013 Yahoo! Inc. All Rights Reserved.
4
2
  #
5
3
  # Licensed under the Apache License, Version 2.0 (the "License"); you may
@@ -27,7 +25,7 @@ from taskflow.utils import iter_utils
27
25
  LOG = logging.getLogger(__name__)
28
26
 
29
27
 
30
- class Selector(object):
28
+ class Selector:
31
29
  """Selector that uses a compilation and aids in execution processes.
32
30
 
33
31
  Its primary purpose is to get the next atoms for execution or reversion
@@ -1,5 +1,3 @@
1
- # -*- coding: utf-8 -*-
2
-
3
1
  # Copyright (C) 2015 Yahoo! Inc. All Rights Reserved.
4
2
  #
5
3
  # Licensed under the Apache License, Version 2.0 (the "License"); you may