Registry / devops / poethepoet

poethepoet

JSON →
library0.48.0pypypi✓ verified 26d ago

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.

pip install poethepoet
INSTALL
IMPORT
SIG · POETHEPOET
P
poethepoet
devopspythonv0.48.0
Install
1.8s avg
Import
14ms
Disk
20MB
Pass rate
10/ 10
Env Coverage10 / 10
glibc
3.93.13
musl
3.93.13
Install & Compatibility
Where this runs
tested against v0.48.0 · pip install
no network on importno background threads
Install × environment matrix
Each cell = how many times install + import succeeded across repeated harness runs. Partial = flaky.
glibc = Debian/Ubuntu slim · musl = Alpine Linux
musl
py 3.103.95 runs
installs and imports cleanly · install 0.0s · import 0.014s · 21.5MB
glibc
py 3.103.95 runs
installs and imports cleanly · install 1.8s · import 0.014s · 23MB
20MB installed
● package 20MB
Code
Verified usage

Verified import paths — ran on the pinned version, not inferred.

Path
from poethepoet import Path
from poethepoet import PoeThePoet
iter_tasks
from poethepoet import iter_tasks
main
from poethepoet import main

Poe tasks are defined in your project's `pyproject.toml` file under `[tool.poe.tasks]`. Each task is a key-value pair, where the key is the task name and the value can be a simple command string or a dictionary for more complex configurations (e.g., adding help text). Tasks are executed via the `poe <task_name>` command in your terminal.

# 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
poe --version
Debug
Known issues
breakingTransitive 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.
fix
Review existing projects with nested 'include' statements (e.g., `include = ['path/to/another.toml']`) for unintended task or environment variable conflicts.
affects: >=0.44.0
breakingTask 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.
fix
Consult the v0.43.0 release notes and documentation on task variables, boolean arguments, and private variables to adjust existing task definitions.
affects: >=0.43.0
gotchaShell 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.
fix
Follow the instructions in the official documentation to reinstall your shell's completion script after upgrading `poethepoet`.
affects: >=0.41.0
breakingSupport 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.
fix
Upgrade your project's Python interpreter to 3.10 or newer, or pin `poethepoet` to a version `<0.38.0`.
affects: >=0.38.0
gotchaThe `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.
fix
Ensure `poethepoet` is installed and activated within your project's virtual environment, or carefully manage your system's PATH to prioritize the desired `poe` command.
affects: all
gotchaUnderstand 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.
fix
Use `cmd` for simple, atomic commands and `shell` when shell-specific syntax or features (e.g., `|`, `>`, `&&`) are required. If unsure, `shell` is often the more flexible default, but `cmd` can be more direct and portable.
affects: all
Upgrade
Version history
0.48.0latest on PyPI · released Jul 5, 2026
Audit
Dependencies

No dependency data recorded yet.

Agent activity
18 hits · last 30 days
node
16
Resources
poethepoet — pip install poethepoet · libregistry