Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion docs/api/versions.md
Original file line number Diff line number Diff line change
@@ -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
2 changes: 1 addition & 1 deletion docs/benchmarks.md
Original file line number Diff line number Diff line change
Expand Up @@ -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) |
Expand Down
4 changes: 2 additions & 2 deletions docs/concepts/version-compatibility.md
Original file line number Diff line number Diff line change
@@ -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
Expand Down Expand Up @@ -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
Expand Down
6 changes: 3 additions & 3 deletions docs/explanation/content-addressed-schemas.md
Original file line number Diff line number Diff line change
Expand Up @@ -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 |
Expand Down
2 changes: 1 addition & 1 deletion docs/explanation/generated-types.md
Original file line number Diff line number Diff line change
Expand Up @@ -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.
Expand Down
2 changes: 1 addition & 1 deletion docs/explanation/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
2 changes: 1 addition & 1 deletion docs/getting-started/core-tutorial.ipynb
Original file line number Diff line number Diff line change
Expand Up @@ -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"
]
}
],
Expand Down
2 changes: 1 addition & 1 deletion docs/getting-started/installation.md
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
2 changes: 1 addition & 1 deletion docs/how-to/compare-versions.md
Original file line number Diff line number Diff line change
@@ -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.

Expand Down
4 changes: 2 additions & 2 deletions docs/how-to/parse-in-the-browser.md
Original file line number Diff line number Diff line change
Expand Up @@ -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),
Expand All @@ -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
Expand Down
8 changes: 4 additions & 4 deletions docs/how-to/run-a-simulation-in-the-browser.md
Original file line number Diff line number Diff line change
Expand Up @@ -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.

Expand Down Expand Up @@ -102,7 +102,7 @@ verbatim, so what you press is what you read.
<div class="engine-runner"
data-engine-example="../../snippets/js/how-to/run-a-simulation-in-the-browser/live_runner.js"
data-engine-schemas="https://cdn.jsdelivr.net/npm/@idfkit/schemas@0.1.0/data/"
data-engine-weather="https://cdn.jsdelivr.net/npm/@idfkit/engine-assets@26.1/weather/USA_IL_Chicago-OHare.Intl.AP.725300_TMY3.epw">
data-engine-weather="https://cdn.jsdelivr.net/npm/@idfkit/engine-assets@26.2/weather/USA_IL_Chicago-OHare.Intl.AP.725300_TMY3.epw">
<button class="md-button" type="button" data-engine-run>
Run EnergyPlus in this tab
</button>
Expand Down
2 changes: 1 addition & 1 deletion docs/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ one vocabulary, one site.

<span class="chip">:material-language-python: Python</span>
<span class="chip">:material-language-typescript: TypeScript</span>
<span class="chip">:material-history: v8.9 to v26.1, 17 versions</span>
<span class="chip">:material-history: v8.9 to v26.2, 18 versions</span>
<span class="chip">:material-speedometer: O(1) lookups</span>
<span class="chip">:material-graph-outline: Reference tracking</span>
<span class="chip">:material-file-swap-outline: IDF + epJSON</span>
Expand Down
4 changes: 2 additions & 2 deletions docs/javascripts/engine-runner.js
Original file line number Diff line number Diff line change
Expand Up @@ -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],
Expand Down Expand Up @@ -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);
Expand Down
2 changes: 1 addition & 1 deletion docs/reference/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
2 changes: 1 addition & 1 deletion docs/reference/slim-schema-format.md
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
2 changes: 1 addition & 1 deletion docs/reference/typescript/schemas.md
Original file line number Diff line number Diff line change
Expand Up @@ -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.
Expand Down
14 changes: 7 additions & 7 deletions docs/reference/versions.md
Original file line number Diff line number Diff line change
@@ -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.

Expand All @@ -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` | | |

Expand All @@ -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
Expand Down Expand Up @@ -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
Expand Down
2 changes: 1 addition & 1 deletion docs/tutorials/first-model.md
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
Loading