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/fimSectionFile— seções obrigatórias em ordem fixaRegisterFile— 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_usinaSubmercados/subsistemas:
codigo_submercado,nome_submercadoREE: similar aos submercados
Convenções de código¶
Todas as releases passam por testes e controle de qualidade. As convenções são:
PEP8: Siga as diretrizes de sintaxe usando ruff para formatação (
ruff format) e lint (ruff check).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.