A powerful Python-based workflow automation tool
Project description
OmniTask
A powerful, pure Python workflow automation engine designed for simplicity and scalability.
Overview
OmniTask is a modern workflow automation engine that allows you to build complex data processing pipelines with ease. It provides a clean API for defining tasks, managing dependencies, and executing workflows with features like streaming, caching, and parallel execution.
Key Features
- Pure Python: Built entirely in Python with no external dependencies beyond PyYAML
- Async/Await Support: Full asynchronous execution for maximum performance
- Streaming Tasks: Real-time data processing with streaming capabilities
- Intelligent Caching: Memory and file-based caching for optimized performance
- Dependency Management: Automatic dependency resolution and execution ordering
- Task Groups: Parallel execution with configurable concurrency limits
- Conditional Execution: Execute tasks based on conditions and previous results
- Progress Tracking: Built-in progress monitoring and callbacks
- Error Handling: Comprehensive error handling with retry mechanisms
- Workflow Validation: Static analysis and validation of workflow definitions
- YAML Configuration: Define workflows using simple YAML files
Installation
pip install omniTask
Quick Start
Creating a Simple Workflow
from omniTask import Workflow, Task, TaskResult
class DataProcessorTask(Task):
task_name = "data_processor"
async def execute(self):
data = self.config.get('data', [])
result = sum(data)
return TaskResult(success=True, output={"sum": result})
async def main():
# Create workflow
workflow = Workflow("example")
workflow.registry.register(DataProcessorTask)
# Add task
task = workflow.create_task("data_processor", "process", {"data": [1, 2, 3, 4, 5]})
# Execute
results = await workflow.run()
print(results["process"].output) # {"sum": 15}
if __name__ == "__main__":
import asyncio
asyncio.run(main())
Using YAML Configuration
name: data_pipeline
tasks:
load_data:
type: file_reader
config:
file_path: "data.csv"
process_data:
type: data_processor
config:
operation: "aggregate"
save_results:
type: file_writer
config:
file_path: "results.json"
dependencies:
process_data:
- load_data
save_results:
- process_data
from omniTask import WorkflowTemplate
template = WorkflowTemplate("workflow.yaml")
workflow = template.create_workflow()
results = await workflow.run()
Why OmniTask?
Simple Yet Powerful
- Minimal Learning Curve: Start with basic tasks and grow into complex workflows
- Intuitive API: Clean, Pythonic interface that feels natural
- Flexible Configuration: Support for both code and YAML-based workflow definitions
Built for Scale
- Async-First Design: Handle thousands of concurrent tasks efficiently
- Smart Caching: Avoid redundant computations with intelligent caching
- Streaming Support: Process data in real-time as it becomes available
Production Ready
- Comprehensive Testing: Extensive test coverage and validation
- Error Resilience: Built-in retry mechanisms and error handling
- Monitoring: Progress tracking and detailed logging
- Validation: Static analysis of workflow definitions
Architecture
OmniTask follows a clean, modular architecture:
- Core Engine: Task execution, dependency resolution, and workflow management
- Task System: Extensible task framework with streaming support
- Caching Layer: Pluggable caching system for performance optimization
- Validation System: Static analysis and runtime validation
- Utility Layer: Logging, path parsing, and helper functions
Documentation
For comprehensive documentation, visit our documentation site:
- User Guide - Learn how to use OmniTask
- API Reference - Complete API documentation
- Architecture Guide - Deep dive into system architecture
- Examples - Real-world examples and use cases
- Developer Guide - Advanced features and customization
Examples
Explore our comprehensive examples:
- Basic Workflows - Simple task chaining
- Streaming Processing - Real-time data processing
- Conditional Logic - Decision-based execution
- Caching Demo - Performance optimization
- Parallel Processing - Concurrent task execution
License
OmniTask is released under the MIT License. See LICENSE for details.
Support
- Issues: Report bugs and request features on GitHub Issues
- Documentation: Full documentation at https://sarpers-organization.gitbook.io/omnitask
- Examples: Working examples in the examples/ directory
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file omnitask-1.0.0.tar.gz.
File metadata
- Download URL: omnitask-1.0.0.tar.gz
- Upload date:
- Size: 30.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.12.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1db2b5f78ff4fd2330bc4ecb42add23abd0e0b0caf1cb286e7b1ce3ca83f5341
|
|
| MD5 |
d6a0c45ca765f215fa6164aa2933c9f8
|
|
| BLAKE2b-256 |
5eedb05c2458686b05dd444063e01d649eb4d2efc059b46b6f390883e07d26fd
|
Provenance
The following attestation bundles were made for omnitask-1.0.0.tar.gz:
Publisher:
publish.yml on sarperavci/omniTask
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
omnitask-1.0.0.tar.gz -
Subject digest:
1db2b5f78ff4fd2330bc4ecb42add23abd0e0b0caf1cb286e7b1ce3ca83f5341 - Sigstore transparency entry: 273658536
- Sigstore integration time:
-
Permalink:
sarperavci/omniTask@d5f34f9248162db0f72d4c4446105f508227b50f -
Branch / Tag:
refs/tags/v1.0.0 - Owner: https://github.com/sarperavci
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@d5f34f9248162db0f72d4c4446105f508227b50f -
Trigger Event:
push
-
Statement type:
File details
Details for the file omnitask-1.0.0-py3-none-any.whl.
File metadata
- Download URL: omnitask-1.0.0-py3-none-any.whl
- Upload date:
- Size: 34.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.12.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
edb1dea4898e0de4251b8d5c3626137fb34a6bbaba722d28fa4d3b98755bfdbb
|
|
| MD5 |
fdfb9444ff005e5256b6f2e6bbc85ae3
|
|
| BLAKE2b-256 |
ec9ec3c9e946e1c0bc7494eb9d58fb559e7a7017757ff0f574e30ba464c45346
|
Provenance
The following attestation bundles were made for omnitask-1.0.0-py3-none-any.whl:
Publisher:
publish.yml on sarperavci/omniTask
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
omnitask-1.0.0-py3-none-any.whl -
Subject digest:
edb1dea4898e0de4251b8d5c3626137fb34a6bbaba722d28fa4d3b98755bfdbb - Sigstore transparency entry: 273658546
- Sigstore integration time:
-
Permalink:
sarperavci/omniTask@d5f34f9248162db0f72d4c4446105f508227b50f -
Branch / Tag:
refs/tags/v1.0.0 - Owner: https://github.com/sarperavci
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@d5f34f9248162db0f72d4c4446105f508227b50f -
Trigger Event:
push
-
Statement type: