Skip to main content

infrasys

CI Codecov PyPI Ruff Python Conventional Commits License Docs release-please Docs (GitHub Pages)

infrasys is a lightweight data store that keeps track of components, their attributes, and time series for energy infrastructure models. The core package is opinionated about validation, unit handling, and data migration so that downstream modeling packages can focus on solving their domain problems instead of managing persistence concerns.

Highlights

  • Typed components with pint validation: Base models derive from pydantic and use pint quantities whenever a physical unit is involved.
  • Flexible time-series storage: Arrow, HDF5, Chronify, and in-memory backends are available via System configuration to match your compute environment.
  • Efficient serialization: Components, supplemental attributes, and nested systems are serialized to JSON with automatic metadata and optional migration hooks.
  • Designed for extension: Derive your own System classes, override component addition logic, or ship supplemental attributes alongside the core storage.

Getting started

Install

pip install git+https://github.com/NREL/infrasys.git@main
pip install "infrasys[chronify]"  # optional backend for Chronify/duckdb-based storage

Don’t forget to install pre-commit hooks so your push meets project quality checks:

pre-commit install

Quick example

from infrasys import Component, System
from infrasys.location import Location


class Bus(Component):
    voltage: float
    location: Location | None = None


system = System(name="demo-grid")
bus = Bus(name="bus-1", voltage=1.05, location=Location(x=0.0, y=0.0))
system.add_components(bus)
system.to_json("demo-grid/system.json")

Instantiate a System, add a few components, and dump everything to JSON. Time series data gets written to a sibling directory alongside the JSON file so you can externalize it with System.to_json(...) and System.from_json(...).

Documentation

  • How To guides: step-by-step recipes in docs/how_tos.
  • Tutorials: opinionated walkthroughs for custom systems under docs/tutorials.
  • API Reference: auto-generated reference material lives in docs/reference.
  • Explanation articles: deeper dives on the storage backends, migrations, and behavior in docs/explanation.

To build the docs locally, install docs extras and run make html from the docs directory.

Development

  • Clone this repository and install the dev dependency group before hacking:
pip install -e ".[dev]"
  • Run the test suite and coverage reporting via:
pytest
  • Formatting and linting are managed by ruff and configured through its pyproject.toml section. Keep your hooks healthy by installing them via pre-commit install (see Getting started) and running pre-commit run --all-files before pushing.

Support & Contribution

infrasys is being developed under NREL Software Record SWR-24-42. Report issues and feature requests at https://github.com/NREL/infrasys/issues. Review the docs/reference and docs/how_tos material before submitting a change so your diff is aligned with the project conventions.

License

infrasys is released under the BSD 3-Clause License. See LICENSE.txt for details.

Metadata

Release files for infrasys 1.2.1

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

Source distribution (sdist)

Source distribution for infrasys 1.2.1
File Size Uploaded
infrasys-1.2.1.tar.gz 70.6 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for infrasys 1.2.1
File Interpreter ABI Platform
infrasys-1.2.1-py3-none-any.whl Python 3 none any Details

Total release size: 157.8 kB

Release files / infrasys-1.2.1.tar.gz

Download URL infrasys-1.2.1.tar.gz
Size 70.6 kB
Tags Source
SHA-256 checksum
How to use checksums
c8f752e94efe9582496b9fff3b54392ce574d9ad30cb46725ae059845f3f13c2
BLAKE2b-256 checksum
How to use checksums
6b44f0d55517e3c7d8321bf25de367fb4603b396e3f364108e7c50855fb2c540
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 Aug 28, 2026.

Transparency log

Release files / infrasys-1.2.1-py3-none-any.whl

Download URL infrasys-1.2.1-py3-none-any.whl
Size 87.2 kB
Tags Python 3
SHA-256 checksum
How to use checksums
2ecec0fe004f02f3abe577290af8a9193ddc4833d4e5dd45ab17a33027970715
BLAKE2b-256 checksum
How to use checksums
349658545fb6a6b3e1a0ae7da020a94143713ecf65646c76eae35b67858663d9
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 Aug 28, 2026.

Transparency log
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