Poe the Poet
Poe the Poet is a modern and flexible task runner designed to integrate seamlessly with `poetry` and `uv` projects. It allows defining and running project-specific commands, scripts, and more complex workflows via `pyproject.toml`. As of version 0.44.0, it maintains an active development pace with frequent minor releases addressing new features, bug fixes, and occasional breaking changes.
Warnings
- breaking Transitive includes are now loaded by default from v0.44.0. Previously, nested 'include' entries were silently ignored. This change may cause previously ignored config files to be loaded, potentially introducing new tasks or environment variables.
- breaking Task variable management was refactored in v0.43.0. Boolean argument semantics were improved, and private variables introduced. This might change how environment variables are set or interpreted, especially for boolean flags passed to tasks.
- gotcha Shell completion scripts must be reinstalled after certain updates (e.g., v0.41.0, v0.42.0, v0.42.1). New completion features or fixes won't apply until the script is updated for your specific shell environment.
- breaking Support for Python 3.9 was dropped in v0.38.0. Projects using `poethepoet` on Python 3.9 will fail to install or run this version.
- gotcha The `poe` CLI command can conflict if you have `poetry` also installed and its `poe` alias/shim is present in your PATH. This can lead to unexpected command execution.
- gotcha Understand the difference between `cmd` and `shell` task types. `cmd` executes directly without an intermediary shell, while `shell` executes via the system shell, allowing shell features like pipes, redirects, and environment variable expansion.
Install
-
pip install poethepoet
Imports
- PoeThePoet
from poethepoet.app.app import PoeThePoet
Quickstart
# pyproject.toml
# ...
[tool.poe.tasks]
hello = "echo Hello from Poe!"
lint = { cmd = "ruff check .", help = "Run ruff linter" }
test = "pytest"
# Terminal execution (from project root):
# poe hello
# poe lint
# poe test