ddeutil-workflow 0.0.57__py3-none-any.whl → 0.0.59__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.
- ddeutil/workflow/__about__.py +1 -1
- ddeutil/workflow/__cron.py +3 -3
- ddeutil/workflow/conf.py +7 -5
- ddeutil/workflow/event.py +12 -12
- ddeutil/workflow/exceptions.py +3 -3
- ddeutil/workflow/job.py +44 -36
- ddeutil/workflow/logs.py +123 -82
- ddeutil/workflow/params.py +13 -5
- ddeutil/workflow/result.py +18 -18
- ddeutil/workflow/reusables.py +9 -9
- ddeutil/workflow/scheduler.py +17 -15
- ddeutil/workflow/stages.py +149 -102
- ddeutil/workflow/utils.py +6 -6
- ddeutil/workflow/workflow.py +48 -48
- {ddeutil_workflow-0.0.57.dist-info → ddeutil_workflow-0.0.59.dist-info}/METADATA +6 -3
- ddeutil_workflow-0.0.59.dist-info/RECORD +31 -0
- {ddeutil_workflow-0.0.57.dist-info → ddeutil_workflow-0.0.59.dist-info}/WHEEL +1 -1
- ddeutil_workflow-0.0.57.dist-info/RECORD +0 -31
- {ddeutil_workflow-0.0.57.dist-info → ddeutil_workflow-0.0.59.dist-info}/entry_points.txt +0 -0
- {ddeutil_workflow-0.0.57.dist-info → ddeutil_workflow-0.0.59.dist-info}/licenses/LICENSE +0 -0
- {ddeutil_workflow-0.0.57.dist-info → ddeutil_workflow-0.0.59.dist-info}/top_level.txt +0 -0
ddeutil/workflow/utils.py
CHANGED
@@ -15,7 +15,7 @@ from inspect import isfunction
|
|
15
15
|
from itertools import chain, islice, product
|
16
16
|
from pathlib import Path
|
17
17
|
from random import randrange
|
18
|
-
from typing import Any, Final, TypeVar
|
18
|
+
from typing import Any, Final, Optional, TypeVar, Union
|
19
19
|
from zoneinfo import ZoneInfo
|
20
20
|
|
21
21
|
from ddeutil.core import hash_str
|
@@ -63,7 +63,7 @@ def clear_tz(dt: datetime) -> datetime:
|
|
63
63
|
return dt.replace(tzinfo=None)
|
64
64
|
|
65
65
|
|
66
|
-
def get_dt_now(tz: ZoneInfo
|
66
|
+
def get_dt_now(tz: Optional[ZoneInfo] = None, offset: float = 0.0) -> datetime:
|
67
67
|
"""Return the current datetime object.
|
68
68
|
|
69
69
|
:param tz: A ZoneInfo object for replace timezone of return datetime object.
|
@@ -76,7 +76,7 @@ def get_dt_now(tz: ZoneInfo | None = None, offset: float = 0.0) -> datetime:
|
|
76
76
|
|
77
77
|
|
78
78
|
def get_d_now(
|
79
|
-
tz: ZoneInfo
|
79
|
+
tz: Optional[ZoneInfo] = None, offset: float = 0.0
|
80
80
|
) -> date: # pragma: no cov
|
81
81
|
"""Return the current date object.
|
82
82
|
|
@@ -147,7 +147,7 @@ def gen_id(
|
|
147
147
|
*,
|
148
148
|
sensitive: bool = True,
|
149
149
|
unique: bool = False,
|
150
|
-
simple_mode: bool
|
150
|
+
simple_mode: Optional[bool] = None,
|
151
151
|
extras: DictData | None = None,
|
152
152
|
) -> str:
|
153
153
|
"""Generate running ID for able to tracking. This generates process use
|
@@ -197,7 +197,7 @@ def default_gen_id() -> str:
|
|
197
197
|
return gen_id("manual", unique=True)
|
198
198
|
|
199
199
|
|
200
|
-
def make_exec(path: str
|
200
|
+
def make_exec(path: Union[Path, str]) -> None:
|
201
201
|
"""Change mode of file to be executable file.
|
202
202
|
|
203
203
|
:param path: A file path that want to make executable permission.
|
@@ -244,7 +244,7 @@ def cross_product(matrix: Matrix) -> Iterator[DictData]:
|
|
244
244
|
)
|
245
245
|
|
246
246
|
|
247
|
-
def batch(iterable: Iterator[Any]
|
247
|
+
def batch(iterable: Union[Iterator[Any], range], n: int) -> Iterator[Any]:
|
248
248
|
"""Batch data into iterators of length n. The last batch may be shorter.
|
249
249
|
|
250
250
|
Example:
|
ddeutil/workflow/workflow.py
CHANGED
@@ -41,7 +41,7 @@ from typing_extensions import Self
|
|
41
41
|
from .__cron import CronRunner
|
42
42
|
from .__types import DictData, TupleStr
|
43
43
|
from .conf import FileLoad, Loader, dynamic
|
44
|
-
from .event import
|
44
|
+
from .event import Crontab
|
45
45
|
from .exceptions import WorkflowException
|
46
46
|
from .job import Job
|
47
47
|
from .logs import Audit, get_audit
|
@@ -69,10 +69,10 @@ __all__: TupleStr = (
|
|
69
69
|
class ReleaseType(str, Enum):
|
70
70
|
"""Release Type Enum support the type field on the Release dataclass."""
|
71
71
|
|
72
|
-
DEFAULT
|
73
|
-
SCHEDULE
|
74
|
-
POKING
|
75
|
-
FORCE
|
72
|
+
DEFAULT = "manual"
|
73
|
+
SCHEDULE = "schedule"
|
74
|
+
POKING = "poking"
|
75
|
+
FORCE = "force"
|
76
76
|
|
77
77
|
|
78
78
|
@total_ordering
|
@@ -105,14 +105,14 @@ class Release:
|
|
105
105
|
return f"{self.date:%Y-%m-%d %H:%M:%S}"
|
106
106
|
|
107
107
|
@classmethod
|
108
|
-
def from_dt(cls, dt: datetime
|
108
|
+
def from_dt(cls, dt: Union[datetime, str]) -> Self:
|
109
109
|
"""Construct Release object from `datetime` or `str` objects.
|
110
110
|
|
111
111
|
This method will replace second and millisecond value to 0 and
|
112
112
|
replace timezone to the `tz` config setting or extras overriding before
|
113
113
|
create Release object.
|
114
114
|
|
115
|
-
:param dt: (datetime
|
115
|
+
:param dt: (Union[datetime, str]) A datetime object or string that want to
|
116
116
|
construct to the Release object.
|
117
117
|
|
118
118
|
:raise TypeError: If the type of the dt argument does not valid with
|
@@ -129,7 +129,7 @@ class Release:
|
|
129
129
|
)
|
130
130
|
return cls(date=replace_sec(dt.replace(tzinfo=None)))
|
131
131
|
|
132
|
-
def __eq__(self, other: Release
|
132
|
+
def __eq__(self, other: Union[Release, datetime]) -> bool:
|
133
133
|
"""Override equal property that will compare only the same type or
|
134
134
|
datetime.
|
135
135
|
|
@@ -141,7 +141,7 @@ class Release:
|
|
141
141
|
return self.date == other
|
142
142
|
return NotImplemented
|
143
143
|
|
144
|
-
def __lt__(self, other: Release
|
144
|
+
def __lt__(self, other: Union[Release, datetime]) -> bool:
|
145
145
|
"""Override less-than property that will compare only the same type or
|
146
146
|
datetime.
|
147
147
|
|
@@ -209,7 +209,7 @@ class ReleaseQueue:
|
|
209
209
|
"""
|
210
210
|
return len(self.queue) > 0
|
211
211
|
|
212
|
-
def check_queue(self, value: Release
|
212
|
+
def check_queue(self, value: Union[Release, datetime]) -> bool:
|
213
213
|
"""Check a Release value already exists in list of tracking
|
214
214
|
queues.
|
215
215
|
|
@@ -314,7 +314,7 @@ class ReleaseQueue:
|
|
314
314
|
|
315
315
|
|
316
316
|
class Workflow(BaseModel):
|
317
|
-
"""Workflow model that use to keep the `Job` and `
|
317
|
+
"""Workflow model that use to keep the `Job` and `Crontab` models.
|
318
318
|
|
319
319
|
This is the main future of this project because it uses to be workflow
|
320
320
|
data for running everywhere that you want or using it to scheduler task in
|
@@ -338,9 +338,9 @@ class Workflow(BaseModel):
|
|
338
338
|
default_factory=dict,
|
339
339
|
description="A parameters that need to use on this workflow.",
|
340
340
|
)
|
341
|
-
on: list[
|
341
|
+
on: list[Crontab] = Field(
|
342
342
|
default_factory=list,
|
343
|
-
description="A list of
|
343
|
+
description="A list of Crontab instance for this workflow schedule.",
|
344
344
|
)
|
345
345
|
jobs: dict[str, Job] = Field(
|
346
346
|
default_factory=dict,
|
@@ -447,9 +447,9 @@ class Workflow(BaseModel):
|
|
447
447
|
@field_validator("on", mode="after")
|
448
448
|
def __on_no_dup_and_reach_limit__(
|
449
449
|
cls,
|
450
|
-
value: list[
|
450
|
+
value: list[Crontab],
|
451
451
|
info: ValidationInfo,
|
452
|
-
) -> list[
|
452
|
+
) -> list[Crontab]:
|
453
453
|
"""Validate the on fields should not contain duplicate values and if it
|
454
454
|
contains the every minute value more than one value, it will remove to
|
455
455
|
only one value.
|
@@ -458,7 +458,7 @@ class Workflow(BaseModel):
|
|
458
458
|
|
459
459
|
:param value: A list of on object.
|
460
460
|
|
461
|
-
:rtype: list[
|
461
|
+
:rtype: list[Crontab]
|
462
462
|
"""
|
463
463
|
set_ons: set[str] = {str(on.cronjob) for on in value}
|
464
464
|
if len(set_ons) != len(value):
|
@@ -476,7 +476,7 @@ class Workflow(BaseModel):
|
|
476
476
|
if len(set_tz) > 1:
|
477
477
|
raise ValueError(
|
478
478
|
f"The on fields should not contain multiple timezone, "
|
479
|
-
f"{list
|
479
|
+
f"{list(set_tz)}."
|
480
480
|
)
|
481
481
|
|
482
482
|
extras: Optional[DictData] = info.data.get("extras")
|
@@ -563,11 +563,11 @@ class Workflow(BaseModel):
|
|
563
563
|
adding jobs key to this parameter.
|
564
564
|
"""
|
565
565
|
# VALIDATE: Incoming params should have keys that set on this workflow.
|
566
|
-
if check_key :=
|
566
|
+
if check_key := [
|
567
567
|
f"{k!r}"
|
568
568
|
for k in self.params
|
569
569
|
if (k not in params and self.params[k].required)
|
570
|
-
|
570
|
+
]:
|
571
571
|
raise WorkflowException(
|
572
572
|
f"Required Param on this workflow setting does not set: "
|
573
573
|
f"{', '.join(check_key)}."
|
@@ -588,14 +588,14 @@ class Workflow(BaseModel):
|
|
588
588
|
|
589
589
|
def release(
|
590
590
|
self,
|
591
|
-
release:
|
591
|
+
release: Union[Release, datetime],
|
592
592
|
params: DictData,
|
593
593
|
*,
|
594
|
-
run_id: str
|
595
|
-
parent_run_id: str
|
594
|
+
run_id: Optional[str] = None,
|
595
|
+
parent_run_id: Optional[str] = None,
|
596
596
|
audit: type[Audit] = None,
|
597
597
|
queue: Optional[ReleaseQueue] = None,
|
598
|
-
override_log_name: str
|
598
|
+
override_log_name: Optional[str] = None,
|
599
599
|
result: Optional[Result] = None,
|
600
600
|
timeout: int = 600,
|
601
601
|
) -> Result:
|
@@ -745,12 +745,12 @@ class Workflow(BaseModel):
|
|
745
745
|
|
746
746
|
def poke(
|
747
747
|
self,
|
748
|
-
params: DictData
|
749
|
-
start_date: datetime
|
748
|
+
params: Optional[DictData] = None,
|
749
|
+
start_date: Optional[datetime] = None,
|
750
750
|
*,
|
751
|
-
run_id: str
|
751
|
+
run_id: Optional[str] = None,
|
752
752
|
periods: int = 1,
|
753
|
-
audit: Audit
|
753
|
+
audit: Optional[Audit] = None,
|
754
754
|
force_run: bool = False,
|
755
755
|
timeout: int = 1800,
|
756
756
|
max_poking_pool_worker: int = 2,
|
@@ -907,8 +907,8 @@ class Workflow(BaseModel):
|
|
907
907
|
job: Job,
|
908
908
|
params: DictData,
|
909
909
|
*,
|
910
|
-
result: Result
|
911
|
-
event: Event
|
910
|
+
result: Optional[Result] = None,
|
911
|
+
event: Optional[Event] = None,
|
912
912
|
) -> Result:
|
913
913
|
"""Job execution with passing dynamic parameters from the main workflow
|
914
914
|
execution to the target job object via job's ID.
|
@@ -969,10 +969,10 @@ class Workflow(BaseModel):
|
|
969
969
|
self,
|
970
970
|
params: DictData,
|
971
971
|
*,
|
972
|
-
run_id: str
|
973
|
-
parent_run_id: str
|
974
|
-
result: Result
|
975
|
-
event: Event
|
972
|
+
run_id: Optional[str] = None,
|
973
|
+
parent_run_id: Optional[str] = None,
|
974
|
+
result: Optional[Result] = None,
|
975
|
+
event: Optional[Event] = None,
|
976
976
|
timeout: int = 3600,
|
977
977
|
max_job_parallel: int = 2,
|
978
978
|
) -> Result:
|
@@ -999,8 +999,8 @@ class Workflow(BaseModel):
|
|
999
999
|
at the result context.
|
1000
1000
|
|
1001
1001
|
:param params: A parameter data that will parameterize before execution.
|
1002
|
-
:param run_id: (str
|
1003
|
-
:param parent_run_id: (str
|
1002
|
+
:param run_id: (Optional[str]) A workflow running ID.
|
1003
|
+
:param parent_run_id: (Optional[str]) A parent workflow running ID.
|
1004
1004
|
:param result: (Result) A Result instance for return context and status.
|
1005
1005
|
:param event: (Event) An Event manager instance that use to cancel this
|
1006
1006
|
execution if it forces stopped by parent execution.
|
@@ -1022,7 +1022,14 @@ class Workflow(BaseModel):
|
|
1022
1022
|
extras=self.extras,
|
1023
1023
|
)
|
1024
1024
|
context: DictData = self.parameterize(params)
|
1025
|
-
|
1025
|
+
event: Event = event or Event()
|
1026
|
+
max_job_parallel: int = dynamic(
|
1027
|
+
"max_job_parallel", f=max_job_parallel, extras=self.extras
|
1028
|
+
)
|
1029
|
+
result.trace.info(
|
1030
|
+
f"[WORKFLOW]: Execute: {self.name!r} ("
|
1031
|
+
f"{'parallel' if max_job_parallel > 1 else 'sequential'} jobs)"
|
1032
|
+
)
|
1026
1033
|
if not self.jobs:
|
1027
1034
|
result.trace.warning(f"[WORKFLOW]: {self.name!r} does not set jobs")
|
1028
1035
|
return result.catch(status=SUCCESS, context=context)
|
@@ -1035,16 +1042,9 @@ class Workflow(BaseModel):
|
|
1035
1042
|
timeout: int = dynamic(
|
1036
1043
|
"max_job_exec_timeout", f=timeout, extras=self.extras
|
1037
1044
|
)
|
1038
|
-
|
1039
|
-
result.trace.debug(
|
1040
|
-
f"[WORKFLOW]: ... Run {self.name!r} with non-threading."
|
1041
|
-
)
|
1042
|
-
max_job_parallel: int = dynamic(
|
1043
|
-
"max_job_parallel", f=max_job_parallel, extras=self.extras
|
1044
|
-
)
|
1045
|
+
|
1045
1046
|
with ThreadPoolExecutor(
|
1046
|
-
max_workers=max_job_parallel,
|
1047
|
-
thread_name_prefix="wf_exec_non_threading_",
|
1047
|
+
max_workers=max_job_parallel, thread_name_prefix="wf_exec_"
|
1048
1048
|
) as executor:
|
1049
1049
|
futures: list[Future] = []
|
1050
1050
|
|
@@ -1165,10 +1165,10 @@ class WorkflowTask:
|
|
1165
1165
|
|
1166
1166
|
def release(
|
1167
1167
|
self,
|
1168
|
-
release:
|
1169
|
-
run_id: str
|
1168
|
+
release: Optional[Union[Release, datetime]] = None,
|
1169
|
+
run_id: Optional[str] = None,
|
1170
1170
|
audit: type[Audit] = None,
|
1171
|
-
queue: ReleaseQueue
|
1171
|
+
queue: Optional[ReleaseQueue] = None,
|
1172
1172
|
) -> Result:
|
1173
1173
|
"""Release the workflow task that passing an override parameter to
|
1174
1174
|
the parent release method with the `values` field.
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: ddeutil-workflow
|
3
|
-
Version: 0.0.
|
3
|
+
Version: 0.0.59
|
4
4
|
Summary: Lightweight workflow orchestration
|
5
5
|
Author-email: ddeutils <korawich.anu@gmail.com>
|
6
6
|
License: MIT
|
@@ -23,17 +23,20 @@ Requires-Python: >=3.9.13
|
|
23
23
|
Description-Content-Type: text/markdown
|
24
24
|
License-File: LICENSE
|
25
25
|
Requires-Dist: ddeutil[checksum]>=0.4.8
|
26
|
-
Requires-Dist: ddeutil-io[toml,yaml]>=0.2.
|
27
|
-
Requires-Dist: pydantic==2.11.
|
26
|
+
Requires-Dist: ddeutil-io[toml,yaml]>=0.2.13
|
27
|
+
Requires-Dist: pydantic==2.11.4
|
28
28
|
Requires-Dist: python-dotenv==1.1.0
|
29
29
|
Requires-Dist: schedule<2.0.0,==1.2.2
|
30
30
|
Provides-Extra: all
|
31
31
|
Requires-Dist: fastapi<1.0.0,>=0.115.0; extra == "all"
|
32
|
+
Requires-Dist: uvicorn; extra == "all"
|
32
33
|
Requires-Dist: httpx; extra == "all"
|
34
|
+
Requires-Dist: ujson; extra == "all"
|
33
35
|
Requires-Dist: aiofiles; extra == "all"
|
34
36
|
Requires-Dist: aiohttp; extra == "all"
|
35
37
|
Provides-Extra: api
|
36
38
|
Requires-Dist: fastapi<1.0.0,>=0.115.0; extra == "api"
|
39
|
+
Requires-Dist: uvicorn; extra == "api"
|
37
40
|
Requires-Dist: httpx; extra == "api"
|
38
41
|
Requires-Dist: ujson; extra == "api"
|
39
42
|
Provides-Extra: async
|
@@ -0,0 +1,31 @@
|
|
1
|
+
ddeutil/workflow/__about__.py,sha256=pgt1UgXVQ5NH2bT0-9YyCLh7xzGOl3WFa4CWgM2rMyE,28
|
2
|
+
ddeutil/workflow/__cron.py,sha256=5DHQKejG-76L_oREW78RcwMzeyKddJxSMmBzYyMAeeY,28536
|
3
|
+
ddeutil/workflow/__init__.py,sha256=NXEhjzKFdIGa-jtIq9HXChLCjSXNPd8VJ8ltggxbBO8,1371
|
4
|
+
ddeutil/workflow/__main__.py,sha256=x-sYedl4T8p6054aySk-EQX6vhytvPR0HvaBNYxMzp0,364
|
5
|
+
ddeutil/workflow/__types.py,sha256=7xXy6ynpT6Do6U5A-XYSVuinE2g-4wlZGGJ1NACK1BE,4343
|
6
|
+
ddeutil/workflow/conf.py,sha256=NLvjZ8bpDsn4e0MG3m1vgMdAwtmii5hP1D0STKQyZeo,14907
|
7
|
+
ddeutil/workflow/event.py,sha256=I9CUFAsqUNguCPALVmqwKWaUHcSpwg2S-chGrTZRXFY,10410
|
8
|
+
ddeutil/workflow/exceptions.py,sha256=Phe5JK-nLDt1Yh-ilWnpLIJl1VRsAzK4TBZ1tTiv9OQ,2359
|
9
|
+
ddeutil/workflow/job.py,sha256=2GGW_sY3XhZGYJpXWi84k4uTRV9YMPOMagVtDeeDya8,35289
|
10
|
+
ddeutil/workflow/logs.py,sha256=BFdPKcIsoSPU-tZBMQvBipAdlBur8IjOk7MxyqrTC8Q,28537
|
11
|
+
ddeutil/workflow/params.py,sha256=tBjKe1_e0TlUrSrlMahDuAdNNBlGBAKMmMMQ9eV-YSs,11616
|
12
|
+
ddeutil/workflow/result.py,sha256=LJieCsaQJOgZKz68wao2XKXCFm3bXl2jNkeHniP_Y90,5888
|
13
|
+
ddeutil/workflow/reusables.py,sha256=mw_Fi763B5am0EmntcjLBF7MDEhKqud2BYHcYyno5Ec,17663
|
14
|
+
ddeutil/workflow/scheduler.py,sha256=OsEyj2zscQ-3bDMk2z7UtKlCWLlgoGjaRFt17o1B1ew,27263
|
15
|
+
ddeutil/workflow/stages.py,sha256=_GGrI4sayY1HArqV0aWUMwukONnZ_6-QVAiaomP4nbY,92239
|
16
|
+
ddeutil/workflow/utils.py,sha256=S4TN1qH6t8NiZfIapJed3ZS35aQc18HzDPQ4oLqct7M,8804
|
17
|
+
ddeutil/workflow/workflow.py,sha256=gq7zbBeJptqb9rmHcR29c8Gbh43N1-cW94NdHGb6Td4,44856
|
18
|
+
ddeutil/workflow/api/__init__.py,sha256=kY30dL8HPY8tY_GBmm7y_3OdoXzB1-EA2a96PLU0AQw,5278
|
19
|
+
ddeutil/workflow/api/logs.py,sha256=NMTnOnsBrDB5129329xF2myLdrb-z9k1MQrmrP7qXJw,1818
|
20
|
+
ddeutil/workflow/api/utils.py,sha256=uTtUFVLpiYYahXvCVx8sueRQ03K2Xw1id_gW3IMmX1U,5295
|
21
|
+
ddeutil/workflow/api/routes/__init__.py,sha256=qoGtOMyVgQ5nTUc8J8wH27A8isaxl3IFCX8qoyibeCY,484
|
22
|
+
ddeutil/workflow/api/routes/job.py,sha256=8X5VLDJH6PumyNIY6JGRNBsf2gWN0eG9DzxRPSh6n4I,2190
|
23
|
+
ddeutil/workflow/api/routes/logs.py,sha256=U6vOni3wd-ZTOwd3yVdSOpgyRmNdcgfngU5KlLM3Cww,5383
|
24
|
+
ddeutil/workflow/api/routes/schedules.py,sha256=14RnaJKEGMSJtncI1H_QQVZNBe_jDS40PPRO6qFc3i0,4805
|
25
|
+
ddeutil/workflow/api/routes/workflows.py,sha256=GJu5PiXEylswrXylEImpncySjeU9chrvrtjhiMCw2RQ,4529
|
26
|
+
ddeutil_workflow-0.0.59.dist-info/licenses/LICENSE,sha256=nGFZ1QEhhhWeMHf9n99_fdt4vQaXS29xWKxt-OcLywk,1085
|
27
|
+
ddeutil_workflow-0.0.59.dist-info/METADATA,sha256=JqwaP7hwfaNAlrObHxnHlzDyBDbb_cy186S92GRjXZ4,19343
|
28
|
+
ddeutil_workflow-0.0.59.dist-info/WHEEL,sha256=0CuiUZ_p9E4cD6NyLD6UG80LBXYyiSYZOKDm5lp32xk,91
|
29
|
+
ddeutil_workflow-0.0.59.dist-info/entry_points.txt,sha256=qDTpPSauL0ciO6T4iSVt8bJeYrVEkkoEEw_RlGx6Kgk,63
|
30
|
+
ddeutil_workflow-0.0.59.dist-info/top_level.txt,sha256=m9M6XeSWDwt_yMsmH6gcOjHZVK5O0-vgtNBuncHjzW4,8
|
31
|
+
ddeutil_workflow-0.0.59.dist-info/RECORD,,
|
@@ -1,31 +0,0 @@
|
|
1
|
-
ddeutil/workflow/__about__.py,sha256=CDkPQWe1GLFFYrnuKrqTnoR8t6DWwXK2EjJrmuY9rfQ,28
|
2
|
-
ddeutil/workflow/__cron.py,sha256=yLWN_1MtcN5Uc3Dinq5lpsjW1_0HmIM5tEm-o_q0Spw,28527
|
3
|
-
ddeutil/workflow/__init__.py,sha256=NXEhjzKFdIGa-jtIq9HXChLCjSXNPd8VJ8ltggxbBO8,1371
|
4
|
-
ddeutil/workflow/__main__.py,sha256=x-sYedl4T8p6054aySk-EQX6vhytvPR0HvaBNYxMzp0,364
|
5
|
-
ddeutil/workflow/__types.py,sha256=7xXy6ynpT6Do6U5A-XYSVuinE2g-4wlZGGJ1NACK1BE,4343
|
6
|
-
ddeutil/workflow/conf.py,sha256=AiIw89wZ8NtDFLkiiFOwI12z1toSbgMcSs5c23LY9OQ,14822
|
7
|
-
ddeutil/workflow/event.py,sha256=vVM6vVVR0T68p5jysfmQNcGwT40D7-lAyoJJuxkpYkE,10342
|
8
|
-
ddeutil/workflow/exceptions.py,sha256=HNXkZLaoWa6ejYG1NdwlUAyZiJWbsjjOJ9DjIPaM-aw,2343
|
9
|
-
ddeutil/workflow/job.py,sha256=JoaghWkov4uYFX20gLee5w-MgpsFjeY36gA1WuIygY4,35070
|
10
|
-
ddeutil/workflow/logs.py,sha256=aI0GWqUKjMSoGsbUzc4bw8m1lixUkr__MIV5KAoQj_Q,26944
|
11
|
-
ddeutil/workflow/params.py,sha256=FKY4Oo1Ze4QZKRfAk7rqKsi44YaJQAbqAtXM6vlO2hI,11392
|
12
|
-
ddeutil/workflow/result.py,sha256=yEV_IXtiC8x-4zx6DKal5swebjtOWdKakv-WuhNyiNQ,5891
|
13
|
-
ddeutil/workflow/reusables.py,sha256=iXcS7Gg-71qVX4ln0ILTDx03cTtUnj_rNoXHTVdVrxc,17636
|
14
|
-
ddeutil/workflow/scheduler.py,sha256=t8X6_NGKOfN5rYjGJpEZwekbcSoz9-qyB1BZBh84ZKg,27180
|
15
|
-
ddeutil/workflow/stages.py,sha256=aQaXo1XSB69FBVI4wpq8PKA0A3EIvmUlmFeTmy3dDw4,90480
|
16
|
-
ddeutil/workflow/utils.py,sha256=wrL9nAVPOFWEvgniELAHbB_NGVX5QeL9DkzHEE35LE8,8766
|
17
|
-
ddeutil/workflow/workflow.py,sha256=5eUdM48DSWtZMY13yTWwThR-EgbUCLPW0Ze8iKZpp_A,44783
|
18
|
-
ddeutil/workflow/api/__init__.py,sha256=kY30dL8HPY8tY_GBmm7y_3OdoXzB1-EA2a96PLU0AQw,5278
|
19
|
-
ddeutil/workflow/api/logs.py,sha256=NMTnOnsBrDB5129329xF2myLdrb-z9k1MQrmrP7qXJw,1818
|
20
|
-
ddeutil/workflow/api/utils.py,sha256=uTtUFVLpiYYahXvCVx8sueRQ03K2Xw1id_gW3IMmX1U,5295
|
21
|
-
ddeutil/workflow/api/routes/__init__.py,sha256=qoGtOMyVgQ5nTUc8J8wH27A8isaxl3IFCX8qoyibeCY,484
|
22
|
-
ddeutil/workflow/api/routes/job.py,sha256=8X5VLDJH6PumyNIY6JGRNBsf2gWN0eG9DzxRPSh6n4I,2190
|
23
|
-
ddeutil/workflow/api/routes/logs.py,sha256=U6vOni3wd-ZTOwd3yVdSOpgyRmNdcgfngU5KlLM3Cww,5383
|
24
|
-
ddeutil/workflow/api/routes/schedules.py,sha256=14RnaJKEGMSJtncI1H_QQVZNBe_jDS40PPRO6qFc3i0,4805
|
25
|
-
ddeutil/workflow/api/routes/workflows.py,sha256=GJu5PiXEylswrXylEImpncySjeU9chrvrtjhiMCw2RQ,4529
|
26
|
-
ddeutil_workflow-0.0.57.dist-info/licenses/LICENSE,sha256=nGFZ1QEhhhWeMHf9n99_fdt4vQaXS29xWKxt-OcLywk,1085
|
27
|
-
ddeutil_workflow-0.0.57.dist-info/METADATA,sha256=Ogbx45vg0e4zSahdeSxv0P4EWQ0kT95rEMMR4FLXcPM,19228
|
28
|
-
ddeutil_workflow-0.0.57.dist-info/WHEEL,sha256=SmOxYU7pzNKBqASvQJ7DjX3XGUF92lrGhMb3R6_iiqI,91
|
29
|
-
ddeutil_workflow-0.0.57.dist-info/entry_points.txt,sha256=qDTpPSauL0ciO6T4iSVt8bJeYrVEkkoEEw_RlGx6Kgk,63
|
30
|
-
ddeutil_workflow-0.0.57.dist-info/top_level.txt,sha256=m9M6XeSWDwt_yMsmH6gcOjHZVK5O0-vgtNBuncHjzW4,8
|
31
|
-
ddeutil_workflow-0.0.57.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|