Setup

Python projects using this standard use uv for environment management, dependency locking, builds, and tool execution.

Required Tools

Development Commands

uv sync --all-extras
uv run dev-std audit .
uv run rack run --all
uv run python -m build
uv run twine check dist/*

CI Order

CI should run dev-std audit . as the first governance job for the package or workspace, then gate expensive test, build, platform, hardware, and release jobs on that result. See CI Standard for GitHub Actions and GitLab CI examples.

Lockfile Policy

Commit uv.lock. Do not hand-edit it. CI must fail when the lock is stale.

Distribution

wn-dev-std is published to PyPI so downstream projects can pin a reviewed governance tool version in CI. GitHub Release publication triggers release validation, including trusted publishing checks, before a release is treated as ready for downstream use. Projects based on this standard may opt into PyPI trusted publishing, internal publishing, or no publishing. The installed command is dev-std; wn-dev-std remains available as a compatibility alias.

Pure Python packages treat dist/ as transient build output. Native or binary-backed projects may stage artifacts under grouped paths such as dist/native/windows-x64/ and dist/wasm/browser/. Projects using this policy must document each artifact role, regeneration command, and release inclusion rule.

Mixed-mode projects should run native validation before wheel validation, then install the built wheel in a clean environment and smoke the public Python API plus the bundled command-line executable.

C++ Tooling

C++ projects use CMake, CTest, Ninja, clang-format, and clang-tidy. The reference formatter and clang-tidy starter files live under docs/templates/cpp/. CMake presets must enable CMAKE_EXPORT_COMPILE_COMMANDS=ON.

Zephyr Tooling

Zephyr firmware projects use west, the project-selected Zephyr SDK, dtc, LLVM tools, Python with Lizard, and any required flashing tools. The first Zephyr templates live under docs/templates/zephyr/. App-local build scripts should enable CMAKE_EXPORT_COMPILE_COMMANDS=ON, run prebuild signoff before west build, and run postbuild signoff after a successful build.