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.
- taskflow/engines/action_engine/engine.py +18 -6
- taskflow/engines/action_engine/process_executor.py +2 -0
- taskflow/test.py +0 -26
- taskflow/tests/unit/action_engine/test_creation.py +9 -3
- taskflow/tests/unit/action_engine/test_process_executor.py +19 -12
- taskflow/tests/unit/test_arguments_passing.py +6 -0
- taskflow/tests/unit/test_engines.py +6 -0
- taskflow/tests/unit/test_retries.py +6 -0
- taskflow/tests/unit/test_suspend.py +6 -0
- {taskflow-5.7.0.dist-info → taskflow-5.8.0.dist-info}/AUTHORS +1 -0
- {taskflow-5.7.0.dist-info → taskflow-5.8.0.dist-info}/METADATA +5 -5
- {taskflow-5.7.0.dist-info → taskflow-5.8.0.dist-info}/RECORD +17 -17
- taskflow-5.8.0.dist-info/pbr.json +1 -0
- taskflow-5.7.0.dist-info/pbr.json +0 -1
- {taskflow-5.7.0.dist-info → taskflow-5.8.0.dist-info}/LICENSE +0 -0
- {taskflow-5.7.0.dist-info → taskflow-5.8.0.dist-info}/WHEEL +0 -0
- {taskflow-5.7.0.dist-info → taskflow-5.8.0.dist-info}/entry_points.txt +0 -0
- {taskflow-5.7.0.dist-info → taskflow-5.8.0.dist-info}/top_level.txt +0 -0
|
@@ -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
|
-
|
|
563
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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 =
|
|
37
|
-
for data in
|
|
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 =
|
|
46
|
-
in_data = b"".join(
|
|
47
|
-
self.assertRaises(
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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.
|
|
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 (
|
|
34
|
+
Requires-Dist: oslo.serialization (>=2.18.0)
|
|
35
35
|
Requires-Dist: oslo.utils (>=3.33.0)
|
|
36
|
-
Requires-Dist: pbr (
|
|
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 (
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
185
|
-
taskflow/tests/unit/action_engine/test_process_executor.py,sha256=
|
|
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.
|
|
236
|
-
taskflow-5.
|
|
237
|
-
taskflow-5.
|
|
238
|
-
taskflow-5.
|
|
239
|
-
taskflow-5.
|
|
240
|
-
taskflow-5.
|
|
241
|
-
taskflow-5.
|
|
242
|
-
taskflow-5.
|
|
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}
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|