Skip to main content

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:

Examples

Explore our comprehensive examples:

License

OmniTask is released under the MIT License. See LICENSE for details.

Support

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

omnitask-1.0.0.tar.gz (30.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

omnitask-1.0.0-py3-none-any.whl (34.6 kB view details)

Uploaded Python 3

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

Hashes for omnitask-1.0.0.tar.gz
Algorithm Hash digest
SHA256 1db2b5f78ff4fd2330bc4ecb42add23abd0e0b0caf1cb286e7b1ce3ca83f5341
MD5 d6a0c45ca765f215fa6164aa2933c9f8
BLAKE2b-256 5eedb05c2458686b05dd444063e01d649eb4d2efc059b46b6f390883e07d26fd

See more details on using hashes here.

Provenance

The following attestation bundles were made for omnitask-1.0.0.tar.gz:

Publisher: publish.yml on sarperavci/omniTask

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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

Hashes for omnitask-1.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 edb1dea4898e0de4251b8d5c3626137fb34a6bbaba722d28fa4d3b98755bfdbb
MD5 fdfb9444ff005e5256b6f2e6bbc85ae3
BLAKE2b-256 ec9ec3c9e946e1c0bc7494eb9d58fb559e7a7017757ff0f574e30ba464c45346

See more details on using hashes here.

Provenance

The following attestation bundles were made for omnitask-1.0.0-py3-none-any.whl:

Publisher: publish.yml on sarperavci/omniTask

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page