dotflow 0.15.0.dev4__tar.gz → 0.15.0.dev6__tar.gz
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.
- {dotflow-0.15.0.dev4 → dotflow-0.15.0.dev6}/PKG-INFO +2 -2
- {dotflow-0.15.0.dev4 → dotflow-0.15.0.dev6}/README.md +1 -1
- {dotflow-0.15.0.dev4 → dotflow-0.15.0.dev6}/dotflow/__init__.py +1 -1
- {dotflow-0.15.0.dev4 → dotflow-0.15.0.dev6}/dotflow/core/serializers/task.py +23 -7
- {dotflow-0.15.0.dev4 → dotflow-0.15.0.dev6}/dotflow/core/task.py +1 -1
- dotflow-0.15.0.dev6/dotflow/providers/server_default.py +23 -0
- {dotflow-0.15.0.dev4 → dotflow-0.15.0.dev6}/pyproject.toml +5 -2
- dotflow-0.15.0.dev4/dotflow/providers/server_default.py +0 -112
- {dotflow-0.15.0.dev4 → dotflow-0.15.0.dev6}/LICENSE +0 -0
- {dotflow-0.15.0.dev4 → dotflow-0.15.0.dev6}/dotflow/abc/__init__.py +0 -0
- {dotflow-0.15.0.dev4 → dotflow-0.15.0.dev6}/dotflow/abc/file.py +0 -0
- {dotflow-0.15.0.dev4 → dotflow-0.15.0.dev6}/dotflow/abc/flow.py +0 -0
- {dotflow-0.15.0.dev4 → dotflow-0.15.0.dev6}/dotflow/abc/http.py +0 -0
- {dotflow-0.15.0.dev4 → dotflow-0.15.0.dev6}/dotflow/abc/log.py +0 -0
- {dotflow-0.15.0.dev4 → dotflow-0.15.0.dev6}/dotflow/abc/metrics.py +0 -0
- {dotflow-0.15.0.dev4 → dotflow-0.15.0.dev6}/dotflow/abc/notify.py +0 -0
- {dotflow-0.15.0.dev4 → dotflow-0.15.0.dev6}/dotflow/abc/scheduler.py +0 -0
- {dotflow-0.15.0.dev4 → dotflow-0.15.0.dev6}/dotflow/abc/server.py +0 -0
- {dotflow-0.15.0.dev4 → dotflow-0.15.0.dev6}/dotflow/abc/storage.py +0 -0
- {dotflow-0.15.0.dev4 → dotflow-0.15.0.dev6}/dotflow/abc/tcp.py +0 -0
- {dotflow-0.15.0.dev4 → dotflow-0.15.0.dev6}/dotflow/abc/tracer.py +0 -0
- {dotflow-0.15.0.dev4 → dotflow-0.15.0.dev6}/dotflow/cli/__init__.py +0 -0
- {dotflow-0.15.0.dev4 → dotflow-0.15.0.dev6}/dotflow/cli/command.py +0 -0
- {dotflow-0.15.0.dev4 → dotflow-0.15.0.dev6}/dotflow/cli/commands/__init__.py +0 -0
- {dotflow-0.15.0.dev4 → dotflow-0.15.0.dev6}/dotflow/cli/commands/cloud.py +0 -0
- {dotflow-0.15.0.dev4 → dotflow-0.15.0.dev6}/dotflow/cli/commands/deploy.py +0 -0
- {dotflow-0.15.0.dev4 → dotflow-0.15.0.dev6}/dotflow/cli/commands/init.py +0 -0
- {dotflow-0.15.0.dev4 → dotflow-0.15.0.dev6}/dotflow/cli/commands/log.py +0 -0
- {dotflow-0.15.0.dev4 → dotflow-0.15.0.dev6}/dotflow/cli/commands/schedule.py +0 -0
- {dotflow-0.15.0.dev4 → dotflow-0.15.0.dev6}/dotflow/cli/commands/start.py +0 -0
- {dotflow-0.15.0.dev4 → dotflow-0.15.0.dev6}/dotflow/cli/commands/storage.py +0 -0
- {dotflow-0.15.0.dev4 → dotflow-0.15.0.dev6}/dotflow/cli/setup.py +0 -0
- {dotflow-0.15.0.dev4 → dotflow-0.15.0.dev6}/dotflow/cli/validators/__init__.py +0 -0
- {dotflow-0.15.0.dev4 → dotflow-0.15.0.dev6}/dotflow/cli/validators/start.py +0 -0
- {dotflow-0.15.0.dev4 → dotflow-0.15.0.dev6}/dotflow/cloud/__init__.py +0 -0
- {dotflow-0.15.0.dev4 → dotflow-0.15.0.dev6}/dotflow/cloud/alibaba/__init__.py +0 -0
- {dotflow-0.15.0.dev4 → dotflow-0.15.0.dev6}/dotflow/cloud/alibaba/constants.py +0 -0
- {dotflow-0.15.0.dev4 → dotflow-0.15.0.dev6}/dotflow/cloud/alibaba/deployers/__init__.py +0 -0
- {dotflow-0.15.0.dev4 → dotflow-0.15.0.dev6}/dotflow/cloud/alibaba/deployers/fc.py +0 -0
- {dotflow-0.15.0.dev4 → dotflow-0.15.0.dev6}/dotflow/cloud/alibaba/deployers/fc_scheduled.py +0 -0
- {dotflow-0.15.0.dev4 → dotflow-0.15.0.dev6}/dotflow/cloud/alibaba/services/__init__.py +0 -0
- {dotflow-0.15.0.dev4 → dotflow-0.15.0.dev6}/dotflow/cloud/alibaba/services/cr.py +0 -0
- {dotflow-0.15.0.dev4 → dotflow-0.15.0.dev6}/dotflow/cloud/aws/__init__.py +0 -0
- {dotflow-0.15.0.dev4 → dotflow-0.15.0.dev6}/dotflow/cloud/aws/constants.py +0 -0
- {dotflow-0.15.0.dev4 → dotflow-0.15.0.dev6}/dotflow/cloud/aws/deployers/__init__.py +0 -0
- {dotflow-0.15.0.dev4 → dotflow-0.15.0.dev6}/dotflow/cloud/aws/deployers/base_lambda.py +0 -0
- {dotflow-0.15.0.dev4 → dotflow-0.15.0.dev6}/dotflow/cloud/aws/deployers/ecs.py +0 -0
- {dotflow-0.15.0.dev4 → dotflow-0.15.0.dev6}/dotflow/cloud/aws/deployers/ecs_scheduled.py +0 -0
- {dotflow-0.15.0.dev4 → dotflow-0.15.0.dev6}/dotflow/cloud/aws/deployers/lambda_.py +0 -0
- {dotflow-0.15.0.dev4 → dotflow-0.15.0.dev6}/dotflow/cloud/aws/deployers/lambda_api.py +0 -0
- {dotflow-0.15.0.dev4 → dotflow-0.15.0.dev6}/dotflow/cloud/aws/deployers/lambda_s3.py +0 -0
- {dotflow-0.15.0.dev4 → dotflow-0.15.0.dev6}/dotflow/cloud/aws/deployers/lambda_sqs.py +0 -0
- {dotflow-0.15.0.dev4 → dotflow-0.15.0.dev6}/dotflow/cloud/aws/schedule.py +0 -0
- {dotflow-0.15.0.dev4 → dotflow-0.15.0.dev6}/dotflow/cloud/aws/services/__init__.py +0 -0
- {dotflow-0.15.0.dev4 → dotflow-0.15.0.dev6}/dotflow/cloud/aws/services/cloudwatch.py +0 -0
- {dotflow-0.15.0.dev4 → dotflow-0.15.0.dev6}/dotflow/cloud/aws/services/ecr.py +0 -0
- {dotflow-0.15.0.dev4 → dotflow-0.15.0.dev6}/dotflow/cloud/aws/services/iam.py +0 -0
- {dotflow-0.15.0.dev4 → dotflow-0.15.0.dev6}/dotflow/cloud/aws/services/s3.py +0 -0
- {dotflow-0.15.0.dev4 → dotflow-0.15.0.dev6}/dotflow/cloud/core.py +0 -0
- {dotflow-0.15.0.dev4 → dotflow-0.15.0.dev6}/dotflow/cloud/gcp/__init__.py +0 -0
- {dotflow-0.15.0.dev4 → dotflow-0.15.0.dev6}/dotflow/cloud/gcp/constants.py +0 -0
- {dotflow-0.15.0.dev4 → dotflow-0.15.0.dev6}/dotflow/cloud/gcp/deployers/__init__.py +0 -0
- {dotflow-0.15.0.dev4 → dotflow-0.15.0.dev6}/dotflow/cloud/gcp/deployers/cloudrun.py +0 -0
- {dotflow-0.15.0.dev4 → dotflow-0.15.0.dev6}/dotflow/cloud/gcp/services/__init__.py +0 -0
- {dotflow-0.15.0.dev4 → dotflow-0.15.0.dev6}/dotflow/cloud/gcp/services/apis.py +0 -0
- {dotflow-0.15.0.dev4 → dotflow-0.15.0.dev6}/dotflow/cloud/gcp/services/artifact_registry.py +0 -0
- {dotflow-0.15.0.dev4 → dotflow-0.15.0.dev6}/dotflow/cloud/gcp/services/gcs.py +0 -0
- {dotflow-0.15.0.dev4 → dotflow-0.15.0.dev6}/dotflow/cloud/github/__init__.py +0 -0
- {dotflow-0.15.0.dev4 → dotflow-0.15.0.dev6}/dotflow/cloud/github/constants.py +0 -0
- {dotflow-0.15.0.dev4 → dotflow-0.15.0.dev6}/dotflow/cloud/github/deployers/__init__.py +0 -0
- {dotflow-0.15.0.dev4 → dotflow-0.15.0.dev6}/dotflow/cloud/github/deployers/actions.py +0 -0
- {dotflow-0.15.0.dev4 → dotflow-0.15.0.dev6}/dotflow/core/__init__.py +0 -0
- {dotflow-0.15.0.dev4 → dotflow-0.15.0.dev6}/dotflow/core/action.py +0 -0
- {dotflow-0.15.0.dev4 → dotflow-0.15.0.dev6}/dotflow/core/config.py +0 -0
- {dotflow-0.15.0.dev4 → dotflow-0.15.0.dev6}/dotflow/core/context.py +0 -0
- {dotflow-0.15.0.dev4 → dotflow-0.15.0.dev6}/dotflow/core/decorators/__init__.py +0 -0
- {dotflow-0.15.0.dev4 → dotflow-0.15.0.dev6}/dotflow/core/decorators/time.py +0 -0
- {dotflow-0.15.0.dev4 → dotflow-0.15.0.dev6}/dotflow/core/dotflow.py +0 -0
- {dotflow-0.15.0.dev4 → dotflow-0.15.0.dev6}/dotflow/core/engine.py +0 -0
- {dotflow-0.15.0.dev4 → dotflow-0.15.0.dev6}/dotflow/core/exception.py +0 -0
- {dotflow-0.15.0.dev4 → dotflow-0.15.0.dev6}/dotflow/core/module.py +0 -0
- {dotflow-0.15.0.dev4 → dotflow-0.15.0.dev6}/dotflow/core/serializers/__init__.py +0 -0
- {dotflow-0.15.0.dev4 → dotflow-0.15.0.dev6}/dotflow/core/serializers/transport.py +0 -0
- {dotflow-0.15.0.dev4 → dotflow-0.15.0.dev6}/dotflow/core/serializers/workflow.py +0 -0
- {dotflow-0.15.0.dev4 → dotflow-0.15.0.dev6}/dotflow/core/types/__init__.py +0 -0
- {dotflow-0.15.0.dev4 → dotflow-0.15.0.dev6}/dotflow/core/types/execution.py +0 -0
- {dotflow-0.15.0.dev4 → dotflow-0.15.0.dev6}/dotflow/core/types/overlap.py +0 -0
- {dotflow-0.15.0.dev4 → dotflow-0.15.0.dev6}/dotflow/core/types/status.py +0 -0
- {dotflow-0.15.0.dev4 → dotflow-0.15.0.dev6}/dotflow/core/types/storage.py +0 -0
- {dotflow-0.15.0.dev4 → dotflow-0.15.0.dev6}/dotflow/core/types/workflow.py +0 -0
- {dotflow-0.15.0.dev4 → dotflow-0.15.0.dev6}/dotflow/core/workflow.py +0 -0
- {dotflow-0.15.0.dev4 → dotflow-0.15.0.dev6}/dotflow/logging.py +0 -0
- {dotflow-0.15.0.dev4 → dotflow-0.15.0.dev6}/dotflow/main.py +0 -0
- {dotflow-0.15.0.dev4 → dotflow-0.15.0.dev6}/dotflow/providers/__init__.py +0 -0
- {dotflow-0.15.0.dev4 → dotflow-0.15.0.dev6}/dotflow/providers/log_default.py +0 -0
- {dotflow-0.15.0.dev4 → dotflow-0.15.0.dev6}/dotflow/providers/log_opentelemetry.py +0 -0
- {dotflow-0.15.0.dev4 → dotflow-0.15.0.dev6}/dotflow/providers/log_sentry.py +0 -0
- {dotflow-0.15.0.dev4 → dotflow-0.15.0.dev6}/dotflow/providers/metrics_default.py +0 -0
- {dotflow-0.15.0.dev4 → dotflow-0.15.0.dev6}/dotflow/providers/metrics_opentelemetry.py +0 -0
- {dotflow-0.15.0.dev4 → dotflow-0.15.0.dev6}/dotflow/providers/notify_default.py +0 -0
- {dotflow-0.15.0.dev4 → dotflow-0.15.0.dev6}/dotflow/providers/notify_discord.py +0 -0
- {dotflow-0.15.0.dev4 → dotflow-0.15.0.dev6}/dotflow/providers/notify_telegram.py +0 -0
- {dotflow-0.15.0.dev4 → dotflow-0.15.0.dev6}/dotflow/providers/scheduler_cron.py +0 -0
- {dotflow-0.15.0.dev4 → dotflow-0.15.0.dev6}/dotflow/providers/scheduler_default.py +0 -0
- {dotflow-0.15.0.dev4 → dotflow-0.15.0.dev6}/dotflow/providers/storage_default.py +0 -0
- {dotflow-0.15.0.dev4 → dotflow-0.15.0.dev6}/dotflow/providers/storage_file.py +0 -0
- {dotflow-0.15.0.dev4 → dotflow-0.15.0.dev6}/dotflow/providers/storage_gcs.py +0 -0
- {dotflow-0.15.0.dev4 → dotflow-0.15.0.dev6}/dotflow/providers/storage_s3.py +0 -0
- {dotflow-0.15.0.dev4 → dotflow-0.15.0.dev6}/dotflow/providers/tracer_default.py +0 -0
- {dotflow-0.15.0.dev4 → dotflow-0.15.0.dev6}/dotflow/providers/tracer_opentelemetry.py +0 -0
- {dotflow-0.15.0.dev4 → dotflow-0.15.0.dev6}/dotflow/providers/tracer_sentry.py +0 -0
- {dotflow-0.15.0.dev4 → dotflow-0.15.0.dev6}/dotflow/settings.py +0 -0
- {dotflow-0.15.0.dev4 → dotflow-0.15.0.dev6}/dotflow/types.py +0 -0
- {dotflow-0.15.0.dev4 → dotflow-0.15.0.dev6}/dotflow/utils/__init__.py +0 -0
- {dotflow-0.15.0.dev4 → dotflow-0.15.0.dev6}/dotflow/utils/basic_functions.py +0 -0
- {dotflow-0.15.0.dev4 → dotflow-0.15.0.dev6}/dotflow/utils/error_handler.py +0 -0
- {dotflow-0.15.0.dev4 → dotflow-0.15.0.dev6}/dotflow/utils/tools.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: dotflow
|
|
3
|
-
Version: 0.15.0.
|
|
3
|
+
Version: 0.15.0.dev6
|
|
4
4
|
Summary: 🎲 Dotflow turns an idea into flow! Lightweight Python library for execution pipelines with retry, parallel, cron and async support.
|
|
5
5
|
License: MIT License
|
|
6
6
|
|
|
@@ -90,7 +90,7 @@ Description-Content-Type: text/markdown
|
|
|
90
90
|
[](https://pypi.org/project/dotflow/)
|
|
91
91
|
[](https://github.com/dotflow-io/dotflow)
|
|
92
92
|
|
|
93
|
-
[Website](https://dotflow.io) · [Documentation](https://dotflow-io.github.io/dotflow/) · [PyPI](https://pypi.org/project/dotflow/)
|
|
93
|
+
[Website](https://www.cloud.dotflow.io) · [Documentation](https://dotflow-io.github.io/dotflow/) · [PyPI](https://pypi.org/project/dotflow/)
|
|
94
94
|
|
|
95
95
|
</div>
|
|
96
96
|
|
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
[](https://pypi.org/project/dotflow/)
|
|
10
10
|
[](https://github.com/dotflow-io/dotflow)
|
|
11
11
|
|
|
12
|
-
[Website](https://dotflow.io) · [Documentation](https://dotflow-io.github.io/dotflow/) · [PyPI](https://pypi.org/project/dotflow/)
|
|
12
|
+
[Website](https://www.cloud.dotflow.io) · [Documentation](https://dotflow-io.github.io/dotflow/) · [PyPI](https://pypi.org/project/dotflow/)
|
|
13
13
|
|
|
14
14
|
</div>
|
|
15
15
|
|
|
@@ -93,20 +93,28 @@ class SerializerTask(BaseModel):
|
|
|
93
93
|
)
|
|
94
94
|
@classmethod
|
|
95
95
|
def context_validator(cls, value: Any) -> Any:
|
|
96
|
-
if value
|
|
97
|
-
return
|
|
98
|
-
|
|
96
|
+
if value is None:
|
|
97
|
+
return None
|
|
98
|
+
if not isinstance(value, Context):
|
|
99
|
+
return None
|
|
100
|
+
if value.storage is None:
|
|
101
|
+
return None
|
|
102
|
+
return cls._serialize_context(value)
|
|
99
103
|
|
|
100
104
|
@classmethod
|
|
101
105
|
def _serialize_context(cls, ctx: Context) -> Any:
|
|
102
106
|
"""Serialize a Context to its storage value."""
|
|
103
|
-
if isinstance(ctx.storage, list):
|
|
107
|
+
if isinstance(ctx.storage, (list, tuple)):
|
|
104
108
|
contexts = {}
|
|
105
|
-
for item in ctx.storage:
|
|
109
|
+
for index, item in enumerate(ctx.storage):
|
|
106
110
|
if isinstance(item, Context):
|
|
107
|
-
|
|
111
|
+
if item.task_id is not None:
|
|
112
|
+
key = item.task_id
|
|
113
|
+
else:
|
|
114
|
+
key = f"ctx:{index}"
|
|
115
|
+
contexts[key] = cls._serialize_context(item)
|
|
108
116
|
else:
|
|
109
|
-
contexts[
|
|
117
|
+
contexts[f"raw:{index}"] = cls._format_raw(item)
|
|
110
118
|
return contexts
|
|
111
119
|
return cls._format_storage(ctx)
|
|
112
120
|
|
|
@@ -117,3 +125,11 @@ class SerializerTask(BaseModel):
|
|
|
117
125
|
return json.dumps(ctx.storage)
|
|
118
126
|
except TypeError:
|
|
119
127
|
return str(ctx.storage)
|
|
128
|
+
|
|
129
|
+
@staticmethod
|
|
130
|
+
def _format_raw(value: Any) -> Any:
|
|
131
|
+
"""Format a raw (non-Context) value as JSON string."""
|
|
132
|
+
try:
|
|
133
|
+
return json.dumps(value)
|
|
134
|
+
except TypeError:
|
|
135
|
+
return str(value)
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
"""ServerDefault — no-op server provider."""
|
|
2
|
+
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
|
|
5
|
+
from typing import Any
|
|
6
|
+
|
|
7
|
+
from dotflow.abc.server import Server
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
class ServerDefault(Server):
|
|
11
|
+
"""Default Server implementation (no-op)."""
|
|
12
|
+
|
|
13
|
+
def create_workflow(self, workflow: Any) -> None:
|
|
14
|
+
pass
|
|
15
|
+
|
|
16
|
+
def update_workflow(self, workflow: Any, status: str = "") -> None:
|
|
17
|
+
pass
|
|
18
|
+
|
|
19
|
+
def create_task(self, task: Any) -> None:
|
|
20
|
+
pass
|
|
21
|
+
|
|
22
|
+
def update_task(self, task: Any) -> None:
|
|
23
|
+
pass
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "dotflow"
|
|
3
|
-
version = "0.15.0.
|
|
3
|
+
version = "0.15.0.dev6"
|
|
4
4
|
authors = [
|
|
5
5
|
{ name="Fernando Celmer", email="email@fernandocelmer.com" },
|
|
6
6
|
]
|
|
@@ -66,7 +66,7 @@ sentry = ["sentry-sdk"]
|
|
|
66
66
|
|
|
67
67
|
[tool.poetry]
|
|
68
68
|
name = "dotflow"
|
|
69
|
-
version = "0.15.0.
|
|
69
|
+
version = "0.15.0.dev6"
|
|
70
70
|
description = "🎲 Dotflow turns an idea into flow! Lightweight Python library for execution pipelines with retry, parallel, cron and async support."
|
|
71
71
|
authors = ["Fernando Celmer <email@fernandocelmer.com>"]
|
|
72
72
|
readme = "README.md"
|
|
@@ -153,6 +153,9 @@ name = "test"
|
|
|
153
153
|
url = "https://test.pypi.org/simple/"
|
|
154
154
|
priority = "supplemental"
|
|
155
155
|
|
|
156
|
+
[tool.pytest.ini_options]
|
|
157
|
+
testpaths = ["tests"]
|
|
158
|
+
|
|
156
159
|
[build-system]
|
|
157
160
|
requires = ["poetry-core"]
|
|
158
161
|
build-backend = "poetry.core.masonry.api"
|
|
@@ -1,112 +0,0 @@
|
|
|
1
|
-
"""ServerDefault
|
|
2
|
-
|
|
3
|
-
Default implementation that communicates with a
|
|
4
|
-
dotflow-api server.
|
|
5
|
-
|
|
6
|
-
Args:
|
|
7
|
-
base_url (str): Base URL of the API.
|
|
8
|
-
user_token (str): API token (X-User-Token header).
|
|
9
|
-
timeout (float): HTTP request timeout in seconds.
|
|
10
|
-
"""
|
|
11
|
-
|
|
12
|
-
from __future__ import annotations
|
|
13
|
-
|
|
14
|
-
from typing import Any
|
|
15
|
-
|
|
16
|
-
from requests import patch as http_patch
|
|
17
|
-
from requests import post as http_post
|
|
18
|
-
|
|
19
|
-
from dotflow.abc.server import Server
|
|
20
|
-
from dotflow.logging import logger
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
class ServerDefault(Server):
|
|
24
|
-
"""Default Server implementation (HTTP client)."""
|
|
25
|
-
|
|
26
|
-
def __init__(
|
|
27
|
-
self,
|
|
28
|
-
base_url: str = "",
|
|
29
|
-
user_token: str = "",
|
|
30
|
-
timeout: float = 5.0,
|
|
31
|
-
) -> None:
|
|
32
|
-
self.base_url = base_url.rstrip("/")
|
|
33
|
-
self.user_token = user_token
|
|
34
|
-
self.timeout = timeout
|
|
35
|
-
self.enabled = bool(self.base_url and self.user_token)
|
|
36
|
-
|
|
37
|
-
def _headers(self) -> dict[str, str]:
|
|
38
|
-
return {
|
|
39
|
-
"Content-Type": "application/json",
|
|
40
|
-
"X-User-Token": self.user_token,
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
def _request(self, method, url, payload=None):
|
|
44
|
-
try:
|
|
45
|
-
response = method(
|
|
46
|
-
url=url,
|
|
47
|
-
headers=self._headers(),
|
|
48
|
-
json=payload or {},
|
|
49
|
-
timeout=self.timeout,
|
|
50
|
-
)
|
|
51
|
-
response.raise_for_status()
|
|
52
|
-
except Exception as error:
|
|
53
|
-
logger.error(
|
|
54
|
-
"Server %s failed: %s",
|
|
55
|
-
url,
|
|
56
|
-
str(error),
|
|
57
|
-
)
|
|
58
|
-
|
|
59
|
-
def create_workflow(self, workflow: Any) -> None:
|
|
60
|
-
"""Create workflow record (synchronous)."""
|
|
61
|
-
if not self.enabled:
|
|
62
|
-
return
|
|
63
|
-
|
|
64
|
-
self._request(
|
|
65
|
-
http_post,
|
|
66
|
-
f"{self.base_url}/workflows",
|
|
67
|
-
{
|
|
68
|
-
"id": f"{workflow}",
|
|
69
|
-
"execution_mode": "sequential",
|
|
70
|
-
"keep_going": False,
|
|
71
|
-
},
|
|
72
|
-
)
|
|
73
|
-
|
|
74
|
-
def update_workflow(self, workflow: Any, status: str = "") -> None:
|
|
75
|
-
"""Update workflow status (synchronous)."""
|
|
76
|
-
if not self.enabled:
|
|
77
|
-
return
|
|
78
|
-
|
|
79
|
-
self._request(
|
|
80
|
-
http_patch,
|
|
81
|
-
f"{self.base_url}/workflows/{workflow}",
|
|
82
|
-
{"status": status},
|
|
83
|
-
)
|
|
84
|
-
|
|
85
|
-
def create_task(self, task: Any) -> None:
|
|
86
|
-
"""Create a task under a workflow (synchronous)."""
|
|
87
|
-
if not self.enabled:
|
|
88
|
-
return
|
|
89
|
-
|
|
90
|
-
payload = {
|
|
91
|
-
"id": task.task_id,
|
|
92
|
-
"initial_context": (task.initial_context.storage),
|
|
93
|
-
"group_name": (task.group_name or "default"),
|
|
94
|
-
}
|
|
95
|
-
|
|
96
|
-
self._request(
|
|
97
|
-
http_post,
|
|
98
|
-
f"{self.base_url}/workflows/{task.workflow_id}/tasks",
|
|
99
|
-
payload,
|
|
100
|
-
)
|
|
101
|
-
|
|
102
|
-
def update_task(self, task: Any) -> None:
|
|
103
|
-
"""Update task data (synchronous)."""
|
|
104
|
-
if not self.enabled:
|
|
105
|
-
return
|
|
106
|
-
|
|
107
|
-
self._request(
|
|
108
|
-
http_patch,
|
|
109
|
-
f"{self.base_url}/workflows/"
|
|
110
|
-
f"{task.workflow_id}/tasks/{task.task_id}",
|
|
111
|
-
task.result(),
|
|
112
|
-
)
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|