Skip to main content

readvars

readvars is a stand-alone Python implementation of EnergyPlus's historical ReadVarsESO utility. It reads EnergyPlus ESO and MTR files and writes the same row-oriented delimited output expected by existing ReadVarsESO workflows.

The package supports both the legacy RVI/MVI interface and a modern interface for discovering and filtering output variables. It has no runtime dependencies.

Installation

python -m pip install readvars

This installs both readvars and ReadVarsESO console commands. The latter is provided for compatibility with tools that invoke the legacy executable name.

Command line

Convert every variable in an ESO file:

readvars read eplusout.eso

Choose an output file and select hourly temperature variables:

readvars read eplusout.eso --output temperatures.csv \
  --frequency hourly --search temperature

Inspect the data dictionary as a table, CSV, or JSON:

readvars list eplusout.eso --format table
readvars list eplusout.eso --frequency hourly --format json

The --list and --read spellings are accepted as aliases. Run readvars --help for all modern options.

Legacy compatibility

An existing RVI or MVI file can be passed exactly as it was to ReadVarsESO:

ReadVarsESO custom.rvi hourly unlimited fixheader

With no arguments, the command reads eplusout.eso, writes eplusout.csv, and creates the traditional readvars.audit file. Output extensions select the legacy delimiter: .csv uses a comma, .tab a tab, and .txt a space.

Python API

from readvars import convert, list_variables

variables = list_variables(
    "eplusout.eso",
    frequency="hourly",
    search="temperature",
)

output_path = convert(
    "eplusout.eso",
    "temperatures.csv",
    frequency="hourly",
    search="temperature",
)

list_variables returns DictionaryRecord objects. convert returns the output pathlib.Path. Accepted frequency names are timestep, time-step, detailed, detail, hourly, daily, monthly, annual, runperiod, and run-period.

Development

Install the test dependencies and run pytest:

python -m pip install -e ".[test]"
pytest

The integration tests exercise modern conversion and the legacy RVI path against an EnergyPlus ESO fixture; unit tests cover parsing, filtering, and time aggregation behavior.

Gold-file regression tests

Regression cases are pairs of files under tests/data with the same stem and .rvi/.eso extensions. Pytest runs the Python port in an isolated directory and compares its output byte-for-byte with the corresponding stored output under tests/gold:

hatch run test:run -m regression

The normal test suite does not require an EnergyPlus installation. Gold files are updated separately and deliberately using a legacy executable. For example, to regenerate them from EnergyPlus 26.1:

hatch run python scripts/generate_gold.py \
  C:\EnergyPlus-26.1.0\PostProcess\ReadVarsESO.exe

Pass one or more fixture stems after the executable to regenerate only selected cases. Gold-file changes should be reviewed before they are committed.

License

readvars is distributed under the EnergyPlus license in LICENSE.txt.

Metadata

Release files for readvars 0.0.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 readvars 0.0.1
File Size Uploaded
readvars-0.0.1.tar.gz 8.8 MB Details

Built distribution (wheel)

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

Total release size: 8.9 MB

Release files / readvars-0.0.1.tar.gz

Download URL readvars-0.0.1.tar.gz
Size 8.8 MB
Tags Source
SHA-256 checksum
How to use checksums
4cddf403fdb6062d8df8ab8676406c3603d98f0b88d1c5d41620c270334ef9de
BLAKE2b-256 checksum
How to use checksums
85ce5d802e869ab675cdb06f29c0a6e596b356932aa5fbd2ebf4d20bf32a556d
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 Sep 30, 2026.

Transparency log

Release files / readvars-0.0.1-py3-none-any.whl

Download URL readvars-0.0.1-py3-none-any.whl
Size 28.2 kB
Tags Python 3
SHA-256 checksum
How to use checksums
a2578d04f27f74571ff685a0fb72b60f4de65814793473a6b3b0e454ec733ecd
BLAKE2b-256 checksum
How to use checksums
627d53f7d48691da524ae7b723de92a63017530516127f3fbe2e041d4f9e7859
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 Sep 30, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.0.1 This release

2 release files

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