Skip to main content

novomodelo

Python bindings for the Novomodelo power systems solver.

Novomodelo is a high-performance SDDP (Stochastic Dual Dynamic Programming) solver for hydrothermal dispatch, written in Rust. This package provides Python access to case loading, validation, training, simulation, and result inspection.

Installation

pip install novomodelo-python

Prebuilt wheels are published for:

  • Linux x86_64 (manylinux_2_34)
  • Linux aarch64 (manylinux_2_28)
  • Linux musl x86_64 (musllinux_1_2)
  • macOS Apple Silicon (aarch64) and Intel (x86_64)
  • Windows x86_64
  • Python 3.12+

Elsewhere, build the package from the root of a clone made with git clone --recurse-submodules (the solvers are vendored as submodules), with a Rust toolchain (1.88+):

pip install ./crates/novomodelo-python

Quick Start

import novomodelo

# Load and validate a case
system = novomodelo.io.load_case("path/to/case")
print(
    f"System: {system.n_buses} buses, {system.n_hydros} hydros, {system.n_thermals} thermals"
)

# Run training + simulation
result = novomodelo.run.run("path/to/case", output_dir="output/")
print(f"Converged: {result['converged']}, LB: {result['lower_bound']:.2f}")

convergence = novomodelo.results.load_convergence("output/")
print(f"Iterations: {len(convergence)}")

simulation = novomodelo.results.load_simulation("output/")
print(f"Cost records: {len(simulation['costs'])}")

policy = novomodelo.results.load_policy("output/")
print(f"Iterations completed: {policy['metadata']['producer']['completed_iterations']}")

The same workflow, driven step by step:

# The Study lifecycle — construct, train, simulate
study = novomodelo.Study("path/to/case", output_dir="output/")
policy = study.train()
summary = study.simulate(policy)
print(f"Scenarios: {summary['n_scenarios']}, Completed: {summary['completed']}")

# Inspect the study before running any phase
print(f"Stages: {study.stochastic['n_stages']}, Seed: {study.stochastic['seed']}")

Modules

  • novomodelo.io — Load and validate case directories
  • novomodelo.model — Data model classes (System, Bus, Line, Thermal, Hydro, etc.)
  • novomodelo.run — Execute SDDP training and simulation
  • novomodelo.results — Load and inspect output artifacts, including convergence history, Parquet simulation outputs, and FlatBuffers policy (FCF) checkpoints
  • novomodelo.schema — JSON Schema export for case-directory input types
  • novomodelo.errors — Typed exception hierarchy for case-loading and solver errors

The package also exports Study, Policy, write_policy_checkpoint, and version_info at the top level.

Requirements

  • Python >= 3.12
  • No runtime dependencies (the Rust solver is statically linked)

License

Apache-2.0 — see LICENSE.

Metadata

Release files for novomodelo-python 0.18.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Built distributions (wheels)

Table of built distributions (wheels) for novomodelo-python 0.18.1
File Actions
novomodelo_python-0.18.1-cp312-abi3-win_amd64.whl CPython 3.12 abi3 Windows x86-64 Details for novomodelo_python-0.18.1-cp312-abi3-win_amd64.whl
novomodelo_python-0.18.1-cp312-abi3-musllinux_1_2_x86_64.whl CPython 3.12 abi3 Linux musl 1.2+ x86-64 Details for novomodelo_python-0.18.1-cp312-abi3-musllinux_1_2_x86_64.whl
novomodelo_python-0.18.1-cp312-abi3-manylinux_2_34_x86_64.whl CPython 3.12 abi3 Linux glibc 2.34+ x86-64 Details for novomodelo_python-0.18.1-cp312-abi3-manylinux_2_34_x86_64.whl
novomodelo_python-0.18.1-cp312-abi3-manylinux_2_28_aarch64.whl CPython 3.12 abi3 Linux glibc 2.28+ ARM64 Details for novomodelo_python-0.18.1-cp312-abi3-manylinux_2_28_aarch64.whl
novomodelo_python-0.18.1-cp312-abi3-macosx_11_0_arm64.whl CPython 3.12 abi3 macOS 11.0+ ARM64 Details for novomodelo_python-0.18.1-cp312-abi3-macosx_11_0_arm64.whl
novomodelo_python-0.18.1-cp312-abi3-macosx_10_12_x86_64.whl CPython 3.12 abi3 macOS 10.12+ x86-64 Details for novomodelo_python-0.18.1-cp312-abi3-macosx_10_12_x86_64.whl

Total release size: 60.0 MB

Release files / novomodelo_python-0.18.1-cp312-abi3-win_amd64.whl

Download URL novomodelo_python-0.18.1-cp312-abi3-win_amd64.whl
Size 8.0 MB
Tags CPython 3.12 Windows x86-64 abi3
SHA-256 checksum
How to use checksums
4ac3fd8ed5e9698337fae33dae58b54a416464a25d919785e9f8dbc43d8aae6f
BLAKE2b-256 checksum
How to use checksums
a3f3402581540c881a79c7681c52912048310c6dc040d1d319457872e1bfa774
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 14, 2026.

Transparency log

Release files / novomodelo_python-0.18.1-cp312-abi3-musllinux_1_2_x86_64.whl

Download URL novomodelo_python-0.18.1-cp312-abi3-musllinux_1_2_x86_64.whl
Size 16.0 MB
Tags CPython 3.12 Linux musl 1.2+ x86-64 abi3
SHA-256 checksum
How to use checksums
bcd00a6aa29ec8d7cf7297301dc7b66c230f6e16fb732dddef56e291d541842e
BLAKE2b-256 checksum
How to use checksums
1c1ab1595345bf4a6c2a3b6a97fc1303c5f44a58efad1913302280895cd233ee
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 14, 2026.

Transparency log

Release files / novomodelo_python-0.18.1-cp312-abi3-manylinux_2_34_x86_64.whl

Download URL novomodelo_python-0.18.1-cp312-abi3-manylinux_2_34_x86_64.whl
Size 9.7 MB
Tags CPython 3.12 Linux glibc 2.34+ x86-64 abi3
SHA-256 checksum
How to use checksums
21206834f1234f2000ab11f9c1d075a3d44afefc9798d19f5e4b5ef8db27e921
BLAKE2b-256 checksum
How to use checksums
b9179638f2f3abde3a07ae67067e2bc14d93e540887ecf173f2b0adbfa1561ce
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 14, 2026.

Transparency log

Release files / novomodelo_python-0.18.1-cp312-abi3-manylinux_2_28_aarch64.whl

Download URL novomodelo_python-0.18.1-cp312-abi3-manylinux_2_28_aarch64.whl
Size 9.1 MB
Tags CPython 3.12 Linux glibc 2.28+ ARM64 abi3
SHA-256 checksum
How to use checksums
f50b853e99b9a40523a2c47a90b9dc9981a35431c918028ac3c16517459bd89e
BLAKE2b-256 checksum
How to use checksums
dbc96984fb6e9dc331046195fed4f71e09cfc12b496820d8ad4b40766dedf6f2
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 14, 2026.

Transparency log

Release files / novomodelo_python-0.18.1-cp312-abi3-macosx_11_0_arm64.whl

Download URL novomodelo_python-0.18.1-cp312-abi3-macosx_11_0_arm64.whl
Size 8.2 MB
Tags CPython 3.12 abi3 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
ea2a9c4d09bb03c542c125ca3fa4c112e1189f2bf3c3266c27fb9e2d38504e04
BLAKE2b-256 checksum
How to use checksums
a661b7518425c04c3a91fff09664ff64fb4369d8f5b9bc382b7e54daab277a3e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 14, 2026.

Transparency log

Release files / novomodelo_python-0.18.1-cp312-abi3-macosx_10_12_x86_64.whl

Download URL novomodelo_python-0.18.1-cp312-abi3-macosx_10_12_x86_64.whl
Size 9.0 MB
Tags CPython 3.12 abi3 macOS 10.12+ x86-64
SHA-256 checksum
How to use checksums
7bfb3e4f5230b58cc292eb7efe0f9511a39efe198653914a59624462b4afc92b
BLAKE2b-256 checksum
How to use checksums
995b0cc939cee116defbb7e9511cfcc88fabdcdf3bdd84d34c604ae25d590806
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 14, 2026.

Transparency log

Security for novomodelo-python 0.18.1

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

Full provenance

All 6 files in this release have been uploaded with provenance metadata.

Select from 6 files

Attestation for novomodelo_python-0.18.1-cp312-abi3-win_amd64.whl

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 14, 2026.

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page