Skip to content

Commit 52c4687

Browse files
committed
expose more to in unit test, prepare for other models
1 parent 354f900 commit 52c4687

File tree

8 files changed

+70
-73
lines changed

8 files changed

+70
-73
lines changed

src/simple_process_bigraph_runtime/generation/composite_generator.py

Lines changed: 15 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
from typing import Any, cast
22

3-
from process_bigraph_lang.dsl.model import Model, StoreDef, ProcessDef, Reference, Store
3+
from process_bigraph_lang.dsl.model import Model, StoreDef, ProcessDef, Store, Type
44
from vivarium import Vivarium
55

66

@@ -17,7 +17,11 @@ def process_composite(model: Model, assembler: Vivarium):
1717

1818
process_config = {}
1919
for param in process_def.params:
20-
process_config[param.name] = param.default.val if param.default is not None else determine_builtin_default(param.type.ref_text)
20+
param_type = cast(Type, param.type.ref_object)
21+
assert isinstance(param_type, Type)
22+
process_config[param.name] = param.default.val \
23+
if param.default is not None \
24+
else _determine_builtin_default(param_type)
2125

2226
for store_ref in process.stores:
2327
store = cast(Store, store_ref.ref_object)
@@ -29,7 +33,11 @@ def process_composite(model: Model, assembler: Vivarium):
2933
store_path = [composite_def.name, store.name]
3034

3135
for state_def in store_def.states:
32-
store_path_to_value_map[store_path_str] = state_def.default.val if state_def.default is not None else determine_builtin_default(state_def.type.ref_text)
36+
state_type = cast(Type, state_def.type.ref_object)
37+
assert isinstance(state_type, Type)
38+
store_path_to_value_map[store_path_str] = state_def.default.val \
39+
if state_def.default is not None \
40+
else _determine_builtin_default(state_type)
3341

3442
for state_def in store_def.states:
3543
if state_def.name in input_bindings:
@@ -51,10 +59,11 @@ def process_composite(model: Model, assembler: Vivarium):
5159

5260
assembler.add_emitter()
5361

54-
def determine_builtin_default(type_to_infer: str):
55-
if type_to_infer == "float":
62+
63+
def _determine_builtin_default(type_to_infer: Type):
64+
if type_to_infer.name == "float":
5665
return 0.0
57-
elif type_to_infer == "int":
66+
elif type_to_infer.name == "int":
5867
return 0
5968
else:
6069
raise ValueError(f"Unknown built-in default for type `{type_to_infer}`")
Lines changed: 6 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,12 @@
1-
import warnings
1+
from process_bigraph_lang.dsl.model import ProcessDef
22
from vivarium import Vivarium
3-
from process_bigraph_lang.dsl.model import Model
4-
with warnings.catch_warnings(): # Temporary minimal_impact bug in process_bigraphs
5-
warnings.simplefilter("ignore", SyntaxWarning)
6-
#warnings.filterwarnings("error", category=SyntaxWarning)
7-
from process_bigraph import ProcessTypes, Process
83

94

10-
def register_process_defs(assembler: Vivarium, model: Model) -> None:
5+
def register_process_defs(assembler: Vivarium, process_defs: list[ProcessDef]) -> None:
116
# note: does not actually dynamically build processes...yet
127
registry = assembler.core
13-
for process_def in model.processDefs:
14-
if registry.process_registry.find(process_def.name) is not None:
15-
continue
16-
raise ValueError(f"Unknown process definition {process_def.name}")
8+
for process_def in process_defs:
9+
python_path = ".".join(process_def.python_path.path)
10+
if not registry.process_registry.find(python_path):
11+
raise ValueError(f"Unknown process definition {process_def.name}")
1712

src/simple_process_bigraph_runtime/generation/store_generator.py

Lines changed: 0 additions & 16 deletions
This file was deleted.

src/simple_process_bigraph_runtime/generation/type_generator.py

Lines changed: 1 addition & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,6 @@
1-
import warnings
2-
3-
from process_bigraph_lang.dsl.model import Model, Type
1+
from process_bigraph_lang.dsl.model import Type
42
from vivarium import Vivarium
53

6-
with warnings.catch_warnings(): # Temporary minimal_impact bug in process_bigraphs
7-
warnings.simplefilter("ignore", SyntaxWarning)
8-
#warnings.filterwarnings("error", category=SyntaxWarning)
9-
from process_bigraph import ProcessTypes
10-
11-
def collect_types(model: Model) -> list[Type]:
12-
types_to_process: list[Type] = []
13-
for type_to_add in model.types:
14-
# Insert some parsing code here
15-
types_to_process.append(type_to_add)
16-
return types_to_process
17-
184

195
def register_types(assembler: Vivarium, types_to_register: list[Type]):
206
for type_to_register in types_to_register:
Lines changed: 7 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,10 @@
1-
import warnings
2-
3-
from process_bigraph_lang.dsl.model import Model, Unit
1+
from process_bigraph_lang.dsl.model import Unit
42
from vivarium import Vivarium
5-
with warnings.catch_warnings(): # Temporary minimal_impact bug in process_bigraphs
6-
warnings.simplefilter("ignore", SyntaxWarning)
7-
#warnings.filterwarnings("error", category=SyntaxWarning)
8-
from process_bigraph import ProcessTypes
9-
10-
11-
def collect_units(model: Model) -> list[Unit]:
12-
units_to_process: list[Unit] = []
13-
for unit in model.units:
14-
# Insert some parsing code here
15-
units_to_process.append(unit)
16-
return units_to_process
173

184
def register_units(assembler: Vivarium, units_to_register: list[Unit]) -> None:
19-
pass
5+
for unit_to_register in units_to_register:
6+
pass
7+
# if 0 == assembler.get_type(unit_to_register.name).size:
8+
# raise ValueError(f"Type {unit_to_register.name} is an unknown type")
9+
# in the future, we'd attempt to generate a new type
10+

src/simple_process_bigraph_runtime/main.py

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,9 @@
55
import typer
66
from process_bigraph_lang.dsl.model import Model
77
from typing_extensions import Annotated
8+
9+
from simple_process_bigraph_runtime.generation.process_generator import register_process_defs
10+
811
with warnings.catch_warnings(): # Temporary minimal_impact bug in process_bigraphs
912
warnings.simplefilter("ignore", SyntaxWarning)
1013
#warnings.filterwarnings("error", category=SyntaxWarning)
@@ -13,8 +16,8 @@
1316
from vivarium import Vivarium
1417
from process_bigraph import Composite
1518

16-
from simple_process_bigraph_runtime.generation.type_generator import register_types, collect_types
17-
from simple_process_bigraph_runtime.generation.unit_generator import register_units, collect_units
19+
from simple_process_bigraph_runtime.generation.type_generator import register_types
20+
from simple_process_bigraph_runtime.generation.unit_generator import register_units
1821
from simple_process_bigraph_runtime.generation.composite_generator import process_composite
1922
import simple_process_bigraph_runtime.registry.spatio_flux_library as spatioflux
2023
import simple_process_bigraph_runtime.registry.toy_library as toy
@@ -76,8 +79,9 @@ def performConversion(ast_model: Model) -> tuple[Composite, dict, ProcessTypes]:
7679
assembler = Vivarium()
7780
spatioflux.apply_to_vivarium(assembler)
7881
toy.apply_to_vivarium(assembler)
79-
register_types(assembler, collect_types(ast_model))
80-
register_units(assembler, collect_units(ast_model))
82+
register_types(assembler, ast_model.types)
83+
register_units(assembler, ast_model.units)
84+
register_process_defs(assembler, ast_model.processDefs)
8185
process_composite(ast_model, assembler)
8286

8387
return assembler.composite, assembler.make_document(), assembler.core

src/simple_process_bigraph_runtime/registry/toy_library.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import os.path
2-
from typing import Any
3-
from process_bigraph import Process, Step, Composite, ProcessTypes, pp
2+
3+
from process_bigraph import Process, Step
44
from vivarium import Vivarium
55

66
complex_number = {

tests/test_add.py

Lines changed: 31 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,41 @@
11
from pathlib import Path
22

3-
from process_bigraph_lang.dsl.model import Model
3+
from process_bigraph_lang.dsl.model import Model, ProcessDef
4+
from vivarium import Vivarium
45

6+
import simple_process_bigraph_runtime.registry.toy_library as toy
7+
from simple_process_bigraph_runtime.generation.composite_generator import process_composite
8+
from simple_process_bigraph_runtime.generation.process_generator import register_process_defs
9+
from simple_process_bigraph_runtime.generation.type_generator import register_types
10+
from simple_process_bigraph_runtime.generation.unit_generator import register_units
511
from simple_process_bigraph_runtime.main import generatePythonModel, performConversion
612

713

814
def test_add(model_path_abc: Path) -> None:
915
ast_model: Model = generatePythonModel(model_path_abc)
10-
pb_composite, _0, _1 = performConversion(ast_model)
16+
17+
assembler = Vivarium()
18+
for type_name, type_schema in toy.TYPES_DICT.items():
19+
assembler.core.register("toy.type." + type_name, type_schema)
20+
for process_name, process in toy.PROCESS_DICT.items():
21+
assembler.core.register_process("toy." + process_name, process)
22+
register_process_defs(assembler, ast_model.processDefs)
23+
register_types(assembler, ast_model.types)
24+
register_units(assembler, ast_model.units)
25+
process_composite(ast_model, assembler)
26+
composite = assembler.composite
1127

1228
duration = 10.0
13-
pb_composite.run(duration)
29+
composite.run(duration)
30+
core = composite.core
31+
print(core)
32+
33+
add_num: ProcessDef = ast_model.processDefs[0]
34+
assert ".".join(add_num.python_path.path) == 'toy.AddFloatsRepeatedly'
35+
assert ".".join(add_num.python_path.path) in core.process_registry.registry
36+
37+
print(core.process_registry.registry)
38+
39+
print_results: ProcessDef = ast_model.processDefs[1]
40+
assert ".".join(print_results.python_path.path) == 'toy.SaveFloatToFile'
41+
assert ".".join(print_results.python_path.path) in core.process_registry.registry

0 commit comments

Comments
 (0)