Skip to content

Commit dfd29ec

Browse files
bpiwowarclaude
andcommitted
test: add InstanceConfig tests to identifier stability
Add tests for InstanceConfig to ensure instance identity behavior remains stable across versions: - instance_shared: Single instance used twice (backwards compatible) - instance_separate: Two instances with same params (different IDs) - instance_different_values: Different params (different IDs) This ensures the InstanceConfig feature maintains its unique identifier behavior for distinguishing between shared and separate instances. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
1 parent 03de7c1 commit dfd29ec

File tree

2 files changed

+37
-0
lines changed

2 files changed

+37
-0
lines changed

src/experimaestro/tests/identifier_stability.json

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,9 @@
1616
"float_negative": "67a86cea76bc90be4ec052e8c2f08829fb989e64a1d419541e68485dff85dba1",
1717
"float_simple": "f445ab15c80965e89436c9e58a369fb969f216f392e4cbb19846830731f9a1e4",
1818
"float_zero": "35879908ca1652ea07a4b49f0c44e9aa2ca264bedf14974dd9a765b1fafd1921",
19+
"instance_different_values": "e175afb36163f56078beb516cf7489238b491571519e25c2b5ff68afbeccc643",
20+
"instance_separate": "6d6274a5b541f60833e5d15a556a1b8adfaaa6dd0970a09a57849edd7a0c6fdd",
21+
"instance_shared": "d9a76235da634b81b7559d561322263698852fa2012005781569154d7ad3cfc5",
1922
"int_negative": "4e2ad6ee44e1c9429b56900aea7ba81a6b746a38678d2e29a89805bfb32b9153",
2023
"int_positive": "2c57a590b8bf1bb5283a54d971814e196f395269f2973096dc277dbc24218962",
2124
"int_zero": "2696ea881e0f601d4ad75679560e0e3305fa2f15552952d88ac87df4cc6f9f49",

src/experimaestro/tests/test_identifier_stability.py

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
from experimaestro import (
99
Param,
1010
Config,
11+
InstanceConfig,
1112
Task,
1213
LightweightTask,
1314
Option,
@@ -200,6 +201,24 @@ class CycleB(Config):
200201
a: Param["CycleA"]
201202

202203

204+
# --- InstanceConfig ---
205+
206+
207+
class SubModel(InstanceConfig):
208+
"""InstanceConfig for testing instance identity"""
209+
210+
__xpmid__ = "test.stability.SubModel"
211+
value: Param[int] = 100
212+
213+
214+
class ModelContainer(Config):
215+
"""Config that contains SubModel instances"""
216+
217+
__xpmid__ = "test.stability.ModelContainer"
218+
m1: Param[SubModel]
219+
m2: Param[SubModel]
220+
221+
203222
def get_configurations():
204223
"""Return all test configurations with their identifiers
205224
@@ -288,6 +307,21 @@ def get_configurations():
288307
cycle_a.b = cycle_b
289308
configs["cycle_simple"] = cycle_a
290309

310+
# InstanceConfig - test instance identity
311+
# Single instance used twice (shared) - backwards compatible with regular Config
312+
sm_single = SubModel.C(value=100)
313+
configs["instance_shared"] = ModelContainer.C(m1=sm_single, m2=sm_single)
314+
315+
# Two separate instances with same parameters - different identifiers
316+
sm1 = SubModel.C(value=100)
317+
sm2 = SubModel.C(value=100)
318+
configs["instance_separate"] = ModelContainer.C(m1=sm1, m2=sm2)
319+
320+
# InstanceConfig with different parameter values
321+
sm3 = SubModel.C(value=200)
322+
sm4 = SubModel.C(value=300)
323+
configs["instance_different_values"] = ModelContainer.C(m1=sm3, m2=sm4)
324+
291325
return configs
292326

293327

0 commit comments

Comments
 (0)