Skip to main content

No project description provided

Project description

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.

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

infrasys-1.1.1.tar.gz (70.0 kB view details)

Uploaded Source

Built Distribution

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

infrasys-1.1.1-py3-none-any.whl (86.3 kB view details)

Uploaded Python 3

File details

Details for the file infrasys-1.1.1.tar.gz.

File metadata

  • Download URL: infrasys-1.1.1.tar.gz
  • Upload date:
  • Size: 70.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for infrasys-1.1.1.tar.gz
Algorithm Hash digest
SHA256 9354c8126fde1e49c7e82c14a53c53575be13dabd898bab6b9007636c3e46a2b
MD5 dd5175ac7e9c7c18162c7bd1d754d3c8
BLAKE2b-256 c019110f2599b32ed2189d95fd382decedbac3bb2a70fdb145fb72e552e9363a

See more details on using hashes here.

Provenance

The following attestation bundles were made for infrasys-1.1.1.tar.gz:

Publisher: release.yaml on NatLabRockies/infrasys

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

File details

Details for the file infrasys-1.1.1-py3-none-any.whl.

File metadata

  • Download URL: infrasys-1.1.1-py3-none-any.whl
  • Upload date:
  • Size: 86.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for infrasys-1.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 1c5553ec7e834c41a1324096d4ab1fd955ac57ece0a13cba18b62420f3d73cd9
MD5 0ad3b5843c0037d401508e45b5007d5c
BLAKE2b-256 0399bed0e4c527241070b3ab2452bad9f31d309cf207dbef959014d361df40d1

See more details on using hashes here.

Provenance

The following attestation bundles were made for infrasys-1.1.1-py3-none-any.whl:

Publisher: release.yaml on NatLabRockies/infrasys

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