# In een echte map staan de eerste twee bronnen in aparte .py-bestanden.
# Hier worden dezelfde modules in geheugen geladen voor reproduceerbare uitvoer.
import sys
import types
import importlib

bronnen = {
    "hab_meet": "from dataclasses import dataclass\n@dataclass(frozen=True)\nclass Meting:\n    waarde: float\n    tijd_s: float\n",
    "hab_vraag": "from hab_meet import Meting\ndef vraag(m: Meting, r=20.0):\n    return max(0.0,min(2000.0,200.0*(r-m.waarde)))\n"}
oud = {naam:sys.modules.get(naam) for naam in bronnen}
try:
    for naam,bron in bronnen.items():
        module = types.ModuleType(naam)
        sys.modules[naam] = module
        exec(bron,module.__dict__)
    meten = importlib.import_module("hab_meet")
    regelen = importlib.import_module("hab_vraag")
    print("module-invoer", regelen.vraag(meten.Meting(18.0,10)), "W")
finally:
    for naam,vorige in oud.items():
        if vorige is None: sys.modules.pop(naam,None)
        else: sys.modules[naam] = vorige
