30 pontos por darjeeling 2025-07-07 | 4 comentários | Compartilhar no WhatsApp

Resumo do vídeo "uv: Making Python Local Workflows FAST and BORING in 2025"

Este vídeo é a segunda parte sobre como usar a ferramenta de empacotamento Python uv para tornar o fluxo de trabalho de desenvolvimento local mais rápido e eficiente. Os principais pontos são os seguintes.

1. Uso dos comandos principais do uv
  • uv run: executa comandos como pytest ou fastapi dentro de um ambiente virtual usando as dependências definidas em pyproject.toml e fixadas no arquivo uv.lock.
  • uv add: adiciona uma nova dependência ao pyproject.toml e atualiza automaticamente o arquivo uv.lock.
  • uv run --with: permite injetar e usar temporariamente módulos auxiliares de desenvolvimento, como pdbpp, sem adicioná-los às dependências principais do projeto.
  • uv lock --upgrade: atualiza o arquivo de lock de dependências com altíssima velocidade. O uv run detecta automaticamente alterações no arquivo de lock durante a execução e sincroniza o ambiente.
2. Padronização do workflow com just
  • O uv não inclui um recurso embutido para definir comandos personalizados, como acontece com hatch ou pdm.
  • O vídeo destaca as desvantagens do Makefile (dependência de plataforma, sintaxe não padronizada etc.) e recomenda fortemente como alternativa o executor de comandos escrito em Rust, just.
  • Com um justfile, tarefas repetitivas podem ser padronizadas como receitas (recipes), como por exemplo:
    • test: executar testes (com possibilidade de passar argumentos)
    • cov: verificar cobertura de testes
    • serve: iniciar o servidor de desenvolvimento
    • checkall: executar de uma vez lint, verificação de tipos e outras checagens
3. Integração entre just e uv
  • arquivo .env: o just pode ler um arquivo .env para definir variáveis de ambiente. Com isso, é possível montar workflows flexíveis, como adicionar dinamicamente o argumento --with ao uv run ou alterar a porta do servidor.
  • uvx (uv tool run): é um comando que executa pacotes do PyPI de forma independente do projeto, semelhante ao pipx. Dentro de receitas do just, ele permite usar ferramentas como httpie sem adicioná-las às dependências do projeto.
4. Gerenciamento direto do ambiente virtual (workflow opcional)
  • Trata-se de uma abordagem para desenvolvedores que preferem ativar e usar o ambiente virtual (.venv) da forma tradicional, sem passar pelo uv run.
  • uv sync: sincroniza o estado do arquivo uv.lock com a pasta .venv. (instala dependências e remove pacotes desnecessários)
  • direnv: é uma ferramenta de shell que executa automaticamente o script .envrc ao entrar em um diretório específico. Com isso, é possível rodar uv sync automaticamente ao entrar no diretório e ativar o ambiente virtual.
Conclusão

Ao combinar a velocidade do uv com ferramentas como just e direnv, é possível automatizar e padronizar o gerenciamento de dependências e a execução de comandos, permitindo que desenvolvedores se concentrem mais na lógica principal e construam um ambiente de desenvolvimento "rápido e entediante (boring)", ou seja, extremamente estável e previsível.

4 comentários

 
gracefullight 2025-07-10

Criei um template para usar com https://github.com/gracefullight/py-starter.

 
aabb2467 2025-07-08

Com poethepoet, dá para definir tarefas dentro do pyproject.toml, então eu uso no lugar do just.

 
gracefullight 2025-07-10

Obrigado.