Como contribuir?

Nota

Para instruções de configuração do ambiente de desenvolvimento, instalação de dependências e fluxo de Pull Requests, consulte o arquivo CONTRIBUTING.md na raiz do repositório.

O framework cfinterface

O módulo idecomp é desenvolvido com o framework cfinterface, que oferece três modelos de arquivo:

  • BlockFile — blocos com padrão específico de início/fim

  • SectionFile — seções obrigatórias em ordem fixa

  • RegisterFile — linhas com formato constante

Arquivos podem ser texto ou binário. Exemplos no idecomp:

Aviso

O conteúdo da documentação não deve ser movido para o repositório. Isto é feito automaticamente pelos scripts de CI no caso de qualquer modificação no branch main.

Diretrizes de modelagem

Cada arquivo de entrada do DECOMP é mapeado para uma classe com nome PascalCase (ignorando abreviações). Exemplos:

Dados tabulares: Propriedades retornam DataFrame quando possível, normalizadas para formas tabulares padrão.

Nomenclatura: Use snake_case para propriedades e colunas, evitando ambiguidades:

  • Usinas: codigo_usina, nome_usina

  • Submercados/subsistemas: codigo_submercado, nome_submercado

  • REE: similar aos submercados

Convenções de código

Todas as releases passam por testes e controle de qualidade. As convenções são:

  1. PEP8: Siga as diretrizes de sintaxe usando ruff para formatação (ruff format) e lint (ruff check).

  2. Tipagem estática: Todas as variáveis devem ter tipos declarados ou inferíveis. Evite tipos que variam durante a execução.

Procedimentos de teste

Execute antes de cada git push:

$ uv run pytest ./tests
$ uv run mypy ./idecomp
$ uv run ruff check ./idecomp

Usa-se pytest para testes, mypy para tipagem, e ruff para lint.