validibot-shared 0.7.4__tar.gz → 0.8.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {validibot_shared-0.7.4 → validibot_shared-0.8.0}/PKG-INFO +2 -2
- {validibot_shared-0.7.4 → validibot_shared-0.8.0}/pyproject.toml +2 -2
- {validibot_shared-0.7.4 → validibot_shared-0.8.0}/tests/test_evidence_manifest.py +3 -3
- {validibot_shared-0.7.4 → validibot_shared-0.8.0}/validibot_shared/energyplus/models.py +14 -6
- {validibot_shared-0.7.4 → validibot_shared-0.8.0}/validibot_shared/evidence/manifest.py +9 -10
- {validibot_shared-0.7.4 → validibot_shared-0.8.0}/.gitignore +0 -0
- {validibot_shared-0.7.4 → validibot_shared-0.8.0}/LICENSE +0 -0
- {validibot_shared-0.7.4 → validibot_shared-0.8.0}/NOTICE +0 -0
- {validibot_shared-0.7.4 → validibot_shared-0.8.0}/README.md +0 -0
- {validibot_shared-0.7.4 → validibot_shared-0.8.0}/tests/__init__.py +0 -0
- {validibot_shared-0.7.4 → validibot_shared-0.8.0}/tests/test_energyplus_envelopes.py +0 -0
- {validibot_shared-0.7.4 → validibot_shared-0.8.0}/tests/test_energyplus_models.py +0 -0
- {validibot_shared-0.7.4 → validibot_shared-0.8.0}/tests/test_fmu_envelopes.py +0 -0
- {validibot_shared-0.7.4 → validibot_shared-0.8.0}/tests/test_fmu_models.py +0 -0
- {validibot_shared-0.7.4 → validibot_shared-0.8.0}/tests/test_package_init.py +0 -0
- {validibot_shared-0.7.4 → validibot_shared-0.8.0}/tests/test_validations_envelopes.py +0 -0
- {validibot_shared-0.7.4 → validibot_shared-0.8.0}/validibot_shared/__init__.py +0 -0
- {validibot_shared-0.7.4 → validibot_shared-0.8.0}/validibot_shared/energyplus/__init__.py +0 -0
- {validibot_shared-0.7.4 → validibot_shared-0.8.0}/validibot_shared/energyplus/envelopes.py +0 -0
- {validibot_shared-0.7.4 → validibot_shared-0.8.0}/validibot_shared/evidence/__init__.py +0 -0
- {validibot_shared-0.7.4 → validibot_shared-0.8.0}/validibot_shared/fmu/__init__.py +0 -0
- {validibot_shared-0.7.4 → validibot_shared-0.8.0}/validibot_shared/fmu/envelopes.py +0 -0
- {validibot_shared-0.7.4 → validibot_shared-0.8.0}/validibot_shared/fmu/models.py +0 -0
- {validibot_shared-0.7.4 → validibot_shared-0.8.0}/validibot_shared/py.typed +0 -0
- {validibot_shared-0.7.4 → validibot_shared-0.8.0}/validibot_shared/validations/__init__.py +0 -0
- {validibot_shared-0.7.4 → validibot_shared-0.8.0}/validibot_shared/validations/envelopes.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: validibot-shared
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.8.0
|
|
4
4
|
Summary: Shared library for data interchange between Validibot and validator containers
|
|
5
5
|
Project-URL: Homepage, https://validibot.com
|
|
6
6
|
Project-URL: Documentation, https://docs.validibot.com
|
|
@@ -27,7 +27,7 @@ Requires-Python: >=3.10
|
|
|
27
27
|
Requires-Dist: pydantic<3.0,>=2.13
|
|
28
28
|
Provides-Extra: dev
|
|
29
29
|
Requires-Dist: pytest==9.0.3; extra == 'dev'
|
|
30
|
-
Requires-Dist: ruff==0.15.
|
|
30
|
+
Requires-Dist: ruff==0.15.14; extra == 'dev'
|
|
31
31
|
Description-Content-Type: text/markdown
|
|
32
32
|
|
|
33
33
|
<div align="center">
|
|
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "validibot-shared"
|
|
7
|
-
version = "0.
|
|
7
|
+
version = "0.8.0"
|
|
8
8
|
description = "Shared library for data interchange between Validibot and validator containers"
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
license = { text = "MIT" }
|
|
@@ -35,7 +35,7 @@ classifiers = [
|
|
|
35
35
|
dependencies = ["pydantic>=2.13,<3.0"]
|
|
36
36
|
|
|
37
37
|
[project.optional-dependencies]
|
|
38
|
-
dev = ["pytest==9.0.3", "ruff==0.15.
|
|
38
|
+
dev = ["pytest==9.0.3", "ruff==0.15.14"]
|
|
39
39
|
|
|
40
40
|
[project.urls]
|
|
41
41
|
Homepage = "https://validibot.com"
|
|
@@ -131,13 +131,13 @@ class TestOptionalFields:
|
|
|
131
131
|
manifest = EvidenceManifest(**_minimal_manifest_kwargs())
|
|
132
132
|
assert manifest.steps == []
|
|
133
133
|
|
|
134
|
-
# ──
|
|
134
|
+
# ── Manifest source field ───────────────────────────────────
|
|
135
135
|
#
|
|
136
136
|
# ``source`` documents which auth channel produced the run. It's
|
|
137
137
|
# additive and optional — older producers set None, newer
|
|
138
138
|
# producers populate it from the authenticated route (NOT from a
|
|
139
|
-
# client header
|
|
140
|
-
#
|
|
139
|
+
# client header). The schema-version contract still reads ``v1``
|
|
140
|
+
# because the change is purely additive.
|
|
141
141
|
def test_source_defaults_to_none(self):
|
|
142
142
|
"""Older producers and producers that don't track source leave it None."""
|
|
143
143
|
manifest = EvidenceManifest(**_minimal_manifest_kwargs())
|
|
@@ -116,14 +116,22 @@ class EnergyPlusSimulationMetrics(BaseModel):
|
|
|
116
116
|
peak_electric_demand_w: NonNegFloat | None = None
|
|
117
117
|
|
|
118
118
|
# ==========================================================================
|
|
119
|
-
# Building Characteristics (
|
|
119
|
+
# Building Characteristics (simulation-derived)
|
|
120
|
+
#
|
|
121
|
+
# Per ADR-2026-05-22 (provenance rule): only simulation-derived metrics
|
|
122
|
+
# belong here. IDF-text-derived facts (idf_version, zone_count,
|
|
123
|
+
# north_axis_deg) are step inputs populated by the validator's parser
|
|
124
|
+
# and live in the i.* CEL namespace, not in this output envelope.
|
|
120
125
|
# ==========================================================================
|
|
121
126
|
|
|
122
|
-
# Total conditioned floor area
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
#
|
|
126
|
-
|
|
127
|
+
# Total conditioned floor area as computed by EnergyPlus from the
|
|
128
|
+
# geometry — the area EnergyPlus actually simulates conditioning
|
|
129
|
+
# for, which may differ from the design floor area input the
|
|
130
|
+
# author supplied. The name says "simulated" + "conditioned" to
|
|
131
|
+
# distinguish it from inputs the IDF declares; per ADR-2026-05-22
|
|
132
|
+
# the rename from the legacy ``floor_area_m2`` lands with this
|
|
133
|
+
# shared-package release.
|
|
134
|
+
simulated_conditioned_area_m2: NonNegFloat | None = None
|
|
127
135
|
|
|
128
136
|
# ==========================================================================
|
|
129
137
|
# Window / Envelope (from EnergyPlus output variables)
|
|
@@ -251,16 +251,15 @@ class EvidenceManifest(BaseModel):
|
|
|
251
251
|
default_factory=ManifestPayloadDigests,
|
|
252
252
|
description="Session A: empty. Session B: input + output hashes.",
|
|
253
253
|
)
|
|
254
|
-
#
|
|
255
|
-
#
|
|
256
|
-
#
|
|
257
|
-
#
|
|
258
|
-
#
|
|
259
|
-
#
|
|
260
|
-
#
|
|
261
|
-
#
|
|
262
|
-
#
|
|
263
|
-
# (see Trust ADR P1 #4).
|
|
254
|
+
# The auth channel that initiated the run. Pinning it in the
|
|
255
|
+
# manifest lets verifiers answer "what surface produced this
|
|
256
|
+
# run?" without consulting the producer database (the run row
|
|
257
|
+
# may be purged under DO_NOT_STORE retention). Optional because
|
|
258
|
+
# (a) older producers persist runs without populating
|
|
259
|
+
# ``source``, and (b) the field is additive — a missing value
|
|
260
|
+
# preserves the v1 schema-version contract. Producers MUST
|
|
261
|
+
# derive this from the authenticated route, NEVER from a
|
|
262
|
+
# caller-controlled header.
|
|
264
263
|
source: str | None = Field(
|
|
265
264
|
default=None,
|
|
266
265
|
description=(
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|