Skip to main content

Crate powerio_pkg

Crate powerio_pkg 

Source
Expand description

powerio-pkg: the .pio.json compiler package.

PowerIO has no single flattened “universal network” struct. It has two concrete static-grid IR families that stay distinct:

  • powerio::BalancedNetwork (the scalar positive-sequence transmission model, historically powerio::Network);
  • [powerio_dist::MulticonductorNetwork] (the wire-coordinate distribution model, historically powerio_dist::DistNetwork).

A NetworkPackage is the readable envelope that wraps exactly one of those payloads at a time, alongside the metadata a compiler artifact needs to be trustworthy: an explicit ModelKind, producer and origin metadata, source maps, structured diagnostics, a validation summary, and lowering history. It can also carry optional operating points that replay state updates over the static payload. GOC3 packages use that block for the source time series: the payload holds one static interval, and NetworkPackage::materialize_operating_point derives another static package from a selected period. It serializes to .pio.json. See docs/src/compiler-ir.md for the architecture and docs/src/pio-json-schema.md for the field reference.

The package always carries NetworkPackage::model_kind explicitly; a reader must never infer whether the payload is balanced or multiconductor from which field is present. NetworkPackage::kind_is_consistent asserts the explicit kind agrees with the payload variant.

use powerio_pkg::{NetworkPackage, ModelKind};

let net = powerio::BalancedNetwork::in_memory("demo", 100.0, vec![], vec![]);
let pkg = NetworkPackage::from_balanced(net);
assert_eq!(pkg.model_kind(), ModelKind::Balanced);
assert!(pkg.kind_is_consistent());
let json = pkg.to_json_pretty().unwrap();
let back = NetworkPackage::from_json(&json).unwrap();
assert_eq!(back.model_kind(), ModelKind::Balanced);

Binary .pio is out of scope until the JSON package stabilizes; this crate is JSON only.

Re-exports§

pub use diagnostics::DiagnosticCode;
pub use diagnostics::DiagnosticSeverity;
pub use diagnostics::DiagnosticStage;
pub use diagnostics::StructuredDiagnostic;
pub use lowering::LoweringRecord;
pub use lowering::MulticonductorToBalancedError;
pub use lowering::MulticonductorToBalancedLowering;
pub use lowering::MulticonductorToBalancedOptions;
pub use lowering::MulticonductorToBalancedReadiness;
pub use lowering::SequenceTransformConvention;
pub use lowering::check_multiconductor_to_balanced_lowering;
pub use lowering::lower_multiconductor_to_balanced;
pub use model::ModelKind;
pub use model::ModelPayload;
pub use operating::ElementRef;
pub use operating::ElementUpdate;
pub use operating::OperatingPoint;
pub use operating::OperatingPointSeries;
pub use operating::TimeAxis;
pub use package::DerivedMetadata;
pub use package::NetworkPackage;
pub use package::NormalizedSolverTableMetadata;
pub use package::NormalizedSolverTableRowCounts;
pub use package::NormalizedSolverTableSourceRows;
pub use package::PIO_PACKAGE_SCHEMA_URL;
pub use package::PIO_PACKAGE_SCHEMA_VERSION;
pub use package::PIO_PAYLOAD_BALANCED_SCHEMA_URL;
pub use package::PIO_PAYLOAD_BALANCED_SCHEMA_VERSION;
pub use package::PIO_PAYLOAD_MULTICONDUCTOR_SCHEMA_URL;
pub use package::PIO_PAYLOAD_MULTICONDUCTOR_SCHEMA_VERSION;
pub use provenance::Confidence;
pub use provenance::MappingKind;
pub use provenance::Origin;
pub use provenance::Producer;
pub use provenance::SourceDescriptor;
pub use provenance::SourceMapEntry;
pub use provenance::SourceRef;
pub use summary::ObjectSummary;
pub use summary::ObjectTopology;
pub use summary::ObjectUnits;
pub use validation::ValidationCounts;
pub use validation::ValidationPass;
pub use validation::ValidationStatus;
pub use validation::ValidationSummary;

Modules§

diagnostics
Structured diagnostics.
lowering
Lowering records and preflight checks.
model
The model kind and the single typed IR payload.
operating
Replayable operating point overlays for .pio.json packages.
package
The .pio.json root object.
provenance
Producer, origin, source descriptors, and source maps.
summary
A human-oriented summary of the payload.
validation
The package-level validation summary.