Ir para o conteúdo

Taskipy, um substituto do Makefile?

TLDR

E se ao invés de utilizar mais um arquivo (Makefile) dentro do seu projeto, por que não inserir tarefas a serem executadas dentro do pyproject.toml? Essa é a ideia da ferramenta taskipy. Nesse artigo eu explico utilizar a ferramenta através de um caso de uso simples de ciência de dados.


Tive conhecimento dessa ferramenta através de um vídeo1 do Vincent Warmerdam no canal do CalmCode. Depois vi que ele criou um blogpost2 também.

A ideia é bem simples. Como dito na documentação da ferramenta3, através da taskipy, você poderá definir tasks a serem executadas no arquivo pyproject.toml (já presente em projetos python) e executá-las através de um simples comando.

Configuração básica

Para inserir tarefas a serem executadas, você precisa primeiro instalar a ferramenta através do comando:

$ uv add --dev taskipy
Depois disso, basta inserir uma seção [tool.taskipy.tasks] no arquivo pyproject.toml, contendo as tarefas a serem executadas, por exemplo:

1
2
3
[tool.taskipy.tasks]
test = "python -m unittest tests/test_*.py"
lint = "pylint tests taskipy"

Para executar a tarefa test, estando dentro do ambiente virtual, use o comando:

$ task test

Para listar as tarefas cadastradas, use:

1
2
3
$ task --list
test                python -m unittest tests/test_*.py
lint                pylint tests taskipy

Caso de uso

Para testar a utilização da ferramenta, criei um caso de uso para ciência de dados, no qual preciso baixar um conjunto de dados utilizando a API do Kaggle.

Criei o seguinte script para baixar um conjunto de dados de reviews de vinhos, desempacotá-lo e inserí-lo na pasta data/raw.

scripts/download_dataset.py
import os
from pathlib import Path
from dotenv import load_dotenv
load_dotenv()

from kaggle.api.kaggle_api_extended import KaggleApi

dataset = "zynicide/wine-reviews"
target_dir = Path("data/raw")
target_dir.mkdir(parents=True, exist_ok=True)


api = KaggleApi()
api.authenticate()

api.dataset_download_files(
    dataset,
    path=target_dir,
    unzip=True
)

print(f"Dataset '{dataset}' baixado em {target_dir}")

Utilizei a biblioteca kaggle que cria uma interface com a API do Kaggle. Para fazê-la funcionar, você precisa de um token, que pode ser conseguido em https://www.kaggle.com/settings, clicando no botão "Gerar novo token" na seção "API".

Com o token, crie um arquivo .env com o seguinte conteúdo:

KAGGLE_API_TOKEN=<seu_token_da_API_do_Kaggle>

O arquivo pyproject.toml contém a seção com a tarefa que executa o script:

pyproject.toml
[project]
name = "simple-taskpy-case"
version = "0.1.0"
description = "Add your description here"
readme = "README.md"
requires-python = ">=3.13"
dependencies = [
    "kaggle>=2.0.0",
    "python-dotenv>=1.2.2",
]

[dependency-groups]
dev = [
    "taskipy>=1.14.1",
]

[tool.taskipy.tasks]
dataset = {cmd="python scripts/download_dataset.py", help="download the dataset and place it in to data/ folder."}

Para executar a tarefa, basta usar o comando:

$ task dataset

Após a execução, a tarefa criará o diretório data/raw, baixará os arquivos de dados e os descompactará na pasta criada. Depois disso, você poderá usar os arquivos de dados em suas análises.

Conclusão

É claro que a ferramenta não substitui o Makefile. O Makefile é muito mais do que criação e execução de tarefas. Mas pra projetos mais simples, pra simplificação, essa ferramenta pode ser bastante útil.

O caso de uso é somente um exemplo simples do que pode ser feito com a ferramenta, você pode usá-la para diversas outras coisas, que vão desde execução de testes a instalação de dependências externas ou criação de imagens docker. Para mais detalhes dê uma olhada na documentação oficial.


  1. Vincent Warmerdam. Your pyproject.toml can be a taskrunner too. Nov 2025. URL: https://www.youtube.com/watch?v=n-L2p-poGUk

  2. Vincent Warmerdam. TaskyPi can turn your pyproject.toml into a Makefile too — koaning.io. 2025. [Accessed 09-03-2026]. URL: https://koaning.io/posts/taskypi-can-turn-your-pyproject.toml-into-a-makefile-too/

  3. taskpy. GitHub - taskipy/taskipy: the complementary task runner for python — github.com. [Accessed 09-03-2026]. URL: https://github.com/taskipy/taskipy

Se você notar erros ou enganos nesta publicação, não hesite em me contatar pelo e-mail madsonddias@gmail.com e terei o maior prazer em corrigi-los imediatamente!