Metadata-Version: 2.4
Name: daedaluspy
Version: 1.0.2
Summary: Code generation toolkit for data engineering
Home-page: https://github.com/Golden-Valley-Consulting/DaedalusPy
Author: Golden Valley Consulting LTDA
Author-email: Golden Valley Consulting LTDA <contato@goldenvalleyc.com>
License-Expression: MIT
Project-URL: Homepage, https://github.com/Golden-Valley-Consulting/daedaluspy
Project-URL: Documentation, https://daedaluspy.readthedocs.io
Project-URL: Repository, https://github.com/Golden-Valley-Consulting/daedaluspy
Project-URL: Bug Tracker, https://github.com/Golden-Valley-Consulting/daedaluspy/issues
Keywords: code-generation,data-engineering,python,cli
Classifier: Development Status :: 4 - Beta
Classifier: Intended Audience :: Developers
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.7
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Topic :: Software Development :: Code Generators
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Requires-Python: >=3.7
Description-Content-Type: text/markdown
License-File: LICENSE
Provides-Extra: dev
Requires-Dist: pytest>=6.0; extra == "dev"
Requires-Dist: black; extra == "dev"
Requires-Dist: flake8; extra == "dev"
Requires-Dist: mypy; extra == "dev"
Dynamic: author
Dynamic: home-page
Dynamic: license-file
Dynamic: requires-python

# DaedalusPy

## Visão Geral
DaedalusPy é um framework para engenharia de dados, criado para acelerar a construção de bibliotecas de dados corporativas e pipelines analíticos modulares, com foco em padronização, governança, reuso e produtividade em ambientes cloud ou multi-cloud.

Pensando principalmente para utilização junto a ferramentas como azure synapse, Databricks e outros serviços de dados em nuvem, DaedalusPy permite que engenheiros de dados criem soluções robustas e escaláveis com facilidade.

Com o foco em trazer 2 grandes blocos de funcionalidades:

## Bibliotecas de Dados Corporativas
Bibliotecas de dados unificadas que centralizam entidades, domínios, validações e funções reutilizáveis, promovendo reuso e governança. Recomendamos que alguém próximo ao DevOps utilize e disponibilize as bibliotecas para os engenheiros de dados, garantindo que todos sigam os mesmos padrões e práticas recomendadas.

Apesar do foco em da biblioteca em dados, incentivamos que ela assim como o datalake sejam vistos como um middleware, onde os processos que dependem de dados na companhia falem uma só linguagem de negócio, independente de onde os dados estejam armazenados.

## Pipelines Analíticos Modulares
Pipelines analíticos modulares que permitem a construção de fluxos de trabalho complexos de forma simples e reutilizável. Com componentes desacoplados e configuráveis, os engenheiros de dados podem orquestrar processos de ETL, transformação e análise de dados de maneira eficiente.

## Objetivos
- Padronizar a modelagem, transformação e integração de dados em projetos analíticos.
- Centralizar entidades, domínios, validações e funções reutilizáveis.
- Facilitar a construção, orquestração e manutenção de pipelines robustos e escaláveis.
- Promover governança, versionamento e documentação centralizada.

## Macro Entregas (Explicação Detalhada)

1. **Geração de Bibliotecas de Dados**
   - **O que faz:** Cria a estrutura base de uma biblioteca de dados corporativa, centralizando entidades, configurações, serviços e ferramentas reutilizáveis.
   - **Comando:**
     ```bash
     daedaluspy create-lib <nome> [--dataname <entidade>] [--systemname <domínio>]
     ```
   - **Como funciona:** Gera uma pasta `<libname>/` com subpastas para `config/`, `data/`, `service/`, `tools/` e arquivos essenciais. Isso garante que todo projeto siga o mesmo padrão e facilite o reuso entre times.
   - **Quando usar:** Sempre que iniciar um novo domínio de dados ou projeto analítico.

2. **Geração de Entidades de Dados**
   - **O que faz:** Cria classes de entidades de negócio (ex: ClienteEntity) já com estrutura OOP, enums, validações e templates prontos para uso.
   - **Comando:**
     ```bash
     daedaluspy create-data <ClasseEntidade> --tier <raw|clear|model> --cloud <azure|aws|google> [--columns ...]
     ```
   - **Como funciona:** Gera arquivos Python na estrutura correta, com métodos, validações e documentação, prontos para serem usados em pipelines e serviços.
   - **Quando usar:** Sempre que precisar modelar uma nova entidade de dados, seja para ingestão, transformação ou consumo.

3. **Geração de Serviços**
   - **O que faz:** Cria serviços de integração (ex: APIs, bancos de dados) já integrados à biblioteca, seguindo padrões de OOP e enums.
   - **Comando:**
     ```bash
     daedaluspy create-service <NomeServico> --type <api|database> [--models ...]
     ```
   - **Como funciona:** Gera a estrutura de serviço, facilitando integrações externas e padronizando o acesso a dados.
   - **Quando usar:** Sempre que precisar integrar uma nova fonte ou destino de dados ao seu ecossistema.

4. **Geração de Pipelines**
   - **O que faz:** Cria a estrutura de um pipeline modular, pronto para orquestração, sem subpastas desnecessárias e com todos os arquivos essenciais (main, config, steps, etc).
   - **Comando:**
     ```bash
     daedaluspy create-pipeline <domínio> <entidade> --tier <raw|clear|model> --output <pasta> [--template_type ...] [--lib_name ...] [--cloud_provider ...] [--entity_target ...] [--entity_target_class ...]
     ```
   - **Como funciona:** Gera uma pasta do pipeline diretamente no local especificado, pronta para receber a lógica de negócio e ser executada.
   - **Quando usar:** Sempre que precisar criar um novo fluxo de ingestão, transformação ou entrega de dados, reaproveitando entidades e serviços da biblioteca.

---

Cada comando do DaedalusPy foi desenhado para garantir padronização, acelerar o desenvolvimento e permitir que o engenheiro de dados foque no que realmente importa: a lógica de negócio e a entrega de valor. O CLI não substitui o trabalho do desenvolvedor, mas elimina o retrabalho estrutural e direciona o padrão arquitetural do projeto.

## Casos de Uso Reais

- **Criar biblioteca de dados corporativa:**
  ```bash
  daedaluspy create-lib corp_data
  ```

- **Adicionar entidade de negócio:**
  ```bash
  daedaluspy create-data ClienteEntity --tier raw --cloud azure
  ```

- **Adicionar serviço de integração:**
  ```bash
  daedaluspy create-service Salesforce --type api
  ```

- **Gerar pipeline para domínio/entidade/camada:**
  ```bash
  daedaluspy create-pipeline vendas ClienteEntity --tier clear --output .
  ```

## Estrutura Gerada (Exemplo Real)

```
corp_data/
  config/
    __init__.py
    config.py
  data/
    raw/
      __init__.py
      ClienteEntity.py
    clear/
    model/
  service/
    salesforce/
      __init__.py
  tools/
    logger/
      __init__.py
  __init__.py
  README.md
  setup.py

vendas_ClienteEntity_clear/
  __init__.py
  base.py
  config.py
  flowbuilder.py
  steps.py
  main.py
  README.md
  requirements.txt
```

## Fluxo de Trabalho Típico

1. **Crie a biblioteca:**  
   `daedaluspy create-lib corp_data`
2. **Adicione entidades e serviços:**  
   `daedaluspy create-data ClienteEntity --tier raw --cloud azure`  
   `daedaluspy create-service Salesforce --type api`
3. **Gere o pipeline:**  
   `daedaluspy create-pipeline vendas ClienteEntity --tier clear --output .`
4. **Implemente lógica e execute.**


## Melhores Práticas
- Use o CLI para gerar a estrutura base e arquivos padronizados.
- Implemente a lógica de negócio, transformações e integrações nos arquivos gerados.
- Siga os padrões do desenvolvimento orientado a objetos (OOP) e templates definidos pelo framework.
- Evite alterar manualmente a estrutura dos arquivos base gerados pelo CLI (exceto para lógica de negócio).
- Mantenha a biblioteca centralizada e versionada.
- Use templates para padronizar lógica e documentação.

## Público-Alvo
- Engenheiros e arquitetos de dados
- Times de analytics, BI e governança

## Licença
MIT
 
## Documentação Detalhada

- [CLI: Comandos e exemplos](docs/cli.md)
- [Entidades e Serviços: Modelagem e padrões](docs/entities_and_services.md)
- [Pipelines: Sistema e templates](docs/pipeline_system.md)
- [Melhores Práticas](docs/best_practices.md)
