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.3

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.3
File Size Uploaded
builelib-2.3.3.tar.gz 2.5 MB Details

Built distribution (wheel)

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

Total release size: 5.2 MB

Release files / builelib-2.3.3.tar.gz

Download URL builelib-2.3.3.tar.gz
Size 2.5 MB
Tags Source
SHA-256 checksum
How to use checksums
7cfb089aa83b6864cc199b93aa318eb7821cb56e4810f66d36e8c4de0547e99e
BLAKE2b-256 checksum
How to use checksums
847f1f99bb5bf593e2b2aeacba6c9dc13d3344538a6ad7d9d14825150b9459ab
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 Oct 1, 2026.

Transparency log

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

Download URL builelib-2.3.3-py3-none-any.whl
Size 2.6 MB
Tags Python 3
SHA-256 checksum
How to use checksums
b7784f4af14088a956850411cdb02e3fdad8996b156f21f366c4df278dd2fe0e
BLAKE2b-256 checksum
How to use checksums
8695aa22ad9da99eb41134231477cb6c2558f740971b084040b7c1c659e5b419
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 Oct 1, 2026.

Transparency log

Release history Release notifications | RSS feed

2.3.4

2 release files

This release

2.3.3 This release

2 release files

2.3.2

2 release files

2.3.1

2 release files

2.3.0

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