ddf
ddf é um framework de análise em batch que transforma um banco relacional em projeto dbt, documentação e contexto de IA, extensível por plugins.
Bancos relacionais acumulam tabelas, colunas e relacionamentos que, sem documentação atualizada, tornam entender essa estrutura do zero um trabalho manual, repetitivo e que envelhece rápido. O ddf conecta a uma fonte de dados (hoje Postgres e MariaDB) extrai a estrutura completa e métricas reais das tabelas em paralelo e, a partir dessa única extração, gera três artefatos versionáveis: um projeto dbt rodável, documentação Markdown navegável e contexto de IA em JSON.
Todo artefato fica disponível para revisão normal de código antes de qualquer uso. E a curadoria humana (papel de negócio, regras de tabelas/colunas) é feita em YAML e preservada entre reexecuções: reextrair a mesma fonte sem mudança estrutural nunca apaga o que já foi curado; quando algo muda de fato, o ddf avisa exatamente o que mudou.
O ddf elimina a inspeção manual de schema e a escrita manual de sources, modelos e testes dbt a cada fonte nova.
Documentação completa: https://thiagolimac.github.io/ddf/
Instalação
O nome de publicação no PyPI é
ddf-framework; o comando de linha de comando continua sendoddf.
pip install ddf-framework
Requer Python 3.12+.
Uso
ddf
O wizard conduz:
- Escolher a fonte (Postgres ou MariaDB)
- Conectar
- Escolher escopos e tabelas
- Escolher a estratégia de amostragem
- Extrair
- Revisar/curar overrides
- Escolher os artefatos a gerar
- Confirmar
Guia completo (com exemplos e artefatos gerados): thiagolimac.github.io/ddf/guia-rapido/
O que ele gera
- Projeto dbt pronto para rodar:
dbt_project.yml,sources.yml, modelos de staging eschema.ymljá com testes de qualidade sugeridos a partir das métricas reais extraídas. - Documentação Markdown navegável, versionável junto do código.
- Contexto de IA em JSON (
index.json+ um arquivo por tabela), pensado para um agente consumir a estrutura sem acessar o banco.
Arquitetura
O ddf segue uma adaptação da arquitetura hexagonal (Ports & Adapters) com DDD por Bounded Contexts (Extraction, Curation, Analysis), pensada para o contexto do projeto. Hoje os adaptadores nativos da v1 conectam a Postgres e MariaDB. A arquitetura é extensível a novas fontes (e a novos geradores de artefato) via plugin, sem exigir reescrita: terceiros registram Adapters via entry_points (ddf.extratores/ddf.geradores).
src/ddf/
├── domain/ # domain — modelo + Ports (contratos)
├── infrastructure/ # adapters
└── pipeline/ # orchestration
flowchart LR
A[Extrair] --> B[Aplicar sobrescritas]
B --> C[Analisar]
C --> D[Gerar]
D --> E1[dbt]
D --> E2[Markdown]
D --> E3[Contexto de IA]
Cada Estágio do pipeline (Extrator, Analisador, Gerador) e cada Adapter novo carrega três categorias obrigatórias de teste (caminho feliz, erro esperado e borda), passa por mypy --strict e ruff antes de todo commit, e o CI nunca mergeia com o pipeline vermelho.
Diagrama completo (Bounded Contexts, ACLs, paralelismo interno) e o porquê das decisões: Arquitetura.
Licença
MIT - Ver LICENSE.
Metadata
Release files for ddf-framework 1.0.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 | |
|---|---|---|---|
| ddf_framework-1.0.0.tar.gz | 124.1 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| ddf_framework-1.0.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 310.9 kB
Release files / ddf_framework-1.0.0.tar.gz
| Download URL | ddf_framework-1.0.0.tar.gz |
|---|---|
| Size | 124.1 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
fc034c3076f04013e6cad0414878aa47433e28c10ba338e65348dc30c266b47f
|
|
BLAKE2b-256 checksum How to use checksums |
8848ecefe3c1e3194d4bdba2e4689a70bb0e42b88388716b143528fb638c8893
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.11.23 {"installer":{"name":"uv","version":"0.11.23","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|
Release files / ddf_framework-1.0.0-py3-none-any.whl
| Download URL | ddf_framework-1.0.0-py3-none-any.whl |
|---|---|
| Size | 186.7 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
4394edd8409dbaa2630b7f9c089aa0ee65aa1c867a854b06a027d893de53dccc
|
|
BLAKE2b-256 checksum How to use checksums |
b9667da8a505b7b87336f51ec8ef39ae2dc6afca08c0fc8e0ef7069214b438d8
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.11.23 {"installer":{"name":"uv","version":"0.11.23","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|