Recurso de formatação de código é adicionado experimentalmente ao uv
(pydevtools.com)- A nova versão do uv oferece experimentalmente o recurso de formatação de código
- O comando
uv formatusa internamente o formatador do Ruff para estilizar código Python de forma consistente - Agora é possível organizar o código de forma simples usando apenas o uv, sem depender de uma ferramenta separada
- Os usuários podem ajustar em detalhes o comportamento da formatação por meio de argumentos adicionais
- Como ainda é um recurso experimental, o modo de uso e o tratamento de erros ainda podem mudar
Visão geral
A versão mais recente do uv (0.8.13) introduz o recurso uv format, um comando experimental aguardado há muito tempo por desenvolvedores Python. Com isso, é possível organizar o estilo do código usando apenas a ferramenta uv, sem precisar gerenciar uma ferramenta de formatação separada dentro do projeto.
O que é uv format?
- O comando
uv formatoferece formatação de código Python por meio da interface do uv - Internamente, ele chama o formatador do Ruff para reorganizar automaticamente o código de forma consistente
Observações para desenvolvedores
Charlie Marsh (desenvolvedor do uv) explicou o seguinte no Hacker News:
Ruff e uv não estão sendo mesclados; continuam sendo ferramentas separadas.
O objetivo é apenas melhorar a experiência para que o usuário possa usar o formatador sem percebê-lo como uma ferramenta separada.
É semelhante à relação entrecargo fmterustfmtno ecossistema Rust.
Como usar
- É necessário usar a versão 0.8.13 ou superior do uv
- Ao executar o comando
uv formatna raiz do projeto, o efeito é o mesmo de executar ruff format - O modo de execução segue a interface de comandos do uv
Passagem de argumentos adicionais
- No formato
uv format -- [argumentos adicionais], é possível definir opções detalhadas a serem repassadas ao Ruff - Assim, dá para aproveitar ao mesmo tempo a praticidade do uv e a configuração refinada do Ruff
Aviso sobre a fase experimental
- No momento, o recurso está em fase experimental, e no futuro a forma do comando ou a integração com a estrutura do projeto podem mudar
- O tratamento de erros e o formato de saída também devem continuar sendo aprimorados
- O recurso deve evoluir com base no feedback dos usuários
Encerramento
- Se você precisa de estilização de código simples e consistente em projetos Python, vale a pena experimentar o
uv format - Como se trata de uma adoção experimental, usar o recurso e enviar feedback pode contribuir para a evolução futura do uv
1 comentários
Comentários do Hacker News
ruffse unisse aoty;uvdeveria se concentrar em gerenciamento de pacotes ou projetos e não se envolver em edição de estilo de código. Na minha visão, o único caso em queuvdeveria modificar arquivos de código seria em atualizações de dependências (PEP 723)ruffeuvnão estão se unindo e continuarão sendo ferramentas separadas; a ideia é oferecer uma experiência mais simples para usuários que não querem se preocupar com o formatter separadamente. É uma configuração parecida com a do Cargo no Rust, em quecargo fmtexecuta internamente orustfmtcargo fmtexiste no cargo do Rusttyfosse incorporado aouv; como tudo vem da astral.sh, isso talvez faça parte da visão, mas o ty ainda não parece prontouv lintpara executar internamente oty; idealmente, seria ótimo poder preparar um projeto Python inteiro (formatar, lintar, testar, publicar) com um comando padrão ou uma sequência de comandos. Talvez essa seja a visão por trás dissouv run --no-projecteuv run --active, por exemplo). Em vez de adicionar novos recursos sem parar, eu gostaria que o foco fosse mais em melhorar as ferramentas e a documentação que já existemuvx ruff formatser uma palavra mais longo seja algo ruim. O que pode ser mais confuso é não ficar claro qual formatter está sendo executado de fato, se o ruff será instalado automaticamente ou se, como antes, a ferramenta será baixada e armazenada em cacheuv formatnão funcionauv <recurso>ajuda muito a equipe. Também seria ótimo se houvesse integração com outros formatters, e se chegasse ao ponto de suportar até formatação de modelos SQL/dbt, eu não teria mais nada a pedir. Por enquanto, vou testar para ver o potencialjust formate formatar Python/SQL/Bash/TypeScript de uma vez sóuv formaté, na prática, um atalho parauv run --with ruff ruffuv fmte talvez colocassem algo comouv vetno roadmap tambémuv formaté praticamente um frontend pararuff format; não está sendo adicionado um novo formatterruff format, que muita gente já usa