build(agent): melter#14fd4b iteration

This commit is contained in:
agent-14fd4b738639d573 2026-04-24 20:17:42 +02:00
parent 222c185427
commit 76e8b42e88
2 changed files with 47 additions and 2 deletions

View File

@ -7,7 +7,10 @@ name = "idea151-aidmesh-federated-privacy"
version = "0.0.1" version = "0.0.1"
description = "Core primitives for AidMesh: federated, privacy-preserving disaster response orchestration" description = "Core primitives for AidMesh: federated, privacy-preserving disaster response orchestration"
requires-python = ">=3.8" requires-python = ">=3.8"
dynamic = ["readme", "license", "authors"] readme = "README.md"
[tool.setuptools.packages.find]
where = ["src"]
[tool.setuptools] [tool.setuptools]
packages = ["idea151_aidmesh_federated_privacy"] package-dir = {"" = "src"}

42
tests/test_models.py Normal file
View File

@ -0,0 +1,42 @@
from __future__ import annotations
import pytest
from datetime import datetime
from idea151_aidmesh_federated_privacy import models
def test_models_to_dict_and_immutability():
lp = models.LocalProblem(
id="lp-1",
domain="shelter",
assets={"tents": 100},
objectives=["max_coverage"],
constraints={"max_deploy": 50},
)
sd = models.SharedSignals(
forecast={"demand": 120}, capacity_proxies={"depotA": 80}, privacy_budget=1.0, version=1
)
now = datetime.utcnow()
pd = models.PlanDelta(
delta={"alloc": {"depotA": 40}},
timestamp=now,
author="planner-1",
contract_id="c-123",
signature="sig",
)
al = models.AuditLog(entry="created", signer="alice", timestamp=now, contract_id="c-123", version=1)
# to_dict should produce serializable dicts and timestamp should be ISO string
assert lp.to_dict()["id"] == "lp-1"
assert sd.to_dict()["version"] == 1
assert isinstance(pd.to_dict()["timestamp"], str) and "T" in pd.to_dict()["timestamp"]
assert isinstance(al.to_dict()["timestamp"], str) and "T" in al.to_dict()["timestamp"]
# dataclasses are frozen: setting an attribute should raise
with pytest.raises(Exception):
lp.id = "other"