Skip to content

Latest commit

 

History

History
98 lines (70 loc) · 2.19 KB

File metadata and controls

98 lines (70 loc) · 2.19 KB

Development Setup

This section collects the setup steps needed before building, testing, or contributing changes.

Package Installation

If you are consuming NeMo Flow rather than developing this repository, install the published package for your language. Use Installation for package-manager commands covering the CLI, Python, Node.js, Rust, and supported integrations.

Go, WebAssembly, and the raw FFI surface are currently experimental and remain source-first.

Source Development

Install these tools before you start:

  • Rust stable
  • Python 3.11 or newer
  • uv
  • just
  • Go 1.21 or newer
  • Node.js LTS
  • wasm-pack
  • cargo-deny

If you touch Go, WebAssembly, or the raw FFI surface, build and validate those bindings from source in the same branch.

Clone the repository and build the workspace:

git clone <repo-url> && cd NeMo-Flow
uv sync
cargo install just --locked
uv run pre-commit install
just build-rust
just build-python
just build-node

Validate the source builds for the experimental bindings when you touch them:

cd go/nemo_flow
CGO_LDFLAGS="-L../../target/release" LD_LIBRARY_PATH="${LD_LIBRARY_PATH:+${LD_LIBRARY_PATH}:}../../target/release" go test -v ./...
cd ../..

wasm-pack test --node crates/wasm

Branch Naming

Use these prefixes:

  • feat/
  • fix/
  • docs/
  • test/
  • refactor/

Code Style

These style requirements keep contributions consistent across Rust, Python, Go, and general repository files.

Rust

Use these Rust commands and conventions when changing the core runtime or Rust-facing API surface.

  • cargo fmt
  • cargo clippy -- -D warnings
  • cargo deny check

Python

Use these Python commands and conventions when changing the wrapper package, tests, or docs tooling.

  • Ruff linting
  • Ruff formatting
  • ty type checking

General

These general conventions apply across files and language surfaces.

  • Follow binding-appropriate naming conventions.
  • Keep SPDX headers intact.
  • Preserve the shared lifecycle and middleware model across bindings.