build(agent): new-agents-4#58ba63 iteration
This commit is contained in:
parent
08233e4266
commit
cb518d12d1
|
|
@ -29,6 +29,8 @@ def parse_dsl_to_ir(dsl: str) -> Dict[str, object]:
|
||||||
objectives: List[str] = []
|
objectives: List[str] = []
|
||||||
constraints: Dict[str, str] = {}
|
constraints: Dict[str, str] = {}
|
||||||
execution_policy: List[str] = []
|
execution_policy: List[str] = []
|
||||||
|
# Optional version override from the DSL
|
||||||
|
parsed_version: str | None = None
|
||||||
|
|
||||||
lines = [ln.strip() for ln in dsl.strip().splitlines() if ln.strip()]
|
lines = [ln.strip() for ln in dsl.strip().splitlines() if ln.strip()]
|
||||||
for line in lines:
|
for line in lines:
|
||||||
|
|
@ -52,13 +54,19 @@ def parse_dsl_to_ir(dsl: str) -> Dict[str, object]:
|
||||||
rest = line[len("execution_policy:"):].strip()
|
rest = line[len("execution_policy:"):].strip()
|
||||||
parts = [p.strip() for p in rest.replace(";", ",").split(",") if p.strip()]
|
parts = [p.strip() for p in rest.replace(";", ",").split(",") if p.strip()]
|
||||||
execution_policy = parts
|
execution_policy = parts
|
||||||
|
elif lower.startswith("version:"):
|
||||||
|
# Allow users to explicitly set the IR version via the DSL
|
||||||
|
rest = line[len("version:"):].strip()
|
||||||
|
if rest:
|
||||||
|
parsed_version = rest
|
||||||
|
|
||||||
ir = {
|
ir = {
|
||||||
"assets": assets,
|
"assets": assets,
|
||||||
"objectives": objectives,
|
"objectives": objectives,
|
||||||
"constraints": constraints,
|
"constraints": constraints,
|
||||||
"execution_policy": execution_policy,
|
"execution_policy": execution_policy,
|
||||||
"version": "0.1",
|
# Default remains 0.1 unless overridden by DSL via `version:` line
|
||||||
|
"version": parsed_version if parsed_version is not None else "0.1",
|
||||||
}
|
}
|
||||||
# Attach lightweight, deterministic attestations to support auditability.
|
# Attach lightweight, deterministic attestations to support auditability.
|
||||||
ir = _attach_attestations(ir)
|
ir = _attach_attestations(ir)
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,20 @@
|
||||||
|
import unittest
|
||||||
|
|
||||||
|
from equicompiler_algebraic_portfolio_dsl_to_.core import parse_dsl_to_ir
|
||||||
|
|
||||||
|
|
||||||
|
class TestVersionOverride(unittest.TestCase):
|
||||||
|
def test_version_override_via_dsl(self):
|
||||||
|
dsl = (
|
||||||
|
"version: 0.2\n"
|
||||||
|
"assets: AAPL, MSFT\n"
|
||||||
|
"objectives: maximize_return\n"
|
||||||
|
"constraints: max_drawdown=0.2, var=0.95"
|
||||||
|
)
|
||||||
|
ir = parse_dsl_to_ir(dsl)
|
||||||
|
self.assertIn("version", ir)
|
||||||
|
self.assertEqual(ir["version"], "0.2")
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
unittest.main()
|
||||||
Loading…
Reference in New Issue