Skip to main content

PowerIO

Rust Python Julia binding crates.io docs.rs PyPI MSRV 1.88 License: MIT OR Apache-2.0

PowerIO format and matrix flow

PowerIO reads power system data into typed values, writes those values back out in the formats other tools read, and builds the sparse matrices and graph data that solvers consume. The core is Rust, and the Python package, the Julia package PowerIO.jl, and the C ABI expose the same operations under the same names.

A parse returns a PioModule, which is one typed value together with its sources, diagnostics, source map, and history. Depending on what the source declares, the value is a network, a calculation instance, a solution, a time series, a scenario set, or a geographic layer.

Install

cargo add powerio                 # parsing, emission, PowerIO IR
cargo add powerio -F matrix       # and sparse matrices, sensitivities, graph data
pip install powerio               # pip install 'powerio[all]' adds SciPy, NetworkX, Polars
julia -e 'using Pkg; Pkg.add("PowerIO")'
cargo install powerio-cli         # the powerio command

Parse and emit

The examples use case9.m, the nine-bus MATPOWER case included in this repository. Save it in your working directory first, or replace "case9.m" with the path to your own case.

Rust:

use powerio::{PioValue, emit, parse};

fn main() -> Result<(), Box<dyn std::error::Error>> {
    let module = parse("case9.m")?;
    let PioValue::BalancedNetwork(network) = module.value() else {
        panic!("expected a balanced network");
    };
    assert_eq!(network.buses().len(), 9);
    emit(&module, "matpower", "copy.m")?;   // the source bytes, unchanged
    let result = emit(&module, "psse", "case9.raw")?;
    for finding in result.diagnostics() {
        eprintln!("{}", finding.code());    // what PSS/E cannot carry
    }
    Ok(())
}

Python:

import powerio

module = powerio.parse("case9.m")
network = module.value
assert isinstance(network, powerio.BalancedNetwork)
module.diagnostics                          # the reader's findings
powerio.emit(module, "matpower", "copy.m")  # the source bytes, unchanged
result = powerio.emit(module, "psse")       # text in memory plus findings

Julia:

using PowerIO

module_ = parse("case9.m")            # PioModule{BalancedNetwork}
net = module_.value
length(net.buses)                     # 9
module_.diagnostics
emit(module_, "matpower", "copy.m")

Command line:

powerio convert case9.m --to psse -o case9.raw
powerio serialize case9.m -o case9.pio.json
powerio verify case9.m --kind bdoubleprime
powerio sensitivities case9.m -o out

If you write an unchanged module back to its own format, you get the source back byte for byte. If you write it to another format, PowerIO keeps what that format can represent and reports each loss as a diagnostic with a stable code, so you can see what the conversion dropped. serialize and deserialize write and read PowerIO IR, the JSON document that stores a complete module for another PowerIO consumer to read back. It preserves the typed data and its history; retained source bytes stay in the running process. After deserialization, emit writes fresh output from the stored value.

Upgrading from 0.10? Start with the migration guide. PowerIO 0.11.3 keeps PowerIO IR generation 2 and C ABI 7; these version numbers describe separate interfaces.

Formats

Format Token Read Write
MATPOWER .m matpower yes yes
PSS/E RAW psse, psse34, psse35 revisions 32 to 35 33, 34, 35
PSS/E RAWX psse-rawx revision 35 35
PowSybl XIIDM xiidm 1.0 to 1.17 1.17
PowSybl JIIDM jiidm 1.0 to 1.17 1.17
CIM CGMES profile set cgmes 2.4.15, 3.0 3.0
ENTSO-E UCTE-DEF .uct ucte 2003.09.01, 2007.05.01 2007.05.01
PowerWorld .aux powerworld yes yes
PowerWorld .pwb pwb yes no
PowerWorld .pwd display powerworld-pwd as a geographic layer no
GE PSLF .epc pslf yes yes
IEEE Common Data Format ieee-cdf yes no
PowerModels JSON powermodels-json yes yes
Egret JSON egret-json yes yes
pandapower JSON pandapower-json yes yes
PyPSA CSV directory pypsa-csv yes yes
Surge JSON surge-json yes yes
GridFM Parquet directory gridfm yes yes
DOE GO Challenge 3 JSON goc3-json problem, or problem with solution a complete solution
DeepMind OPFData JSON opfdata-json yes no
OpenDSS .dss dss yes yes
PowerModelsDistribution engineering JSON pmd-json yes yes
BMOPF JSON bmopf-json 0.1.0, 0.2.0 0.2.0
Geographic layer .geo.json geo-json yes yes

The balanced transmission formats parse to BalancedNetwork, and OpenDSS, PMD, and BMOPF parse to MulticonductorNetwork. A GO Challenge 3 problem parses to AcScucInstance, a problem with its solution to AcScucSolution, an OPFData file to AcOpfSolution, a GridFM dataset to ScenarioSet<BalancedNetwork>, and a PyPSA directory with several snapshots to a TimeSeries. The format guide says what each reader keeps, what each writer reports, and how each is checked against its reference implementation.

Packages

Start with powerio in an application. The component crates let libraries depend on just the layer they use.

Crate Provides
powerio PioValue, parse, emit, serialize, deserialize
powerio-core Source, PioModule, diagnostics, collections, destinations
powerio-tx BalancedNetwork and balanced format readers and writers
powerio-dist MulticonductorNetwork and OpenDSS, PMD, BMOPF converters
powerio-prob Operating points, updates, calculation instances and solutions
powerio-matrix Sparse matrices, sensitivities, DC OPF bundles and graph data
powerio-cli The powerio command and its terminal interface
powerio-py The native extension used by the Python package
powerio-capi C ABI 7, used by Julia and other FFI bindings

powerio-tx and powerio-dist share powerio-core and nothing else, so a distribution consumer pulls in no transmission code. powerio-prob is matrix free. The powerio facade re-exports the component crates, with powerio-matrix behind its matrix feature.

Documentation

License

Apache License 2.0 or MIT License, at your option.

Metadata

Release files for powerio 0.11.3

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

Source distribution (sdist)

Source distribution for powerio 0.11.3
File Size Uploaded
powerio-0.11.3.tar.gz 2.0 MB Details

Built distributions (wheels)

Table of built distributions (wheels) for powerio 0.11.3
File
powerio-0.11.3-cp39-abi3-win_amd64.whl CPython 3.9 abi3 Windows x86-64 Details
powerio-0.11.3-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.9 abi3 Linux glibc 2.17+ x86-64 Details
powerio-0.11.3-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl CPython 3.9 abi3 Linux glibc 2.17+ ARM64 Details
powerio-0.11.3-cp39-abi3-macosx_11_0_arm64.whl CPython 3.9 abi3 macOS 11.0+ ARM64 Details
powerio-0.11.3-cp39-abi3-macosx_10_12_x86_64.whl CPython 3.9 abi3 macOS 10.12+ x86-64 Details

Total release size: 48.3 MB

Release files / powerio-0.11.3.tar.gz

Download URL powerio-0.11.3.tar.gz
Size 2.0 MB
Tags Source
SHA-256 checksum
How to use checksums
e22e74368bd95aed48acdb7f2df5c91df4033f3d54fdf7a94beb477d93561932
BLAKE2b-256 checksum
How to use checksums
38337667e56b61660d1b9a2207783ad05828f8769acdacf89b3237d806c33c91
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 Sep 17, 2026.

Transparency log

Release files / powerio-0.11.3-cp39-abi3-win_amd64.whl

Download URL powerio-0.11.3-cp39-abi3-win_amd64.whl
Size 10.3 MB
Tags CPython 3.9 Windows x86-64 abi3
SHA-256 checksum
How to use checksums
de82b77a4d65bf6c3e3d7d1c16ac221f48b1801c69212135a156b840f351ba21
BLAKE2b-256 checksum
How to use checksums
0b9c55659835c93c0d2212914bb142cd2888c4227a79579e30e096cac751c410
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 Sep 17, 2026.

Transparency log

Release files / powerio-0.11.3-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL powerio-0.11.3-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 9.6 MB
Tags CPython 3.9 Linux glibc 2.17+ x86-64 abi3
SHA-256 checksum
How to use checksums
f8dd078a52a7dec81a8f8c6d084cedce5f3becd018484a69e90e4a9b4641fdfc
BLAKE2b-256 checksum
How to use checksums
5d7728bce0cf0e427d08960ca40f7f8bca4ae0272baa21c5ae0c38434c16abbd
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 Sep 17, 2026.

Transparency log

Release files / powerio-0.11.3-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl

Download URL powerio-0.11.3-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Size 8.6 MB
Tags CPython 3.9 Linux glibc 2.17+ ARM64 abi3
SHA-256 checksum
How to use checksums
69b32282d9f0b9c5ae8dc6d9a833e9292fa2788d9997dccbab7f26336cbf8485
BLAKE2b-256 checksum
How to use checksums
e79b906729444b2e4aba48e77198d7cfae1395f020a2dd9afedfd29348a64725
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 Sep 17, 2026.

Transparency log

Release files / powerio-0.11.3-cp39-abi3-macosx_11_0_arm64.whl

Download URL powerio-0.11.3-cp39-abi3-macosx_11_0_arm64.whl
Size 8.4 MB
Tags CPython 3.9 abi3 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
bef530dc8d28dc6254efd80d63c38ee73b1176aaf0a91e51d3f69ab5e6825965
BLAKE2b-256 checksum
How to use checksums
fddc751c9ced7e83fbf9812ab8082dcd3fb21008b64b0e5087bc9eceba6e1004
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 Sep 17, 2026.

Transparency log

Release files / powerio-0.11.3-cp39-abi3-macosx_10_12_x86_64.whl

Download URL powerio-0.11.3-cp39-abi3-macosx_10_12_x86_64.whl
Size 9.3 MB
Tags CPython 3.9 abi3 macOS 10.12+ x86-64
SHA-256 checksum
How to use checksums
bc1e3a42df944b1bb3d7d2d2f96d8559631e3d184b829d548fa183186a3e4eaa
BLAKE2b-256 checksum
How to use checksums
a28a9804173c98db0bcf87b3e0226988381fc2adc7877ccdcabbfcfc59061a2b
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 Sep 17, 2026.

Transparency log

Release history Release notifications | RSS feed

0.11.5

6 release files

This release

0.11.3 This release

6 release files

0.11.2

6 release files

0.11.1

6 release files

0.10.0

6 release files

0.9.0

6 release files

0.8.3

6 release files

0.8.2

6 release files

0.8.1

6 release files

0.7.3

6 release files

0.7.2

6 release files

0.7.1

6 release files

0.7.0

6 release files

0.6.3

6 release files

0.6.2

6 release files

0.6.1

6 release files

0.6.0

6 release files

0.5.1

6 release files

0.5.0

6 release files

0.4.0

6 release files

0.3.3

6 release files

0.3.2

6 release files

0.3.1

6 release files

0.3.0

6 release files

0.2.4

6 release files

0.2.3

6 release files

0.2.2

6 release files

0.2.1

6 release files

0.2.0

6 release files

0.1.1

6 release files

0.1.0

6 release files

0.0.1

6 release files

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