Majordome

Author

Walter Dal’Maz Silva

Published

April 2, 2026

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 uv for: 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):

  • py312
  • py313
  • py314

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 py312

1.1.3 Commands

Build options:

  • -FlagRelease: release mode (rust.debug=false, optimized Rust flags)
  • -FlagBacktrace: enables Rust backtraces
  • -RustCheck: runs cargo check
  • -RustCore: builds core Rust crate
  • -TestRust: runs cargo test
  • -TestPython: runs pytest on 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 and dist

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-kernel

You can customize the kernel identity if needed:

majordome --install-kernel `
    --kernel-name majordome-dev `
    --display-name "Majordome (dev)"