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.0

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

Total release size: 61.2 MB

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

Download URL novomodelo_python-0.19.0-cp312-abi3-win_amd64.whl
Size 8.2 MB
Tags CPython 3.12 Windows x86-64 abi3
SHA-256 checksum
How to use checksums
e44856c8ea19b037bff927bd66c33cb2a6680bd0b800973b376e3bdc88dec544
BLAKE2b-256 checksum
How to use checksums
2d6869cfe3bf907bec22f51f2da26a9bc12d11a2e17c7e1342767e15900a941c
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 20, 2026.

Transparency log

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

Download URL novomodelo_python-0.19.0-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
f701565f98e04430fe337e552c63e8b7897174ac22680fea72dbcd1854249f30
BLAKE2b-256 checksum
How to use checksums
4dda886372b997cb8d55919f85fdf92184160fc16872074e0079351917ae58d3
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 20, 2026.

Transparency log

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

Download URL novomodelo_python-0.19.0-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
561f9dfb502e62e988f8ac38a38b707b61ad11ff8295dc9f6aaa40fda2c30812
BLAKE2b-256 checksum
How to use checksums
4fff2f4c5eaf2b99cf981c206fad90915a3a0838a16d51f43ab962a7513bd135
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 20, 2026.

Transparency log

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

Download URL novomodelo_python-0.19.0-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
111549c545d7246d21d128ba6fe0096f38660a7814ce90705b167c55cd2d6599
BLAKE2b-256 checksum
How to use checksums
d21624e2a03eee2089c718ae776f7fd1de5726a1b27f65d5ff8983bdcb126964
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 20, 2026.

Transparency log

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

Download URL novomodelo_python-0.19.0-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
0a0ffc68732ecd0e904506b7b96d27899c119af4fa8551f84c5af0143e8aa6df
BLAKE2b-256 checksum
How to use checksums
f694d72e9fc516d1ee3c52f4ce8d172311c08ae6d964c390bcf755adfb688aab
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 20, 2026.

Transparency log

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

Download URL novomodelo_python-0.19.0-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
18a719e090208d933c7bbfa7f38ff808ec3c9787eca27afa0c817e3dbe01c5ac
BLAKE2b-256 checksum
How to use checksums
4a244efaf93df23fb3d1d503afe7bee8ddeb7386b46dfccfa18f3e7484243648
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 20, 2026.

Transparency log

Security for novomodelo-python 0.19.0

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.0-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 20, 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