Skip to main content

Sienna model plugin

Project description

r2x-sienna

Sienna PSY parser/exporter plugin for the r2x-core plugin framework.

CI Actions Quality Python PyPI License

[!WARNING] This project is currently optimized for internal R2X workflows. You are welcome to use it, but APIs and behavior may continue to evolve as r2x-core evolves.

r2x-sienna integrates Sienna-style PSY data with r2x-core and infrasys. It provides parser and exporter plugins, plus version-upgrade utilities for input JSON, so Sienna data can be loaded into System objects and written back out in PSY-compatible form.

Quickstart · Installation · What It Provides · Usage with r2x-core · Development · License

Quickstart

Install:

pip install r2x-sienna

Parse a Sienna JSON system into an infrasys.System, then export it back to PSY JSON:

from pathlib import Path

from r2x_core import DataStore, PluginContext
from r2x_sienna import (
    SiennaConfig,
    SiennaExporter,
    SiennaExporterConfig,
    SiennaParser,
)

data_path = Path("tests/data/case5_pjm_rt/c_sys5_pjm_rt.json")
out_path = Path("output/system.json")

# Parse
parse_cfg = SiennaConfig(
    model_year=2029,
    system_name="PJM-5",
    json_path=str(data_path),
)
parse_ctx = PluginContext(config=parse_cfg, store=DataStore(path=data_path.parent))
parsed_system = SiennaParser.from_context(parse_ctx).run().system

# Export
export_cfg = SiennaExporterConfig(output_path=str(out_path))
export_ctx = PluginContext(config=export_cfg, system=parsed_system, store=DataStore(path=out_path.parent))
SiennaExporter.from_context(export_ctx).run()

Installation

From PyPI

Python requirement: >=3.11, <3.14.

pip install r2x-sienna

Using uv:

uv add r2x-sienna

From Source

git clone https://github.com/NatLabRockies/r2x-sienna.git
cd r2x-sienna
uv sync --all-groups

What It Provides

  • SiennaParser: reads Sienna PSY JSON and related time series metadata into infrasys.System.
  • SiennaExporter: writes infrasys.System back to Sienna-compatible PSY JSON, including supplemental attributes and optional HDF5 time series export.
  • SiennaUpgrader and run_sienna_upgrades(...): version-detection and upgrade pipeline for legacy JSON data before parsing.
  • Plugin entry points for r2x-core under the r2x_plugin group:
    • sienna-parser = r2x_sienna:SiennaParser
    • sienna-exporter = r2x_sienna:SiennaExporter

Usage with r2x-core

r2x-sienna follows the r2x-core plugin lifecycle.

  • Build parser/exporter instances with PluginContext.
  • Run plugin hooks through .run().
  • Access parser/exporter configs through SiennaConfig and SiennaExporterConfig.

The parser on_upgrade() hook automatically runs Sienna data upgrades when json_path is provided, then proceeds with deserialization into a System.

Development

Install dev dependencies:

uv sync --all-groups

Run the same checks used in CI:

uv run prek run --all-files --hook-stage pre-push

Targeted commands:

uv run pytest -q -m "not slow" --maxfail=1 --disable-warnings
uv run ty check ./src/r2x_sienna/

License

BSD 3-Clause. See LICENSE.txt.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

r2x_sienna-0.3.0.tar.gz (55.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

r2x_sienna-0.3.0-py3-none-any.whl (64.5 kB view details)

Uploaded Python 3

File details

Details for the file r2x_sienna-0.3.0.tar.gz.

File metadata

  • Download URL: r2x_sienna-0.3.0.tar.gz
  • Upload date:
  • Size: 55.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.13

File hashes

Hashes for r2x_sienna-0.3.0.tar.gz
Algorithm Hash digest
SHA256 5cab1932f6aa73b3eb57d2bb472744cc050aeb9481b57d3ff7b603990083c270
MD5 11e6f05099009c8c730beee843151491
BLAKE2b-256 7e537ca50b34a4a5855aef548f327b5939976e27cf6b8889af64dbb5cb7b1a66

See more details on using hashes here.

Provenance

The following attestation bundles were made for r2x_sienna-0.3.0.tar.gz:

Publisher: release.yaml on NatLabRockies/r2x-sienna

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file r2x_sienna-0.3.0-py3-none-any.whl.

File metadata

  • Download URL: r2x_sienna-0.3.0-py3-none-any.whl
  • Upload date:
  • Size: 64.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.13

File hashes

Hashes for r2x_sienna-0.3.0-py3-none-any.whl
Algorithm Hash digest
SHA256 2534cb17a542b6d6d479767c14fd964eabd887745caf64fc68a681136a23bec7
MD5 92daeac9b6ad3490f66ce545df6835f3
BLAKE2b-256 39e88a8c75fdf6f5f9987601e8b038421f189d47e1286ec5c66e872cc154d165

See more details on using hashes here.

Provenance

The following attestation bundles were made for r2x_sienna-0.3.0-py3-none-any.whl:

Publisher: release.yaml on NatLabRockies/r2x-sienna

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page