Open-source computational logic engine for global building codes and standards.
Project description
aeclib
Open-source automated code compliance building codes and standards.
aeclib translates building code provisions into executable and testable logic.
Installation
pip install aeclib
Intent
The goal of aeclib is to provide a unified "Logic Layer" for the AEC industry to support automated compliance and computational design.
Usage
aeclib is designed as a Stateless Logic Layer. It provides the atomic building blocks of architectural compliance without dictating a specific data schema.
Atomic Logic
Each function in aeclib maps to a specific engineering or code requirement. You are responsible for mapping your own data (JSON, BIM, or Database) to the function's parameters.
Compositional Compliance
The library is designed to be composed into your own application logic. Below is an example of how a user might bring their own JSON design data and map it to a custom Python class to run a specific chapter's compliance check:
{
"space_id": "RM-101",
"function_type": "business",
"gross_area": 1500.0,
"net_area": 1200.0,
"design_occupancy_count": 12
}
from aeclib.occupancy import validate_occupant_load_without_fixed_seating, validate_increased_occupant_load
class OccupancyValidator:
def check_space_occupancy(self, data: dict):
# 1. Check required minimum occupant load (Section 1004.5)
is_load_valid = validate_occupant_load_without_fixed_seating(
function_type=data["function_type"],
gross_area=data["gross_area"],
net_area=data["net_area"],
design_occupancy_count=data["design_occupancy_count"]
)
# 2. Check maximum density limit (Section 1004.5.1)
is_density_valid = validate_increased_occupant_load(
area=data["gross_area"],
occupant_count=data["design_occupancy_count"]
)
return is_load_valid and is_density_valid
Expected Output
When a design fact fails to comply, the library will return FAIL and log a detailed warning:
WARNING:aeclib:[FAIL] Design occupancy (35) is less than required minimum of 40 for educational_classroom (net area: 800.0, factor: 20).
When a design is compliant, the function returns PASS.
License
Licensed under the Apache License 2.0.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file aeclib-0.2.0.tar.gz.
File metadata
- Download URL: aeclib-0.2.0.tar.gz
- Upload date:
- Size: 12.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.9.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d2a1b5be13e93fc9326a5c332d92ec34dfe06973345deccba56377b724127a3f
|
|
| MD5 |
c0bc192a7c5f1759b5fd3bf3c1faec5f
|
|
| BLAKE2b-256 |
97cf4e5ff030a82c2f522d191b8661338033297ccd237ef1002418afad5ccdb7
|
File details
Details for the file aeclib-0.2.0-py3-none-any.whl.
File metadata
- Download URL: aeclib-0.2.0-py3-none-any.whl
- Upload date:
- Size: 15.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.9.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a534436d60d569954115d7d99895d61b54d6aee84f0f805a1f3045ada77c065c
|
|
| MD5 |
4f57c7d465dacc67abd9634fcd53a01c
|
|
| BLAKE2b-256 |
fb6540065527ea9028cb6ce1bb89ae4ee3166536a8eb3164b77951324b8afc69
|