WolfzBR
Limpeza de planilhas brasileiras com receitas reproduzíveis. Você arrasta a planilha suja (título, cabeçalho no meio, totais, 1.234,56, R$, datas 31/12/2024), ajusta os passos na tela e exporta a tabela limpa junto com a receita: o mesmo passo a passo em Power Query M e em script Python, para refazer no mês seguinte.
Tudo roda na sua máquina. Nenhum dado sai do seu computador.
Status: pré-alfa (0.5). O formato da receita ainda pode mudar até a 1.0.
Instalação
Requer Python 3.12 ou mais novo. Recomendado com pipx, que isola o WolfzBR num ambiente próprio:
pipx install wolfzbr
ou com pip, num ambiente virtual:
pip install wolfzbr
O pacote já traz a interface compilada; não precisa de Node.
Uso
Interface
wolfz ui
Abre o navegador com a interface. Para usar:
- Arraste o arquivo (
.xlsx,.xls,.odsou.csv). Se tiver mais de uma aba, escolha qual. - Confira a estrutura detectada: título, cabeçalho, dados, totais e rodapé aparecem em cores. Se a área estiver errada, clique e arraste na grade para marcar a certa.
- Ajuste a receita: adicione, edite, reordene ou desative passos, vendo a tabela antes e depois de cada um. Clique no cabeçalho de uma coluna para ver o perfil dela.
- Exporte: CSV (pronto para o Excel em português), Excel, Parquet, Power Query M e script Python.
A receita é salva automaticamente a cada edição. O endereço só funciona com a chave de acesso que o terminal mostra, nova a cada execução. Deixe o terminal aberto enquanto usa; Ctrl+C encerra.
Opções: --port fixa a porta; --no-browser só mostra o endereço, sem abrir o navegador.
Linha de comando
Aplicar uma receita salva ao arquivo do mês seguinte:
wolfz run vendas.wolfz.json vendas_fevereiro.xlsx -o saida/ --format xlsx
- Se algum passo não se aplicar ao arquivo novo (uma coluna mudou de nome, por exemplo), nada é gravado e a mensagem diz qual passo falhou e quais colunas existem.
- Se a aba muda de nome todo mês (
Vendas 2024→Vendas 2025), usesource.match.sheet_name_regexna receita.
Outros comandos:
wolfz inspect planilha.xlsx # perfil das colunas no terminal
wolfz schema # JSON Schema da receita
wolfz --help
Códigos de saída do run: 0 ok · 1 um passo falhou · 2 receita inválida ou uso incorreto · 3 arquivo ilegível.
Em Python
import wolfz
df = wolfz.run("vendas.wolfz.json", "vendas_fevereiro.xlsx") # polars.DataFrame
Exportação
| Formato | O que sai |
|---|---|
| CSV | UTF-8 com BOM; separador ,, ; ou tabulação; vírgula decimal opcional. Opção de neutralizar fórmulas (=, +, -, @). |
Excel (.xlsx) |
Data como data, número como número; texto nunca vira fórmula. |
| Parquet | Tipos preservados, compressão zstd. |
| Power Query M | A receita como consulta M que lê o arquivo de origem, para colar no Power BI ou no Excel. Vem com o parâmetro CaminhoArquivo num arquivo à parte: para o mês seguinte, troque só o caminho. |
| Script Python | A receita como script autônomo, que lê a planilha ou o CSV e grava .csv ou .parquet. Só depende do Polars (e de fastexcel e python-calamine para ler planilha). |
Tableau (.hyper) e projeto do Power BI (.pbip) estão previstos para versões futuras.
Padrões brasileiros
O catálogo tem 31 operações: estrutura (área, cabeçalho, linhas e colunas vazias, preencher para baixo, despivotar), colunas, texto e padrões brasileiros. Os padrões cobrem:
- números (
1.234,56,(1,5),10-do SAP,R$); - percentual, datas e mês/ano;
- sim/não;
- CPF, CNPJ (inclusive o alfanumérico), CEP e UF.
Cada operação tem a mesma regra no motor (Polars), no M e no script Python, com teste de equivalência.
Limites
- Arquivo de até 100 MB.
- Uma tabela por aba. Duas tabelas na mesma aba: marque a área de cada uma em projetos separados.
- Cabeçalho em várias linhas é juntado num nome só, mas o cabeçalho mesclado na horizontal ainda não é preenchido. Isso chega na 0.6.
Documentação
- Desenho técnico:
docs/system_design.md - Mudanças:
CHANGELOG.md - Como contribuir:
CONTRIBUTING.md
Licença
Metadata
Release files for wolfzbr 0.5.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| wolfzbr-0.5.0.tar.gz | 292.0 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| wolfzbr-0.5.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 613.9 kB
Release files / wolfzbr-0.5.0.tar.gz
| Download URL | wolfzbr-0.5.0.tar.gz |
|---|---|
| Size | 292.0 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
ecb50aea07e294e32f1c4fb5003d5c435c00425ca038b326ca6a7b2c7d43bb8f
|
|
BLAKE2b-256 checksum How to use checksums |
b5a15604e356470c29f47f179f33265c8909720b7ff24dead2a6803f581d606d
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.13.1 {"installer":{"name":"uv","version":"0.13.1","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":null,"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|
Release files / wolfzbr-0.5.0-py3-none-any.whl
| Download URL | wolfzbr-0.5.0-py3-none-any.whl |
|---|---|
| Size | 322.0 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
4ac9c4de8487a7efa3bce649cd3ed1e10737de1f73a0cd70807cd01d6901a4f4
|
|
BLAKE2b-256 checksum How to use checksums |
8366c854462272018f5edb742dfaa20750044eb782df26ff66f9e69aed477ef5
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.13.1 {"installer":{"name":"uv","version":"0.13.1","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":null,"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|