Obrigado pelo interesse em contribuir com o idecomp! Este guia descreve o fluxo de trabalho recomendado para configurar o ambiente, manter a qualidade do código e enviar contribuições.
Clone o repositório e instale as dependências de desenvolvimento com uv:
git clone https://github.com/rjmalves/idecomp.git
cd idecomp
uv sync --extra devVerifique se a instalação está correta executando a suíte de testes:
uv run pytest ./testsO projeto utiliza pre-commit para garantir a qualidade do código antes de cada commit. Instale o pre-commit e registre os hooks no repositório:
pip install pre-commit
pre-commit installOs hooks de ruff (lint) e ruff-format (formatação) são executados automaticamente em todo commit.
O hook do mypy está configurado com stages: [manual] porque os stubs de tipo do cfinterface estão incompletos e bloqueariam todos os commits se executados automaticamente. Para executar a verificação completa de tipos manualmente:
pre-commit run --hook-stage manual --all-filesAlternativamente, o mypy pode ser executado diretamente:
uv run mypy ./idecomp| Ferramenta | Propósito | Comando |
|---|---|---|
ruff check |
Linting (PEP8 e outras regras) | uv run ruff check ./idecomp |
ruff format |
Formatação automática do código | uv run ruff format ./idecomp |
mypy |
Verificação de tipagem estática | uv run mypy ./idecomp |
pytest |
Execução da suíte de testes | uv run pytest ./tests |
Para verificar a formatação sem aplicar mudanças:
uv run ruff format --check ./idecomp- PEP8: O estilo do código é verificado pelo
ruff, seguindo as diretrizes do PEP8. - Tipagem estatica obrigatoria: Todas as variáveis e funções devem ter tipos declarados ou inferíveis. Evite tipos ambíguos ou que variam durante a execução.
- Dados tabulares como DataFrame: Propriedades das classes que retornam dados tabulares devem retornar
pd.DataFrame, seguindo as formas normais de dados tabulares sempre que possível. - Nomenclatura em snake_case: Propriedades das classes e colunas dos
pd.DataFramedevem ser nomeadas emsnake_case, evitando ambiguidades.
Para executar todos os testes:
uv run pytest ./testsPara executar com relatório de cobertura:
uv run pytest --cov=idecomp ./testsInstale as dependências de documentação e gere o site localmente:
uv sync --extra docs
uv run sphinx-build -M html docs/source docs/buildO site gerado estará disponível em docs/build/html/index.html.
- Faça um fork do repositório e crie um branch descritivo a partir do
main:git checkout -b minha-contribuicao
- Implemente as mudanças, seguindo as convenções de código descritas acima.
- Certifique-se de que os testes passam e que não há erros de lint ou tipagem:
uv run pytest ./tests uv run ruff check ./idecomp uv run mypy ./idecomp
- Faça commit das mudanças e envie o branch para o seu fork:
git push origin minha-contribuicao
- Abra um Pull Request no repositório principal. O CI executará automaticamente lint, verificação de tipos, testes e build da documentação.