taskflow 5.7.0__py3-none-any.whl → 5.8.0__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.
@@ -31,7 +31,6 @@ from oslo_utils import timeutils
31
31
  from taskflow.engines.action_engine import builder
32
32
  from taskflow.engines.action_engine import compiler
33
33
  from taskflow.engines.action_engine import executor
34
- from taskflow.engines.action_engine import process_executor
35
34
  from taskflow.engines.action_engine import runtime
36
35
  from taskflow.engines import base
37
36
  from taskflow import exceptions as exc
@@ -41,6 +40,11 @@ from taskflow import storage
41
40
  from taskflow.types import failure
42
41
  from taskflow.utils import misc
43
42
 
43
+ try:
44
+ from taskflow.engines.action_engine import process_executor
45
+ except ImportError:
46
+ process_executor = None
47
+
44
48
  LOG = logging.getLogger(__name__)
45
49
 
46
50
 
@@ -559,24 +563,32 @@ String (case insensitive) Executor used
559
563
  _executor_cls_matchers = [
560
564
  _ExecutorTypeMatch((futures.ThreadPoolExecutor,),
561
565
  executor.ParallelThreadTaskExecutor),
562
- _ExecutorTypeMatch((futures.ProcessPoolExecutor,),
563
- process_executor.ParallelProcessTaskExecutor),
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(
564
573
  _ExecutorTypeMatch((futures.Executor,),
565
574
  executor.ParallelThreadTaskExecutor),
566
- ]
575
+ )
567
576
 
568
577
  # One of these should match when a string/text is provided for the
569
578
  # 'executor' option (a mixed case equivalent is allowed since the match
570
579
  # will be lower-cased before checking).
571
580
  _executor_str_matchers = [
572
- _ExecutorTextMatch(frozenset(['processes', 'process']),
573
- process_executor.ParallelProcessTaskExecutor),
574
581
  _ExecutorTextMatch(frozenset(['thread', 'threads', 'threaded']),
575
582
  executor.ParallelThreadTaskExecutor),
576
583
  _ExecutorTextMatch(frozenset(['greenthread', 'greenthreads',
577
584
  'greenthreaded']),
578
585
  executor.ParallelGreenThreadTaskExecutor),
579
586
  ]
587
+ if process_executor is not None:
588
+ _executor_str_matchers.append(
589
+ _ExecutorTextMatch(frozenset(['processes', 'process']),
590
+ process_executor.ParallelProcessTaskExecutor)
591
+ )
580
592
 
581
593
  # Used when no executor is provided (either a string or object)...
582
594
  _default_executor_cls = executor.ParallelThreadTaskExecutor
@@ -580,6 +580,8 @@ class ParallelProcessTaskExecutor(base.ParallelTaskExecutor):
580
580
  max_workers=None, wait_timeout=None):
581
581
  super(ParallelProcessTaskExecutor, self).__init__(
582
582
  executor=executor, max_workers=max_workers)
583
+ LOG.warning('Process task executor is deprecated. It is now disabled '
584
+ 'in Python 3.12 or later and will be removed.')
583
585
  self._auth_key = _create_random_string(32)
584
586
  self._dispatcher = Dispatcher({}, self._auth_key,
585
587
  _create_random_string(32))
taskflow/test.py CHANGED
@@ -19,9 +19,7 @@ from unittest import mock
19
19
  import fixtures
20
20
  from oslotest import base
21
21
 
22
- from testtools import compat
23
22
  from testtools import matchers
24
- from testtools import testcase
25
23
 
26
24
  from taskflow import exceptions
27
25
  from taskflow.tests import fixtures as taskflow_fixtures
@@ -122,30 +120,6 @@ class TestCase(base.BaseTestCase):
122
120
 
123
121
  self.assertRaises(exc_class, access_func)
124
122
 
125
- def assertRaisesRegex(self, exc_class, pattern, callable_obj,
126
- *args, **kwargs):
127
- # TODO(harlowja): submit a pull/review request to testtools to add
128
- # this method to there codebase instead of having it exist in ours
129
- # since it really doesn't belong here.
130
-
131
- class ReRaiseOtherTypes(object):
132
- def match(self, matchee):
133
- if not issubclass(matchee[0], exc_class):
134
- compat.reraise(*matchee)
135
-
136
- class CaptureMatchee(object):
137
- def match(self, matchee):
138
- self.matchee = matchee[1]
139
-
140
- capture = CaptureMatchee()
141
- matcher = matchers.Raises(matchers.MatchesAll(ReRaiseOtherTypes(),
142
- matchers.MatchesException(exc_class,
143
- pattern),
144
- capture))
145
- our_callable = testcase.Nullary(callable_obj, *args, **kwargs)
146
- self.assertThat(our_callable, matcher)
147
- return capture.matchee
148
-
149
123
  def assertGreater(self, first, second):
150
124
  matcher = matchers.GreaterThan(first)
151
125
  self.assertThat(second, matcher)
@@ -19,7 +19,6 @@ import testtools
19
19
 
20
20
  from taskflow.engines.action_engine import engine
21
21
  from taskflow.engines.action_engine import executor
22
- from taskflow.engines.action_engine import process_executor
23
22
  from taskflow.patterns import linear_flow as lf
24
23
  from taskflow.persistence import backends
25
24
  from taskflow import test
@@ -27,6 +26,11 @@ from taskflow.tests import utils
27
26
  from taskflow.utils import eventlet_utils as eu
28
27
  from taskflow.utils import persistence_utils as pu
29
28
 
29
+ try:
30
+ from taskflow.engines.action_engine import process_executor as pe
31
+ except ImportError:
32
+ pe = None
33
+
30
34
 
31
35
  class ParallelCreationTest(test.TestCase):
32
36
  @staticmethod
@@ -44,11 +48,12 @@ class ParallelCreationTest(test.TestCase):
44
48
  self.assertIsInstance(eng._task_executor,
45
49
  executor.ParallelThreadTaskExecutor)
46
50
 
51
+ @testtools.skipIf(pe is None, 'process_executor is not available')
47
52
  def test_process_string_creation(self):
48
53
  for s in ['process', 'processes']:
49
54
  eng = self._create_engine(executor=s)
50
55
  self.assertIsInstance(eng._task_executor,
51
- process_executor.ParallelProcessTaskExecutor)
56
+ pe.ParallelProcessTaskExecutor)
52
57
 
53
58
  def test_thread_executor_creation(self):
54
59
  with futurist.ThreadPoolExecutor(1) as e:
@@ -56,11 +61,12 @@ class ParallelCreationTest(test.TestCase):
56
61
  self.assertIsInstance(eng._task_executor,
57
62
  executor.ParallelThreadTaskExecutor)
58
63
 
64
+ @testtools.skipIf(pe is None, 'process_executor is not available')
59
65
  def test_process_executor_creation(self):
60
66
  with futurist.ProcessPoolExecutor(1) as e:
61
67
  eng = self._create_engine(executor=e)
62
68
  self.assertIsInstance(eng._task_executor,
63
- process_executor.ParallelProcessTaskExecutor)
69
+ pe.ParallelProcessTaskExecutor)
64
70
 
65
71
  @testtools.skipIf(not eu.EVENTLET_AVAILABLE, 'eventlet is not available')
66
72
  def test_green_executor_creation(self):
@@ -13,19 +13,26 @@
13
13
  # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
14
14
  # License for the specific language governing permissions and limitations
15
15
  # under the License.
16
-
17
- import asyncore
18
16
  import errno
19
17
  import socket
20
18
  import threading
21
19
 
22
- from taskflow.engines.action_engine import process_executor as pu
20
+ import testtools
21
+
23
22
  from taskflow import task
24
23
  from taskflow import test
25
24
  from taskflow.test import mock
26
25
  from taskflow.tests import utils as test_utils
27
26
 
27
+ try:
28
+ import asyncore
29
+ from taskflow.engines.action_engine import process_executor as pe
30
+ except ImportError:
31
+ asyncore = None
32
+ pe = None
33
+
28
34
 
35
+ @testtools.skipIf(asyncore is None, 'process_executor is not available')
29
36
  class ProcessExecutorHelpersTest(test.TestCase):
30
37
  def test_reader(self):
31
38
  capture_buf = []
@@ -33,8 +40,8 @@ class ProcessExecutorHelpersTest(test.TestCase):
33
40
  def do_capture(identity, message_capture_func):
34
41
  capture_buf.append(message_capture_func())
35
42
 
36
- r = pu.Reader(b"secret", do_capture)
37
- for data in pu._encode_message(b"secret", ['hi'], b'me'):
43
+ r = pe.Reader(b"secret", do_capture)
44
+ for data in pe._encode_message(b"secret", ['hi'], b'me'):
38
45
  self.assertEqual(len(data), r.bytes_needed)
39
46
  r.feed(data)
40
47
 
@@ -42,9 +49,9 @@ class ProcessExecutorHelpersTest(test.TestCase):
42
49
  self.assertEqual(['hi'], capture_buf[0])
43
50
 
44
51
  def test_bad_hmac_reader(self):
45
- r = pu.Reader(b"secret-2", lambda ident, capture_func: capture_func())
46
- in_data = b"".join(pu._encode_message(b"secret", ['hi'], b'me'))
47
- self.assertRaises(pu.BadHmacValueError, r.feed, in_data)
52
+ r = pe.Reader(b"secret-2", lambda ident, capture_func: capture_func())
53
+ in_data = b"".join(pe._encode_message(b"secret", ['hi'], b'me'))
54
+ self.assertRaises(pe.BadHmacValueError, r.feed, in_data)
48
55
 
49
56
  @mock.patch("socket.socket")
50
57
  def test_no_connect_channel(self, mock_socket_factory):
@@ -52,7 +59,7 @@ class ProcessExecutorHelpersTest(test.TestCase):
52
59
  mock_socket_factory.return_value = mock_sock
53
60
  mock_sock.connect.side_effect = socket.error(errno.ECONNREFUSED,
54
61
  'broken')
55
- c = pu.Channel(2222, b"me", b"secret")
62
+ c = pe.Channel(2222, b"me", b"secret")
56
63
  self.assertRaises(socket.error, c.send, "hi")
57
64
  self.assertTrue(c.dead)
58
65
  self.assertTrue(mock_sock.close.called)
@@ -65,7 +72,7 @@ class ProcessExecutorHelpersTest(test.TestCase):
65
72
  task.EVENT_UPDATE_PROGRESS,
66
73
  lambda _event_type, details: details_capture.append(details))
67
74
 
68
- d = pu.Dispatcher({}, b'secret', b'server-josh')
75
+ d = pe.Dispatcher({}, b'secret', b'server-josh')
69
76
  d.setup()
70
77
  d.targets[b'child-josh'] = t
71
78
 
@@ -73,7 +80,7 @@ class ProcessExecutorHelpersTest(test.TestCase):
73
80
  s.start()
74
81
  self.addCleanup(s.join)
75
82
 
76
- c = pu.Channel(d.port, b'child-josh', b'secret')
83
+ c = pe.Channel(d.port, b'child-josh', b'secret')
77
84
  self.addCleanup(c.close)
78
85
 
79
86
  send_what = [
@@ -87,7 +94,7 @@ class ProcessExecutorHelpersTest(test.TestCase):
87
94
  {'progress': 0.8},
88
95
  {'progress': 0.9},
89
96
  ]
90
- e_s = pu.EventSender(c)
97
+ e_s = pe.EventSender(c)
91
98
  for details in send_what:
92
99
  e_s(task.EVENT_UPDATE_PROGRESS, details)
93
100
 
@@ -23,6 +23,11 @@ from taskflow import test
23
23
  from taskflow.tests import utils
24
24
  from taskflow.utils import eventlet_utils as eu
25
25
 
26
+ try:
27
+ from taskflow.engines.action_engine import process_executor as pe
28
+ except ImportError:
29
+ pe = None
30
+
26
31
 
27
32
  class ArgumentsPassingTest(utils.EngineTestBase):
28
33
 
@@ -221,6 +226,7 @@ class ParallelEngineWithEventletTest(ArgumentsPassingTest, test.TestCase):
221
226
  executor=executor)
222
227
 
223
228
 
229
+ @testtools.skipIf(pe is None, 'process_executor is not available')
224
230
  class ParallelEngineWithProcessTest(ArgumentsPassingTest, test.TestCase):
225
231
  _EXECUTOR_WORKERS = 2
226
232
 
@@ -41,6 +41,11 @@ from taskflow.utils import eventlet_utils as eu
41
41
  from taskflow.utils import persistence_utils as p_utils
42
42
  from taskflow.utils import threading_utils as tu
43
43
 
44
+ try:
45
+ from taskflow.engines.action_engine import process_executor as pe
46
+ except ImportError:
47
+ pe = None
48
+
44
49
 
45
50
  # Expected engine transitions when empty workflows are ran...
46
51
  _EMPTY_TRANSITIONS = [
@@ -1494,6 +1499,7 @@ class ParallelEngineWithEventletTest(EngineTaskTest,
1494
1499
  store=store, **kwargs)
1495
1500
 
1496
1501
 
1502
+ @testtools.skipIf(pe is None, 'process_executor is not available')
1497
1503
  class ParallelEngineWithProcessTest(EngineTaskTest,
1498
1504
  EngineMultipleResultsTest,
1499
1505
  EngineLinearFlowTest,
@@ -28,6 +28,11 @@ from taskflow.tests import utils
28
28
  from taskflow.types import failure
29
29
  from taskflow.utils import eventlet_utils as eu
30
30
 
31
+ try:
32
+ from taskflow.engines.action_engine import process_executor as pe
33
+ except ImportError:
34
+ pe = None
35
+
31
36
 
32
37
  class FailingRetry(retry.Retry):
33
38
 
@@ -1313,6 +1318,7 @@ class ParallelEngineWithEventletTest(RetryTest, test.TestCase):
1313
1318
  defer_reverts=defer_reverts)
1314
1319
 
1315
1320
 
1321
+ @testtools.skipIf(pe is None, 'process_executor is not available')
1316
1322
  class ParallelEngineWithProcessTest(RetryTest, test.TestCase):
1317
1323
  _EXECUTOR_WORKERS = 2
1318
1324
 
@@ -25,6 +25,11 @@ from taskflow import test
25
25
  from taskflow.tests import utils
26
26
  from taskflow.utils import eventlet_utils as eu
27
27
 
28
+ try:
29
+ from taskflow.engines.action_engine import process_executor as pe
30
+ except ImportError:
31
+ pe = None
32
+
28
33
 
29
34
  class SuspendingListener(utils.CaptureListener):
30
35
 
@@ -224,6 +229,7 @@ class ParallelEngineWithEventletTest(SuspendTest, test.TestCase):
224
229
  executor=executor)
225
230
 
226
231
 
232
+ @testtools.skipIf(pe is None, 'process_executor is not available')
227
233
  class ParallelEngineWithProcessTest(SuspendTest, test.TestCase):
228
234
  _EXECUTOR_WORKERS = 2
229
235
 
@@ -16,6 +16,7 @@ Christian Berendt <berendt@b1-systems.de>
16
16
  Chuck Short <chuck.short@canonical.com>
17
17
  Corey Bryant <corey.bryant@canonical.com>
18
18
  Cyril Roelandt <cyril.roelandt@enovance.com>
19
+ Cyril Roelandt <cyril@redhat.com>
19
20
  Dan Krause <dan.krause@rackspace.com>
20
21
  Daniel Bengtsson <dbengt@redhat.com>
21
22
  Davanum Srinivas <davanum@gmail.com>
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: taskflow
3
- Version: 5.7.0
3
+ Version: 5.8.0
4
4
  Summary: Taskflow structured state management library.
5
5
  Home-page: https://docs.openstack.org/taskflow/latest/
6
6
  Author: OpenStack
@@ -31,20 +31,20 @@ Requires-Dist: fasteners (>=0.17.3)
31
31
  Requires-Dist: futurist (>=1.2.0)
32
32
  Requires-Dist: jsonschema (>=3.2.0)
33
33
  Requires-Dist: networkx (>=2.1.0)
34
- Requires-Dist: oslo.serialization (!=2.19.1,>=2.18.0)
34
+ Requires-Dist: oslo.serialization (>=2.18.0)
35
35
  Requires-Dist: oslo.utils (>=3.33.0)
36
- Requires-Dist: pbr (!=2.1.0,>=2.0.0)
36
+ Requires-Dist: pbr (>=2.0.0)
37
37
  Requires-Dist: pydot (>=1.2.4)
38
38
  Requires-Dist: stevedore (>=1.20.0)
39
39
  Requires-Dist: tenacity (>=6.0.0)
40
40
  Provides-Extra: database
41
41
  Requires-Dist: PyMySQL (>=0.7.6) ; extra == 'database'
42
- Requires-Dist: SQLAlchemy (!=1.1.5,!=1.1.6,!=1.1.7,!=1.1.8,>=1.0.10) ; extra == 'database'
43
42
  Requires-Dist: SQLAlchemy-Utils (>=0.30.11) ; extra == 'database'
43
+ Requires-Dist: SQLAlchemy (>=1.0.10) ; extra == 'database'
44
44
  Requires-Dist: alembic (>=0.8.10) ; extra == 'database'
45
45
  Requires-Dist: psycopg2 (>=2.8.0) ; extra == 'database'
46
46
  Provides-Extra: eventlet
47
- Requires-Dist: eventlet (!=0.18.3,!=0.20.1,!=0.21.0,>=0.18.2) ; extra == 'eventlet'
47
+ Requires-Dist: eventlet (>=0.18.2) ; extra == 'eventlet'
48
48
  Provides-Extra: redis
49
49
  Requires-Dist: redis (>=4.0.0) ; extra == 'redis'
50
50
  Provides-Extra: test
@@ -9,7 +9,7 @@ taskflow/retry.py,sha256=Dk-IcdPi5n2502fzmVMjrWLzlrXp6h1ak_xOpOWoh6s,14537
9
9
  taskflow/states.py,sha256=3MRdAfs0x94QhDjl-RGyTfxAbkL3APtNr_qQf6apqbE,6901
10
10
  taskflow/storage.py,sha256=CSCegSPkrw2QDP6qGrzUYTWBFBX34Kqv0p9hwYId9oM,52114
11
11
  taskflow/task.py,sha256=qw79ho1bhwe5KttSPjalfUlCTfLUjNGc1twNdTFMi4w,10052
12
- taskflow/test.py,sha256=iIHle3qsM2980YPVfPDMJ8q1bpzqkmQjvreAUlMTrX4,10456
12
+ taskflow/test.py,sha256=T6DfnwU7NcSRLfAYR3QgmGXhRVkYfeH-6JEp2jffQh8,9341
13
13
  taskflow/version.py,sha256=QWhiNICILD4xTAZPrJVUF9dsH-VoCHbHsKuwPA3IMrE,1263
14
14
  taskflow/conductors/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
15
15
  taskflow/conductors/base.py,sha256=k7E_zu9CIORhODWzwmxh7w8fSNhG6dJaYEfLwIxhxXE,7332
@@ -26,9 +26,9 @@ taskflow/engines/action_engine/builder.py,sha256=cYdzNpPSgzpQgO9YCp4T7JgRmpD4L90
26
26
  taskflow/engines/action_engine/compiler.py,sha256=26x5yTtNfBcieeaza1n-MiPmUIP-nH2eA_hGOmgy8U8,16164
27
27
  taskflow/engines/action_engine/completer.py,sha256=wjKpUM1QPr_fVnVG_XqA7gw0IKEA_aj3FrEvCITN0J4,9028
28
28
  taskflow/engines/action_engine/deciders.py,sha256=WEKo189CL9Zdg506Sz3Mlxpfp6dqGv7TMcfI07h69Co,7254
29
- taskflow/engines/action_engine/engine.py,sha256=RCjtPkpT2_aqpuhGZb3ZSruOMZdoVEm9PXpiVDzpLZU,29532
29
+ taskflow/engines/action_engine/engine.py,sha256=kz_9BVD22IO2mEHBc735zUDPCF0Y_hzcAuQqZpUUVCk,29817
30
30
  taskflow/engines/action_engine/executor.py,sha256=sBmKwgDQN9fEZz42T7RB-RYUZvWqfHqC-Y2EsWRGkYI,7749
31
- taskflow/engines/action_engine/process_executor.py,sha256=4fbJtO7XWWnCWSKBTKEMrMNi2ryZn7W6c0LT3j1w5D4,27828
31
+ taskflow/engines/action_engine/process_executor.py,sha256=if8kc7Dg3lvT7NwKVe2eqHhksv1pxEPNoI5E80naGr4,27975
32
32
  taskflow/engines/action_engine/runtime.py,sha256=exGFpk7iPPrl7vywAHqdeDW-cyFlYxphPLi8W1umP3o,13845
33
33
  taskflow/engines/action_engine/scheduler.py,sha256=yZEn2z23N-0XNpHtjOs3kxJh4CTpZl-2ASrPsyLP2t0,4048
34
34
  taskflow/engines/action_engine/scopes.py,sha256=u0cmoMycrNZqMebgKqLW2YXBVLukNi9dVqKOFr79lKw,5432
@@ -150,12 +150,12 @@ taskflow/tests/fixtures.py,sha256=VfGlusX2q79_ktPME4cm1qt_gN9VNRAwyYy5sDBAX0Y,20
150
150
  taskflow/tests/test_examples.py,sha256=g2zhguLKE4Tex2e_vSmKMhsNXItnKWj89_VbnmgGejU,4925
151
151
  taskflow/tests/utils.py,sha256=P6RPD2w5h00KAse7r31LC9tJils0jaeiUx5QiVqLOA0,11157
152
152
  taskflow/tests/unit/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
153
- taskflow/tests/unit/test_arguments_passing.py,sha256=gEtOSx9fibT_peqqWhtqCY96P1AJjaCEo3Hry0qdPak,9204
153
+ taskflow/tests/unit/test_arguments_passing.py,sha256=jK9-Z7xBfPI4nHB7_Bh_rllBH-X55v6wplxdrjwRS3E,9381
154
154
  taskflow/tests/unit/test_check_transition.py,sha256=DuxJAErCwheWPAdN_43LOOvZg00vmUoC-IzGgh642IM,6173
155
155
  taskflow/tests/unit/test_conductors.py,sha256=-TEP_8ap69bPHhEabx2Dk8qNJuI_kBNCSuPcGcvZl2w,18996
156
156
  taskflow/tests/unit/test_deciders.py,sha256=I5nDijs0Ybhw0HmCjY41N2L612U03-xH9Z7COWEaWy4,2733
157
157
  taskflow/tests/unit/test_engine_helpers.py,sha256=EPYzq1r5d3cvIxseBeTLGPY3ZkJtV7C6Zi8il-cO94o,5399
158
- taskflow/tests/unit/test_engines.py,sha256=m6lNCW73KBY-vIO_aO0eRTLHhJw4pBiFg3J2gHJX_Xw,64393
158
+ taskflow/tests/unit/test_engines.py,sha256=30MZKR3hALtZk2CbY85T2iBIQOOWN-ZigPR6yYFd748,64570
159
159
  taskflow/tests/unit/test_exceptions.py,sha256=QDpa7X99Z5ET7s0dimV_YY4wit8Oqrcs5fZG7fTmX2Q,4362
160
160
  taskflow/tests/unit/test_failure.py,sha256=xnmkeSuQlTCCsXL6PvgAkQrPN28ahESQL2sEftwyuKQ,17982
161
161
  taskflow/tests/unit/test_flow_dependencies.py,sha256=PGPjxp-VeVp1E2Of6OAnEsyB0p4xTa-xd7NLnyjtl-A,18086
@@ -166,10 +166,10 @@ taskflow/tests/unit/test_mapfunctor_task.py,sha256=1FI8AJxRUPxT7Lu6h9Mhd62srAnKf
166
166
  taskflow/tests/unit/test_notifier.py,sha256=Q4xGl9e_LZRiJVpGR2FbG2qSp9CqlP65aDsaIKxPqHI,7894
167
167
  taskflow/tests/unit/test_progress.py,sha256=oeYFeWuHde1D2cAahhE1yN1NznNcXk7ajw0Z2yCyZkM,5259
168
168
  taskflow/tests/unit/test_reducefunctor_task.py,sha256=vM4P5h80-Ex4uq2N_dNmTFL49Ks3iFmP5dMbZEk0YQ0,2106
169
- taskflow/tests/unit/test_retries.py,sha256=UBYPtjTwydx7FnMuwYzYQOWta8bh8qtaA2tkEMqDhHE,56365
169
+ taskflow/tests/unit/test_retries.py,sha256=yRQF_TUtZ-d13sIzFNLjKZXg5DhuSj2xkhvgi8zGgCE,56542
170
170
  taskflow/tests/unit/test_states.py,sha256=iYyHo9YzHBMjlYaqlzZJTcKjB53WCqf5Fw3OGoVKVME,3660
171
171
  taskflow/tests/unit/test_storage.py,sha256=SlShgJ4hirdnggDkpB3GoosY--4B0PqMOVvMBG5D6g4,23520
172
- taskflow/tests/unit/test_suspend.py,sha256=j4M5J2G1aoGUJb111_xUUb0oYJfgRo9hC4ZFyr-00d4,9900
172
+ taskflow/tests/unit/test_suspend.py,sha256=2d5y15Fw6NESJ4oEUAA7dosECGb2-CLkkgXULqwNtWw,10077
173
173
  taskflow/tests/unit/test_task.py,sha256=PGXlOIhpYdCo8hTScleIHxQ5gGa-1b1MJhwaiB_fQss,15947
174
174
  taskflow/tests/unit/test_types.py,sha256=uecv0lBqPAfAdTDXYMoM8Pi-P9JROR-aA_xkK0trJSQ,20225
175
175
  taskflow/tests/unit/test_utils.py,sha256=m5Wct0kqv8CoX03sUBXcVczAuGcF-AQtbYPxUDq64oo,11035
@@ -181,8 +181,8 @@ taskflow/tests/unit/test_utils_threading_utils.py,sha256=JxWTMFQwjUXmsEBKl6c207V
181
181
  taskflow/tests/unit/action_engine/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
182
182
  taskflow/tests/unit/action_engine/test_builder.py,sha256=tuL4LoPpnvqnGBE9qAoVXVHLzARGwhhOu4q1cSnvZ68,12866
183
183
  taskflow/tests/unit/action_engine/test_compile.py,sha256=dFaYxLiaCCoMY9TsrsQgN_wfwuu8rvWCW6hwABWlIbU,23759
184
- taskflow/tests/unit/action_engine/test_creation.py,sha256=YMsEEBMBMJZsv9TaGjeaHEGn_npXt-LlL-kzwyM-cco,3517
185
- taskflow/tests/unit/action_engine/test_process_executor.py,sha256=gs94HietHUg2HiwhA4VhSAyfUD7KOu0uXhB6V2HYzII,3455
184
+ taskflow/tests/unit/action_engine/test_creation.py,sha256=By8RzbkFI2uyQnU66n5Ul1-1XIJo7x7ybcx5Ln5iYWs,3681
185
+ taskflow/tests/unit/action_engine/test_process_executor.py,sha256=WDqA_zv1tsS2bPN7lCqwE6avgjAlO8D0_znnF9jhUAQ,3613
186
186
  taskflow/tests/unit/action_engine/test_scoping.py,sha256=wIB9C3LMgfsqO6cdz_ZdhQcjrOFWAFn-9F6rEMjizgM,11327
187
187
  taskflow/tests/unit/jobs/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
188
188
  taskflow/tests/unit/jobs/base.py,sha256=wYv5ziDeVdYn2nhuMSfYTWU39Xxpv8lRKvJbGsB79lM,8447
@@ -232,11 +232,11 @@ taskflow/utils/persistence_utils.py,sha256=GWceOcxdfsf-MtrdR74xmC2khClF8im6DpZmR
232
232
  taskflow/utils/redis_utils.py,sha256=zJBvXmlNZUQ_gwGZAaNLySVtCtou3YayHAkGSCNKDUw,4345
233
233
  taskflow/utils/schema_utils.py,sha256=Zf6eL0NK0_TVFD_Sc1yEZYswFz9K0tet1Dmj48F8uMA,1434
234
234
  taskflow/utils/threading_utils.py,sha256=eiaNUK127DOBr_zfj3-j4Oi5a2dsD7VunVeTYN6NjPo,5849
235
- taskflow-5.7.0.dist-info/AUTHORS,sha256=tle5nZW61YeKYzeIWT7GN7FJ6_Y0UkBX_oYE2tDMgKc,4530
236
- taskflow-5.7.0.dist-info/LICENSE,sha256=0t4vVm0tDgtQn7DqH6Nmn0kGSrHeIcV0U8qzdQojTo8,10143
237
- taskflow-5.7.0.dist-info/METADATA,sha256=DsLVnmLMxFdhPcqmF7deUwhOvhfsHM26Cn5I1XD8QhA,5150
238
- taskflow-5.7.0.dist-info/WHEEL,sha256=g4nMs7d-Xl9-xC9XovUrsDHGXt-FT0E17Yqo92DEfvY,92
239
- taskflow-5.7.0.dist-info/entry_points.txt,sha256=MGjjnng_YpSJs9BMAJBC2hJnljMV0pNllXl_5VoHJV0,1183
240
- taskflow-5.7.0.dist-info/pbr.json,sha256=mbut3-PXJoupqm42IrcBXSk0Q8D6y8nWDaPngt2eVNA,47
241
- taskflow-5.7.0.dist-info/top_level.txt,sha256=PsdN41vwysesDlqHCSVVXH4mkTMdMiZFW_yHEAXiZE4,9
242
- taskflow-5.7.0.dist-info/RECORD,,
235
+ taskflow-5.8.0.dist-info/AUTHORS,sha256=uKVGnRq9UrIKLl5MhXJ9QuqzKXynjWcZcuaW_j9Eh5g,4564
236
+ taskflow-5.8.0.dist-info/LICENSE,sha256=0t4vVm0tDgtQn7DqH6Nmn0kGSrHeIcV0U8qzdQojTo8,10143
237
+ taskflow-5.8.0.dist-info/METADATA,sha256=kuefeelA76iqoYN42iONSN0BIGMC1kuBl3gbAFUxFZU,5074
238
+ taskflow-5.8.0.dist-info/WHEEL,sha256=g4nMs7d-Xl9-xC9XovUrsDHGXt-FT0E17Yqo92DEfvY,92
239
+ taskflow-5.8.0.dist-info/entry_points.txt,sha256=MGjjnng_YpSJs9BMAJBC2hJnljMV0pNllXl_5VoHJV0,1183
240
+ taskflow-5.8.0.dist-info/pbr.json,sha256=-MpKNBkoFQci3B2CFjUNnVUnce_VqQpi9W83oKFErq4,47
241
+ taskflow-5.8.0.dist-info/top_level.txt,sha256=PsdN41vwysesDlqHCSVVXH4mkTMdMiZFW_yHEAXiZE4,9
242
+ taskflow-5.8.0.dist-info/RECORD,,
@@ -0,0 +1 @@
1
+ {"git_version": "828e9240", "is_release": true}
@@ -1 +0,0 @@
1
- {"git_version": "3ca2d4fd", "is_release": true}