Skip to main content

🏢 Builelib

Building Energy-modeling Library

Annual energy consumption calculation program for non-residential buildings

Python License: MIT Version uv

日本語 | Website | Manual | Changelog

Overview

Builelib is a Python library for calculating the annual energy consumption of non-residential buildings. It implements the calculation methods used by Japan's Building Energy Conservation Standard program for non-residential buildings (WEBPRO).

Builelib provides an Excel-based CLI, a Python API, a JSON-based FastAPI application, and a Docker configuration.

Parse an input sheet in memory

from builelib.input import parse_input_sheet

result = parse_input_sheet("input.xlsx")
print(result.data)
print(result.errors, result.warnings)

This API supports .xlsx and .xlsm WEBPRO input sheets and does not create an intermediate JSON file. Envelope consumers can also import calculate_wall_u_value and calculate_window_performance from builelib.input.

Requirements

  • Python 3.12 or later
  • uv
  • Git
  • Docker, only when running the containerized API

Setup

1. Install uv

Windows PowerShell:

powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"

macOS / Linux:

curl -LsSf https://astral.sh/uv/install.sh | sh

2. Clone the repository and install dependencies

git clone https://github.com/MasatoMiyata/builelib.git
cd builelib
uv sync --locked

uv sync creates the .venv virtual environment and installs the dependencies. --locked uses the committed uv.lock without changing it.

Run from the CLI

Run a calculation

uv run builelib <inputfile>

Replace <inputfile> with the path to an actual .xlsx or .xlsm file. Do not type the angle brackets themselves.

Example using the included sample file:

uv run builelib ./examples/Builelib_inputSheet_sample_001.xlsx

Quote paths that contain spaces.

uv run builelib "C:\path with spaces\input.xlsx"

Validate input without calculating

Pass False as the second argument to parse and validate the Excel input without running the energy calculations.

uv run builelib <inputfile> False

Validation-only mode still writes the converted input, validation results, per-system result files, and a ZIP archive.

Output files

Output files are written next to the input Excel file. Existing files with the same names are overwritten.

Output name Contents
<name>_input.json Input data converted from Excel
<name>_validation.json Input validation results
<name>_result.json Calculation results, including BEI
<name>_result_*.json Per-system calculation results
<name>_result_*.csv Detailed per-system or time-series results from a full calculation
<name>.zip ZIP archive containing the main output files

Run from Python

Calculate from an Excel file

from builelib.runner import calculate

calculate("./examples/Builelib_inputSheet_sample_001.xlsx")

calculate() writes JSON, CSV, and ZIP files next to the input Excel file instead of returning the results. Pass False as the second argument to validate the input only.

calculate("./examples/Builelib_inputSheet_sample_001.xlsx", False)

Calculate from JSON data in memory

calculate_from_json() accepts a dictionary that conforms to webproJsonSchema and returns a result dictionary without creating files.

from builelib.runner import calculate_from_json

output = calculate_from_json(input_data)
print(output["result"])
print(output["errors"])

Run the Web API

Start the local development server:

uv run uvicorn main:app --reload --host 127.0.0.1 --port 8000

After the server starts, open the interactive API documentation:

Main endpoints:

Method Path Description
GET / Health check
GET /calculate Calculate from an Excel file on the server
POST /calculate Calculate from JSON input data
POST /validate Validate JSON input data
GET /schema Retrieve the JSON schema
GET /options Retrieve the available input options
POST /project/{project_id}/save Save a project
GET /project/{project_id} Load a project

Run with Docker

compose.yaml uses an external volume and an external network. Create them once before the first start.

docker volume create builelib_data
docker network create mynetwork

Build and start the service:

docker compose up --build -d

The API documentation is available at http://localhost:8081/docs.

Stop the service with:

docker compose down

The external builelib_data volume is not removed by docker compose down.

Create input data

Enter the building specifications in a WEBPRO input sheet, using the same input procedure as WEBPRO.

Add the Builelib-specific SP sheet (Form SP) to the WEBPRO input sheet to specify detailed calculation conditions. Sample files are available in examples.

See the manual for details.

Tests

uv run python -m pytest tests

Example that runs a specific test file:

uv run python -m pytest tests/test_api.py -v

Remove the development environment

Builelib is installed in the repository-local .venv. To remove the development environment, move to the repository's parent directory and delete the builelib directory.

Windows PowerShell:

cd ..
Remove-Item -Recurse -Force .\builelib

macOS / Linux:

cd ..
rm -rf ./builelib

References

License

MIT License

© Masato Miyata

Metadata

Release files for builelib 2.3.0

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

Source distribution (sdist)

Source distribution for builelib 2.3.0
File Size Uploaded
builelib-2.3.0.tar.gz 3.2 MB Details

Built distribution (wheel)

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

Total release size: 6.5 MB

Release files / builelib-2.3.0.tar.gz

Download URL builelib-2.3.0.tar.gz
Size 3.2 MB
Tags Source
SHA-256 checksum
How to use checksums
f5b54df9598ab444384a9371ffd20eba994bf5cf0cd1b52b2025638fa41bd3ae
BLAKE2b-256 checksum
How to use checksums
35eba4606af18307e56c8cd57e776ca14a98505ac1aa342c7182118a676d5157
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 4, 2026.

Transparency log

Release files / builelib-2.3.0-py3-none-any.whl

Download URL builelib-2.3.0-py3-none-any.whl
Size 3.3 MB
Tags Python 3
SHA-256 checksum
How to use checksums
066d14f36d388dd382623b7654d7e492383b2ef2e7d2aa2c5534a0524efa8869
BLAKE2b-256 checksum
How to use checksums
4383e4134a098e1b75963fdd6dd603c2ec000e3d1879275698a6bdb14121f266
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 4, 2026.

Transparency log

Release history Release notifications | RSS feed

2.3.4

2 release files

2.3.3

2 release files

2.3.2

2 release files

2.3.1

2 release files

This release

2.3.0 This release

2 release files

1.1.4

1 release file

1.1.0

1 release file

1.0.8

1 release file

1.0.7

1 release file

1.0.6

1 release file

1.0.5

1 release file

1.0.4

1 release file

1.0.3

1 release file

1.0.2

1 release file

1.0.1

1 release file

1.0.0

1 release file

0.1.4

1 release file

0.1.3

1 release file

0.1.2

1 release file

0.1.1

1 release file

0.1.0

1 release file

0.0.2

1 release file

0.0.1

1 release file

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