horsies 0.1.0a3__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.
Files changed (48) hide show
  1. horsies-0.1.0a3/PKG-INFO +35 -0
  2. horsies-0.1.0a3/README.md +9 -0
  3. horsies-0.1.0a3/horsies/__init__.py +117 -0
  4. horsies-0.1.0a3/horsies/core/__init__.py +0 -0
  5. horsies-0.1.0a3/horsies/core/app.py +552 -0
  6. horsies-0.1.0a3/horsies/core/banner.py +144 -0
  7. horsies-0.1.0a3/horsies/core/brokers/__init__.py +5 -0
  8. horsies-0.1.0a3/horsies/core/brokers/listener.py +444 -0
  9. horsies-0.1.0a3/horsies/core/brokers/postgres.py +993 -0
  10. horsies-0.1.0a3/horsies/core/cli.py +624 -0
  11. horsies-0.1.0a3/horsies/core/codec/serde.py +596 -0
  12. horsies-0.1.0a3/horsies/core/errors.py +535 -0
  13. horsies-0.1.0a3/horsies/core/logging.py +90 -0
  14. horsies-0.1.0a3/horsies/core/models/__init__.py +0 -0
  15. horsies-0.1.0a3/horsies/core/models/app.py +268 -0
  16. horsies-0.1.0a3/horsies/core/models/broker.py +79 -0
  17. horsies-0.1.0a3/horsies/core/models/queues.py +23 -0
  18. horsies-0.1.0a3/horsies/core/models/recovery.py +101 -0
  19. horsies-0.1.0a3/horsies/core/models/schedule.py +229 -0
  20. horsies-0.1.0a3/horsies/core/models/task_pg.py +307 -0
  21. horsies-0.1.0a3/horsies/core/models/tasks.py +358 -0
  22. horsies-0.1.0a3/horsies/core/models/workflow.py +1990 -0
  23. horsies-0.1.0a3/horsies/core/models/workflow_pg.py +245 -0
  24. horsies-0.1.0a3/horsies/core/registry/tasks.py +101 -0
  25. horsies-0.1.0a3/horsies/core/scheduler/__init__.py +26 -0
  26. horsies-0.1.0a3/horsies/core/scheduler/calculator.py +267 -0
  27. horsies-0.1.0a3/horsies/core/scheduler/service.py +569 -0
  28. horsies-0.1.0a3/horsies/core/scheduler/state.py +260 -0
  29. horsies-0.1.0a3/horsies/core/task_decorator.py +656 -0
  30. horsies-0.1.0a3/horsies/core/types/status.py +38 -0
  31. horsies-0.1.0a3/horsies/core/utils/imports.py +203 -0
  32. horsies-0.1.0a3/horsies/core/utils/loop_runner.py +44 -0
  33. horsies-0.1.0a3/horsies/core/worker/current.py +17 -0
  34. horsies-0.1.0a3/horsies/core/worker/worker.py +1967 -0
  35. horsies-0.1.0a3/horsies/core/workflows/__init__.py +23 -0
  36. horsies-0.1.0a3/horsies/core/workflows/engine.py +2344 -0
  37. horsies-0.1.0a3/horsies/core/workflows/recovery.py +501 -0
  38. horsies-0.1.0a3/horsies/core/workflows/registry.py +97 -0
  39. horsies-0.1.0a3/horsies/py.typed +0 -0
  40. horsies-0.1.0a3/horsies.egg-info/PKG-INFO +35 -0
  41. horsies-0.1.0a3/horsies.egg-info/SOURCES.txt +46 -0
  42. horsies-0.1.0a3/horsies.egg-info/dependency_links.txt +1 -0
  43. horsies-0.1.0a3/horsies.egg-info/entry_points.txt +2 -0
  44. horsies-0.1.0a3/horsies.egg-info/requires.txt +6 -0
  45. horsies-0.1.0a3/horsies.egg-info/top_level.txt +1 -0
  46. horsies-0.1.0a3/pyproject.toml +86 -0
  47. horsies-0.1.0a3/setup.cfg +4 -0
  48. horsies-0.1.0a3/tests/test_issue_fixes.py +239 -0
@@ -0,0 +1,35 @@
1
+ Metadata-Version: 2.4
2
+ Name: horsies
3
+ Version: 0.1.0a3
4
+ Summary: A Python library for distributed task execution
5
+ Author: Suleyman Ozkeskin
6
+ License-Expression: MIT
7
+ Project-URL: Homepage, https://github.com/suleymanozkeskin/horsies
8
+ Project-URL: Repository, https://github.com/suleymanozkeskin/horsies
9
+ Project-URL: Issues, https://github.com/suleymanozkeskin/horsies/issues
10
+ Keywords: task-queue,workflow-engine,dag,scheduling,distributed,postgres,async
11
+ Classifier: Development Status :: 3 - Alpha
12
+ Classifier: Intended Audience :: Developers
13
+ Classifier: Programming Language :: Python :: 3.13
14
+ Classifier: Topic :: Software Development :: Libraries
15
+ Classifier: Topic :: System :: Distributed Computing
16
+ Classifier: Topic :: System :: Networking
17
+ Classifier: Typing :: Typed
18
+ Requires-Python: >=3.13
19
+ Description-Content-Type: text/markdown
20
+ Requires-Dist: greenlet>=3.3.0
21
+ Requires-Dist: psutil>=7.2.1
22
+ Requires-Dist: psycopg>=3.3.2
23
+ Requires-Dist: psycopg-pool>=3.2.0
24
+ Requires-Dist: pydantic>=2.12.5
25
+ Requires-Dist: sqlalchemy>=2.0.46
26
+
27
+ # Horsies
28
+
29
+ A PostgreSQL-backed distributed task queue and workflow engine for Python.
30
+
31
+ Documentation: [horsies docs](https://suleymanozkeskin.github.io/horsies/)
32
+
33
+ ## Syce
34
+
35
+ Monitoring TUI for horsies. Documentation: [syce overview](https://suleymanozkeskin.github.io/horsies/monitoring/syce-overview/)
@@ -0,0 +1,9 @@
1
+ # Horsies
2
+
3
+ A PostgreSQL-backed distributed task queue and workflow engine for Python.
4
+
5
+ Documentation: [horsies docs](https://suleymanozkeskin.github.io/horsies/)
6
+
7
+ ## Syce
8
+
9
+ Monitoring TUI for horsies. Documentation: [syce overview](https://suleymanozkeskin.github.io/horsies/monitoring/syce-overview/)
@@ -0,0 +1,117 @@
1
+ """Task Library - A Python library for distributed task execution"""
2
+
3
+ # Install Rust-style error handler on import
4
+ from .core.errors import install_error_handler as _install_error_handler
5
+
6
+ _install_error_handler()
7
+
8
+ from .core.app import Horsies
9
+ from .core.models.app import AppConfig
10
+ from .core.models.broker import PostgresConfig
11
+ from .core.models.tasks import (
12
+ TaskResult,
13
+ TaskError,
14
+ LibraryErrorCode,
15
+ SubWorkflowError,
16
+ RetryPolicy,
17
+ TaskInfo,
18
+ )
19
+ from .core.models.queues import QueueMode, CustomQueueConfig
20
+ from .core.models.workflow import (
21
+ WorkflowSpec,
22
+ TaskNode,
23
+ SubWorkflowNode,
24
+ AnyNode,
25
+ WorkflowHandle,
26
+ WorkflowStatus,
27
+ WorkflowTaskStatus,
28
+ WorkflowContext,
29
+ WorkflowMeta,
30
+ OnError,
31
+ WorkflowValidationError,
32
+ WorkflowDefinition,
33
+ slugify,
34
+ SubWorkflowRetryMode,
35
+ SubWorkflowSummary,
36
+ SuccessCase,
37
+ SuccessPolicy,
38
+ NodeKey,
39
+ WorkflowTaskInfo,
40
+ WorkflowContextMissingIdError,
41
+ WorkflowHandleMissingIdError,
42
+ WORKFLOW_TERMINAL_STATES,
43
+ WORKFLOW_TASK_TERMINAL_STATES,
44
+ )
45
+ from .core.workflows.engine import start_workflow, start_workflow_async
46
+ from .core.models.schedule import (
47
+ Weekday,
48
+ IntervalSchedule,
49
+ HourlySchedule,
50
+ DailySchedule,
51
+ WeeklySchedule,
52
+ MonthlySchedule,
53
+ SchedulePattern,
54
+ TaskSchedule,
55
+ ScheduleConfig,
56
+ )
57
+ from .core.models.recovery import RecoveryConfig
58
+ from .core.types.status import TaskStatus, TASK_TERMINAL_STATES
59
+ from .core.errors import ErrorCode, ValidationReport, MultipleValidationErrors
60
+
61
+ __all__ = [
62
+ # Core
63
+ 'Horsies',
64
+ 'AppConfig',
65
+ 'PostgresConfig',
66
+ 'TaskResult',
67
+ 'TaskError',
68
+ 'LibraryErrorCode',
69
+ 'SubWorkflowError',
70
+ 'RetryPolicy',
71
+ 'TaskInfo',
72
+ 'QueueMode',
73
+ 'CustomQueueConfig',
74
+ 'TaskStatus',
75
+ 'TASK_TERMINAL_STATES',
76
+ 'ErrorCode',
77
+ 'ValidationReport',
78
+ 'MultipleValidationErrors',
79
+ # Workflow
80
+ 'WorkflowSpec',
81
+ 'TaskNode',
82
+ 'SubWorkflowNode',
83
+ 'AnyNode',
84
+ 'WorkflowHandle',
85
+ 'WorkflowStatus',
86
+ 'WorkflowTaskStatus',
87
+ 'WorkflowContext',
88
+ 'WorkflowMeta',
89
+ 'OnError',
90
+ 'WorkflowValidationError',
91
+ 'WorkflowDefinition',
92
+ 'slugify',
93
+ 'SubWorkflowRetryMode',
94
+ 'SubWorkflowSummary',
95
+ 'SuccessCase',
96
+ 'SuccessPolicy',
97
+ 'NodeKey',
98
+ 'WorkflowTaskInfo',
99
+ 'WorkflowContextMissingIdError',
100
+ 'WorkflowHandleMissingIdError',
101
+ 'WORKFLOW_TERMINAL_STATES',
102
+ 'WORKFLOW_TASK_TERMINAL_STATES',
103
+ 'start_workflow',
104
+ 'start_workflow_async',
105
+ # Scheduling
106
+ 'Weekday',
107
+ 'IntervalSchedule',
108
+ 'HourlySchedule',
109
+ 'DailySchedule',
110
+ 'WeeklySchedule',
111
+ 'MonthlySchedule',
112
+ 'SchedulePattern',
113
+ 'TaskSchedule',
114
+ 'ScheduleConfig',
115
+ # Recovery
116
+ 'RecoveryConfig',
117
+ ]
File without changes