From bcf36daaac712914c38066121c7801549b161b40 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 16 Oct 2026 19:59:05 +0000 Subject: [PATCH] Adopt EnergyPlus 26.2.0 --- docs/api/versions.md | 2 +- docs/benchmarks.md | 2 +- docs/concepts/version-compatibility.md | 4 ++-- docs/explanation/content-addressed-schemas.md | 6 +++--- docs/explanation/generated-types.md | 2 +- docs/explanation/index.md | 2 +- docs/getting-started/core-tutorial.ipynb | 2 +- docs/getting-started/installation.md | 2 +- docs/how-to/compare-versions.md | 2 +- docs/how-to/parse-in-the-browser.md | 4 ++-- docs/how-to/run-a-simulation-in-the-browser.md | 8 ++++---- docs/index.md | 2 +- docs/javascripts/engine-runner.js | 4 ++-- docs/reference/index.md | 2 +- docs/reference/slim-schema-format.md | 2 +- docs/reference/typescript/schemas.md | 2 +- docs/reference/versions.md | 14 +++++++------- docs/tutorials/first-model.md | 2 +- 18 files changed, 32 insertions(+), 32 deletions(-) diff --git a/docs/api/versions.md b/docs/api/versions.md index 793d2ab1..c26cb32f 100644 --- a/docs/api/versions.md +++ b/docs/api/versions.md @@ -1,6 +1,6 @@ # Versions Constants and utilities for working with EnergyPlus version numbers. -idfkit bundles schemas for every release from v8.9 through v26.1. +idfkit bundles schemas for every release from v8.9 through v26.2. ::: idfkit.versions diff --git a/docs/benchmarks.md b/docs/benchmarks.md index 2e4734a5..d0a6328a 100644 --- a/docs/benchmarks.md +++ b/docs/benchmarks.md @@ -84,7 +84,7 @@ uv run --group benchmark python benchmarks/bench_eso.py --eso path/to/eplusout.e | Tool | Versions | Schema format | |---|---|---| -| **idfkit** | 8.9 -- 26.1 | epJSON schema (bundled, gzip-compressed) | +| **idfkit** | 8.9 -- 26.2 | epJSON schema (bundled, gzip-compressed) | | **eppy** | 1.1 -- 9.2 (bundled IDD); any version with external IDD | IDD file | | **opyplus** | 8.0 -- 9.6, 22.1 -- 24.1 | IDD file (bundled) | | **idd-idf-utilities** | any version up to ~23.2 (IDD parser breaks on 24.1+) | IDD file (external) | diff --git a/docs/concepts/version-compatibility.md b/docs/concepts/version-compatibility.md index 6964008c..f50c0ee6 100644 --- a/docs/concepts/version-compatibility.md +++ b/docs/concepts/version-compatibility.md @@ -1,6 +1,6 @@ # How to work across EnergyPlus versions -idfkit supports 17 EnergyPlus releases, and their schemas disagree: object types +idfkit supports 18 EnergyPlus releases, and their schemas disagree: object types come and go, and enumerated choice values are renamed under you. A viewer, a converter, or anything else that opens files it did not write cannot hard-code `26.1.0`, and code that runs against more than one release cannot assume the @@ -365,7 +365,7 @@ for (obj_type, field), removed in diff.removed_choices.items(): - [How to migrate models between EnergyPlus versions](../simulation/migrating-versions.md) for upgrading an existing model rather than checking one -- [Supported versions](../reference/versions.md) for the 17 releases and how a +- [Supported versions](../reference/versions.md) for the 18 releases and how a file's version is matched to a schema - [Content-addressed schemas](../explanation/content-addressed-schemas.md) for why holding several versions at once is cheap diff --git a/docs/explanation/content-addressed-schemas.md b/docs/explanation/content-addressed-schemas.md index 4e082399..a40d3325 100644 --- a/docs/explanation/content-addressed-schemas.md +++ b/docs/explanation/content-addressed-schemas.md @@ -13,14 +13,14 @@ architecture, so the browser bundle stores the same information differently. ## Most of a schema is the previous schema Object-type definitions barely change between EnergyPlus releases. `Zone` has -not changed since 8.9. Across the 17 versions the bundle indexes 14,092 +not changed since 8.9. Across the 18 versions the bundle indexes 14,092 type entries and finds only 2,568 distinct definitions behind them: 82% of what -17 separate schemas would carry is a repeat of something already shipped. +18 separate schemas would carry is a repeat of something already shipped. So the bundle stores each unique definition once, keyed by a hash of its content, and gives every version a manifest mapping type name to hash. -| | All 17 versions, gzipped | +| | All 18 versions, gzipped | | ---------------------------------------- | ------------------------ | | Raw epJSON schemas, as Python ships them | 11,915 KB | | Slimmed (documentation metadata dropped) | 2,922 KB | diff --git a/docs/explanation/generated-types.md b/docs/explanation/generated-types.md index 529c8136..7071169a 100644 --- a/docs/explanation/generated-types.md +++ b/docs/explanation/generated-types.md @@ -35,7 +35,7 @@ records the capability as [complete in TypeScript and partial in Python](parity.md#generated-object-types). Two things differ. **Coverage.** The Python stub set is generated one EnergyPlus version at a time -and currently ships for 26.1.0 only, so a model loaded at 9.4 gets 26.1 field +and currently ships for 26.2.0 only, so a model loaded at 9.4 gets 26.2 field names and choice lists in the editor. The TypeScript maps are emitted per version and chosen by the caller, so an older model is typed as that older model or left untyped, never mistyped. diff --git a/docs/explanation/index.md b/docs/explanation/index.md index c405efb0..6749b49f 100644 --- a/docs/explanation/index.md +++ b/docs/explanation/index.md @@ -43,7 +43,7 @@ language you work in. field name becomes a compile error, in TypeScript. - [Why accessors and not a `Proxy`](accessors-not-proxies.md): why `zone.ceiling_height` is a real property, in TypeScript. -- [Content-addressed schemas](content-addressed-schemas.md): how 17 versions of +- [Content-addressed schemas](content-addressed-schemas.md): how 18 versions of the schema fit in about 1 MB for the browser. ## How work gets done and where it happens diff --git a/docs/getting-started/core-tutorial.ipynb b/docs/getting-started/core-tutorial.ipynb index 874e75ce..a8605264 100644 --- a/docs/getting-started/core-tutorial.ipynb +++ b/docs/getting-started/core-tutorial.ipynb @@ -1871,7 +1871,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "Available schema versions: [(8, 9, 0), (9, 0, 1), (9, 1, 0), (9, 2, 0), (9, 3, 0), (9, 4, 0), (9, 5, 0), (9, 6, 0), (22, 1, 0), (22, 2, 0), (23, 1, 0), (23, 2, 0), (24, 1, 0), (24, 2, 0), (25, 1, 0), (25, 2, 0), (26, 1, 0)]\n" + "Available schema versions: [(8, 9, 0), (9, 0, 1), (9, 1, 0), (9, 2, 0), (9, 3, 0), (9, 4, 0), (9, 5, 0), (9, 6, 0), (22, 1, 0), (22, 2, 0), (23, 1, 0), (23, 2, 0), (24, 1, 0), (24, 2, 0), (25, 1, 0), (25, 2, 0), (26, 1, 0), (26, 2, 0)]\n" ] } ], diff --git a/docs/getting-started/installation.md b/docs/getting-started/installation.md index 4bb321d7..aef8df8e 100644 --- a/docs/getting-started/installation.md +++ b/docs/getting-started/installation.md @@ -41,7 +41,7 @@ That gives you, in both languages: - Loading and writing IDF and epJSON files - O(1) object lookups and reference tracking -- Schema validation for all 17 supported EnergyPlus versions +- Schema validation for all 18 supported EnergyPlus versions - Object and field introspection Beyond that the two diverge, because they run in different places. Python adds diff --git a/docs/how-to/compare-versions.md b/docs/how-to/compare-versions.md index 64dd480e..236160d0 100644 --- a/docs/how-to/compare-versions.md +++ b/docs/how-to/compare-versions.md @@ -1,6 +1,6 @@ # How to compare two EnergyPlus versions -Both libraries carry every schema from 8.9.0 to 26.1.0, so "what changed +Both libraries carry every schema from 8.9.0 to 26.2.0, so "what changed between 9.4 and 26.1" is a question you can answer locally, without downloading anything and without opening two 10 MB schema documents side by side. diff --git a/docs/how-to/parse-in-the-browser.md b/docs/how-to/parse-in-the-browser.md index 64179e6a..1aeb506b 100644 --- a/docs/how-to/parse-in-the-browser.md +++ b/docs/how-to/parse-in-the-browser.md @@ -24,7 +24,7 @@ Then point `httpSource` at it: ``` `httpSource` fetches the gzipped files and inflates them with -`DecompressionStream`, so the payload stays around 1 MB for all 17 versions. It +`DecompressionStream`, so the payload stays around 1 MB for all 18 versions. It sniffs the gzip magic bytes first, so it works whether your host leaves `Content-Encoding` unset or maps the `.gz` extension to `Content-Encoding: gzip` (as Vite's dev server and nginx's `gzip_static` do), @@ -38,7 +38,7 @@ same version into a single fetch. It is tempting to `import schemas from '@idfkit/schemas/data/index.json'` and let the bundler inline it. Do not: the manifests and blob store are megabytes -of JSON, and inlining them puts all 17 versions into the initial bundle whether +of JSON, and inlining them puts all 18 versions into the initial bundle whether or not the user opens a file. If you would rather not serve static files at all, supply your own diff --git a/docs/how-to/run-a-simulation-in-the-browser.md b/docs/how-to/run-a-simulation-in-the-browser.md index a7ac0a65..3c28f3d6 100644 --- a/docs/how-to/run-a-simulation-in-the-browser.md +++ b/docs/how-to/run-a-simulation-in-the-browser.md @@ -22,17 +22,17 @@ EnergyPlus release, so nothing that the shared name installs may depend on them (FR-070). ```bash -npm install @idfkit/engine @idfkit/engine-assets@26.1 +npm install @idfkit/engine @idfkit/engine-assets@26.2 npx idfkit-engine-assets public/energyplus # copy the WASM engine to your own origin ``` `@idfkit/core` and `@idfkit/schemas` are separate and are what edits the model; add them if you have not already. -!!! info "This engine executes EnergyPlus 26.1" +!!! info "This engine executes EnergyPlus 26.2" `@idfkit/engine-assets` is versioned by the EnergyPlus release it carries, - so `@idfkit/engine-assets@26.1` runs **EnergyPlus 26.1** and nothing else. A + so `@idfkit/engine-assets@26.2` runs **EnergyPlus 26.2** and nothing else. A model written for another release has to be migrated before it will run here. @@ -102,7 +102,7 @@ verbatim, so what you press is what you read.
+ data-engine-weather="https://cdn.jsdelivr.net/npm/@idfkit/engine-assets@26.2/weather/USA_IL_Chicago-OHare.Intl.AP.725300_TMY3.epw"> diff --git a/docs/index.md b/docs/index.md index 0b284036..2dff99c7 100644 --- a/docs/index.md +++ b/docs/index.md @@ -37,7 +37,7 @@ one vocabulary, one site. :material-language-python: Python :material-language-typescript: TypeScript -:material-history: v8.9 to v26.1, 17 versions +:material-history: v8.9 to v26.2, 18 versions :material-speedometer: O(1) lookups :material-graph-outline: Reference tracking :material-file-swap-outline: IDF + epJSON diff --git a/docs/javascripts/engine-runner.js b/docs/javascripts/engine-runner.js index a90c28f6..f24110db 100644 --- a/docs/javascripts/engine-runner.js +++ b/docs/javascripts/engine-runner.js @@ -41,7 +41,7 @@ const ENGINE = 'https://cdn.jsdelivr.net/npm/@idfkit/engine@0.3.0/+esm'; const CORE = 'https://cdn.jsdelivr.net/npm/@idfkit/core@0.1.0/+esm'; const SCHEMAS = 'https://cdn.jsdelivr.net/npm/@idfkit/schemas@0.1.0/+esm'; - const ASSETS = 'https://cdn.jsdelivr.net/npm/@idfkit/engine-assets@26.1'; + const ASSETS = 'https://cdn.jsdelivr.net/npm/@idfkit/engine-assets@26.2'; const SPECIFIERS = new Map([ ['@idfkit/engine', ENGINE], @@ -82,7 +82,7 @@ const example = await import(/* webpackIgnore: true */ objectUrl); const { SchemaBundle, httpSource } = await import(/* webpackIgnore: true */ CORE); - const schema = await new SchemaBundle(httpSource(root.dataset.engineSchemas)).load('26.1.0'); + const schema = await new SchemaBundle(httpSource(root.dataset.engineSchemas)).load('26.2.0'); const epw = await fetch(root.dataset.engineWeather).then((r) => r.text()); await example.run(schema, epw, ASSETS, say); diff --git a/docs/reference/index.md b/docs/reference/index.md index d0e470ed..a0c81642 100644 --- a/docs/reference/index.md +++ b/docs/reference/index.md @@ -12,7 +12,7 @@ Pages that describe one language only say so. ## Versions and schema data -- [Supported EnergyPlus versions](versions.md): the 17 releases both libraries +- [Supported EnergyPlus versions](versions.md): the 18 releases both libraries bundle, how the version written in a file is matched to one of them, and which releases have generated static types. - [Slim schema format](slim-schema-format.md): the reduced schema form diff --git a/docs/reference/slim-schema-format.md b/docs/reference/slim-schema-format.md index eeee2595..b0bbc09c 100644 --- a/docs/reference/slim-schema-format.md +++ b/docs/reference/slim-schema-format.md @@ -77,7 +77,7 @@ graph](../explanation/index.md) is built from: `ref` says a name enters a list, ### `auto` and `se`, the two branches of an `anyOf` -13060 fields across the 17 bundled versions are declared `anyOf: [{number}, +13060 fields across the 18 bundled versions are declared `anyOf: [{number}, {string}]`: a capacity is a number, or the word that asks EnergyPlus to size it. The bundle hoists the numeric branch onto the record, so `t`, `e`, `min`, `max`, `xmin` and `xmax` all describe that branch, and sets `auto`. What survives of the diff --git a/docs/reference/typescript/schemas.md b/docs/reference/typescript/schemas.md index 89f4ec1b..6798842d 100644 --- a/docs/reference/typescript/schemas.md +++ b/docs/reference/typescript/schemas.md @@ -4,7 +4,7 @@ title: '@idfkit/schemas' # `@idfkit/schemas` -EnergyPlus epJSON schemas for all 17 supported versions, content-addressed so +EnergyPlus epJSON schemas for all 18 supported versions, content-addressed so that the whole set is around 1 MB gzipped rather than 11.9 MB. See [Content-addressed schemas](../../explanation/content-addressed-schemas.md) for why, and [Slim schema format](../slim-schema-format.md) for what a definition contains. diff --git a/docs/reference/versions.md b/docs/reference/versions.md index aad51a52..41c9f60e 100644 --- a/docs/reference/versions.md +++ b/docs/reference/versions.md @@ -1,7 +1,7 @@ # Supported EnergyPlus versions -Both libraries bundle schemas for the same 17 EnergyPlus releases, 8.9.0 -through 26.1.0. 8.9.0 is the first release to publish an epJSON schema. Every +Both libraries bundle schemas for the same 18 EnergyPlus releases, 8.9.0 +through 26.2.0. 8.9.0 is the first release to publish an epJSON schema. Every release ships inside the package: there is no per-version install and no build step to select one. @@ -14,7 +14,7 @@ step to select one. | 9.3 | `9.3.0` | 25.1 | `25.1.0` | | 9.4 | `9.4.0` | 25.2 | `25.2.0` | | 9.5 | `9.5.0` | 26.1 | `26.1.0` | -| 9.6 | `9.6.0` | | | +| 9.6 | `9.6.0` | 26.2 | `26.2.0` | | 22.1 | `22.1.0` | | | | 22.2 | `22.2.0` | | | @@ -32,8 +32,8 @@ Both libraries expose the list, oldest first, and the newest entry on its own. ```python from idfkit import ENERGYPLUS_VERSIONS, LATEST_VERSION, version_string - len(ENERGYPLUS_VERSIONS) # 17 - version_string(LATEST_VERSION) # '26.1.0' + len(ENERGYPLUS_VERSIONS) # 18 + version_string(LATEST_VERSION) # '26.2.0' ``` Versions are `(major, minor, patch)` tuples. The rest of the module is at @@ -120,12 +120,12 @@ Sort on the numeric components, never on the version string. String order puts ## Static types cover fewer releases than schemas -Schemas ship for all 17 releases. Generated static types do not, and what they +Schemas ship for all 18 releases. Generated static types do not, and what they cover differs by language. | Language | Releases with generated types | Delivery | | ---------- | ----------------------------- | ------------------------------------------------------ | -| Python | 26.1.0 | stubs bundled in `idfkit`, no install step | +| Python | 26.2.0 | stubs bundled in `idfkit`, no install step | | TypeScript | 26.1.0 and 9.4.0 | `@idfkit/types-v26-1` and `@idfkit/types-v9-4`, opt-in | ```bash diff --git a/docs/tutorials/first-model.md b/docs/tutorials/first-model.md index e2bc2f6d..8eae9bdc 100644 --- a/docs/tutorials/first-model.md +++ b/docs/tutorials/first-model.md @@ -13,7 +13,7 @@ one column down the page. You need one of the two libraries and nothing else: no EnergyPlus, no build step, no schema files to fetch. Both carry every supported EnergyPlus schema, -8.9.0 through 26.1.0, so nothing is downloaded while you work. +8.9.0 through 26.2.0, so nothing is downloaded while you work. Python installs from PyPI with `pip install idfkit`, and [How to install idfkit](../getting-started/installation.md) covers the extras and the supported