Skip to content

⚙️ FEATURE-#125: Add workflow scheduler with cron-based recurring execution - #126

Merged
FernandoCelmer merged 19 commits into
developfrom
feature/125
Apr 6, 2026
Merged

⚙️ FEATURE-#125: Add workflow scheduler with cron-based recurring execution#126
FernandoCelmer merged 19 commits into
developfrom
feature/125

Conversation

@FernandoCelmer

@FernandoCelmer FernandoCelmer commented Apr 6, 2026

Copy link
Copy Markdown
Member

Description

Implements zero-infra scheduling for DotFlow workflows through multiple new components:

Core Scheduler Module:

  • dotflow/abc/scheduler.py - Abstract base class for scheduling providers
  • dotflow/providers/scheduler_default.py - No-op default provider
  • dotflow/providers/scheduler_cron.py - croniter-based scheduling provider

Type System:

  • dotflow/core/types/overlap.py - TypeOverlap enum with skip, queue, and parallel strategies
  • Updated dotflow/core/types/storage.py - Added S3 and GCS storage choices

Configuration & Integration:

  • dotflow/core/config.py - Added scheduler parameter with provider validation
  • dotflow/core/dotflow.py - Added schedule() method as functools.partial pattern
  • dotflow/cli/commands/schedule.py - New CLI command with --cron, --overlap, --resume options
  • dotflow/cli/setup.py - Integrated schedule command

Testing:

  • tests/providers/test_scheduler_cron.py - SchedulerCron functionality tests
  • tests/providers/test_scheduler_default.py - SchedulerDefault functionality tests
  • tests/core/test_config.py - Scheduler config validation tests
  • tests/core/test_types.py - TypeOverlap validation tests

Documentation & Examples:

  • Complete EN + PT documentation with mermaid diagrams
  • CLI example: docs_src/cli/cli_schedule.py
  • Scheduler examples: provider patterns, cron scheduling, overlap handling, resume functionality

Motivation and Context

Closes #125

This PR adds comprehensive zero-infrastructure scheduling capabilities to DotFlow. Users can now schedule workflows using cron expressions without requiring external infrastructure, making it easier to automate periodic tasks directly within the framework.

Types of changes

  • New feature
  • Documentation

Checklist

  • I have performed a self-review of my own code
  • I have added tests that prove my fix is effective or that my feature works
  • I have updated the documentation accordingly

@FernandoCelmer FernandoCelmer added enhancement New feature or request documentation Improvements or additions to documentation labels Apr 6, 2026
@FernandoCelmer FernandoCelmer self-assigned this Apr 6, 2026
@FernandoCelmer
FernandoCelmer merged commit eb6b879 into develop Apr 6, 2026
10 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

documentation Improvements or additions to documentation enhancement New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant