Merge system-optimization IR contracts and retire legacy engine adapter
This commit is contained in:
commit
743663e3a6
14 files changed
+3817
-161
No files matched your search
@@ -0,0 +1,35 @@
|
||||
"""Read the archived IR schema examples without a Python numerical engine."""
|
||||
from dataclasses import is_dataclass
|
||||
from enum import Enum
|
||||
from functools import lru_cache
|
||||
import gzip
|
||||
import json
|
||||
from pathlib import Path
|
||||
|
||||
from app.simulation.ir import schema
|
||||
|
||||
|
||||
def _decode(value):
|
||||
if isinstance(value, list):
|
||||
return tuple(_decode(item) for item in value)
|
||||
if isinstance(value, dict):
|
||||
if 'enum' in value:
|
||||
cls = getattr(schema, value['enum'])
|
||||
if not isinstance(cls, type) or not issubclass(cls, Enum):
|
||||
raise ValueError('Invalid IR enum in fixture')
|
||||
return cls(value['value'])
|
||||
cls = getattr(schema, value['type'])
|
||||
if not isinstance(cls, type) or not is_dataclass(cls):
|
||||
raise ValueError('Invalid IR record in fixture')
|
||||
return cls(**{key: _decode(item) for key, item in value['fields'].items()})
|
||||
return value
|
||||
|
||||
|
||||
@lru_cache(maxsize=1)
|
||||
def _references():
|
||||
path = Path(__file__).parent / 'data/system-ir-v2-reference.json.gz'
|
||||
return json.loads(gzip.decompress(path.read_bytes()))['programs']
|
||||
|
||||
|
||||
def reference_ir(name):
|
||||
return _decode(_references()[name])
|
||||
Reference in new issue
Block a user