taskflow 5.1.0__tar.gz → 5.1.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 (331) hide show
  1. {taskflow-5.1.0 → taskflow-5.1.1}/ChangeLog +7 -0
  2. {taskflow-5.1.0 → taskflow-5.1.1}/PKG-INFO +1 -1
  3. taskflow-5.1.1/releasenotes/notes/fix-zookeeper-option-parsing-f9d37fbc39af47f4.yaml +7 -0
  4. {taskflow-5.1.0 → taskflow-5.1.1}/taskflow/jobs/backends/impl_zookeeper.py +3 -1
  5. {taskflow-5.1.0 → taskflow-5.1.1}/taskflow/persistence/backends/impl_zookeeper.py +3 -1
  6. {taskflow-5.1.0 → taskflow-5.1.1}/taskflow/tests/unit/jobs/test_zk_job.py +44 -0
  7. taskflow-5.1.1/taskflow/tests/unit/test_utils_kazoo_utils.py +67 -0
  8. {taskflow-5.1.0 → taskflow-5.1.1}/taskflow/utils/kazoo_utils.py +21 -8
  9. {taskflow-5.1.0 → taskflow-5.1.1}/taskflow.egg-info/PKG-INFO +1 -1
  10. {taskflow-5.1.0 → taskflow-5.1.1}/taskflow.egg-info/SOURCES.txt +2 -0
  11. taskflow-5.1.1/taskflow.egg-info/pbr.json +1 -0
  12. {taskflow-5.1.0 → taskflow-5.1.1}/tox.ini +1 -1
  13. taskflow-5.1.0/taskflow.egg-info/pbr.json +0 -1
  14. {taskflow-5.1.0 → taskflow-5.1.1}/.coveragerc +0 -0
  15. {taskflow-5.1.0 → taskflow-5.1.1}/.mailmap +0 -0
  16. {taskflow-5.1.0 → taskflow-5.1.1}/.pre-commit-config.yaml +0 -0
  17. {taskflow-5.1.0 → taskflow-5.1.1}/.stestr.conf +0 -0
  18. {taskflow-5.1.0 → taskflow-5.1.1}/.zuul.yaml +0 -0
  19. {taskflow-5.1.0 → taskflow-5.1.1}/AUTHORS +0 -0
  20. {taskflow-5.1.0 → taskflow-5.1.1}/CONTRIBUTING.rst +0 -0
  21. {taskflow-5.1.0 → taskflow-5.1.1}/LICENSE +0 -0
  22. {taskflow-5.1.0 → taskflow-5.1.1}/README.rst +0 -0
  23. {taskflow-5.1.0 → taskflow-5.1.1}/bindep.txt +0 -0
  24. {taskflow-5.1.0 → taskflow-5.1.1}/doc/diagrams/area_of_influence.graffle.tgz +0 -0
  25. {taskflow-5.1.0 → taskflow-5.1.1}/doc/diagrams/core.graffle.tgz +0 -0
  26. {taskflow-5.1.0 → taskflow-5.1.1}/doc/diagrams/jobboard.graffle.tgz +0 -0
  27. {taskflow-5.1.0 → taskflow-5.1.1}/doc/diagrams/tasks.graffle.tgz +0 -0
  28. {taskflow-5.1.0 → taskflow-5.1.1}/doc/diagrams/worker-engine.graffle.tgz +0 -0
  29. {taskflow-5.1.0 → taskflow-5.1.1}/doc/requirements.txt +0 -0
  30. {taskflow-5.1.0 → taskflow-5.1.1}/doc/source/conf.py +0 -0
  31. {taskflow-5.1.0 → taskflow-5.1.1}/doc/source/index.rst +0 -0
  32. {taskflow-5.1.0 → taskflow-5.1.1}/doc/source/templates/layout.html +0 -0
  33. {taskflow-5.1.0 → taskflow-5.1.1}/doc/source/user/arguments_and_results.rst +0 -0
  34. {taskflow-5.1.0 → taskflow-5.1.1}/doc/source/user/atoms.rst +0 -0
  35. {taskflow-5.1.0 → taskflow-5.1.1}/doc/source/user/conductors.rst +0 -0
  36. {taskflow-5.1.0 → taskflow-5.1.1}/doc/source/user/engines.rst +0 -0
  37. {taskflow-5.1.0 → taskflow-5.1.1}/doc/source/user/examples.rst +0 -0
  38. {taskflow-5.1.0 → taskflow-5.1.1}/doc/source/user/exceptions.rst +0 -0
  39. {taskflow-5.1.0 → taskflow-5.1.1}/doc/source/user/history.rst +0 -0
  40. {taskflow-5.1.0 → taskflow-5.1.1}/doc/source/user/img/area_of_influence.svg +0 -0
  41. {taskflow-5.1.0 → taskflow-5.1.1}/doc/source/user/img/conductor.png +0 -0
  42. {taskflow-5.1.0 → taskflow-5.1.1}/doc/source/user/img/conductor_cycle.png +0 -0
  43. {taskflow-5.1.0 → taskflow-5.1.1}/doc/source/user/img/distributed_flow_rpc.png +0 -0
  44. {taskflow-5.1.0 → taskflow-5.1.1}/doc/source/user/img/engine_states.svg +0 -0
  45. {taskflow-5.1.0 → taskflow-5.1.1}/doc/source/user/img/flow_states.svg +0 -0
  46. {taskflow-5.1.0 → taskflow-5.1.1}/doc/source/user/img/job_states.svg +0 -0
  47. {taskflow-5.1.0 → taskflow-5.1.1}/doc/source/user/img/jobboard.png +0 -0
  48. {taskflow-5.1.0 → taskflow-5.1.1}/doc/source/user/img/mandelbrot.png +0 -0
  49. {taskflow-5.1.0 → taskflow-5.1.1}/doc/source/user/img/retry_states.svg +0 -0
  50. {taskflow-5.1.0 → taskflow-5.1.1}/doc/source/user/img/task_states.svg +0 -0
  51. {taskflow-5.1.0 → taskflow-5.1.1}/doc/source/user/img/tasks.png +0 -0
  52. {taskflow-5.1.0 → taskflow-5.1.1}/doc/source/user/img/wbe_request_states.svg +0 -0
  53. {taskflow-5.1.0 → taskflow-5.1.1}/doc/source/user/img/worker-engine.svg +0 -0
  54. {taskflow-5.1.0 → taskflow-5.1.1}/doc/source/user/index.rst +0 -0
  55. {taskflow-5.1.0 → taskflow-5.1.1}/doc/source/user/inputs_and_outputs.rst +0 -0
  56. {taskflow-5.1.0 → taskflow-5.1.1}/doc/source/user/jobs.rst +0 -0
  57. {taskflow-5.1.0 → taskflow-5.1.1}/doc/source/user/notifications.rst +0 -0
  58. {taskflow-5.1.0 → taskflow-5.1.1}/doc/source/user/patterns.rst +0 -0
  59. {taskflow-5.1.0 → taskflow-5.1.1}/doc/source/user/persistence.rst +0 -0
  60. {taskflow-5.1.0 → taskflow-5.1.1}/doc/source/user/resumption.rst +0 -0
  61. {taskflow-5.1.0 → taskflow-5.1.1}/doc/source/user/shelf.rst +0 -0
  62. {taskflow-5.1.0 → taskflow-5.1.1}/doc/source/user/states.rst +0 -0
  63. {taskflow-5.1.0 → taskflow-5.1.1}/doc/source/user/types.rst +0 -0
  64. {taskflow-5.1.0 → taskflow-5.1.1}/doc/source/user/utils.rst +0 -0
  65. {taskflow-5.1.0 → taskflow-5.1.1}/doc/source/user/workers.rst +0 -0
  66. {taskflow-5.1.0 → taskflow-5.1.1}/pylintrc +0 -0
  67. {taskflow-5.1.0 → taskflow-5.1.1}/releasenotes/notes/.placeholder +0 -0
  68. {taskflow-5.1.0 → taskflow-5.1.1}/releasenotes/notes/add-sentinel-redis-support-9fd16e2a5dd5c0c9.yaml +0 -0
  69. {taskflow-5.1.0 → taskflow-5.1.1}/releasenotes/notes/drop-python-2-7-73d3113c69d724d6.yaml +0 -0
  70. {taskflow-5.1.0 → taskflow-5.1.1}/releasenotes/notes/fix-endless-loop-on-storage-error-dd4467f0bbc66abf.yaml +0 -0
  71. {taskflow-5.1.0 → taskflow-5.1.1}/releasenotes/notes/zookeeper-ssl-support-b9abf24a39096b62.yaml +0 -0
  72. {taskflow-5.1.0 → taskflow-5.1.1}/releasenotes/source/_static/.placeholder +0 -0
  73. {taskflow-5.1.0 → taskflow-5.1.1}/releasenotes/source/_templates/.placeholder +0 -0
  74. {taskflow-5.1.0 → taskflow-5.1.1}/releasenotes/source/conf.py +0 -0
  75. {taskflow-5.1.0 → taskflow-5.1.1}/releasenotes/source/index.rst +0 -0
  76. {taskflow-5.1.0 → taskflow-5.1.1}/releasenotes/source/ocata.rst +0 -0
  77. {taskflow-5.1.0 → taskflow-5.1.1}/releasenotes/source/pike.rst +0 -0
  78. {taskflow-5.1.0 → taskflow-5.1.1}/releasenotes/source/queens.rst +0 -0
  79. {taskflow-5.1.0 → taskflow-5.1.1}/releasenotes/source/rocky.rst +0 -0
  80. {taskflow-5.1.0 → taskflow-5.1.1}/releasenotes/source/stein.rst +0 -0
  81. {taskflow-5.1.0 → taskflow-5.1.1}/releasenotes/source/train.rst +0 -0
  82. {taskflow-5.1.0 → taskflow-5.1.1}/releasenotes/source/unreleased.rst +0 -0
  83. {taskflow-5.1.0 → taskflow-5.1.1}/releasenotes/source/ussuri.rst +0 -0
  84. {taskflow-5.1.0 → taskflow-5.1.1}/releasenotes/source/victoria.rst +0 -0
  85. {taskflow-5.1.0 → taskflow-5.1.1}/requirements.txt +0 -0
  86. {taskflow-5.1.0 → taskflow-5.1.1}/run_tests.sh +0 -0
  87. {taskflow-5.1.0 → taskflow-5.1.1}/setup.cfg +0 -0
  88. {taskflow-5.1.0 → taskflow-5.1.1}/setup.py +0 -0
  89. {taskflow-5.1.0 → taskflow-5.1.1}/taskflow/__init__.py +0 -0
  90. {taskflow-5.1.0 → taskflow-5.1.1}/taskflow/atom.py +0 -0
  91. {taskflow-5.1.0 → taskflow-5.1.1}/taskflow/conductors/__init__.py +0 -0
  92. {taskflow-5.1.0 → taskflow-5.1.1}/taskflow/conductors/backends/__init__.py +0 -0
  93. {taskflow-5.1.0 → taskflow-5.1.1}/taskflow/conductors/backends/impl_blocking.py +0 -0
  94. {taskflow-5.1.0 → taskflow-5.1.1}/taskflow/conductors/backends/impl_executor.py +0 -0
  95. {taskflow-5.1.0 → taskflow-5.1.1}/taskflow/conductors/backends/impl_nonblocking.py +0 -0
  96. {taskflow-5.1.0 → taskflow-5.1.1}/taskflow/conductors/base.py +0 -0
  97. {taskflow-5.1.0 → taskflow-5.1.1}/taskflow/contrib/__init__.py +0 -0
  98. {taskflow-5.1.0 → taskflow-5.1.1}/taskflow/deciders.py +0 -0
  99. {taskflow-5.1.0 → taskflow-5.1.1}/taskflow/engines/__init__.py +0 -0
  100. {taskflow-5.1.0 → taskflow-5.1.1}/taskflow/engines/action_engine/__init__.py +0 -0
  101. {taskflow-5.1.0 → taskflow-5.1.1}/taskflow/engines/action_engine/actions/__init__.py +0 -0
  102. {taskflow-5.1.0 → taskflow-5.1.1}/taskflow/engines/action_engine/actions/base.py +0 -0
  103. {taskflow-5.1.0 → taskflow-5.1.1}/taskflow/engines/action_engine/actions/retry.py +0 -0
  104. {taskflow-5.1.0 → taskflow-5.1.1}/taskflow/engines/action_engine/actions/task.py +0 -0
  105. {taskflow-5.1.0 → taskflow-5.1.1}/taskflow/engines/action_engine/builder.py +0 -0
  106. {taskflow-5.1.0 → taskflow-5.1.1}/taskflow/engines/action_engine/compiler.py +0 -0
  107. {taskflow-5.1.0 → taskflow-5.1.1}/taskflow/engines/action_engine/completer.py +0 -0
  108. {taskflow-5.1.0 → taskflow-5.1.1}/taskflow/engines/action_engine/deciders.py +0 -0
  109. {taskflow-5.1.0 → taskflow-5.1.1}/taskflow/engines/action_engine/engine.py +0 -0
  110. {taskflow-5.1.0 → taskflow-5.1.1}/taskflow/engines/action_engine/executor.py +0 -0
  111. {taskflow-5.1.0 → taskflow-5.1.1}/taskflow/engines/action_engine/process_executor.py +0 -0
  112. {taskflow-5.1.0 → taskflow-5.1.1}/taskflow/engines/action_engine/runtime.py +0 -0
  113. {taskflow-5.1.0 → taskflow-5.1.1}/taskflow/engines/action_engine/scheduler.py +0 -0
  114. {taskflow-5.1.0 → taskflow-5.1.1}/taskflow/engines/action_engine/scopes.py +0 -0
  115. {taskflow-5.1.0 → taskflow-5.1.1}/taskflow/engines/action_engine/selector.py +0 -0
  116. {taskflow-5.1.0 → taskflow-5.1.1}/taskflow/engines/action_engine/traversal.py +0 -0
  117. {taskflow-5.1.0 → taskflow-5.1.1}/taskflow/engines/base.py +0 -0
  118. {taskflow-5.1.0 → taskflow-5.1.1}/taskflow/engines/helpers.py +0 -0
  119. {taskflow-5.1.0 → taskflow-5.1.1}/taskflow/engines/worker_based/__init__.py +0 -0
  120. {taskflow-5.1.0 → taskflow-5.1.1}/taskflow/engines/worker_based/dispatcher.py +0 -0
  121. {taskflow-5.1.0 → taskflow-5.1.1}/taskflow/engines/worker_based/endpoint.py +0 -0
  122. {taskflow-5.1.0 → taskflow-5.1.1}/taskflow/engines/worker_based/engine.py +0 -0
  123. {taskflow-5.1.0 → taskflow-5.1.1}/taskflow/engines/worker_based/executor.py +0 -0
  124. {taskflow-5.1.0 → taskflow-5.1.1}/taskflow/engines/worker_based/protocol.py +0 -0
  125. {taskflow-5.1.0 → taskflow-5.1.1}/taskflow/engines/worker_based/proxy.py +0 -0
  126. {taskflow-5.1.0 → taskflow-5.1.1}/taskflow/engines/worker_based/server.py +0 -0
  127. {taskflow-5.1.0 → taskflow-5.1.1}/taskflow/engines/worker_based/types.py +0 -0
  128. {taskflow-5.1.0 → taskflow-5.1.1}/taskflow/engines/worker_based/worker.py +0 -0
  129. {taskflow-5.1.0 → taskflow-5.1.1}/taskflow/examples/99_bottles.py +0 -0
  130. {taskflow-5.1.0 → taskflow-5.1.1}/taskflow/examples/alphabet_soup.py +0 -0
  131. {taskflow-5.1.0 → taskflow-5.1.1}/taskflow/examples/build_a_car.py +0 -0
  132. {taskflow-5.1.0 → taskflow-5.1.1}/taskflow/examples/buildsystem.py +0 -0
  133. {taskflow-5.1.0 → taskflow-5.1.1}/taskflow/examples/calculate_in_parallel.py +0 -0
  134. {taskflow-5.1.0 → taskflow-5.1.1}/taskflow/examples/calculate_linear.py +0 -0
  135. {taskflow-5.1.0 → taskflow-5.1.1}/taskflow/examples/create_parallel_volume.py +0 -0
  136. {taskflow-5.1.0 → taskflow-5.1.1}/taskflow/examples/delayed_return.py +0 -0
  137. {taskflow-5.1.0 → taskflow-5.1.1}/taskflow/examples/distance_calculator.py +0 -0
  138. {taskflow-5.1.0 → taskflow-5.1.1}/taskflow/examples/dump_memory_backend.py +0 -0
  139. {taskflow-5.1.0 → taskflow-5.1.1}/taskflow/examples/echo_listener.py +0 -0
  140. {taskflow-5.1.0 → taskflow-5.1.1}/taskflow/examples/example_utils.py +0 -0
  141. {taskflow-5.1.0 → taskflow-5.1.1}/taskflow/examples/fake_billing.py +0 -0
  142. {taskflow-5.1.0 → taskflow-5.1.1}/taskflow/examples/graph_flow.py +0 -0
  143. {taskflow-5.1.0 → taskflow-5.1.1}/taskflow/examples/hello_world.py +0 -0
  144. {taskflow-5.1.0 → taskflow-5.1.1}/taskflow/examples/jobboard_produce_consume_colors.py +0 -0
  145. {taskflow-5.1.0 → taskflow-5.1.1}/taskflow/examples/parallel_table_multiply.py +0 -0
  146. {taskflow-5.1.0 → taskflow-5.1.1}/taskflow/examples/persistence_example.py +0 -0
  147. {taskflow-5.1.0 → taskflow-5.1.1}/taskflow/examples/pseudo_scoping.out.txt +0 -0
  148. {taskflow-5.1.0 → taskflow-5.1.1}/taskflow/examples/pseudo_scoping.py +0 -0
  149. {taskflow-5.1.0 → taskflow-5.1.1}/taskflow/examples/resume_from_backend.out.txt +0 -0
  150. {taskflow-5.1.0 → taskflow-5.1.1}/taskflow/examples/resume_from_backend.py +0 -0
  151. {taskflow-5.1.0 → taskflow-5.1.1}/taskflow/examples/resume_many_flows/my_flows.py +0 -0
  152. {taskflow-5.1.0 → taskflow-5.1.1}/taskflow/examples/resume_many_flows/resume_all.py +0 -0
  153. {taskflow-5.1.0 → taskflow-5.1.1}/taskflow/examples/resume_many_flows/run_flow.py +0 -0
  154. {taskflow-5.1.0 → taskflow-5.1.1}/taskflow/examples/resume_many_flows.out.txt +0 -0
  155. {taskflow-5.1.0 → taskflow-5.1.1}/taskflow/examples/resume_many_flows.py +0 -0
  156. {taskflow-5.1.0 → taskflow-5.1.1}/taskflow/examples/resume_vm_boot.py +0 -0
  157. {taskflow-5.1.0 → taskflow-5.1.1}/taskflow/examples/resume_volume_create.py +0 -0
  158. {taskflow-5.1.0 → taskflow-5.1.1}/taskflow/examples/retry_flow.out.txt +0 -0
  159. {taskflow-5.1.0 → taskflow-5.1.1}/taskflow/examples/retry_flow.py +0 -0
  160. {taskflow-5.1.0 → taskflow-5.1.1}/taskflow/examples/reverting_linear.out.txt +0 -0
  161. {taskflow-5.1.0 → taskflow-5.1.1}/taskflow/examples/reverting_linear.py +0 -0
  162. {taskflow-5.1.0 → taskflow-5.1.1}/taskflow/examples/run_by_iter.out.txt +0 -0
  163. {taskflow-5.1.0 → taskflow-5.1.1}/taskflow/examples/run_by_iter.py +0 -0
  164. {taskflow-5.1.0 → taskflow-5.1.1}/taskflow/examples/run_by_iter_enumerate.out.txt +0 -0
  165. {taskflow-5.1.0 → taskflow-5.1.1}/taskflow/examples/run_by_iter_enumerate.py +0 -0
  166. {taskflow-5.1.0 → taskflow-5.1.1}/taskflow/examples/share_engine_thread.py +0 -0
  167. {taskflow-5.1.0 → taskflow-5.1.1}/taskflow/examples/simple_linear.out.txt +0 -0
  168. {taskflow-5.1.0 → taskflow-5.1.1}/taskflow/examples/simple_linear.py +0 -0
  169. {taskflow-5.1.0 → taskflow-5.1.1}/taskflow/examples/simple_linear_listening.out.txt +0 -0
  170. {taskflow-5.1.0 → taskflow-5.1.1}/taskflow/examples/simple_linear_listening.py +0 -0
  171. {taskflow-5.1.0 → taskflow-5.1.1}/taskflow/examples/simple_linear_pass.out.txt +0 -0
  172. {taskflow-5.1.0 → taskflow-5.1.1}/taskflow/examples/simple_linear_pass.py +0 -0
  173. {taskflow-5.1.0 → taskflow-5.1.1}/taskflow/examples/simple_map_reduce.py +0 -0
  174. {taskflow-5.1.0 → taskflow-5.1.1}/taskflow/examples/switch_graph_flow.py +0 -0
  175. {taskflow-5.1.0 → taskflow-5.1.1}/taskflow/examples/timing_listener.py +0 -0
  176. {taskflow-5.1.0 → taskflow-5.1.1}/taskflow/examples/tox_conductor.py +0 -0
  177. {taskflow-5.1.0 → taskflow-5.1.1}/taskflow/examples/wbe_event_sender.py +0 -0
  178. {taskflow-5.1.0 → taskflow-5.1.1}/taskflow/examples/wbe_mandelbrot.out.txt +0 -0
  179. {taskflow-5.1.0 → taskflow-5.1.1}/taskflow/examples/wbe_mandelbrot.py +0 -0
  180. {taskflow-5.1.0 → taskflow-5.1.1}/taskflow/examples/wbe_simple_linear.out.txt +0 -0
  181. {taskflow-5.1.0 → taskflow-5.1.1}/taskflow/examples/wbe_simple_linear.py +0 -0
  182. {taskflow-5.1.0 → taskflow-5.1.1}/taskflow/examples/wrapped_exception.py +0 -0
  183. {taskflow-5.1.0 → taskflow-5.1.1}/taskflow/exceptions.py +0 -0
  184. {taskflow-5.1.0 → taskflow-5.1.1}/taskflow/flow.py +0 -0
  185. {taskflow-5.1.0 → taskflow-5.1.1}/taskflow/formatters.py +0 -0
  186. {taskflow-5.1.0 → taskflow-5.1.1}/taskflow/jobs/__init__.py +0 -0
  187. {taskflow-5.1.0 → taskflow-5.1.1}/taskflow/jobs/backends/__init__.py +0 -0
  188. {taskflow-5.1.0 → taskflow-5.1.1}/taskflow/jobs/backends/impl_redis.py +0 -0
  189. {taskflow-5.1.0 → taskflow-5.1.1}/taskflow/jobs/base.py +0 -0
  190. {taskflow-5.1.0 → taskflow-5.1.1}/taskflow/listeners/__init__.py +0 -0
  191. {taskflow-5.1.0 → taskflow-5.1.1}/taskflow/listeners/base.py +0 -0
  192. {taskflow-5.1.0 → taskflow-5.1.1}/taskflow/listeners/capturing.py +0 -0
  193. {taskflow-5.1.0 → taskflow-5.1.1}/taskflow/listeners/claims.py +0 -0
  194. {taskflow-5.1.0 → taskflow-5.1.1}/taskflow/listeners/logging.py +0 -0
  195. {taskflow-5.1.0 → taskflow-5.1.1}/taskflow/listeners/printing.py +0 -0
  196. {taskflow-5.1.0 → taskflow-5.1.1}/taskflow/listeners/timing.py +0 -0
  197. {taskflow-5.1.0 → taskflow-5.1.1}/taskflow/logging.py +0 -0
  198. {taskflow-5.1.0 → taskflow-5.1.1}/taskflow/patterns/__init__.py +0 -0
  199. {taskflow-5.1.0 → taskflow-5.1.1}/taskflow/patterns/graph_flow.py +0 -0
  200. {taskflow-5.1.0 → taskflow-5.1.1}/taskflow/patterns/linear_flow.py +0 -0
  201. {taskflow-5.1.0 → taskflow-5.1.1}/taskflow/patterns/unordered_flow.py +0 -0
  202. {taskflow-5.1.0 → taskflow-5.1.1}/taskflow/persistence/__init__.py +0 -0
  203. {taskflow-5.1.0 → taskflow-5.1.1}/taskflow/persistence/backends/__init__.py +0 -0
  204. {taskflow-5.1.0 → taskflow-5.1.1}/taskflow/persistence/backends/impl_dir.py +0 -0
  205. {taskflow-5.1.0 → taskflow-5.1.1}/taskflow/persistence/backends/impl_memory.py +0 -0
  206. {taskflow-5.1.0 → taskflow-5.1.1}/taskflow/persistence/backends/impl_sqlalchemy.py +0 -0
  207. {taskflow-5.1.0 → taskflow-5.1.1}/taskflow/persistence/backends/sqlalchemy/__init__.py +0 -0
  208. {taskflow-5.1.0 → taskflow-5.1.1}/taskflow/persistence/backends/sqlalchemy/alembic/README +0 -0
  209. {taskflow-5.1.0 → taskflow-5.1.1}/taskflow/persistence/backends/sqlalchemy/alembic/alembic.ini +0 -0
  210. {taskflow-5.1.0 → taskflow-5.1.1}/taskflow/persistence/backends/sqlalchemy/alembic/env.py +0 -0
  211. {taskflow-5.1.0 → taskflow-5.1.1}/taskflow/persistence/backends/sqlalchemy/alembic/script.py.mako +0 -0
  212. {taskflow-5.1.0 → taskflow-5.1.1}/taskflow/persistence/backends/sqlalchemy/alembic/versions/0bc3e1a3c135_set_result_meduimtext_type.py +0 -0
  213. {taskflow-5.1.0 → taskflow-5.1.1}/taskflow/persistence/backends/sqlalchemy/alembic/versions/14b227d79a87_add_intention_column.py +0 -0
  214. {taskflow-5.1.0 → taskflow-5.1.1}/taskflow/persistence/backends/sqlalchemy/alembic/versions/1c783c0c2875_replace_exception_an.py +0 -0
  215. {taskflow-5.1.0 → taskflow-5.1.1}/taskflow/persistence/backends/sqlalchemy/alembic/versions/1cea328f0f65_initial_logbook_deta.py +0 -0
  216. {taskflow-5.1.0 → taskflow-5.1.1}/taskflow/persistence/backends/sqlalchemy/alembic/versions/2ad4984f2864_switch_postgres_to_json_native.py +0 -0
  217. {taskflow-5.1.0 → taskflow-5.1.1}/taskflow/persistence/backends/sqlalchemy/alembic/versions/3162c0f3f8e4_add_revert_results_and_revert_failure_.py +0 -0
  218. {taskflow-5.1.0 → taskflow-5.1.1}/taskflow/persistence/backends/sqlalchemy/alembic/versions/40fc8c914bd2_fix_atomdetails_failure_size.py +0 -0
  219. {taskflow-5.1.0 → taskflow-5.1.1}/taskflow/persistence/backends/sqlalchemy/alembic/versions/589dccdf2b6e_rename_taskdetails_to_atomdetails.py +0 -0
  220. {taskflow-5.1.0 → taskflow-5.1.1}/taskflow/persistence/backends/sqlalchemy/alembic/versions/6df9422fcb43_fix_flowdetails_meta_size.py +0 -0
  221. {taskflow-5.1.0 → taskflow-5.1.1}/taskflow/persistence/backends/sqlalchemy/alembic/versions/84d6e888850_add_task_detail_type.py +0 -0
  222. {taskflow-5.1.0 → taskflow-5.1.1}/taskflow/persistence/backends/sqlalchemy/alembic/versions/README +0 -0
  223. {taskflow-5.1.0 → taskflow-5.1.1}/taskflow/persistence/backends/sqlalchemy/migration.py +0 -0
  224. {taskflow-5.1.0 → taskflow-5.1.1}/taskflow/persistence/backends/sqlalchemy/tables.py +0 -0
  225. {taskflow-5.1.0 → taskflow-5.1.1}/taskflow/persistence/base.py +0 -0
  226. {taskflow-5.1.0 → taskflow-5.1.1}/taskflow/persistence/models.py +0 -0
  227. {taskflow-5.1.0 → taskflow-5.1.1}/taskflow/persistence/path_based.py +0 -0
  228. {taskflow-5.1.0 → taskflow-5.1.1}/taskflow/retry.py +0 -0
  229. {taskflow-5.1.0 → taskflow-5.1.1}/taskflow/states.py +0 -0
  230. {taskflow-5.1.0 → taskflow-5.1.1}/taskflow/storage.py +0 -0
  231. {taskflow-5.1.0 → taskflow-5.1.1}/taskflow/task.py +0 -0
  232. {taskflow-5.1.0 → taskflow-5.1.1}/taskflow/test.py +0 -0
  233. {taskflow-5.1.0 → taskflow-5.1.1}/taskflow/tests/__init__.py +0 -0
  234. {taskflow-5.1.0 → taskflow-5.1.1}/taskflow/tests/test_examples.py +0 -0
  235. {taskflow-5.1.0 → taskflow-5.1.1}/taskflow/tests/unit/__init__.py +0 -0
  236. {taskflow-5.1.0 → taskflow-5.1.1}/taskflow/tests/unit/action_engine/__init__.py +0 -0
  237. {taskflow-5.1.0 → taskflow-5.1.1}/taskflow/tests/unit/action_engine/test_builder.py +0 -0
  238. {taskflow-5.1.0 → taskflow-5.1.1}/taskflow/tests/unit/action_engine/test_compile.py +0 -0
  239. {taskflow-5.1.0 → taskflow-5.1.1}/taskflow/tests/unit/action_engine/test_creation.py +0 -0
  240. {taskflow-5.1.0 → taskflow-5.1.1}/taskflow/tests/unit/action_engine/test_process_executor.py +0 -0
  241. {taskflow-5.1.0 → taskflow-5.1.1}/taskflow/tests/unit/action_engine/test_scoping.py +0 -0
  242. {taskflow-5.1.0 → taskflow-5.1.1}/taskflow/tests/unit/jobs/__init__.py +0 -0
  243. {taskflow-5.1.0 → taskflow-5.1.1}/taskflow/tests/unit/jobs/base.py +0 -0
  244. {taskflow-5.1.0 → taskflow-5.1.1}/taskflow/tests/unit/jobs/test_entrypoint.py +0 -0
  245. {taskflow-5.1.0 → taskflow-5.1.1}/taskflow/tests/unit/jobs/test_redis_job.py +0 -0
  246. {taskflow-5.1.0 → taskflow-5.1.1}/taskflow/tests/unit/patterns/__init__.py +0 -0
  247. {taskflow-5.1.0 → taskflow-5.1.1}/taskflow/tests/unit/patterns/test_graph_flow.py +0 -0
  248. {taskflow-5.1.0 → taskflow-5.1.1}/taskflow/tests/unit/patterns/test_linear_flow.py +0 -0
  249. {taskflow-5.1.0 → taskflow-5.1.1}/taskflow/tests/unit/patterns/test_unordered_flow.py +0 -0
  250. {taskflow-5.1.0 → taskflow-5.1.1}/taskflow/tests/unit/persistence/__init__.py +0 -0
  251. {taskflow-5.1.0 → taskflow-5.1.1}/taskflow/tests/unit/persistence/base.py +0 -0
  252. {taskflow-5.1.0 → taskflow-5.1.1}/taskflow/tests/unit/persistence/test_dir_persistence.py +0 -0
  253. {taskflow-5.1.0 → taskflow-5.1.1}/taskflow/tests/unit/persistence/test_memory_persistence.py +0 -0
  254. {taskflow-5.1.0 → taskflow-5.1.1}/taskflow/tests/unit/persistence/test_sql_persistence.py +0 -0
  255. {taskflow-5.1.0 → taskflow-5.1.1}/taskflow/tests/unit/persistence/test_zk_persistence.py +0 -0
  256. {taskflow-5.1.0 → taskflow-5.1.1}/taskflow/tests/unit/test_arguments_passing.py +0 -0
  257. {taskflow-5.1.0 → taskflow-5.1.1}/taskflow/tests/unit/test_check_transition.py +0 -0
  258. {taskflow-5.1.0 → taskflow-5.1.1}/taskflow/tests/unit/test_conductors.py +0 -0
  259. {taskflow-5.1.0 → taskflow-5.1.1}/taskflow/tests/unit/test_deciders.py +0 -0
  260. {taskflow-5.1.0 → taskflow-5.1.1}/taskflow/tests/unit/test_engine_helpers.py +0 -0
  261. {taskflow-5.1.0 → taskflow-5.1.1}/taskflow/tests/unit/test_engines.py +0 -0
  262. {taskflow-5.1.0 → taskflow-5.1.1}/taskflow/tests/unit/test_exceptions.py +0 -0
  263. {taskflow-5.1.0 → taskflow-5.1.1}/taskflow/tests/unit/test_failure.py +0 -0
  264. {taskflow-5.1.0 → taskflow-5.1.1}/taskflow/tests/unit/test_flow_dependencies.py +0 -0
  265. {taskflow-5.1.0 → taskflow-5.1.1}/taskflow/tests/unit/test_formatters.py +0 -0
  266. {taskflow-5.1.0 → taskflow-5.1.1}/taskflow/tests/unit/test_functor_task.py +0 -0
  267. {taskflow-5.1.0 → taskflow-5.1.1}/taskflow/tests/unit/test_listeners.py +0 -0
  268. {taskflow-5.1.0 → taskflow-5.1.1}/taskflow/tests/unit/test_mapfunctor_task.py +0 -0
  269. {taskflow-5.1.0 → taskflow-5.1.1}/taskflow/tests/unit/test_notifier.py +0 -0
  270. {taskflow-5.1.0 → taskflow-5.1.1}/taskflow/tests/unit/test_progress.py +0 -0
  271. {taskflow-5.1.0 → taskflow-5.1.1}/taskflow/tests/unit/test_reducefunctor_task.py +0 -0
  272. {taskflow-5.1.0 → taskflow-5.1.1}/taskflow/tests/unit/test_retries.py +0 -0
  273. {taskflow-5.1.0 → taskflow-5.1.1}/taskflow/tests/unit/test_states.py +0 -0
  274. {taskflow-5.1.0 → taskflow-5.1.1}/taskflow/tests/unit/test_storage.py +0 -0
  275. {taskflow-5.1.0 → taskflow-5.1.1}/taskflow/tests/unit/test_suspend.py +0 -0
  276. {taskflow-5.1.0 → taskflow-5.1.1}/taskflow/tests/unit/test_task.py +0 -0
  277. {taskflow-5.1.0 → taskflow-5.1.1}/taskflow/tests/unit/test_types.py +0 -0
  278. {taskflow-5.1.0 → taskflow-5.1.1}/taskflow/tests/unit/test_utils.py +0 -0
  279. {taskflow-5.1.0 → taskflow-5.1.1}/taskflow/tests/unit/test_utils_async_utils.py +0 -0
  280. {taskflow-5.1.0 → taskflow-5.1.1}/taskflow/tests/unit/test_utils_binary.py +0 -0
  281. {taskflow-5.1.0 → taskflow-5.1.1}/taskflow/tests/unit/test_utils_iter_utils.py +0 -0
  282. {taskflow-5.1.0 → taskflow-5.1.1}/taskflow/tests/unit/test_utils_threading_utils.py +0 -0
  283. {taskflow-5.1.0 → taskflow-5.1.1}/taskflow/tests/unit/worker_based/__init__.py +0 -0
  284. {taskflow-5.1.0 → taskflow-5.1.1}/taskflow/tests/unit/worker_based/test_creation.py +0 -0
  285. {taskflow-5.1.0 → taskflow-5.1.1}/taskflow/tests/unit/worker_based/test_dispatcher.py +0 -0
  286. {taskflow-5.1.0 → taskflow-5.1.1}/taskflow/tests/unit/worker_based/test_endpoint.py +0 -0
  287. {taskflow-5.1.0 → taskflow-5.1.1}/taskflow/tests/unit/worker_based/test_executor.py +0 -0
  288. {taskflow-5.1.0 → taskflow-5.1.1}/taskflow/tests/unit/worker_based/test_message_pump.py +0 -0
  289. {taskflow-5.1.0 → taskflow-5.1.1}/taskflow/tests/unit/worker_based/test_pipeline.py +0 -0
  290. {taskflow-5.1.0 → taskflow-5.1.1}/taskflow/tests/unit/worker_based/test_protocol.py +0 -0
  291. {taskflow-5.1.0 → taskflow-5.1.1}/taskflow/tests/unit/worker_based/test_proxy.py +0 -0
  292. {taskflow-5.1.0 → taskflow-5.1.1}/taskflow/tests/unit/worker_based/test_server.py +0 -0
  293. {taskflow-5.1.0 → taskflow-5.1.1}/taskflow/tests/unit/worker_based/test_types.py +0 -0
  294. {taskflow-5.1.0 → taskflow-5.1.1}/taskflow/tests/unit/worker_based/test_worker.py +0 -0
  295. {taskflow-5.1.0 → taskflow-5.1.1}/taskflow/tests/utils.py +0 -0
  296. {taskflow-5.1.0 → taskflow-5.1.1}/taskflow/types/__init__.py +0 -0
  297. {taskflow-5.1.0 → taskflow-5.1.1}/taskflow/types/entity.py +0 -0
  298. {taskflow-5.1.0 → taskflow-5.1.1}/taskflow/types/failure.py +0 -0
  299. {taskflow-5.1.0 → taskflow-5.1.1}/taskflow/types/graph.py +0 -0
  300. {taskflow-5.1.0 → taskflow-5.1.1}/taskflow/types/latch.py +0 -0
  301. {taskflow-5.1.0 → taskflow-5.1.1}/taskflow/types/notifier.py +0 -0
  302. {taskflow-5.1.0 → taskflow-5.1.1}/taskflow/types/sets.py +0 -0
  303. {taskflow-5.1.0 → taskflow-5.1.1}/taskflow/types/timing.py +0 -0
  304. {taskflow-5.1.0 → taskflow-5.1.1}/taskflow/types/tree.py +0 -0
  305. {taskflow-5.1.0 → taskflow-5.1.1}/taskflow/utils/__init__.py +0 -0
  306. {taskflow-5.1.0 → taskflow-5.1.1}/taskflow/utils/async_utils.py +0 -0
  307. {taskflow-5.1.0 → taskflow-5.1.1}/taskflow/utils/banner.py +0 -0
  308. {taskflow-5.1.0 → taskflow-5.1.1}/taskflow/utils/eventlet_utils.py +0 -0
  309. {taskflow-5.1.0 → taskflow-5.1.1}/taskflow/utils/iter_utils.py +0 -0
  310. {taskflow-5.1.0 → taskflow-5.1.1}/taskflow/utils/kombu_utils.py +0 -0
  311. {taskflow-5.1.0 → taskflow-5.1.1}/taskflow/utils/misc.py +0 -0
  312. {taskflow-5.1.0 → taskflow-5.1.1}/taskflow/utils/persistence_utils.py +0 -0
  313. {taskflow-5.1.0 → taskflow-5.1.1}/taskflow/utils/redis_utils.py +0 -0
  314. {taskflow-5.1.0 → taskflow-5.1.1}/taskflow/utils/schema_utils.py +0 -0
  315. {taskflow-5.1.0 → taskflow-5.1.1}/taskflow/utils/threading_utils.py +0 -0
  316. {taskflow-5.1.0 → taskflow-5.1.1}/taskflow/version.py +0 -0
  317. {taskflow-5.1.0 → taskflow-5.1.1}/taskflow.egg-info/dependency_links.txt +0 -0
  318. {taskflow-5.1.0 → taskflow-5.1.1}/taskflow.egg-info/entry_points.txt +0 -0
  319. {taskflow-5.1.0 → taskflow-5.1.1}/taskflow.egg-info/not-zip-safe +0 -0
  320. {taskflow-5.1.0 → taskflow-5.1.1}/taskflow.egg-info/requires.txt +0 -0
  321. {taskflow-5.1.0 → taskflow-5.1.1}/taskflow.egg-info/top_level.txt +0 -0
  322. {taskflow-5.1.0 → taskflow-5.1.1}/test-requirements.txt +0 -0
  323. {taskflow-5.1.0 → taskflow-5.1.1}/tools/clear_zk.sh +0 -0
  324. {taskflow-5.1.0 → taskflow-5.1.1}/tools/env_builder.sh +0 -0
  325. {taskflow-5.1.0 → taskflow-5.1.1}/tools/pretty_tox.sh +0 -0
  326. {taskflow-5.1.0 → taskflow-5.1.1}/tools/schema_generator.py +0 -0
  327. {taskflow-5.1.0 → taskflow-5.1.1}/tools/speed_test.py +0 -0
  328. {taskflow-5.1.0 → taskflow-5.1.1}/tools/state_graph.py +0 -0
  329. {taskflow-5.1.0 → taskflow-5.1.1}/tools/subunit_trace.py +0 -0
  330. {taskflow-5.1.0 → taskflow-5.1.1}/tools/test-setup.sh +0 -0
  331. {taskflow-5.1.0 → taskflow-5.1.1}/tools/update_states.sh +0 -0
@@ -1,6 +1,13 @@
1
1
  CHANGES
2
2
  =======
3
3
 
4
+ 5.1.1
5
+ -----
6
+
7
+ * Fix parsing of zookeeper jobboard backend options
8
+ * Update TOX\_CONSTRAINTS\_FILE for stable/2023.1
9
+ * Update .gitreview for stable/2023.1
10
+
4
11
  5.1.0
5
12
  -----
6
13
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: taskflow
3
- Version: 5.1.0
3
+ Version: 5.1.1
4
4
  Summary: Taskflow structured state management library.
5
5
  Home-page: https://docs.openstack.org/taskflow/latest/
6
6
  Author: OpenStack
@@ -0,0 +1,7 @@
1
+ ---
2
+ fixes:
3
+ - |
4
+ Fixed an issue when the configuration options of the zookeeper jobboard
5
+ backend were passed as strings, the string ''"False"'' was wrongly
6
+ interpreted as ''True''. Now the string ''"False"'' is interpreted as the
7
+ ''False'' boolean.
@@ -28,6 +28,7 @@ from kazoo.protocol import states as k_states
28
28
  from kazoo.recipe import watchers
29
29
  from oslo_serialization import jsonutils
30
30
  from oslo_utils import excutils
31
+ from oslo_utils import strutils
31
32
  from oslo_utils import timeutils
32
33
  from oslo_utils import uuidutils
33
34
 
@@ -829,7 +830,8 @@ class ZookeeperJobBoard(base.NotifyingJobBoard):
829
830
  excp.raise_with_cause(excp.JobFailure,
830
831
  "Failed to connect to zookeeper")
831
832
  try:
832
- if self._conf.get('check_compatible', True):
833
+ if strutils.bool_from_string(
834
+ self._conf.get('check_compatible'), default=True):
833
835
  kazoo_utils.check_compatible(self._client, self.MIN_ZK_VERSION)
834
836
  if self._worker is None and self._emit_notifications:
835
837
  self._worker = futurist.ThreadPoolExecutor(max_workers=1)
@@ -20,6 +20,7 @@ import contextlib
20
20
  from kazoo import exceptions as k_exc
21
21
  from kazoo.protocol import paths
22
22
  from oslo_serialization import jsonutils
23
+ from oslo_utils import strutils
23
24
 
24
25
  from taskflow import exceptions as exc
25
26
  from taskflow.persistence import path_based
@@ -161,7 +162,8 @@ class ZkConnection(path_based.PathBasedConnection):
161
162
  def validate(self):
162
163
  with self._exc_wrapper():
163
164
  try:
164
- if self._conf.get('check_compatible', True):
165
+ if strutils.bool_from_string(
166
+ self._conf.get('check_compatible'), default=True):
165
167
  k_utils.check_compatible(self._client, MIN_ZK_VERSION)
166
168
  except exc.IncompatibleVersion:
167
169
  exc.raise_with_cause(exc.StorageFailure, "Backend storage is"
@@ -293,3 +293,47 @@ class ZakeJobboardTest(test.TestCase, ZookeeperBoardTestMixin):
293
293
  self.assertRaises(excp.NotImplementedError,
294
294
  self.board.register_entity,
295
295
  entity_instance_2)
296
+
297
+ def test_connect_check_compatible(self):
298
+ # Valid version
299
+ client = fake_client.FakeClient()
300
+ board = impl_zookeeper.ZookeeperJobBoard(
301
+ 'test-board', {'check_compatible': True},
302
+ client=client)
303
+ self.addCleanup(board.close)
304
+ self.addCleanup(self.close_client, client)
305
+
306
+ with base.connect_close(board):
307
+ pass
308
+
309
+ # Invalid version, no check
310
+ client = fake_client.FakeClient(server_version=(3, 2, 0))
311
+ board = impl_zookeeper.ZookeeperJobBoard(
312
+ 'test-board', {'check_compatible': False},
313
+ client=client)
314
+ self.addCleanup(board.close)
315
+ self.addCleanup(self.close_client, client)
316
+
317
+ with base.connect_close(board):
318
+ pass
319
+
320
+ # Invalid version, check_compatible=True
321
+ client = fake_client.FakeClient(server_version=(3, 2, 0))
322
+ board = impl_zookeeper.ZookeeperJobBoard(
323
+ 'test-board', {'check_compatible': True},
324
+ client=client)
325
+ self.addCleanup(board.close)
326
+ self.addCleanup(self.close_client, client)
327
+
328
+ self.assertRaises(excp.IncompatibleVersion, board.connect)
329
+
330
+ # Invalid version, check_compatible='False'
331
+ client = fake_client.FakeClient(server_version=(3, 2, 0))
332
+ board = impl_zookeeper.ZookeeperJobBoard(
333
+ 'test-board', {'check_compatible': 'False'},
334
+ client=client)
335
+ self.addCleanup(board.close)
336
+ self.addCleanup(self.close_client, client)
337
+
338
+ with base.connect_close(board):
339
+ pass
@@ -0,0 +1,67 @@
1
+ # -*- coding: utf-8 -*-
2
+
3
+ # Copyright (C) Red Hat
4
+ #
5
+ # Licensed under the Apache License, Version 2.0 (the "License"); you may
6
+ # not use this file except in compliance with the License. You may obtain
7
+ # a copy of the License at
8
+ #
9
+ # http://www.apache.org/licenses/LICENSE-2.0
10
+ #
11
+ # Unless required by applicable law or agreed to in writing, software
12
+ # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
13
+ # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
14
+ # License for the specific language governing permissions and limitations
15
+ # under the License.
16
+
17
+ from unittest import mock
18
+
19
+ from taskflow import test
20
+ from taskflow.utils import kazoo_utils
21
+
22
+
23
+ class MakeClientTest(test.TestCase):
24
+
25
+ @mock.patch("kazoo.client.KazooClient")
26
+ def test_make_client_config(self, mock_kazoo_client):
27
+ conf = {}
28
+ expected = {
29
+ 'hosts': 'localhost:2181',
30
+ 'logger': mock.ANY,
31
+ 'read_only': False,
32
+ 'randomize_hosts': False,
33
+ 'keyfile': None,
34
+ 'keyfile_password': None,
35
+ 'certfile': None,
36
+ 'use_ssl': False,
37
+ 'verify_certs': True
38
+ }
39
+
40
+ kazoo_utils.make_client(conf)
41
+
42
+ mock_kazoo_client.assert_called_once_with(**expected)
43
+
44
+ mock_kazoo_client.reset_mock()
45
+
46
+ # With boolean passed as strings
47
+ conf = {
48
+ 'use_ssl': 'True',
49
+ 'verify_certs': 'False'
50
+ }
51
+ expected = {
52
+ 'hosts': 'localhost:2181',
53
+ 'logger': mock.ANY,
54
+ 'read_only': False,
55
+ 'randomize_hosts': False,
56
+ 'keyfile': None,
57
+ 'keyfile_password': None,
58
+ 'certfile': None,
59
+ 'use_ssl': True,
60
+ 'verify_certs': False
61
+ }
62
+
63
+ kazoo_utils.make_client(conf)
64
+
65
+ mock_kazoo_client.assert_called_once_with(**expected)
66
+
67
+ mock_kazoo_client.reset_mock()
@@ -17,6 +17,7 @@
17
17
  from kazoo import client
18
18
  from kazoo import exceptions as k_exc
19
19
  from oslo_utils import reflection
20
+ from oslo_utils import strutils
20
21
 
21
22
  from taskflow import exceptions as exc
22
23
  from taskflow import logging
@@ -24,6 +25,15 @@ from taskflow import logging
24
25
 
25
26
  LOG = logging.getLogger(__name__)
26
27
 
28
+ CONF_TRANSFERS = (
29
+ ('read_only', strutils.bool_from_string, False),
30
+ ('randomize_hosts', strutils.bool_from_string, False),
31
+ ('keyfile', None, None),
32
+ ('keyfile_password', None, None),
33
+ ('certfile', None, None),
34
+ ('use_ssl', strutils.bool_from_string, False),
35
+ ('verify_certs', strutils.bool_from_string, True))
36
+
27
37
 
28
38
  def _parse_hosts(hosts):
29
39
  if isinstance(hosts, str):
@@ -193,16 +203,19 @@ def make_client(conf):
193
203
  """
194
204
  # See: https://kazoo.readthedocs.io/en/latest/api/client.html
195
205
  client_kwargs = {
196
- 'read_only': bool(conf.get('read_only')),
197
- 'randomize_hosts': bool(conf.get('randomize_hosts')),
198
206
  'logger': LOG,
199
- 'keyfile': conf.get('keyfile', None),
200
- 'keyfile_password': conf.get('keyfile_password', None),
201
- 'certfile': conf.get('certfile', None),
202
- 'use_ssl': conf.get('use_ssl', False),
203
- 'verify_certs': conf.get('verify_certs', True),
204
-
205
207
  }
208
+
209
+ for key, value_type_converter, default in CONF_TRANSFERS:
210
+ if key in conf:
211
+ if value_type_converter is not None:
212
+ client_kwargs[key] = value_type_converter(conf[key],
213
+ default=default)
214
+ else:
215
+ client_kwargs[key] = conf[key]
216
+ else:
217
+ client_kwargs[key] = default
218
+
206
219
  # See: https://kazoo.readthedocs.io/en/latest/api/retry.html
207
220
  if 'command_retry' in conf:
208
221
  client_kwargs['command_retry'] = conf['command_retry']
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: taskflow
3
- Version: 5.1.0
3
+ Version: 5.1.1
4
4
  Summary: Taskflow structured state management library.
5
5
  Home-page: https://docs.openstack.org/taskflow/latest/
6
6
  Author: OpenStack
@@ -62,6 +62,7 @@ releasenotes/notes/.placeholder
62
62
  releasenotes/notes/add-sentinel-redis-support-9fd16e2a5dd5c0c9.yaml
63
63
  releasenotes/notes/drop-python-2-7-73d3113c69d724d6.yaml
64
64
  releasenotes/notes/fix-endless-loop-on-storage-error-dd4467f0bbc66abf.yaml
65
+ releasenotes/notes/fix-zookeeper-option-parsing-f9d37fbc39af47f4.yaml
65
66
  releasenotes/notes/zookeeper-ssl-support-b9abf24a39096b62.yaml
66
67
  releasenotes/source/conf.py
67
68
  releasenotes/source/index.rst
@@ -261,6 +262,7 @@ taskflow/tests/unit/test_utils.py
261
262
  taskflow/tests/unit/test_utils_async_utils.py
262
263
  taskflow/tests/unit/test_utils_binary.py
263
264
  taskflow/tests/unit/test_utils_iter_utils.py
265
+ taskflow/tests/unit/test_utils_kazoo_utils.py
264
266
  taskflow/tests/unit/test_utils_threading_utils.py
265
267
  taskflow/tests/unit/action_engine/__init__.py
266
268
  taskflow/tests/unit/action_engine/test_builder.py
@@ -0,0 +1 @@
1
+ {"git_version": "78aa34f4", "is_release": true}
@@ -9,7 +9,7 @@ setenv =
9
9
  # We need to install a bit more than just `test' because those drivers have
10
10
  # custom tests that we always run
11
11
  deps =
12
- -c{env:TOX_CONSTRAINTS_FILE:https://releases.openstack.org/constraints/upper/master}
12
+ -c{env:TOX_CONSTRAINTS_FILE:https://releases.openstack.org/constraints/upper/2023.1}
13
13
  -r{toxinidir}/test-requirements.txt
14
14
  -r{toxinidir}/requirements.txt
15
15
  commands =
@@ -1 +0,0 @@
1
- {"git_version": "5bcac4c7", "is_release": true}
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes