taskflow 5.12.0__py3-none-any.whl → 6.0.1__py3-none-any.whl

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 (204) hide show
  1. taskflow/atom.py +3 -5
  2. taskflow/conductors/backends/__init__.py +0 -2
  3. taskflow/conductors/backends/impl_blocking.py +1 -3
  4. taskflow/conductors/backends/impl_executor.py +3 -6
  5. taskflow/conductors/backends/impl_nonblocking.py +1 -3
  6. taskflow/conductors/base.py +1 -3
  7. taskflow/deciders.py +0 -2
  8. taskflow/engines/__init__.py +0 -2
  9. taskflow/engines/action_engine/actions/base.py +1 -3
  10. taskflow/engines/action_engine/actions/retry.py +1 -3
  11. taskflow/engines/action_engine/actions/task.py +1 -3
  12. taskflow/engines/action_engine/builder.py +2 -4
  13. taskflow/engines/action_engine/compiler.py +9 -11
  14. taskflow/engines/action_engine/completer.py +5 -7
  15. taskflow/engines/action_engine/deciders.py +1 -3
  16. taskflow/engines/action_engine/engine.py +4 -26
  17. taskflow/engines/action_engine/executor.py +2 -4
  18. taskflow/engines/action_engine/runtime.py +1 -3
  19. taskflow/engines/action_engine/scheduler.py +3 -5
  20. taskflow/engines/action_engine/scopes.py +3 -5
  21. taskflow/engines/action_engine/selector.py +1 -3
  22. taskflow/engines/action_engine/traversal.py +0 -2
  23. taskflow/engines/base.py +1 -3
  24. taskflow/engines/helpers.py +0 -2
  25. taskflow/engines/worker_based/dispatcher.py +2 -4
  26. taskflow/engines/worker_based/endpoint.py +1 -3
  27. taskflow/engines/worker_based/engine.py +1 -4
  28. taskflow/engines/worker_based/executor.py +0 -2
  29. taskflow/engines/worker_based/protocol.py +1 -3
  30. taskflow/engines/worker_based/proxy.py +2 -4
  31. taskflow/engines/worker_based/server.py +3 -5
  32. taskflow/engines/worker_based/types.py +6 -7
  33. taskflow/engines/worker_based/worker.py +4 -6
  34. taskflow/examples/99_bottles.py +0 -2
  35. taskflow/examples/alphabet_soup.py +0 -2
  36. taskflow/examples/build_a_car.py +1 -3
  37. taskflow/examples/buildsystem.py +1 -3
  38. taskflow/examples/calculate_in_parallel.py +1 -3
  39. taskflow/examples/calculate_linear.py +3 -5
  40. taskflow/examples/create_parallel_volume.py +2 -5
  41. taskflow/examples/delayed_return.py +1 -3
  42. taskflow/examples/distance_calculator.py +12 -24
  43. taskflow/examples/dump_memory_backend.py +1 -3
  44. taskflow/examples/echo_listener.py +0 -2
  45. taskflow/examples/example_utils.py +1 -3
  46. taskflow/examples/fake_billing.py +9 -11
  47. taskflow/examples/graph_flow.py +2 -4
  48. taskflow/examples/hello_world.py +2 -4
  49. taskflow/examples/jobboard_produce_consume_colors.py +3 -5
  50. taskflow/examples/parallel_table_multiply.py +1 -3
  51. taskflow/examples/persistence_example.py +1 -3
  52. taskflow/examples/pseudo_scoping.py +2 -4
  53. taskflow/examples/resume_from_backend.py +1 -3
  54. taskflow/examples/resume_many_flows/my_flows.py +0 -2
  55. taskflow/examples/resume_many_flows/resume_all.py +1 -3
  56. taskflow/examples/resume_many_flows/run_flow.py +2 -4
  57. taskflow/examples/resume_many_flows.py +0 -2
  58. taskflow/examples/resume_vm_boot.py +12 -15
  59. taskflow/examples/resume_volume_create.py +3 -5
  60. taskflow/examples/retry_flow.py +0 -2
  61. taskflow/examples/reverting_linear.py +1 -3
  62. taskflow/examples/run_by_iter.py +0 -2
  63. taskflow/examples/run_by_iter_enumerate.py +1 -3
  64. taskflow/examples/share_engine_thread.py +2 -4
  65. taskflow/examples/simple_linear.py +0 -2
  66. taskflow/examples/simple_linear_listening.py +1 -3
  67. taskflow/examples/simple_linear_pass.py +0 -2
  68. taskflow/examples/simple_map_reduce.py +0 -2
  69. taskflow/examples/switch_graph_flow.py +1 -3
  70. taskflow/examples/timing_listener.py +1 -3
  71. taskflow/examples/tox_conductor.py +3 -5
  72. taskflow/examples/wbe_event_sender.py +0 -2
  73. taskflow/examples/wbe_mandelbrot.py +0 -2
  74. taskflow/examples/wbe_simple_linear.py +0 -2
  75. taskflow/examples/wrapped_exception.py +0 -2
  76. taskflow/exceptions.py +7 -9
  77. taskflow/flow.py +1 -3
  78. taskflow/formatters.py +22 -8
  79. taskflow/jobs/backends/__init__.py +0 -2
  80. taskflow/jobs/backends/impl_redis.py +22 -18
  81. taskflow/jobs/backends/impl_zookeeper.py +7 -8
  82. taskflow/jobs/base.py +5 -7
  83. taskflow/listeners/base.py +1 -3
  84. taskflow/listeners/capturing.py +1 -3
  85. taskflow/listeners/claims.py +1 -3
  86. taskflow/listeners/logging.py +10 -6
  87. taskflow/listeners/printing.py +1 -3
  88. taskflow/listeners/timing.py +10 -13
  89. taskflow/logging.py +0 -2
  90. taskflow/patterns/graph_flow.py +2 -4
  91. taskflow/patterns/linear_flow.py +4 -9
  92. taskflow/patterns/unordered_flow.py +4 -9
  93. taskflow/persistence/backends/__init__.py +1 -3
  94. taskflow/persistence/backends/impl_dir.py +3 -6
  95. taskflow/persistence/backends/impl_memory.py +6 -9
  96. taskflow/persistence/backends/impl_sqlalchemy.py +4 -6
  97. taskflow/persistence/backends/impl_zookeeper.py +2 -4
  98. taskflow/persistence/backends/sqlalchemy/alembic/env.py +0 -2
  99. taskflow/persistence/backends/sqlalchemy/alembic/versions/00af93df9d77_add_unique_into_all_indexes.py +74 -0
  100. taskflow/persistence/backends/sqlalchemy/alembic/versions/14b227d79a87_add_intention_column.py +0 -2
  101. taskflow/persistence/backends/sqlalchemy/alembic/versions/1c783c0c2875_replace_exception_an.py +0 -2
  102. taskflow/persistence/backends/sqlalchemy/alembic/versions/1cea328f0f65_initial_logbook_deta.py +0 -2
  103. taskflow/persistence/backends/sqlalchemy/alembic/versions/2ad4984f2864_switch_postgres_to_json_native.py +0 -2
  104. taskflow/persistence/backends/sqlalchemy/alembic/versions/3162c0f3f8e4_add_revert_results_and_revert_failure_.py +0 -2
  105. taskflow/persistence/backends/sqlalchemy/alembic/versions/589dccdf2b6e_rename_taskdetails_to_atomdetails.py +0 -2
  106. taskflow/persistence/backends/sqlalchemy/alembic/versions/84d6e888850_add_task_detail_type.py +0 -2
  107. taskflow/persistence/backends/sqlalchemy/tables.py +0 -2
  108. taskflow/persistence/base.py +2 -4
  109. taskflow/persistence/models.py +19 -24
  110. taskflow/persistence/path_based.py +1 -3
  111. taskflow/retry.py +12 -18
  112. taskflow/states.py +0 -2
  113. taskflow/storage.py +9 -11
  114. taskflow/task.py +15 -18
  115. taskflow/test.py +5 -5
  116. taskflow/tests/test_examples.py +0 -2
  117. taskflow/tests/unit/action_engine/test_builder.py +1 -3
  118. taskflow/tests/unit/action_engine/test_compile.py +4 -6
  119. taskflow/tests/unit/action_engine/test_creation.py +0 -21
  120. taskflow/tests/unit/action_engine/test_scoping.py +1 -3
  121. taskflow/tests/unit/jobs/base.py +1 -3
  122. taskflow/tests/unit/jobs/test_entrypoint.py +0 -2
  123. taskflow/tests/unit/jobs/test_redis_job.py +1 -3
  124. taskflow/tests/unit/jobs/test_zk_job.py +2 -4
  125. taskflow/tests/unit/patterns/test_graph_flow.py +18 -20
  126. taskflow/tests/unit/patterns/test_linear_flow.py +7 -9
  127. taskflow/tests/unit/patterns/test_unordered_flow.py +12 -14
  128. taskflow/tests/unit/persistence/base.py +2 -4
  129. taskflow/tests/unit/persistence/test_dir_persistence.py +2 -4
  130. taskflow/tests/unit/persistence/test_memory_persistence.py +2 -4
  131. taskflow/tests/unit/persistence/test_sql_persistence.py +8 -10
  132. taskflow/tests/unit/persistence/test_zk_persistence.py +2 -4
  133. taskflow/tests/unit/test_arguments_passing.py +3 -25
  134. taskflow/tests/unit/test_check_transition.py +3 -5
  135. taskflow/tests/unit/test_conductors.py +0 -2
  136. taskflow/tests/unit/test_deciders.py +1 -3
  137. taskflow/tests/unit/test_engine_helpers.py +0 -2
  138. taskflow/tests/unit/test_engines.py +19 -102
  139. taskflow/tests/unit/test_exceptions.py +4 -6
  140. taskflow/tests/unit/test_failure.py +10 -12
  141. taskflow/tests/unit/test_flow_dependencies.py +62 -64
  142. taskflow/tests/unit/test_formatters.py +0 -2
  143. taskflow/tests/unit/test_functor_task.py +1 -3
  144. taskflow/tests/unit/test_listeners.py +9 -11
  145. taskflow/tests/unit/test_mapfunctor_task.py +1 -3
  146. taskflow/tests/unit/test_notifier.py +1 -3
  147. taskflow/tests/unit/test_progress.py +2 -4
  148. taskflow/tests/unit/test_reducefunctor_task.py +1 -3
  149. taskflow/tests/unit/test_retries.py +1 -25
  150. taskflow/tests/unit/test_states.py +0 -2
  151. taskflow/tests/unit/test_storage.py +10 -12
  152. taskflow/tests/unit/test_suspend.py +2 -23
  153. taskflow/tests/unit/test_task.py +17 -19
  154. taskflow/tests/unit/test_types.py +4 -6
  155. taskflow/tests/unit/test_utils.py +9 -11
  156. taskflow/tests/unit/test_utils_async_utils.py +0 -2
  157. taskflow/tests/unit/test_utils_binary.py +12 -14
  158. taskflow/tests/unit/test_utils_iter_utils.py +1 -3
  159. taskflow/tests/unit/test_utils_kazoo_utils.py +0 -2
  160. taskflow/tests/unit/test_utils_threading_utils.py +1 -3
  161. taskflow/tests/unit/worker_based/test_creation.py +0 -2
  162. taskflow/tests/unit/worker_based/test_dispatcher.py +0 -2
  163. taskflow/tests/unit/worker_based/test_endpoint.py +2 -4
  164. taskflow/tests/unit/worker_based/test_executor.py +1 -3
  165. taskflow/tests/unit/worker_based/test_message_pump.py +0 -2
  166. taskflow/tests/unit/worker_based/test_pipeline.py +0 -2
  167. taskflow/tests/unit/worker_based/test_protocol.py +2 -4
  168. taskflow/tests/unit/worker_based/test_proxy.py +2 -4
  169. taskflow/tests/unit/worker_based/test_server.py +3 -5
  170. taskflow/tests/unit/worker_based/test_types.py +0 -2
  171. taskflow/tests/unit/worker_based/test_worker.py +1 -3
  172. taskflow/tests/utils.py +11 -15
  173. taskflow/types/entity.py +1 -3
  174. taskflow/types/failure.py +3 -6
  175. taskflow/types/graph.py +14 -18
  176. taskflow/types/latch.py +1 -3
  177. taskflow/types/notifier.py +6 -9
  178. taskflow/types/sets.py +2 -5
  179. taskflow/types/timing.py +1 -3
  180. taskflow/types/tree.py +6 -10
  181. taskflow/utils/async_utils.py +0 -2
  182. taskflow/utils/banner.py +8 -9
  183. taskflow/utils/eventlet_utils.py +0 -2
  184. taskflow/utils/iter_utils.py +0 -2
  185. taskflow/utils/kazoo_utils.py +7 -9
  186. taskflow/utils/kombu_utils.py +5 -7
  187. taskflow/utils/misc.py +4 -6
  188. taskflow/utils/persistence_utils.py +0 -2
  189. taskflow/utils/redis_utils.py +2 -4
  190. taskflow/utils/schema_utils.py +0 -2
  191. taskflow/utils/threading_utils.py +1 -3
  192. taskflow/version.py +1 -3
  193. {taskflow-5.12.0.dist-info → taskflow-6.0.1.dist-info}/AUTHORS +1 -0
  194. {taskflow-5.12.0.dist-info → taskflow-6.0.1.dist-info}/METADATA +1 -1
  195. taskflow-6.0.1.dist-info/RECORD +243 -0
  196. {taskflow-5.12.0.dist-info → taskflow-6.0.1.dist-info}/WHEEL +1 -1
  197. taskflow-6.0.1.dist-info/pbr.json +1 -0
  198. taskflow/engines/action_engine/process_executor.py +0 -720
  199. taskflow/tests/unit/action_engine/test_process_executor.py +0 -106
  200. taskflow-5.12.0.dist-info/RECORD +0 -244
  201. taskflow-5.12.0.dist-info/pbr.json +0 -1
  202. {taskflow-5.12.0.dist-info → taskflow-6.0.1.dist-info}/LICENSE +0 -0
  203. {taskflow-5.12.0.dist-info → taskflow-6.0.1.dist-info}/entry_points.txt +0 -0
  204. {taskflow-5.12.0.dist-info → taskflow-6.0.1.dist-info}/top_level.txt +0 -0
@@ -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
@@ -32,28 +30,28 @@ class FlowDependenciesTest(test.TestCase):
32
30
 
33
31
  def test_task_requires_default_values(self):
34
32
  flow = utils.TaskMultiArg()
35
- self.assertEqual(set(['x', 'y', 'z']), flow.requires)
33
+ self.assertEqual({'x', 'y', 'z'}, flow.requires)
36
34
  self.assertEqual(set(), flow.provides, )
37
35
 
38
36
  def test_task_requires_rebinded_mapped(self):
39
37
  flow = utils.TaskMultiArg(rebind={'x': 'a', 'y': 'b', 'z': 'c'})
40
- self.assertEqual(set(['a', 'b', 'c']), flow.requires)
38
+ self.assertEqual({'a', 'b', 'c'}, flow.requires)
41
39
  self.assertEqual(set(), flow.provides)
42
40
 
43
41
  def test_task_requires_additional_values(self):
44
42
  flow = utils.TaskMultiArg(requires=['a', 'b'])
45
- self.assertEqual(set(['a', 'b', 'x', 'y', 'z']), flow.requires)
43
+ self.assertEqual({'a', 'b', 'x', 'y', 'z'}, flow.requires)
46
44
  self.assertEqual(set(), flow.provides)
47
45
 
48
46
  def test_task_provides_values(self):
49
47
  flow = utils.TaskMultiReturn(provides=['a', 'b', 'c'])
50
48
  self.assertEqual(set(), flow.requires)
51
- self.assertEqual(set(['a', 'b', 'c']), flow.provides)
49
+ self.assertEqual({'a', 'b', 'c'}, flow.provides)
52
50
 
53
51
  def test_task_provides_and_requires_values(self):
54
52
  flow = utils.TaskMultiArgMultiReturn(provides=['a', 'b', 'c'])
55
- self.assertEqual(set(['x', 'y', 'z']), flow.requires)
56
- self.assertEqual(set(['a', 'b', 'c']), flow.provides)
53
+ self.assertEqual({'x', 'y', 'z'}, flow.requires)
54
+ self.assertEqual({'a', 'b', 'c'}, flow.provides)
57
55
 
58
56
  def test_linear_flow_without_dependencies(self):
59
57
  flow = lf.Flow('lf').add(
@@ -66,14 +64,14 @@ class FlowDependenciesTest(test.TestCase):
66
64
  flow = lf.Flow('lf').add(
67
65
  utils.TaskOneArg('task1'),
68
66
  utils.TaskMultiArg('task2'))
69
- self.assertEqual(set(['x', 'y', 'z']), flow.requires)
67
+ self.assertEqual({'x', 'y', 'z'}, flow.requires)
70
68
  self.assertEqual(set(), flow.provides)
71
69
 
72
70
  def test_linear_flow_requires_rebind_values(self):
73
71
  flow = lf.Flow('lf').add(
74
72
  utils.TaskOneArg('task1', rebind=['q']),
75
73
  utils.TaskMultiArg('task2'))
76
- self.assertEqual(set(['x', 'y', 'z', 'q']), flow.requires)
74
+ self.assertEqual({'x', 'y', 'z', 'q'}, flow.requires)
77
75
  self.assertEqual(set(), flow.provides)
78
76
 
79
77
  def test_linear_flow_provides_values(self):
@@ -81,14 +79,14 @@ class FlowDependenciesTest(test.TestCase):
81
79
  utils.TaskOneReturn('task1', provides='x'),
82
80
  utils.TaskMultiReturn('task2', provides=['a', 'b', 'c']))
83
81
  self.assertEqual(set(), flow.requires)
84
- self.assertEqual(set(['x', 'a', 'b', 'c']), flow.provides)
82
+ self.assertEqual({'x', 'a', 'b', 'c'}, flow.provides)
85
83
 
86
84
  def test_linear_flow_provides_required_values(self):
87
85
  flow = lf.Flow('lf').add(
88
86
  utils.TaskOneReturn('task1', provides='x'),
89
87
  utils.TaskOneArg('task2'))
90
88
  self.assertEqual(set(), flow.requires)
91
- self.assertEqual(set(['x']), flow.provides)
89
+ self.assertEqual({'x'}, flow.provides)
92
90
 
93
91
  def test_linear_flow_multi_provides_and_requires_values(self):
94
92
  flow = lf.Flow('lf').add(
@@ -97,8 +95,8 @@ class FlowDependenciesTest(test.TestCase):
97
95
  provides=['x', 'y', 'q']),
98
96
  utils.TaskMultiArgMultiReturn('task2',
99
97
  provides=['i', 'j', 'k']))
100
- self.assertEqual(set(['a', 'b', 'c', 'z']), flow.requires)
101
- self.assertEqual(set(['x', 'y', 'q', 'i', 'j', 'k']), flow.provides)
98
+ self.assertEqual({'a', 'b', 'c', 'z'}, flow.requires)
99
+ self.assertEqual({'x', 'y', 'q', 'i', 'j', 'k'}, flow.provides)
102
100
 
103
101
  def test_unordered_flow_without_dependencies(self):
104
102
  flow = uf.Flow('uf').add(
@@ -111,14 +109,14 @@ class FlowDependenciesTest(test.TestCase):
111
109
  flow = uf.Flow('uf').add(
112
110
  utils.TaskOneArg('task1'),
113
111
  utils.TaskMultiArg('task2'))
114
- self.assertEqual(set(['x', 'y', 'z']), flow.requires)
112
+ self.assertEqual({'x', 'y', 'z'}, flow.requires)
115
113
  self.assertEqual(set(), flow.provides)
116
114
 
117
115
  def test_unordered_flow_requires_rebind_values(self):
118
116
  flow = uf.Flow('uf').add(
119
117
  utils.TaskOneArg('task1', rebind=['q']),
120
118
  utils.TaskMultiArg('task2'))
121
- self.assertEqual(set(['x', 'y', 'z', 'q']), flow.requires)
119
+ self.assertEqual({'x', 'y', 'z', 'q'}, flow.requires)
122
120
  self.assertEqual(set(), flow.provides)
123
121
 
124
122
  def test_unordered_flow_provides_values(self):
@@ -126,7 +124,7 @@ class FlowDependenciesTest(test.TestCase):
126
124
  utils.TaskOneReturn('task1', provides='x'),
127
125
  utils.TaskMultiReturn('task2', provides=['a', 'b', 'c']))
128
126
  self.assertEqual(set(), flow.requires)
129
- self.assertEqual(set(['x', 'a', 'b', 'c']), flow.provides)
127
+ self.assertEqual({'x', 'a', 'b', 'c'}, flow.provides)
130
128
 
131
129
  def test_unordered_flow_provides_required_values(self):
132
130
  flow = uf.Flow('uf')
@@ -134,23 +132,23 @@ class FlowDependenciesTest(test.TestCase):
134
132
  utils.TaskOneArg('task2'))
135
133
  flow.add(utils.TaskOneReturn('task1', provides='x'),
136
134
  utils.TaskOneArg('task2'))
137
- self.assertEqual(set(['x']), flow.provides)
138
- self.assertEqual(set(['x']), flow.requires)
135
+ self.assertEqual({'x'}, flow.provides)
136
+ self.assertEqual({'x'}, flow.requires)
139
137
 
140
138
  def test_unordered_flow_requires_provided_value_other_call(self):
141
139
  flow = uf.Flow('uf')
142
140
  flow.add(utils.TaskOneReturn('task1', provides='x'))
143
141
  flow.add(utils.TaskOneArg('task2'))
144
- self.assertEqual(set(['x']), flow.provides)
145
- self.assertEqual(set(['x']), flow.requires)
142
+ self.assertEqual({'x'}, flow.provides)
143
+ self.assertEqual({'x'}, flow.requires)
146
144
 
147
145
  def test_unordered_flow_provides_required_value_other_call(self):
148
146
  flow = uf.Flow('uf')
149
147
  flow.add(utils.TaskOneArg('task2'))
150
148
  flow.add(utils.TaskOneReturn('task1', provides='x'))
151
149
  self.assertEqual(2, len(flow))
152
- self.assertEqual(set(['x']), flow.provides)
153
- self.assertEqual(set(['x']), flow.requires)
150
+ self.assertEqual({'x'}, flow.provides)
151
+ self.assertEqual({'x'}, flow.requires)
154
152
 
155
153
  def test_unordered_flow_multi_provides_and_requires_values(self):
156
154
  flow = uf.Flow('uf').add(
@@ -159,19 +157,19 @@ class FlowDependenciesTest(test.TestCase):
159
157
  provides=['d', 'e', 'f']),
160
158
  utils.TaskMultiArgMultiReturn('task2',
161
159
  provides=['i', 'j', 'k']))
162
- self.assertEqual(set(['a', 'b', 'c', 'x', 'y', 'z']), flow.requires)
163
- self.assertEqual(set(['d', 'e', 'f', 'i', 'j', 'k']), flow.provides)
160
+ self.assertEqual({'a', 'b', 'c', 'x', 'y', 'z'}, flow.requires)
161
+ self.assertEqual({'d', 'e', 'f', 'i', 'j', 'k'}, flow.provides)
164
162
 
165
163
  def test_unordered_flow_provides_same_values(self):
166
164
  flow = uf.Flow('uf').add(utils.TaskOneReturn(provides='x'))
167
165
  flow.add(utils.TaskOneReturn(provides='x'))
168
- self.assertEqual(set(['x']), flow.provides)
166
+ self.assertEqual({'x'}, flow.provides)
169
167
 
170
168
  def test_unordered_flow_provides_same_values_one_add(self):
171
169
  flow = uf.Flow('uf')
172
170
  flow.add(utils.TaskOneReturn(provides='x'),
173
171
  utils.TaskOneReturn(provides='x'))
174
- self.assertEqual(set(['x']), flow.provides)
172
+ self.assertEqual({'x'}, flow.provides)
175
173
 
176
174
  def test_nested_flows_requirements(self):
177
175
  flow = uf.Flow('uf').add(
@@ -184,21 +182,21 @@ class FlowDependenciesTest(test.TestCase):
184
182
  rebind=['b'], provides=['z']),
185
183
  utils.TaskOneArgOneReturn('task4', rebind=['c'],
186
184
  provides=['q'])))
187
- self.assertEqual(set(['a', 'b', 'c']), flow.requires)
188
- self.assertEqual(set(['x', 'y', 'z', 'q']), flow.provides)
185
+ self.assertEqual({'a', 'b', 'c'}, flow.requires)
186
+ self.assertEqual({'x', 'y', 'z', 'q'}, flow.provides)
189
187
 
190
188
  def test_graph_flow_requires_values(self):
191
189
  flow = gf.Flow('gf').add(
192
190
  utils.TaskOneArg('task1'),
193
191
  utils.TaskMultiArg('task2'))
194
- self.assertEqual(set(['x', 'y', 'z']), flow.requires)
192
+ self.assertEqual({'x', 'y', 'z'}, flow.requires)
195
193
  self.assertEqual(set(), flow.provides)
196
194
 
197
195
  def test_graph_flow_requires_rebind_values(self):
198
196
  flow = gf.Flow('gf').add(
199
197
  utils.TaskOneArg('task1', rebind=['q']),
200
198
  utils.TaskMultiArg('task2'))
201
- self.assertEqual(set(['x', 'y', 'z', 'q']), flow.requires)
199
+ self.assertEqual({'x', 'y', 'z', 'q'}, flow.requires)
202
200
  self.assertEqual(set(), flow.provides)
203
201
 
204
202
  def test_graph_flow_provides_values(self):
@@ -206,20 +204,20 @@ class FlowDependenciesTest(test.TestCase):
206
204
  utils.TaskOneReturn('task1', provides='x'),
207
205
  utils.TaskMultiReturn('task2', provides=['a', 'b', 'c']))
208
206
  self.assertEqual(set(), flow.requires)
209
- self.assertEqual(set(['x', 'a', 'b', 'c']), flow.provides)
207
+ self.assertEqual({'x', 'a', 'b', 'c'}, flow.provides)
210
208
 
211
209
  def test_graph_flow_provides_required_values(self):
212
210
  flow = gf.Flow('gf').add(
213
211
  utils.TaskOneReturn('task1', provides='x'),
214
212
  utils.TaskOneArg('task2'))
215
213
  self.assertEqual(set(), flow.requires)
216
- self.assertEqual(set(['x']), flow.provides)
214
+ self.assertEqual({'x'}, flow.provides)
217
215
 
218
216
  def test_graph_flow_provides_provided_value_other_call(self):
219
217
  flow = gf.Flow('gf')
220
218
  flow.add(utils.TaskOneReturn('task1', provides='x'))
221
219
  flow.add(utils.TaskOneReturn('task2', provides='x'))
222
- self.assertEqual(set(['x']), flow.provides)
220
+ self.assertEqual({'x'}, flow.provides)
223
221
 
224
222
  def test_graph_flow_multi_provides_and_requires_values(self):
225
223
  flow = gf.Flow('gf').add(
@@ -228,8 +226,8 @@ class FlowDependenciesTest(test.TestCase):
228
226
  provides=['d', 'e', 'f']),
229
227
  utils.TaskMultiArgMultiReturn('task2',
230
228
  provides=['i', 'j', 'k']))
231
- self.assertEqual(set(['a', 'b', 'c', 'x', 'y', 'z']), flow.requires)
232
- self.assertEqual(set(['d', 'e', 'f', 'i', 'j', 'k']), flow.provides)
229
+ self.assertEqual({'a', 'b', 'c', 'x', 'y', 'z'}, flow.requires)
230
+ self.assertEqual({'d', 'e', 'f', 'i', 'j', 'k'}, flow.provides)
233
231
 
234
232
  def test_graph_cyclic_dependency(self):
235
233
  flow = gf.Flow('g-3-cyclic')
@@ -255,27 +253,27 @@ class FlowDependenciesTest(test.TestCase):
255
253
 
256
254
  def test_retry_in_linear_flow_with_requirements(self):
257
255
  flow = lf.Flow('lf', retry.AlwaysRevert('rt', requires=['x', 'y']))
258
- self.assertEqual(set(['x', 'y']), flow.requires)
256
+ self.assertEqual({'x', 'y'}, flow.requires)
259
257
  self.assertEqual(set(), flow.provides)
260
258
 
261
259
  def test_retry_in_linear_flow_with_provides(self):
262
260
  flow = lf.Flow('lf', retry.AlwaysRevert('rt', provides=['x', 'y']))
263
261
  self.assertEqual(set(), flow.requires)
264
- self.assertEqual(set(['x', 'y']), flow.provides)
262
+ self.assertEqual({'x', 'y'}, flow.provides)
265
263
 
266
264
  def test_retry_in_linear_flow_requires_and_provides(self):
267
265
  flow = lf.Flow('lf', retry.AlwaysRevert('rt',
268
266
  requires=['x', 'y'],
269
267
  provides=['a', 'b']))
270
- self.assertEqual(set(['x', 'y']), flow.requires)
271
- self.assertEqual(set(['a', 'b']), flow.provides)
268
+ self.assertEqual({'x', 'y'}, flow.requires)
269
+ self.assertEqual({'a', 'b'}, flow.provides)
272
270
 
273
271
  def test_retry_requires_and_provides_same_value(self):
274
272
  flow = lf.Flow('lf', retry.AlwaysRevert('rt',
275
273
  requires=['x', 'y'],
276
274
  provides=['x', 'y']))
277
- self.assertEqual(set(['x', 'y']), flow.requires)
278
- self.assertEqual(set(['x', 'y']), flow.provides)
275
+ self.assertEqual({'x', 'y'}, flow.requires)
276
+ self.assertEqual({'x', 'y'}, flow.provides)
279
277
 
280
278
  def test_retry_in_unordered_flow_no_requirements_no_provides(self):
281
279
  flow = uf.Flow('uf', retry.AlwaysRevert('rt'))
@@ -284,20 +282,20 @@ class FlowDependenciesTest(test.TestCase):
284
282
 
285
283
  def test_retry_in_unordered_flow_with_requirements(self):
286
284
  flow = uf.Flow('uf', retry.AlwaysRevert('rt', requires=['x', 'y']))
287
- self.assertEqual(set(['x', 'y']), flow.requires)
285
+ self.assertEqual({'x', 'y'}, flow.requires)
288
286
  self.assertEqual(set(), flow.provides)
289
287
 
290
288
  def test_retry_in_unordered_flow_with_provides(self):
291
289
  flow = uf.Flow('uf', retry.AlwaysRevert('rt', provides=['x', 'y']))
292
290
  self.assertEqual(set(), flow.requires)
293
- self.assertEqual(set(['x', 'y']), flow.provides)
291
+ self.assertEqual({'x', 'y'}, flow.provides)
294
292
 
295
293
  def test_retry_in_unordered_flow_requires_and_provides(self):
296
294
  flow = uf.Flow('uf', retry.AlwaysRevert('rt',
297
295
  requires=['x', 'y'],
298
296
  provides=['a', 'b']))
299
- self.assertEqual(set(['x', 'y']), flow.requires)
300
- self.assertEqual(set(['a', 'b']), flow.provides)
297
+ self.assertEqual({'x', 'y'}, flow.requires)
298
+ self.assertEqual({'a', 'b'}, flow.provides)
301
299
 
302
300
  def test_retry_in_graph_flow_no_requirements_no_provides(self):
303
301
  flow = gf.Flow('gf', retry.AlwaysRevert('rt'))
@@ -306,20 +304,20 @@ class FlowDependenciesTest(test.TestCase):
306
304
 
307
305
  def test_retry_in_graph_flow_with_requirements(self):
308
306
  flow = gf.Flow('gf', retry.AlwaysRevert('rt', requires=['x', 'y']))
309
- self.assertEqual(set(['x', 'y']), flow.requires)
307
+ self.assertEqual({'x', 'y'}, flow.requires)
310
308
  self.assertEqual(set(), flow.provides)
311
309
 
312
310
  def test_retry_in_graph_flow_with_provides(self):
313
311
  flow = gf.Flow('gf', retry.AlwaysRevert('rt', provides=['x', 'y']))
314
312
  self.assertEqual(set(), flow.requires)
315
- self.assertEqual(set(['x', 'y']), flow.provides)
313
+ self.assertEqual({'x', 'y'}, flow.provides)
316
314
 
317
315
  def test_retry_in_graph_flow_requires_and_provides(self):
318
316
  flow = gf.Flow('gf', retry.AlwaysRevert('rt',
319
317
  requires=['x', 'y'],
320
318
  provides=['a', 'b']))
321
- self.assertEqual(set(['x', 'y']), flow.requires)
322
- self.assertEqual(set(['a', 'b']), flow.provides)
319
+ self.assertEqual({'x', 'y'}, flow.requires)
320
+ self.assertEqual({'a', 'b'}, flow.provides)
323
321
 
324
322
  def test_linear_flow_retry_and_task(self):
325
323
  flow = lf.Flow('lf', retry.AlwaysRevert('rt',
@@ -328,8 +326,8 @@ class FlowDependenciesTest(test.TestCase):
328
326
  flow.add(utils.TaskMultiArgOneReturn(rebind=['a', 'x', 'c'],
329
327
  provides=['z']))
330
328
 
331
- self.assertEqual(set(['x', 'y', 'c']), flow.requires)
332
- self.assertEqual(set(['a', 'b', 'z']), flow.provides)
329
+ self.assertEqual({'x', 'y', 'c'}, flow.requires)
330
+ self.assertEqual({'a', 'b', 'z'}, flow.provides)
333
331
 
334
332
  def test_unordered_flow_retry_and_task(self):
335
333
  flow = uf.Flow('uf', retry.AlwaysRevert('rt',
@@ -338,25 +336,25 @@ class FlowDependenciesTest(test.TestCase):
338
336
  flow.add(utils.TaskMultiArgOneReturn(rebind=['a', 'x', 'c'],
339
337
  provides=['z']))
340
338
 
341
- self.assertEqual(set(['x', 'y', 'c']), flow.requires)
342
- self.assertEqual(set(['a', 'b', 'z']), flow.provides)
339
+ self.assertEqual({'x', 'y', 'c'}, flow.requires)
340
+ self.assertEqual({'a', 'b', 'z'}, flow.provides)
343
341
 
344
342
  def test_unordered_flow_retry_and_task_same_requires_provides(self):
345
343
  flow = uf.Flow('uf', retry.AlwaysRevert('rt', requires=['x']))
346
344
  flow.add(utils.TaskOneReturn(provides=['x']))
347
- self.assertEqual(set(['x']), flow.requires)
348
- self.assertEqual(set(['x']), flow.provides)
345
+ self.assertEqual({'x'}, flow.requires)
346
+ self.assertEqual({'x'}, flow.provides)
349
347
 
350
348
  def test_unordered_flow_retry_and_task_provide_same_value(self):
351
349
  flow = uf.Flow('uf', retry.AlwaysRevert('rt', provides=['x']))
352
350
  flow.add(utils.TaskOneReturn('t1', provides=['x']))
353
- self.assertEqual(set(['x']), flow.provides)
351
+ self.assertEqual({'x'}, flow.provides)
354
352
 
355
353
  def test_unordered_flow_retry_two_tasks_provide_same_value(self):
356
354
  flow = uf.Flow('uf', retry.AlwaysRevert('rt', provides=['y']))
357
355
  flow.add(utils.TaskOneReturn('t1', provides=['x']),
358
356
  utils.TaskOneReturn('t2', provides=['x']))
359
- self.assertEqual(set(['x', 'y']), flow.provides)
357
+ self.assertEqual({'x', 'y'}, flow.provides)
360
358
 
361
359
  def test_graph_flow_retry_and_task(self):
362
360
  flow = gf.Flow('gf', retry.AlwaysRevert('rt',
@@ -365,19 +363,19 @@ class FlowDependenciesTest(test.TestCase):
365
363
  flow.add(utils.TaskMultiArgOneReturn(rebind=['a', 'x', 'c'],
366
364
  provides=['z']))
367
365
 
368
- self.assertEqual(set(['x', 'y', 'c']), flow.requires)
369
- self.assertEqual(set(['a', 'b', 'z']), flow.provides)
366
+ self.assertEqual({'x', 'y', 'c'}, flow.requires)
367
+ self.assertEqual({'a', 'b', 'z'}, flow.provides)
370
368
 
371
369
  def test_graph_flow_retry_and_task_dependency_provide_require(self):
372
370
  flow = gf.Flow('gf', retry.AlwaysRevert('rt', requires=['x']))
373
371
  flow.add(utils.TaskOneReturn(provides=['x']))
374
- self.assertEqual(set(['x']), flow.provides)
375
- self.assertEqual(set(['x']), flow.requires)
372
+ self.assertEqual({'x'}, flow.provides)
373
+ self.assertEqual({'x'}, flow.requires)
376
374
 
377
375
  def test_graph_flow_retry_and_task_provide_same_value(self):
378
376
  flow = gf.Flow('gf', retry.AlwaysRevert('rt', provides=['x']))
379
377
  flow.add(utils.TaskOneReturn('t1', provides=['x']))
380
- self.assertEqual(set(['x']), flow.provides)
378
+ self.assertEqual({'x'}, flow.provides)
381
379
 
382
380
  def test_builtin_retry_args(self):
383
381
 
@@ -389,4 +387,4 @@ class FlowDependenciesTest(test.TestCase):
389
387
  pass
390
388
 
391
389
  flow = lf.Flow('lf', retry=FullArgsRetry(requires='a'))
392
- self.assertEqual(set(['a']), flow.requires)
390
+ self.assertEqual({'a'}, flow.requires)
@@ -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
@@ -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 @@ def add(a, b):
24
22
  return a + b
25
23
 
26
24
 
27
- class BunchOfFunctions(object):
25
+ class BunchOfFunctions:
28
26
 
29
27
  def __init__(self, values):
30
28
  self.values = values
@@ -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
@@ -52,7 +50,7 @@ _LOG_LEVELS = frozenset([
52
50
 
53
51
  class SleepyTask(task.Task):
54
52
  def __init__(self, name, sleep_for=0.0):
55
- super(SleepyTask, self).__init__(name=name)
53
+ super().__init__(name=name)
56
54
  self._sleep_for = float(sleep_for)
57
55
 
58
56
  def execute(self):
@@ -62,7 +60,7 @@ class SleepyTask(task.Task):
62
60
  time.sleep(self._sleep_for)
63
61
 
64
62
 
65
- class EngineMakerMixin(object):
63
+ class EngineMakerMixin:
66
64
  def _make_engine(self, flow, flow_detail=None, backend=None):
67
65
  e = taskflow.engines.load(flow,
68
66
  flow_detail=flow_detail,
@@ -80,7 +78,7 @@ class TestClaimListener(test.TestCase, EngineMakerMixin):
80
78
  return f
81
79
 
82
80
  def setUp(self):
83
- super(TestClaimListener, self).setUp()
81
+ super().setUp()
84
82
  self.client = fake_client.FakeClient()
85
83
  self.addCleanup(self.client.stop)
86
84
  self.board = jobs.fetch('test', 'zookeeper', client=self.client)
@@ -315,7 +313,7 @@ class TestLoggingListeners(test.TestCase, EngineMakerMixin):
315
313
  with logging_listeners.LoggingListener(e, log=log):
316
314
  e.run()
317
315
  self.assertGreater(0, handler.counts[logging.DEBUG])
318
- for levelno in _LOG_LEVELS - set([logging.DEBUG]):
316
+ for levelno in _LOG_LEVELS - {logging.DEBUG}:
319
317
  self.assertEqual(0, handler.counts[levelno])
320
318
  self.assertEqual([], handler.exc_infos)
321
319
 
@@ -329,7 +327,7 @@ class TestLoggingListeners(test.TestCase, EngineMakerMixin):
329
327
  with listener:
330
328
  e.run()
331
329
  self.assertGreater(0, handler.counts[logging.INFO])
332
- for levelno in _LOG_LEVELS - set([logging.INFO]):
330
+ for levelno in _LOG_LEVELS - {logging.INFO}:
333
331
  self.assertEqual(0, handler.counts[levelno])
334
332
  self.assertEqual([], handler.exc_infos)
335
333
 
@@ -341,7 +339,7 @@ class TestLoggingListeners(test.TestCase, EngineMakerMixin):
341
339
  with logging_listeners.LoggingListener(e, log=log):
342
340
  self.assertRaises(RuntimeError, e.run)
343
341
  self.assertGreater(0, handler.counts[logging.DEBUG])
344
- for levelno in _LOG_LEVELS - set([logging.DEBUG]):
342
+ for levelno in _LOG_LEVELS - {logging.DEBUG}:
345
343
  self.assertEqual(0, handler.counts[levelno])
346
344
  self.assertEqual(1, len(handler.exc_infos))
347
345
 
@@ -353,7 +351,7 @@ class TestLoggingListeners(test.TestCase, EngineMakerMixin):
353
351
  with logging_listeners.DynamicLoggingListener(e, log=log):
354
352
  e.run()
355
353
  self.assertGreater(0, handler.counts[logging.DEBUG])
356
- for levelno in _LOG_LEVELS - set([logging.DEBUG]):
354
+ for levelno in _LOG_LEVELS - {logging.DEBUG}:
357
355
  self.assertEqual(0, handler.counts[levelno])
358
356
  self.assertEqual([], handler.exc_infos)
359
357
 
@@ -367,7 +365,7 @@ class TestLoggingListeners(test.TestCase, EngineMakerMixin):
367
365
  self.assertGreater(0, handler.counts[logging.WARNING])
368
366
  self.assertGreater(0, handler.counts[logging.DEBUG])
369
367
  self.assertEqual(1, len(handler.exc_infos))
370
- for levelno in _LOG_LEVELS - set([logging.DEBUG, logging.WARNING]):
368
+ for levelno in _LOG_LEVELS - {logging.DEBUG, logging.WARNING}:
371
369
  self.assertEqual(0, handler.counts[levelno])
372
370
 
373
371
  def test_dynamic_failure_customized_level(self):
@@ -382,5 +380,5 @@ class TestLoggingListeners(test.TestCase, EngineMakerMixin):
382
380
  self.assertGreater(0, handler.counts[logging.ERROR])
383
381
  self.assertGreater(0, handler.counts[logging.DEBUG])
384
382
  self.assertEqual(1, len(handler.exc_infos))
385
- for levelno in _LOG_LEVELS - set([logging.DEBUG, logging.ERROR]):
383
+ for levelno in _LOG_LEVELS - {logging.DEBUG, logging.ERROR}:
386
384
  self.assertEqual(0, handler.counts[levelno])
@@ -1,5 +1,3 @@
1
- # -*- coding: utf-8 -*-
2
-
3
1
  # Copyright 2015 Hewlett-Packard Development Company, L.P.
4
2
  #
5
3
  # Licensed under the Apache License, Version 2.0 (the "License"); you may
@@ -29,7 +27,7 @@ square = lambda x: x * x
29
27
  class MapFunctorTaskTest(test.TestCase):
30
28
 
31
29
  def setUp(self):
32
- super(MapFunctorTaskTest, self).setUp()
30
+ super().setUp()
33
31
 
34
32
  self.flow_store = {
35
33
  'a': 1,
@@ -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
@@ -57,7 +55,7 @@ class NotifierTest(test.TestCase):
57
55
  def call_me(state, details):
58
56
  pass
59
57
 
60
- class A(object):
58
+ class A:
61
59
  def call_me_too(self, state, details):
62
60
  pass
63
61
 
@@ -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
@@ -26,7 +24,7 @@ from taskflow.utils import persistence_utils as p_utils
26
24
 
27
25
  class ProgressTask(task.Task):
28
26
  def __init__(self, name, segments):
29
- super(ProgressTask, self).__init__(name=name)
27
+ super().__init__(name=name)
30
28
  self._segments = segments
31
29
 
32
30
  def execute(self):
@@ -57,7 +55,7 @@ class TestProgress(test.TestCase):
57
55
  return e
58
56
 
59
57
  def tearDown(self):
60
- super(TestProgress, self).tearDown()
58
+ super().tearDown()
61
59
  with contextlib.closing(impl_memory.MemoryBackend({})) as be:
62
60
  with contextlib.closing(be.get_connection()) as conn:
63
61
  conn.clear_all()
@@ -1,5 +1,3 @@
1
- # -*- coding: utf-8 -*-
2
-
3
1
  # Copyright 2015 Hewlett-Packard Development Company, L.P.
4
2
  #
5
3
  # Licensed under the Apache License, Version 2.0 (the "License"); you may
@@ -29,7 +27,7 @@ multiply = lambda x, y: x * y
29
27
  class ReduceFunctorTaskTest(test.TestCase):
30
28
 
31
29
  def setUp(self):
32
- super(ReduceFunctorTaskTest, self).setUp()
30
+ super().setUp()
33
31
 
34
32
  self.flow_store = {
35
33
  'a': 1,
@@ -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
@@ -30,11 +28,6 @@ from taskflow.tests import utils
30
28
  from taskflow.types import failure
31
29
  from taskflow.utils import eventlet_utils as eu
32
30
 
33
- try:
34
- from taskflow.engines.action_engine import process_executor as pe
35
- except ImportError:
36
- pe = None
37
-
38
31
 
39
32
  class FailingRetry(retry.Retry):
40
33
 
@@ -740,7 +733,7 @@ class RetryTest(utils.EngineTestBase):
740
733
  self.assertEqual(expected, capturer.values)
741
734
 
742
735
  def test_for_each_with_set(self):
743
- collection = set([3, 2, 5])
736
+ collection = {3, 2, 5}
744
737
  retry1 = retry.ForEach(collection, 'r1', provides='x')
745
738
  flow = lf.Flow('flow-1', retry1).add(utils.FailingTaskWithOneArg('t1'))
746
739
  engine = self._make_engine(flow)
@@ -1368,20 +1361,3 @@ class ParallelEngineWithEventletTest(RetryTest, test.TestCase):
1368
1361
  engine='parallel',
1369
1362
  executor=executor,
1370
1363
  defer_reverts=defer_reverts)
1371
-
1372
-
1373
- @testtools.skipIf(pe is None, 'process_executor is not available')
1374
- class ParallelEngineWithProcessTest(RetryTest, test.TestCase):
1375
- _EXECUTOR_WORKERS = 2
1376
-
1377
- def _make_engine(self, flow, defer_reverts=None, flow_detail=None,
1378
- executor=None):
1379
- if executor is None:
1380
- executor = 'processes'
1381
- return taskflow.engines.load(flow,
1382
- flow_detail=flow_detail,
1383
- engine='parallel',
1384
- backend=self.backend,
1385
- executor=executor,
1386
- max_workers=self._EXECUTOR_WORKERS,
1387
- defer_reverts=defer_reverts)
@@ -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