Skip to main content

ENergy Platform — Automated eXpenditures

Project description

ENPAX

PyPI version PyPI - Python Version License

ENPAX (ENergy Platform — Automated eXpenditures) is an open-source Python library that provides modular, bottom-up capital and operating expenditure (CAPEX/OPEX) models for energy technologies. Cost estimates are derived using system design characteristics, site specific details, power system considerations and infrastructure assumptions.

Software Requirements

  • Python 3.10+

Installing ENPAX

PyPI

pip install enpax

Source Installation

  1. Using Git, navigate to a local target directory and clone the repository:

    git clone https://github.com/NatLabRockies/ENPAX.git
    
  2. Navigate to ENPAX:

    cd ENPAX
    
  3. Create a new virtual environment and activate it. Using Conda and naming it enpax:

    conda create --name enpax python=3.11 -y
    conda activate enpax
    
  4. Install ENPAX and its dependencies:

    • To use ENPAX only:
      pip install .
      
    • To install in editable mode with development dependencies:
      pip install -e ".[develop]"
      
    • To install with example/notebook dependencies:
      pip install -e ".[examples]"
      
    • To install all optional dependencies at once:
      pip install -e ".[all]"
      

Usage

ENPAX models can be configured and run either via YAML config files or Python dictionaries. Example notebooks are provided in the examples/ directory:

  • examples_using_yaml_config_files.ipynb — configure and run models using .yaml files from the configs/ directory
  • examples_using_dictionaries.ipynb — configure and run models programmatically in Python

Quick Start

from enpax.runner import CentralRunner
 
runner = CentralRunner(config="configs/solar_bess.yaml")
results = runner.run()
print(results)

Available Models

The library is structured around a shared abstract base class (BaseCostModel) that enforces a consistent interface — run_capex(), run_opex(), and run_design() — across all technology models, and a central runner (CentralRunner) that assembles multi-technology systems from YAML configuration files and returns structured output objects (TechResult, SystemResult). The current release includes two fully detailed technology models as well as the ability for a user to define their own technology cost model, both applicable for CAPEX and O&M cost estimations.

Model Description
solar_bess_2024Q1 Solar PV + BESS hybrid CAPEX/OPEX model
bess_2025 Standalone battery energy storage CAPEX/OPEX model
generic_passthrough Generic passthrough model for custom CAPEX/OPEX inputs

Release Notes

  1. Ensure all tests pass.
  2. Ensure this README is up to date.
  3. Ensure dependency and Python versions are current.
  4. Ensure CHANGELOG.md is up to date.
  5. Bump the version in pyproject.toml using semantic versioning (https://semver.org/).
  6. Make a pull request into main from develop or a patch release branch.
    1. Merge main back into develop if develop was not the base branch.
  7. Tag the new release and push it:
    git tag -a v0.1.1 -m "message for v0.1.1"
    git push origin v0.1.1
    
    1. This will trigger the Deploy to Test PyPI GitHub Action. If it passes, proceed to step 8. If it fails, continue below.
    2. Delete the tag locally and on remote:
      git tag -d v0.1.1
      git push --delete origin v0.1.1
      
    3. Create a new branch off main, fix the build issue, and return to step 5.
  8. Create a new release at https://github.com/NatLabRockies/ENPAX/releases, ensuring that:
    1. The newly created tag is selected, and
    2. Generate release notes is selected. This will trigger the Deploy to PyPI GitHub Action.

Contributing

Contributions are welcome. Please open an issue or submit a pull request against the develop branch.

Authors

License

This project is licensed under the BSD 3-Clause License. See LICENSE for details.

NLR Software Record

This project's NLR Software Record is SWR-26-053

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

enpax-0.1.1.tar.gz (27.5 kB view details)

Uploaded Source

Built Distribution

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

enpax-0.1.1-py3-none-any.whl (27.8 kB view details)

Uploaded Python 3

File details

Details for the file enpax-0.1.1.tar.gz.

File metadata

  • Download URL: enpax-0.1.1.tar.gz
  • Upload date:
  • Size: 27.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for enpax-0.1.1.tar.gz
Algorithm Hash digest
SHA256 ac68e19781f4b053af1c06450aa6e9fb341e70465bdcd18f2b5df047fe7c58fe
MD5 4e08a8d6c75ff94b472eae924e5e2564
BLAKE2b-256 e54844b84fc091ed6e69ddb744bd9ab904539e8875a1657f63e736c6eccdbb90

See more details on using hashes here.

Provenance

The following attestation bundles were made for enpax-0.1.1.tar.gz:

Publisher: publish.yml on NatLabRockies/ENPAX

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

File details

Details for the file enpax-0.1.1-py3-none-any.whl.

File metadata

  • Download URL: enpax-0.1.1-py3-none-any.whl
  • Upload date:
  • Size: 27.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for enpax-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 d6306f7860909758c2cfe42cda44c654beb47175506cb15da78ce4e602ea328b
MD5 7958bfcb8e5bc18b065091efb6d6eec2
BLAKE2b-256 f64982f66f84094ad00d238e73b5b4e61425bbd76dc88963dfb37c30eac48479

See more details on using hashes here.

Provenance

The following attestation bundles were made for enpax-0.1.1-py3-none-any.whl:

Publisher: publish.yml on NatLabRockies/ENPAX

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