Development Setup¶
This guide helps you set up a development environment for HoloConf.
Prerequisites¶
- Rust 1.88 or later (rustup.rs)
- Python 3.8 or later
- maturin for building Python bindings
Quick Setup¶
# Clone the repository
git clone https://github.com/rfestag/holoconf.git
cd holoconf
# Set up Python virtual environment
python -m venv .venv
source .venv/bin/activate # Windows: .venv\Scripts\activate
# Install development tools
make install-tools
# Build everything
make build
# Run all tests
make test
Step-by-Step Setup¶
1. Clone and Enter the Repository¶
2. Set Up Python Environment¶
3. Install Development Dependencies¶
# Install Rust tooling
cargo install cargo-deny cargo-audit cargo-machete
# Install Python dev dependencies
cd packages/python/holoconf
pip install -e ".[dev]"
cd ../../..
4. Build the Project¶
# Build Rust crates
cargo build
# Build Python bindings (development mode)
cd packages/python/holoconf
maturin develop
cd ../../..
5. Verify Setup¶
# Run Rust tests
cargo test
# Run Python tests
cd packages/python/holoconf
pytest tests/ -v
cd ../../..
# Run acceptance tests
python tools/test_runner.py --driver python 'tests/acceptance/**/*.yaml' -v
Available Make Targets¶
| Target | Description |
|---|---|
make help |
Show all available targets |
make build |
Build Rust crates and Python bindings |
make test |
Run all tests (Rust, Python, acceptance) |
make lint |
Run all linters |
make format |
Format all code |
make check |
Run lint + security + test |
make clean |
Clean build artifacts |
Code Style¶
Rust¶
Follow Rust conventions:
- snake_case for functions and variables
- CamelCase for types
- SCREAMING_SNAKE_CASE for constants
Python¶
Follow PEP 8 guidelines with type hints.
Pull Request Workflow¶
-
Create a feature branch:
-
Make changes with tests and documentation
-
Run checks locally:
-
Commit with clear messages:
-
Push and open PR:
Creating an ADR¶
For architectural decisions, create an ADR:
Fill out the template and submit with your PR. See Architecture Decisions for examples.
Creating a Feature Spec¶
For new features, create a specification:
See Feature Specs for examples.