Skip to main content

Open-FDD Python package (PyPI)

open-fdd (PyPI 4.1+) ships:

  1. ECM engineering (open_fdd.ecm_engineering) — agent-drivable HVAC spreadsheet workbooks + Python benchmarks.
  2. Pandas oracle (open_fdd.rules, open_fdd.analytics, open_fdd.reporting) — cookbook catalog, analytics helpers, Engineering Findings.

The ECM API fills the same workbook input cells a human engineer would fill. It does not replace the visible spreadsheet calculations.

Production FDD (DataFusion SQL fault detection) lives in the GHCR container stack, not this wheel.

Product freeze / upsell: Engineer upsell brief — open-fdd + PyPI (vibe freeze) — after 2026-07-30, customers see ECM via PyPI → open-fdd, not vibe19/vibe20 tip churn.

Build handoff / golden example: OPENFDD_AGENT_ECM_HANDOFF.md · packaged workbook examples/liberty_dual_ahu/ECM_FULL_PARITY.xlsx.

Install

pip install open-fdd                 # ECM only (openpyxl)
pip install "open-fdd[oracle]"       # + pandas rules
pip install "open-fdd[analytics]"    # + analytics helpers (same as oracle)
pip install "open-fdd[reporting]"    # + Engineering Findings extras

For the FastAPI ECM example:

pip install "open-fdd[ecm-web]"

Oracle rules (pandas)

from open_fdd.rules import RULES, run_rule

Generate a workbook in a few lines

from open_fdd.ecm_engineering import ECMJob

job = (
    ECMJob("Lincoln Middle School")
    .set_global(
        area_ft2=85000,
        electric_rate=0.145,
        gas_rate=0.92,
    )
    .add_ecm(
        "static_pressure_reset",
        fan_kw=55.9,
        hours=4100,
        baseline_speed=0.82,
        proposed_speed=0.67,
    )
    .add_ecm(
        "boiler_reset",
        base_therms=48000,
        base_eff=0.86,
        prop_eff=0.92,
    )
)

# set_many / add_ecm already persist; save() is idempotent on the same path
# (BUG-OFDD-ECM-002) and can also copy to another path.
job.save("Lincoln_Middle_School_ECMs.xlsx")

The resulting XLSX contains the engineering inputs and formulas for human review.

Module names vs calculators

from open_fdd.ecm_engineering import list_ecm_modules, list_calculators

list_ecm_modules()   # names accepted by add_ecm (aliases included)
list_calculators()   # independent Python benchmarks (job.calc), not sheet names

New in 4.2.0: chiller_lockout, load_shed, schedule_align / ahu_sched_align.

Honesty / twin compare export (4.2.0)

job.attach_twin_compare({
    "provenance": {"idf_path": "...", "g14_pass": True},
    "inputs": [{"name": "lockout_hours", "value": 612, "provenance": "FITTED_FROM_EPLUS"}],
    "measures": [{
        "measure_id": "ECM-CHILLER-LOCKOUT",
        "name": "Chiller OAT lockout",
        "eplus_source": "cascade",
        "fitted_sheet_kwh": 101580.56,
        "eplus_kwh": 101580.56,
        "hours_provenance": "FITTED_FROM_EPLUS",
    }],
    "demand": {"july_weekday_kw": 420, "july_weekend_kw": 280, "loadshed_kw": 365},
})
job.save("honesty.xlsx")  # Contents, Measures, … (FITTED ≠ independent validation)

Independent benchmark

from open_fdd.ecm_engineering import ECMJob

job = ECMJob("demo")
result = job.calc(
    "fan_affinity",
    design_kw=55.9,
    hours=4100,
    baseline_speed_fraction=0.82,
    proposed_speed_fraction=0.67,
)

CLI

open-fdd-ecm calculators
open-fdd-ecm demo --out Demo_ECMs.xlsx

Engineering posture

Prefer measured BAS, utility, TAB, nameplate and manufacturer data over defaults. Generic chiller %/°F methods are screening proxies; manufacturer performance maps or calibrated EnergyPlus should replace them when stronger estimates are needed.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

open_fdd-4.4.1.tar.gz (322.9 kB view details)

Uploaded Source

Built Distribution

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

open_fdd-4.4.1-py3-none-any.whl (348.1 kB view details)

Uploaded Python 3

File details

Details for the file open_fdd-4.4.1.tar.gz.

File metadata

  • Download URL: open_fdd-4.4.1.tar.gz
  • Upload date:
  • Size: 322.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for open_fdd-4.4.1.tar.gz
Algorithm Hash digest
SHA256 146d1e24dcb071686973e11bc6b771b42aa1d0667290a1911a6d490d3a06b9d0
MD5 6247cc579ab03aa3f89ec02cc5d034c5
BLAKE2b-256 a8257233629f8c87c21e6519d8298df1c40cbade9a2522ebabe9ebd054e7d401

See more details on using hashes here.

Provenance

The following attestation bundles were made for open_fdd-4.4.1.tar.gz:

Publisher: publish-open-fdd.yml on bbartling/open-fdd

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

File details

Details for the file open_fdd-4.4.1-py3-none-any.whl.

File metadata

  • Download URL: open_fdd-4.4.1-py3-none-any.whl
  • Upload date:
  • Size: 348.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for open_fdd-4.4.1-py3-none-any.whl
Algorithm Hash digest
SHA256 61748c7369356121f031b8762d52d30c7367caf7274f9dd396f73f8e6fb111ea
MD5 07e38ba80d8a82a66fbd6c4cc49fe95b
BLAKE2b-256 d07aeeb948b02bf64493a213cbc29c681ecd7b55ce4b46a86c3215f81f4aea1b

See more details on using hashes here.

Provenance

The following attestation bundles were made for open_fdd-4.4.1-py3-none-any.whl:

Publisher: publish-open-fdd.yml on bbartling/open-fdd

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

Release history Release notifications | RSS feed

This release

4.4.1 This release

2 files

4.4.0

2 files

4.3.0

2 files

4.2.0

2 files

4.1.2

2 files

4.1.1

2 files

4.1.0

2 files

4.0.0

2 files

3.1.6

2 files

3.1.5

2 files

3.1.3

2 files

3.1.2

2 files

3.1.1

2 files

3.1.0

2 files

3.0.34

2 files

3.0.32

2 files

3.0.31

2 files

3.0.30

2 files

3.0.21

2 files

3.0.20

2 files

3.0.18

2 files

3.0.16

2 files

3.0.12

2 files

3.0.11

2 files

3.0.10

2 files

3.0.9

2 files

3.0.8

2 files

3.0.6

2 files

3.0.5

2 files

3.0.4

2 files

3.0.1

2 files

2.4.1

2 files

2.4.0

2 files

2.3.1

2 files

2.3.0

2 files

2.2.0

2 files

2.1.0

2 files

2.0.13

2 files

2.0.11

2 files

2.0.9

2 files

0.1.9

2 files

0.1.8

2 files

0.1.7

2 files

0.1.6

2 files

0.1.5

2 files

0.1.4

2 files

0.1.3

2 files

0.1.1

2 files

0.1.0

2 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