Use integrations¶
Integrations in Dotflow are provider classes (storage, notify, log, scheduler) that you pass through Config when creating DotFlow. Optional pieces ship as pip extras so the base install stays small—similar in spirit to how Prefect documents installing integration packages.
Install optional extras¶
Install the matching extra with pip before importing a provider that needs a third-party library.
| Extra | Installs | Use for |
|---|---|---|
aws |
boto3 |
Storage S3 |
gcp |
google-cloud-storage |
Storage GCS |
scheduler |
croniter |
Scheduler cron |
Examples:
pip install "dotflow[aws]"
pip install "dotflow[gcp,scheduler]"
The authoritative list of extras and pinned versions lives in pyproject.toml under [project.optional-dependencies].
Note
Built-in providers (default storage, file storage, default notify/log/scheduler) use only core dependencies—no extra needed. Telegram and Discord use requests, which is already a dependency of dotflow.
Use a provider in code¶
- Install the extra (if that integration requires one).
- Import
Config,DotFlow, and the provider fromdotflow.providers. - Pass the provider into
Config, then buildDotFlow(config=config).
Minimal AWS S3 example:
from dotflow import Config, DotFlow
from dotflow.providers import StorageS3
def step_one():
return "ok"
config = Config(
storage=StorageS3(
bucket="my-dotflow-bucket",
prefix="workflows/",
region="us-east-1",
)
)
workflow = DotFlow(config=config)
workflow.task.add(step=step_one)
workflow.start()
The same pattern applies to GCS (StorageGCS), cron (SchedulerCron on Config.scheduler), Telegram (NotifyTelegram on Config.notify), Discord (NotifyDiscord on Config.notify), and other providers—each integration guide shows the exact constructor arguments and auth model.
If import fails¶
If a provider needs a library you did not install, Dotflow raises a clear error pointing at the extra (for example library="dotflow[aws]"). Install that extra and run again.
Next steps¶
- Overview — all integrations at a glance
- Custom providers — implement your own storage, notify, log, or scheduler backend