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.19.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.19.1
File Actions
novomodelo_python-0.19.1-cp312-abi3-win_amd64.whl CPython 3.12 abi3 Windows x86-64 Details for novomodelo_python-0.19.1-cp312-abi3-win_amd64.whl
novomodelo_python-0.19.1-cp312-abi3-musllinux_1_2_x86_64.whl CPython 3.12 abi3 Linux musl 1.2+ x86-64 Details for novomodelo_python-0.19.1-cp312-abi3-musllinux_1_2_x86_64.whl
novomodelo_python-0.19.1-cp312-abi3-manylinux_2_34_x86_64.whl CPython 3.12 abi3 Linux glibc 2.34+ x86-64 Details for novomodelo_python-0.19.1-cp312-abi3-manylinux_2_34_x86_64.whl
novomodelo_python-0.19.1-cp312-abi3-manylinux_2_28_aarch64.whl CPython 3.12 abi3 Linux glibc 2.28+ ARM64 Details for novomodelo_python-0.19.1-cp312-abi3-manylinux_2_28_aarch64.whl
novomodelo_python-0.19.1-cp312-abi3-macosx_11_0_arm64.whl CPython 3.12 abi3 macOS 11.0+ ARM64 Details for novomodelo_python-0.19.1-cp312-abi3-macosx_11_0_arm64.whl
novomodelo_python-0.19.1-cp312-abi3-macosx_10_12_x86_64.whl CPython 3.12 abi3 macOS 10.12+ x86-64 Details for novomodelo_python-0.19.1-cp312-abi3-macosx_10_12_x86_64.whl

Total release size: 61.2 MB

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

Download URL novomodelo_python-0.19.1-cp312-abi3-win_amd64.whl
Size 8.2 MB
Tags CPython 3.12 Windows x86-64 abi3
SHA-256 checksum
How to use checksums
5a4106765a92c3b69a7a1709fbbf45ce881e1306fc72860321eb86be77eb05c8
BLAKE2b-256 checksum
How to use checksums
5adc4e7f5f87cef5aae9c6a2175940697cba97d129bb62043c70bd83e58f2383
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

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 26, 2026.

Transparency log

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

Download URL novomodelo_python-0.19.1-cp312-abi3-musllinux_1_2_x86_64.whl
Size 16.3 MB
Tags CPython 3.12 Linux musl 1.2+ x86-64 abi3
SHA-256 checksum
How to use checksums
74928fe2e002df16472cd1d4c1072090b59d3586d5f5388828fea864ddba87e1
BLAKE2b-256 checksum
How to use checksums
3c056f41f8b22cdffd376dcd295a312351e785e7b7d1e6399a40a31ba02b0039
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

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 26, 2026.

Transparency log

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

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

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 26, 2026.

Transparency log

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

Download URL novomodelo_python-0.19.1-cp312-abi3-manylinux_2_28_aarch64.whl
Size 9.3 MB
Tags CPython 3.12 Linux glibc 2.28+ ARM64 abi3
SHA-256 checksum
How to use checksums
39074c82a1a1c90e9edf1745896e17e9468602137be272efd28c3ae05385f37c
BLAKE2b-256 checksum
How to use checksums
cacde49de17243ca4330d1448c791c1360b6af8a84fa730ed8dbe6d3890ffdd1
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

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 26, 2026.

Transparency log

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

Download URL novomodelo_python-0.19.1-cp312-abi3-macosx_11_0_arm64.whl
Size 8.4 MB
Tags CPython 3.12 abi3 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
be66a42261dde80cde64b0d487e768a857f4ab4cd17e810b3f62beeffbf42eed
BLAKE2b-256 checksum
How to use checksums
157d5721351602e9f7b34a91681016636926de791ac159a8966de7eb9d910466
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

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 26, 2026.

Transparency log

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

Download URL novomodelo_python-0.19.1-cp312-abi3-macosx_10_12_x86_64.whl
Size 9.2 MB
Tags CPython 3.12 abi3 macOS 10.12+ x86-64
SHA-256 checksum
How to use checksums
e9840310965c893c77155d6e6a620786b05d410aa19bc3a1d9a93ffae30b4aa2
BLAKE2b-256 checksum
How to use checksums
8bc6c4a8a2d78756cf62fd8e4bee0ceec95ba9f6791d428466050e81519b36e2
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

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 26, 2026.

Transparency log

Security for novomodelo-python 0.19.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.19.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 26, 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