Skip to content

Latest commit

 

History

History
47 lines (34 loc) · 1.29 KB

File metadata and controls

47 lines (34 loc) · 1.29 KB

Contributing to AgileForecasting

Project

Streamlit app for Agile forecasting and Monte Carlo simulation using Azure DevOps data.

Repository structure

  • streamlit_app/app.py — Streamlit entrypoint and UI logic
  • src/agile_mc/ — reusable domain logic (pure functions, no Streamlit dependency)
  • tests/ — unit tests for domain logic

Development setup

python -m venv .venv
source .venv/bin/activate          # Windows: .venv\Scripts\activate
pip install -e ".[dev]"            # installs package + dev tools (pytest, ruff)
streamlit run streamlit_app/app.py

Standards

  • Python 3.12+
  • Type hints where practical
  • Prefer pure functions in src/agile_mc; keep UI logic in streamlit_app/
  • Add tests for all non-UI logic
  • Do not commit secrets, .env files, or local config
  • Keep changes small and reviewable

Running checks

pytest --tb=short              # run tests
ruff format src/ tests/ streamlit_app/   # format
ruff check src/ tests/ streamlit_app/    # lint
pip-audit -r requirements.lock           # CVE scan

Dependency management

Runtime dependencies are declared in pyproject.toml and pinned in requirements.lock (generated by pip-compile). When changing dependencies:

pip-compile pyproject.toml --output-file requirements.lock