Majordome
1 Majordome Home
1.1 Getting Started
Majordome uses build.ps1 to manage Rust, Python, and documentation workflows. The following sections outline the requirements and usage of the build script for Windows users. Building in Linux and macOS should be trivial and the users may adapt the ideas outlined in that script to their platform of choice.
1.1.1 Requirements
- PowerShell (script runner)
- uv (required; virtual environments are created with
uv venv --seed) - Python runtimes available to
uvfor: 3.12, 3.13, 3.14 - Rust toolchain (
cargo) - Quarto CLI (
quarto)
1.1.2 Python Environment Selection
Use -PythonEnv to choose target Python environment(s):
py312py313py314
Examples:
# Build/install for Python 3.12 only
.\build.ps1 -FromPip -PythonEnv py312
# Run Python tests only on Python 3.13
.\build.ps1 -TestPython -PythonEnv py313
# Build wheels for configured Python environment
.\build.ps1 -FromPip -PackageDist -PythonEnv py3121.1.3 Commands
Build options:
-FlagRelease: release mode (rust.debug=false, optimized Rust flags)-FlagBacktrace: enables Rust backtraces-RustCheck: runscargo check-RustCore: builds core Rust crate-TestRust: runscargo test-TestPython: runspyteston selected Python environment(s)-FromPip: installs package in editable mode on selected Python environment(s)-PackageDist: builds wheel(s); requires-FromPip
Documentation options:
-PackageDocs: renders docs (HTML)-FreshDocs: clears cache/output before docs build; requires-PackageDocs-DocsPdf: renders docs PDF; requires-PackageDocs-PublishDocs: publishes docs with Quarto to GitHub Pages
Cleanup options:
-Clean: removes build artifacts (build,target, logs, cache dirs)-DistClean: includes Python venvs anddist
Note: Python environments are created under venv312, venv313, and venv314 and QUARTO_PYTHON is set automatically from the selected environment.
1.1.4 Jupyter Kernel
To register majordome as a Jupyter kernel, run:
majordome --install-kernelYou can customize the kernel identity if needed:
majordome --install-kernel `
--kernel-name majordome-dev `
--display-name "Majordome (dev)"