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

Nothing is published to PyPI under this name. From the root of a clone made with git clone --recurse-submodules (the solvers are vendored as submodules), build and install the package with a Rust toolchain (1.88+) and Python 3.12+:

pip install ./crates/novomodelo-python

A project can also depend on a tagged release through a git URL, for example novomodelo-python @ git+https://github.com/ons-ccee-epe/novomodelo@v0.18.0#subdirectory=crates/novomodelo-python.

The wheel workflow (.github/workflows/release-python.yml) builds for the platforms below; its wheels are not published to PyPI:

  • 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+

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

Total release size: 60.0 MB

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

Download URL novomodelo_python-0.18.0-cp312-abi3-win_amd64.whl
Size 8.0 MB
Tags CPython 3.12 Windows x86-64 abi3
SHA-256 checksum
How to use checksums
0e59281e448e74cea9445be8c27107bfd932daa6aeeadb61c4ba62285e93fec5
BLAKE2b-256 checksum
How to use checksums
10ccf17902c4f8ace270384dfa38a83df9309b8fe946077255b6264e37522b21
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 8, 2026.

Transparency log

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

Download URL novomodelo_python-0.18.0-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
c9525b9fc49b9a6795ba886d0ac611debf7ca9bdef6b230e71864477e265a3dc
BLAKE2b-256 checksum
How to use checksums
09398e15effbf2f515245a3e8d0dcb99363fbdc5b78903a28e674181214582f3
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 8, 2026.

Transparency log

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

Download URL novomodelo_python-0.18.0-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
c72696ead7ffa9d6db007327cd3034278b4141df0371a9e4628a35e510fba65b
BLAKE2b-256 checksum
How to use checksums
913cfacf099663a339410261ed669f99e35de5f602226277d49aa58007e2c802
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 8, 2026.

Transparency log

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

Download URL novomodelo_python-0.18.0-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
0bb168f676b0c00ad7c4dac605aecba404ec89c53bdc00819d5f99904920facf
BLAKE2b-256 checksum
How to use checksums
abaa8bef2a9128d02f0041acb8b7e2f0119396e37badcbe61a8a593bec1ae76c
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 8, 2026.

Transparency log

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

Download URL novomodelo_python-0.18.0-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
384187728a0b73443f30f03f9ea2b40d8b2cd9fd8cbbb85c8960d6e42b1b17b8
BLAKE2b-256 checksum
How to use checksums
694f7acc13e2abc560da398fb3d00df17486aac8440b92f1e3a728fa444ae90c
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 8, 2026.

Transparency log

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

Download URL novomodelo_python-0.18.0-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
bed1feeebfb804f51499fa5d348e06cc0ee9a7905398f1f542f54b54a0be5f0e
BLAKE2b-256 checksum
How to use checksums
2059c0dbb6f4cba6ed82ff1e4f49a13ad64988f6577e3d299de74f84e61d6cea
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 8, 2026.

Transparency log

Security for novomodelo-python 0.18.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.18.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 8, 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