python-saga-orchestrator 0.1.0__tar.gz → 0.1.1__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.
- {python_saga_orchestrator-0.1.0/python_saga_orchestrator.egg-info → python_saga_orchestrator-0.1.1}/PKG-INFO +22 -6
- {python_saga_orchestrator-0.1.0 → python_saga_orchestrator-0.1.1}/README.md +21 -5
- {python_saga_orchestrator-0.1.0 → python_saga_orchestrator-0.1.1}/pyproject.toml +1 -1
- {python_saga_orchestrator-0.1.0 → python_saga_orchestrator-0.1.1/python_saga_orchestrator.egg-info}/PKG-INFO +22 -6
- {python_saga_orchestrator-0.1.0 → python_saga_orchestrator-0.1.1}/saga_orchestrator/__init__.py +0 -3
- {python_saga_orchestrator-0.1.0 → python_saga_orchestrator-0.1.1}/saga_orchestrator/core/engine.py +5 -1
- {python_saga_orchestrator-0.1.0 → python_saga_orchestrator-0.1.1}/LICENSE +0 -0
- {python_saga_orchestrator-0.1.0 → python_saga_orchestrator-0.1.1}/python_saga_orchestrator.egg-info/SOURCES.txt +0 -0
- {python_saga_orchestrator-0.1.0 → python_saga_orchestrator-0.1.1}/python_saga_orchestrator.egg-info/dependency_links.txt +0 -0
- {python_saga_orchestrator-0.1.0 → python_saga_orchestrator-0.1.1}/python_saga_orchestrator.egg-info/requires.txt +0 -0
- {python_saga_orchestrator-0.1.0 → python_saga_orchestrator-0.1.1}/python_saga_orchestrator.egg-info/top_level.txt +0 -0
- {python_saga_orchestrator-0.1.0 → python_saga_orchestrator-0.1.1}/saga_orchestrator/admin/__init__.py +0 -0
- {python_saga_orchestrator-0.1.0 → python_saga_orchestrator-0.1.1}/saga_orchestrator/admin/api.py +0 -0
- {python_saga_orchestrator-0.1.0 → python_saga_orchestrator-0.1.1}/saga_orchestrator/core/__init__.py +0 -0
- {python_saga_orchestrator-0.1.0 → python_saga_orchestrator-0.1.1}/saga_orchestrator/core/builder.py +0 -0
- {python_saga_orchestrator-0.1.0 → python_saga_orchestrator-0.1.1}/saga_orchestrator/core/orchestrator.py +0 -0
- {python_saga_orchestrator-0.1.0 → python_saga_orchestrator-0.1.1}/saga_orchestrator/core/repository.py +0 -0
- {python_saga_orchestrator-0.1.0 → python_saga_orchestrator-0.1.1}/saga_orchestrator/domain/__init__.py +0 -0
- {python_saga_orchestrator-0.1.0 → python_saga_orchestrator-0.1.1}/saga_orchestrator/domain/exceptions/__init__.py +0 -0
- {python_saga_orchestrator-0.1.0 → python_saga_orchestrator-0.1.1}/saga_orchestrator/domain/exceptions/saga.py +0 -0
- {python_saga_orchestrator-0.1.0 → python_saga_orchestrator-0.1.1}/saga_orchestrator/domain/mixins/__init__.py +0 -0
- {python_saga_orchestrator-0.1.0 → python_saga_orchestrator-0.1.1}/saga_orchestrator/domain/mixins/saga_state.py +0 -0
- {python_saga_orchestrator-0.1.0 → python_saga_orchestrator-0.1.1}/saga_orchestrator/domain/models/__init__.py +0 -0
- {python_saga_orchestrator-0.1.0 → python_saga_orchestrator-0.1.1}/saga_orchestrator/domain/models/builder.py +0 -0
- {python_saga_orchestrator-0.1.0 → python_saga_orchestrator-0.1.1}/saga_orchestrator/domain/models/enums/__init__.py +0 -0
- {python_saga_orchestrator-0.1.0 → python_saga_orchestrator-0.1.1}/saga_orchestrator/domain/models/enums/saga_status.py +0 -0
- {python_saga_orchestrator-0.1.0 → python_saga_orchestrator-0.1.1}/saga_orchestrator/domain/models/retry.py +0 -0
- {python_saga_orchestrator-0.1.0 → python_saga_orchestrator-0.1.1}/saga_orchestrator/domain/models/saga_snapshot.py +0 -0
- {python_saga_orchestrator-0.1.0 → python_saga_orchestrator-0.1.1}/saga_orchestrator/domain/models/step.py +0 -0
- {python_saga_orchestrator-0.1.0 → python_saga_orchestrator-0.1.1}/setup.cfg +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: python-saga-orchestrator
|
|
3
|
-
Version: 0.1.
|
|
3
|
+
Version: 0.1.1
|
|
4
4
|
Summary: Lightweight embedded saga orchestrator for asyncio Python services
|
|
5
5
|
Author-email: Maxim Vasilyev <mayxis@inbox.ru>
|
|
6
6
|
License-Expression: MIT
|
|
@@ -60,16 +60,28 @@ Requirements:
|
|
|
60
60
|
- Python 3.12+
|
|
61
61
|
- PostgreSQL for production-grade execution semantics
|
|
62
62
|
|
|
63
|
-
Install from
|
|
63
|
+
Install from PyPI:
|
|
64
|
+
|
|
65
|
+
```bash
|
|
66
|
+
pip install python-saga-orchestrator
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
Or with `uv`:
|
|
70
|
+
|
|
71
|
+
```bash
|
|
72
|
+
uv pip install python-saga-orchestrator
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
Install from the repository source:
|
|
64
76
|
|
|
65
77
|
```bash
|
|
66
78
|
pip install .
|
|
67
79
|
```
|
|
68
80
|
|
|
69
|
-
|
|
81
|
+
For local development:
|
|
70
82
|
|
|
71
83
|
```bash
|
|
72
|
-
pip install .[dev]
|
|
84
|
+
pip install '.[dev]'
|
|
73
85
|
```
|
|
74
86
|
|
|
75
87
|
## Core concepts
|
|
@@ -306,9 +318,13 @@ SQLite may be sufficient for local experiments, but PostgreSQL should be used fo
|
|
|
306
318
|
|
|
307
319
|
A runnable end-to-end example is available in:
|
|
308
320
|
|
|
309
|
-
- [`
|
|
321
|
+
- [`examples/llm_deploy.py`](./examples/llm_deploy.py)
|
|
322
|
+
- [`examples/retry_recovery.py`](./examples/retry_recovery.py)
|
|
323
|
+
- [`examples/compensation_flow.py`](./examples/compensation_flow.py)
|
|
324
|
+
- [`examples/admin_skip.py`](./examples/admin_skip.py)
|
|
310
325
|
|
|
311
|
-
|
|
326
|
+
These examples demonstrate:
|
|
327
|
+
- basic model deployment
|
|
312
328
|
- retry and recovery through `run_due()`
|
|
313
329
|
- compensation after failure
|
|
314
330
|
- admin-driven step skipping
|
|
@@ -26,16 +26,28 @@ Requirements:
|
|
|
26
26
|
- Python 3.12+
|
|
27
27
|
- PostgreSQL for production-grade execution semantics
|
|
28
28
|
|
|
29
|
-
Install from
|
|
29
|
+
Install from PyPI:
|
|
30
|
+
|
|
31
|
+
```bash
|
|
32
|
+
pip install python-saga-orchestrator
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
Or with `uv`:
|
|
36
|
+
|
|
37
|
+
```bash
|
|
38
|
+
uv pip install python-saga-orchestrator
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
Install from the repository source:
|
|
30
42
|
|
|
31
43
|
```bash
|
|
32
44
|
pip install .
|
|
33
45
|
```
|
|
34
46
|
|
|
35
|
-
|
|
47
|
+
For local development:
|
|
36
48
|
|
|
37
49
|
```bash
|
|
38
|
-
pip install .[dev]
|
|
50
|
+
pip install '.[dev]'
|
|
39
51
|
```
|
|
40
52
|
|
|
41
53
|
## Core concepts
|
|
@@ -272,9 +284,13 @@ SQLite may be sufficient for local experiments, but PostgreSQL should be used fo
|
|
|
272
284
|
|
|
273
285
|
A runnable end-to-end example is available in:
|
|
274
286
|
|
|
275
|
-
- [`
|
|
287
|
+
- [`examples/llm_deploy.py`](./examples/llm_deploy.py)
|
|
288
|
+
- [`examples/retry_recovery.py`](./examples/retry_recovery.py)
|
|
289
|
+
- [`examples/compensation_flow.py`](./examples/compensation_flow.py)
|
|
290
|
+
- [`examples/admin_skip.py`](./examples/admin_skip.py)
|
|
276
291
|
|
|
277
|
-
|
|
292
|
+
These examples demonstrate:
|
|
293
|
+
- basic model deployment
|
|
278
294
|
- retry and recovery through `run_due()`
|
|
279
295
|
- compensation after failure
|
|
280
296
|
- admin-driven step skipping
|
|
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "python-saga-orchestrator"
|
|
7
|
-
version = "0.1.
|
|
7
|
+
version = "0.1.1"
|
|
8
8
|
description = "Lightweight embedded saga orchestrator for asyncio Python services"
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
requires-python = ">=3.12"
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: python-saga-orchestrator
|
|
3
|
-
Version: 0.1.
|
|
3
|
+
Version: 0.1.1
|
|
4
4
|
Summary: Lightweight embedded saga orchestrator for asyncio Python services
|
|
5
5
|
Author-email: Maxim Vasilyev <mayxis@inbox.ru>
|
|
6
6
|
License-Expression: MIT
|
|
@@ -60,16 +60,28 @@ Requirements:
|
|
|
60
60
|
- Python 3.12+
|
|
61
61
|
- PostgreSQL for production-grade execution semantics
|
|
62
62
|
|
|
63
|
-
Install from
|
|
63
|
+
Install from PyPI:
|
|
64
|
+
|
|
65
|
+
```bash
|
|
66
|
+
pip install python-saga-orchestrator
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
Or with `uv`:
|
|
70
|
+
|
|
71
|
+
```bash
|
|
72
|
+
uv pip install python-saga-orchestrator
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
Install from the repository source:
|
|
64
76
|
|
|
65
77
|
```bash
|
|
66
78
|
pip install .
|
|
67
79
|
```
|
|
68
80
|
|
|
69
|
-
|
|
81
|
+
For local development:
|
|
70
82
|
|
|
71
83
|
```bash
|
|
72
|
-
pip install .[dev]
|
|
84
|
+
pip install '.[dev]'
|
|
73
85
|
```
|
|
74
86
|
|
|
75
87
|
## Core concepts
|
|
@@ -306,9 +318,13 @@ SQLite may be sufficient for local experiments, but PostgreSQL should be used fo
|
|
|
306
318
|
|
|
307
319
|
A runnable end-to-end example is available in:
|
|
308
320
|
|
|
309
|
-
- [`
|
|
321
|
+
- [`examples/llm_deploy.py`](./examples/llm_deploy.py)
|
|
322
|
+
- [`examples/retry_recovery.py`](./examples/retry_recovery.py)
|
|
323
|
+
- [`examples/compensation_flow.py`](./examples/compensation_flow.py)
|
|
324
|
+
- [`examples/admin_skip.py`](./examples/admin_skip.py)
|
|
310
325
|
|
|
311
|
-
|
|
326
|
+
These examples demonstrate:
|
|
327
|
+
- basic model deployment
|
|
312
328
|
- retry and recovery through `run_due()`
|
|
313
329
|
- compensation after failure
|
|
314
330
|
- admin-driven step skipping
|
{python_saga_orchestrator-0.1.0 → python_saga_orchestrator-0.1.1}/saga_orchestrator/__init__.py
RENAMED
|
@@ -26,8 +26,6 @@ from .domain.models import (
|
|
|
26
26
|
)
|
|
27
27
|
from .domain.models.enums import SagaStatus
|
|
28
28
|
|
|
29
|
-
__version__ = "0.1.0"
|
|
30
|
-
|
|
31
29
|
__all__ = [
|
|
32
30
|
"ActiveSagaAlreadyExistsError",
|
|
33
31
|
"BaseStep",
|
|
@@ -53,5 +51,4 @@ __all__ = [
|
|
|
53
51
|
"StepInputMap",
|
|
54
52
|
"StepRef",
|
|
55
53
|
"TypeValidationError",
|
|
56
|
-
"__version__",
|
|
57
54
|
]
|
{python_saga_orchestrator-0.1.0 → python_saga_orchestrator-0.1.1}/saga_orchestrator/core/engine.py
RENAMED
|
@@ -471,7 +471,11 @@ class SagaEngine(Generic[ModelT]):
|
|
|
471
471
|
saga.status = SagaStatus.COMPLETED
|
|
472
472
|
return saga.status == SagaStatus.RUNNING
|
|
473
473
|
|
|
474
|
-
|
|
474
|
+
if error is None:
|
|
475
|
+
raise SagaStateError(
|
|
476
|
+
"Step finalization expected either a successful output "
|
|
477
|
+
"or an execution error"
|
|
478
|
+
)
|
|
475
479
|
saga.step_history.append(
|
|
476
480
|
self._history_entry(
|
|
477
481
|
phase="execute",
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{python_saga_orchestrator-0.1.0 → python_saga_orchestrator-0.1.1}/saga_orchestrator/admin/api.py
RENAMED
|
File without changes
|
{python_saga_orchestrator-0.1.0 → python_saga_orchestrator-0.1.1}/saga_orchestrator/core/__init__.py
RENAMED
|
File without changes
|
{python_saga_orchestrator-0.1.0 → python_saga_orchestrator-0.1.1}/saga_orchestrator/core/builder.py
RENAMED
|
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
|