Skip to content

Conversation

@vdusek
Copy link
Collaborator

@vdusek vdusek commented Jan 22, 2026

Description

Migrates from Makefile to Poe the Poet for task running. This is something I've wanted to do for a long time - having a more Pythonic solution than Makefile, that keeps all project configuration in pyproject.toml, similar to how npm scripts work in package.json.

Motivation

  • Consistency across technologies – The company primarily works with JS/TS, and Poe the Poet is conceptually the closest equivalent to how this is handled there via npm scripts.
  • Cross-platform compatibility – Makefiles can cause issues on Windows (shell differences, GNU tooling, quoting, ...), whereas Poe the Poet is a pure Python solution that works everywhere Python works.
  • Single source of configuration – Over time, we have consolidated the configuration of most tools (linter, type checker, formatter, pytest, …) into a single file (pyproject.toml), which is also a long-term trend in the Python ecosystem. Moving task definitions into Poe the Poet within pyproject.toml is a natural next step in this direction.
  • Being Pythonic – Poe the Poet is a Python-native tool designed specifically for running tasks in Python projects. Makefile, on the other hand, is a general, historically Unix-centric tool originally intended for building and linking C/C++ software 😄. Meaning it is definitely a less natural fit for pure Python projects. The presence of a Makefile in a Python open-source library is, at the very least, surprising 😄.

Changes

  • Remove Makefile.
  • Add poethepoet as a dev dependency.
  • Add [tool.poe.tasks] section in pyproject.toml with all tasks.
  • Update CONTRIBUTING.md with new commands and poe documentation.
  • Update GitHub workflows to use uv run poe commands.
  • Update .pre-commit-config.yaml to use poe tasks.

Usage

Tasks are now run with uv run poe <task> (or just poe <task> if you have venv actived):

uv run poe install-dev
uv run poe lint
uv run poe format
uv run poe type-check
uv run poe unit-tests
uv run poe check-code
uv run poe build-docs
uv run poe run-docs

@vdusek vdusek added this to the 132nd sprint - Tooling team milestone Jan 22, 2026
@vdusek vdusek requested a review from Pijukatel January 22, 2026 12:30
@vdusek vdusek self-assigned this Jan 22, 2026
@vdusek vdusek added t-tooling Issues with this label are in the ownership of the tooling team. adhoc Ad-hoc unplanned task added during the sprint. labels Jan 22, 2026
@codecov
Copy link

codecov bot commented Jan 22, 2026

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 92.40%. Comparing base (58a1587) to head (d5ceccf).
⚠️ Report is 2 commits behind head on master.

Additional details and impacted files
@@            Coverage Diff             @@
##           master    #1678      +/-   ##
==========================================
- Coverage   92.42%   92.40%   -0.02%     
==========================================
  Files         157      157              
  Lines       10482    10482              
==========================================
- Hits         9688     9686       -2     
- Misses        794      796       +2     
Flag Coverage Δ
unit 92.40% <ø> (-0.02%) ⬇️

Flags with carried forward coverage won't be shown. Click here to find out more.

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

vdusek added a commit to apify/apify-shared-python that referenced this pull request Jan 22, 2026
vdusek added a commit to apify/apify-client-python that referenced this pull request Jan 22, 2026
vdusek added a commit to apify/apify-sdk-python that referenced this pull request Jan 22, 2026
@vdusek vdusek merged commit 1682ff1 into master Jan 22, 2026
30 checks passed
@vdusek vdusek deleted the migrate-to-poethepoet branch January 22, 2026 15:53
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

adhoc Ad-hoc unplanned task added during the sprint. t-tooling Issues with this label are in the ownership of the tooling team.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants