taskflow 6.1.0__py3-none-any.whl → 6.1.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.
@@ -60,8 +60,13 @@ def breadth_first_iterate(execution_graph, starting_node, direction,
60
60
  through_flows=through_flows, through_retries=through_retries,
61
61
  through_tasks=through_tasks)
62
62
  q = collections.deque(initial_nodes_iter)
63
+ visited_nodes = set()
63
64
  while q:
64
65
  node = q.popleft()
66
+ if node in visited_nodes:
67
+ continue
68
+ visited_nodes.add(node)
69
+
65
70
  node_attrs = execution_graph.nodes[node]
66
71
  if not node_attrs.get('noop'):
67
72
  yield node
@@ -88,8 +93,13 @@ def depth_first_iterate(execution_graph, starting_node, direction,
88
93
  through_flows=through_flows, through_retries=through_retries,
89
94
  through_tasks=through_tasks)
90
95
  stack = list(initial_nodes_iter)
96
+ visited_nodes = set()
91
97
  while stack:
92
98
  node = stack.pop()
99
+ if node in visited_nodes:
100
+ continue
101
+ visited_nodes.add(node)
102
+
93
103
  node_attrs = execution_graph.nodes[node]
94
104
  if not node_attrs.get('noop'):
95
105
  yield node
@@ -194,7 +194,6 @@ def main_local():
194
194
  # the examples are made sure to still function correctly...
195
195
  global TAKE_DOWN_DELAY
196
196
  global PASS_AROUND_DELAY
197
- global JB_CONF
198
197
  # Make everything go much faster (so that this finishes quickly).
199
198
  PASS_AROUND_DELAY = 0.01
200
199
  TAKE_DOWN_DELAY = 0.01
@@ -632,6 +632,20 @@ class EngineParallelFlowTest(utils.EngineTestBase):
632
632
  self.assertEqual({'x1': 17, 'x2': 5},
633
633
  engine.storage.fetch_all())
634
634
 
635
+ # Reproducer for #2139228 and #2086453
636
+ def test_many_unordered_flows_in_linear_flow(self):
637
+ flow = lf.Flow("root")
638
+ for i in range(10):
639
+ sf = uf.Flow(f'subflow {i}')
640
+ for j in range(10):
641
+ sf.add(utils.ProgressingTask(name=f"task {i}:{j}"))
642
+ flow.add(sf)
643
+
644
+ engine = self._make_engine(flow)
645
+ with utils.CaptureListener(engine, capture_flow=False) as capturer:
646
+ engine.run()
647
+ self.assertIn("task 9:9.t SUCCESS(5)", capturer.values)
648
+
635
649
 
636
650
  class EngineLinearAndUnorderedExceptionsTest(utils.EngineTestBase):
637
651
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: taskflow
3
- Version: 6.1.0
3
+ Version: 6.1.1
4
4
  Summary: Taskflow structured state management library.
5
5
  Author-email: OpenStack <openstack-discuss@lists.openstack.org>
6
6
  License: Apache-2.0
@@ -32,7 +32,7 @@ taskflow/engines/action_engine/runtime.py,sha256=9exIjF5QNz06DRpUa5tx446vT3JOikz
32
32
  taskflow/engines/action_engine/scheduler.py,sha256=CmKSoHGbWcFLZ9gxaer3qWUot1USgBZ_jLkDyYGa0Y8,3999
33
33
  taskflow/engines/action_engine/scopes.py,sha256=5_OLEPSp0kcZO2l7NA4vj6b6zPvk-7jDwfM2tmf9a48,5396
34
34
  taskflow/engines/action_engine/selector.py,sha256=cISpn9-s7Fl7t7CBiTFTcJu_eiZjMlvcAiaDLq0H1sE,11525
35
- taskflow/engines/action_engine/traversal.py,sha256=bEON8SDYkY9Hrr8tDLCAKhr8V1VVAPUY46yWwDix-2k,4527
35
+ taskflow/engines/action_engine/traversal.py,sha256=jqaz-h9ip0vTk8b9ifUCecuSFNS5FtwQjmUJSaqfsEI,4755
36
36
  taskflow/engines/action_engine/actions/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
37
37
  taskflow/engines/action_engine/actions/base.py,sha256=qdaQ5HsH1V8F_JkTUiSGEcDpHujtm_6iq3qCSmW-ucY,1635
38
38
  taskflow/engines/action_engine/actions/retry.py,sha256=vGll_Kqy9vabeAEYIb1jZ2TsCOc9Ht-A_DP5IhXte_A,4190
@@ -47,7 +47,7 @@ taskflow/engines/worker_based/proxy.py,sha256=oXi1w0D5fX4BLa7C4HcS25UMHa8pAIK9CG
47
47
  taskflow/engines/worker_based/server.py,sha256=kW89r4wirovfyGHEu62kzDes8kgjIj7usxYzlTXi_NA,11513
48
48
  taskflow/engines/worker_based/types.py,sha256=xPI1Rk1w9d8nURw0VG3WYDw1c9nimFT0unT106iQ_y4,9832
49
49
  taskflow/engines/worker_based/worker.py,sha256=tQ9v_Xhdx48lEXqqbVH5WCfojG2Y3JM80WMr5IaJMrk,6301
50
- taskflow/examples/99_bottles.py,sha256=HSAwXFzZw7xWfbZVKaZ87m6DIFYsno0ew3_q0baRhy4,8868
50
+ taskflow/examples/99_bottles.py,sha256=ZXZg3T2OMaYb-ZgDy2C1JOBz1BEEGfuJ-z1OVHKyyb8,8849
51
51
  taskflow/examples/alphabet_soup.py,sha256=weT_rOXhqS3btEMF1VXYWc5PBWXIsbMjG0SiHnT2ixk,3230
52
52
  taskflow/examples/build_a_car.py,sha256=Fxlti6TKmo7OIxnmuHgf1X57qOi5TvlW12E6mHYWjyw,6533
53
53
  taskflow/examples/buildsystem.py,sha256=h347O4nSaxKhac0Xc0tM6D3nZOpzgVZODgh0GAZDpvs,3870
@@ -156,7 +156,7 @@ taskflow/tests/unit/test_check_transition.py,sha256=CC1VOpGqt7r5f44viUao9E_wo5o8
156
156
  taskflow/tests/unit/test_conductors.py,sha256=fTQIJ5rA28OvpLWK7xmTlpNUeahFCf4FV7opdr2jqf4,18971
157
157
  taskflow/tests/unit/test_deciders.py,sha256=xUuXQZdpNZCOFPdw5aADjRMRE2YBfsJEfVbKUcVz3eY,2703
158
158
  taskflow/tests/unit/test_engine_helpers.py,sha256=Biqgkoy9K9BnMlGj5C3Jfi_zhG8r6KCoR1GL8m06Ymc,5374
159
- taskflow/tests/unit/test_engines.py,sha256=rNRBEwnbCgMrJ15WbQhb8kA9vqy3SVNGEGXQi9Y2_Do,61252
159
+ taskflow/tests/unit/test_engines.py,sha256=KDH2ir6E4gLb8CmrDS1VwK_hd9WAm6b1jDn_XZTzeZc,61788
160
160
  taskflow/tests/unit/test_exceptions.py,sha256=M9gzd2bpQ3InenouSlRJXMXgf5WjXo65U1E5GI7n-JA,4337
161
161
  taskflow/tests/unit/test_failure.py,sha256=OTQKuX5_TBYao2VZuECTeVhOylbpUORU1_dUwXWtCSs,17739
162
162
  taskflow/tests/unit/test_flow_dependencies.py,sha256=4ROV_-6scWzvyDQhpfQXpvV8mM4VQq3aqJ6YPGuUXs8,17751
@@ -233,11 +233,11 @@ taskflow/utils/persistence_utils.py,sha256=butzDfSRKoy22Z9Jt92xzDGfabNKxu2kSRgI5
233
233
  taskflow/utils/redis_utils.py,sha256=gT1xPpV8uXMaQxGWqtpgigHbx4rJijzl329R1r4RDxM,4297
234
234
  taskflow/utils/schema_utils.py,sha256=BwZmYjLMC7N2rbx53Z1zREP4jaRQyRNYYOLCFf3Rrkk,1409
235
235
  taskflow/utils/threading_utils.py,sha256=wdLhE2HvEQsnO8oKcjOXHRqY-dIJgSxZVX6YW6W6qfo,5816
236
- taskflow-6.1.0.dist-info/licenses/AUTHORS,sha256=TGQ-WyY9028CM7-dVhMAXfzgAdYc9Wt0BzNq3dBqFY8,4657
237
- taskflow-6.1.0.dist-info/licenses/LICENSE,sha256=0t4vVm0tDgtQn7DqH6Nmn0kGSrHeIcV0U8qzdQojTo8,10143
238
- taskflow-6.1.0.dist-info/METADATA,sha256=ESuOV6EJEkqu1NgB9aQKKIXGLpdo80QUlXIgy4w4b6k,4548
239
- taskflow-6.1.0.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
240
- taskflow-6.1.0.dist-info/entry_points.txt,sha256=-cLcvncQdUIhZ0pSd10UBTItZsJxlgu1uQIhkcpzh4Y,1235
241
- taskflow-6.1.0.dist-info/pbr.json,sha256=qHXZrKP68V_q5iDAAdg9cNiuqsJw_UusvC1ZHgtHCUE,47
242
- taskflow-6.1.0.dist-info/top_level.txt,sha256=PsdN41vwysesDlqHCSVVXH4mkTMdMiZFW_yHEAXiZE4,9
243
- taskflow-6.1.0.dist-info/RECORD,,
236
+ taskflow-6.1.1.dist-info/licenses/AUTHORS,sha256=TGQ-WyY9028CM7-dVhMAXfzgAdYc9Wt0BzNq3dBqFY8,4657
237
+ taskflow-6.1.1.dist-info/licenses/LICENSE,sha256=0t4vVm0tDgtQn7DqH6Nmn0kGSrHeIcV0U8qzdQojTo8,10143
238
+ taskflow-6.1.1.dist-info/METADATA,sha256=CYYq-avd7xtY-QfQK6VdGSa9xpVzsgtqjBhJzilymV8,4548
239
+ taskflow-6.1.1.dist-info/WHEEL,sha256=wUyA8OaulRlbfwMtmQsvNngGrxQHAvkKcvRmdizlJi0,92
240
+ taskflow-6.1.1.dist-info/entry_points.txt,sha256=-cLcvncQdUIhZ0pSd10UBTItZsJxlgu1uQIhkcpzh4Y,1235
241
+ taskflow-6.1.1.dist-info/pbr.json,sha256=l6UOIXBr45CsGepKk8QShhXfZOCqO0QjYKn-sf2VhrY,47
242
+ taskflow-6.1.1.dist-info/top_level.txt,sha256=PsdN41vwysesDlqHCSVVXH4mkTMdMiZFW_yHEAXiZE4,9
243
+ taskflow-6.1.1.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: setuptools (80.9.0)
2
+ Generator: setuptools (80.10.2)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5
 
@@ -0,0 +1 @@
1
+ {"git_version": "6fc3a9b0", "is_release": true}
@@ -1 +0,0 @@
1
- {"git_version": "1a72794f", "is_release": true}