musica 0.11.1.4__cp311-cp311-win32.whl → 0.12.0__cp311-cp311-win32.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of musica might be problematic. Click here for more details.
- musica/_musica.cp311-win32.pyd +0 -0
- musica/_version.py +1 -1
- musica/constants.py +3 -0
- musica/mechanism_configuration/__init__.py +1 -0
- musica/mechanism_configuration/aqueous_equilibrium.py +101 -0
- musica/mechanism_configuration/arrhenius.py +121 -0
- musica/mechanism_configuration/branched.py +116 -0
- musica/mechanism_configuration/condensed_phase_arrhenius.py +116 -0
- musica/mechanism_configuration/condensed_phase_photolysis.py +91 -0
- musica/mechanism_configuration/emission.py +67 -0
- musica/mechanism_configuration/first_order_loss.py +67 -0
- musica/mechanism_configuration/henrys_law.py +85 -0
- musica/mechanism_configuration/mechanism_configuration.py +161 -0
- musica/mechanism_configuration/phase.py +43 -0
- musica/mechanism_configuration/photolysis.py +83 -0
- musica/mechanism_configuration/reactions.py +61 -0
- musica/mechanism_configuration/simpol_phase_transfer.py +88 -0
- musica/mechanism_configuration/species.py +72 -0
- musica/mechanism_configuration/surface.py +89 -0
- musica/mechanism_configuration/troe.py +137 -0
- musica/mechanism_configuration/tunneling.py +103 -0
- musica/mechanism_configuration/user_defined.py +83 -0
- musica/mechanism_configuration/utils.py +10 -0
- musica/mechanism_configuration/wet_deposition.py +49 -0
- musica/mechanism_configuration.cpp +0 -1
- musica/test/examples/v1/full_configuration/full_configuration.json +30 -15
- musica/test/examples/v1/full_configuration/full_configuration.yaml +16 -1
- musica/test/test_analytical.py +1 -1
- musica/test/test_parser.py +3 -639
- musica/test/test_serializer.py +69 -0
- musica/test/test_util_full_mechanism.py +668 -0
- musica/types.py +1 -4
- {musica-0.11.1.4.dist-info → musica-0.12.0.dist-info}/METADATA +61 -46
- musica-0.12.0.dist-info/RECORD +57 -0
- musica-0.12.0.dist-info/licenses/AUTHORS.md +59 -0
- musica/mechanism_configuration.py +0 -1291
- musica-0.11.1.4.dist-info/RECORD +0 -33
- {musica-0.11.1.4.dist-info → musica-0.12.0.dist-info}/WHEEL +0 -0
- {musica-0.11.1.4.dist-info → musica-0.12.0.dist-info}/licenses/LICENSE +0 -0
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import pytest
|
|
2
|
+
import os
|
|
3
|
+
from musica.mechanism_configuration import MechanismSerializer, Mechanism, Parser
|
|
4
|
+
from test_util_full_mechanism import get_fully_defined_mechanism, validate_full_v1_mechanism
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
def test_mechanism_export_loop(tmp_path):
|
|
8
|
+
parser = Parser()
|
|
9
|
+
MECHANISM_FULLY_DEFINED = get_fully_defined_mechanism()
|
|
10
|
+
extensions = [".yml", ".yaml", ".json"]
|
|
11
|
+
for extension in extensions:
|
|
12
|
+
path = f"{tmp_path}/test_mechanism{extension}"
|
|
13
|
+
MECHANISM_FULLY_DEFINED.export(path)
|
|
14
|
+
mechanism = parser.parse(path)
|
|
15
|
+
validate_full_v1_mechanism(mechanism)
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
def test_serialize_parser_loop(tmp_path):
|
|
19
|
+
parser = Parser()
|
|
20
|
+
MECHANISM_FULLY_DEFINED = get_fully_defined_mechanism()
|
|
21
|
+
extensions = [".yml", ".yaml", ".json"]
|
|
22
|
+
for extension in extensions:
|
|
23
|
+
path = f"{tmp_path}/test_mechanism{extension}"
|
|
24
|
+
MechanismSerializer.serialize(MECHANISM_FULLY_DEFINED, path)
|
|
25
|
+
mechanism = parser.parse(path)
|
|
26
|
+
validate_full_v1_mechanism(mechanism)
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
def test_serialize_to_file(tmp_path):
|
|
30
|
+
MECHANISM_FULLY_DEFINED = get_fully_defined_mechanism()
|
|
31
|
+
extensions = [".yml", ".yaml", ".json"]
|
|
32
|
+
for extension in extensions:
|
|
33
|
+
file_path = f'{tmp_path}/test_mechanism{extension}'
|
|
34
|
+
assert not os.path.exists(file_path)
|
|
35
|
+
MechanismSerializer.serialize(MECHANISM_FULLY_DEFINED, file_path)
|
|
36
|
+
assert os.path.exists(file_path)
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
def test_bad_inputs():
|
|
40
|
+
with pytest.raises(TypeError):
|
|
41
|
+
MechanismSerializer.serialize(None)
|
|
42
|
+
with pytest.raises(TypeError):
|
|
43
|
+
MechanismSerializer.serialize('not a mechanism')
|
|
44
|
+
with pytest.raises(Exception):
|
|
45
|
+
MechanismSerializer.serialize(get_fully_defined_mechanism(), 'unsupported.txt')
|
|
46
|
+
|
|
47
|
+
|
|
48
|
+
def test_path_creation(tmp_path):
|
|
49
|
+
mechanism = Mechanism(name="Full Configuration")
|
|
50
|
+
path = f"{tmp_path}/non_existant_path/"
|
|
51
|
+
assert not os.path.exists(path)
|
|
52
|
+
MechanismSerializer.serialize(mechanism, f"{path}test_mechanism.json")
|
|
53
|
+
assert os.path.exists(path)
|
|
54
|
+
|
|
55
|
+
|
|
56
|
+
def test_overwrite_file(tmp_path):
|
|
57
|
+
mechanism = Mechanism(name="Full Configuration")
|
|
58
|
+
file_path = f'{tmp_path}/test_mechanism.json'
|
|
59
|
+
assert not os.path.exists(file_path)
|
|
60
|
+
|
|
61
|
+
# write first file
|
|
62
|
+
MechanismSerializer.serialize(mechanism, file_path)
|
|
63
|
+
files = list(tmp_path.iterdir())
|
|
64
|
+
assert len(files) == 1
|
|
65
|
+
|
|
66
|
+
# overwrite file
|
|
67
|
+
MechanismSerializer.serialize(mechanism, file_path)
|
|
68
|
+
files = list(tmp_path.iterdir())
|
|
69
|
+
assert len(files) == 1
|