foamlib 0.1.7__py3-none-any.whl → 0.1.9__py3-none-any.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.
- foamlib/__init__.py +1 -1
- foamlib/_dictionaries.py +54 -46
- {foamlib-0.1.7.dist-info → foamlib-0.1.9.dist-info}/METADATA +1 -1
- foamlib-0.1.9.dist-info/RECORD +10 -0
- foamlib-0.1.7.dist-info/RECORD +0 -10
- {foamlib-0.1.7.dist-info → foamlib-0.1.9.dist-info}/LICENSE.txt +0 -0
- {foamlib-0.1.7.dist-info → foamlib-0.1.9.dist-info}/WHEEL +0 -0
- {foamlib-0.1.7.dist-info → foamlib-0.1.9.dist-info}/top_level.txt +0 -0
foamlib/__init__.py
CHANGED
foamlib/_dictionaries.py
CHANGED
@@ -23,7 +23,19 @@ except ModuleNotFoundError:
|
|
23
23
|
else:
|
24
24
|
numpy = True
|
25
25
|
|
26
|
-
from pyparsing import
|
26
|
+
from pyparsing import (
|
27
|
+
Forward,
|
28
|
+
Group,
|
29
|
+
Keyword,
|
30
|
+
Literal,
|
31
|
+
OneOrMore,
|
32
|
+
Opt,
|
33
|
+
Word,
|
34
|
+
ZeroOrMore,
|
35
|
+
common,
|
36
|
+
identchars,
|
37
|
+
identbodychars,
|
38
|
+
)
|
27
39
|
|
28
40
|
FoamDimensionSet = namedtuple(
|
29
41
|
"FoamDimensionSet",
|
@@ -64,45 +76,42 @@ FoamValue = Union[
|
|
64
76
|
A value that can be stored in an OpenFOAM dictionary.
|
65
77
|
"""
|
66
78
|
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
+ Literal("
|
79
|
+
_YES = Keyword("yes").set_parse_action(lambda s, loc, tks: True)
|
80
|
+
_NO = Keyword("no").set_parse_action(lambda s, loc, tks: False)
|
81
|
+
_WORDS = OneOrMore(Word(identchars, identbodychars + "(),")).set_parse_action(
|
82
|
+
lambda s, loc, tks: " ".join(tks)
|
83
|
+
)
|
84
|
+
_VALUE = Forward()
|
85
|
+
_LIST = Opt(
|
86
|
+
Literal("List") + Literal("<") + common.identifier + Literal(">")
|
87
|
+
).suppress() + (
|
88
|
+
(
|
89
|
+
Opt(common.integer).suppress()
|
90
|
+
+ Literal("(").suppress()
|
91
|
+
+ Group(ZeroOrMore(_VALUE))
|
92
|
+
+ Literal(")").suppress()
|
93
|
+
)
|
94
|
+
| (
|
95
|
+
common.integer + Literal("{").suppress() + _VALUE + Literal("}").suppress()
|
96
|
+
).set_parse_action(lambda s, loc, tks: [tks[1]] * tks[0])
|
75
97
|
)
|
76
|
-
|
77
|
-
|
78
|
-
Keyword("nonuniform").suppress()
|
79
|
-
+ Literal("List<").suppress()
|
80
|
-
+ common.identifier.suppress()
|
81
|
-
+ Literal(">").suppress()
|
82
|
-
+ _list
|
98
|
+
_FIELD = (Keyword("uniform").suppress() + _VALUE) | (
|
99
|
+
Keyword("nonuniform").suppress() + _LIST
|
83
100
|
)
|
84
|
-
|
101
|
+
_DIMENSIONS = (
|
85
102
|
Literal("[").suppress() + common.number * 7 + Literal("]").suppress()
|
86
103
|
).set_parse_action(lambda s, loc, tks: FoamDimensionSet(*tks))
|
87
|
-
|
104
|
+
_DIMENSIONED = (common.identifier + _DIMENSIONS + _VALUE).set_parse_action(
|
88
105
|
lambda s, loc, tks: FoamDimensioned(tks[0], tks[1], tks[2].as_list())
|
89
106
|
)
|
90
107
|
|
91
|
-
|
92
|
-
|
93
|
-
| _nonuniform_field
|
94
|
-
| _list
|
95
|
-
| _dimensioned
|
96
|
-
| _dimensions
|
97
|
-
| common.number
|
98
|
-
| _yes
|
99
|
-
| _no
|
100
|
-
| common.identifier
|
108
|
+
_VALUE << (
|
109
|
+
_FIELD | _LIST | _DIMENSIONED | _DIMENSIONS | common.number | _YES | _NO | _WORDS
|
101
110
|
)
|
102
111
|
|
103
112
|
|
104
113
|
def _parse(value: str) -> FoamValue:
|
105
|
-
return cast(FoamValue,
|
114
|
+
return cast(FoamValue, _VALUE.parse_string(value, parse_all=True).as_list()[0])
|
106
115
|
|
107
116
|
|
108
117
|
def _serialize_bool(value: Any) -> str:
|
@@ -114,22 +123,24 @@ def _serialize_bool(value: Any) -> str:
|
|
114
123
|
raise TypeError(f"Not a bool: {type(value)}")
|
115
124
|
|
116
125
|
|
117
|
-
def
|
118
|
-
|
119
|
-
isinstance(
|
120
|
-
and not isinstance(
|
126
|
+
def _is_sequence(value: Any) -> bool:
|
127
|
+
return (
|
128
|
+
isinstance(value, Sequence)
|
129
|
+
and not isinstance(value, str)
|
121
130
|
or numpy
|
122
|
-
and isinstance(
|
123
|
-
)
|
124
|
-
|
131
|
+
and isinstance(value, np.ndarray)
|
132
|
+
)
|
133
|
+
|
134
|
+
|
135
|
+
def _serialize_list(value: Any) -> str:
|
136
|
+
if _is_sequence(value):
|
137
|
+
return f"({' '.join(_serialize(v) for v in value)})"
|
125
138
|
else:
|
126
|
-
raise TypeError(f"Not a valid sequence: {type(
|
139
|
+
raise TypeError(f"Not a valid sequence: {type(value)}")
|
127
140
|
|
128
141
|
|
129
142
|
def _serialize_field(value: Any) -> str:
|
130
|
-
if
|
131
|
-
return f"uniform {value}"
|
132
|
-
else:
|
143
|
+
if _is_sequence(value):
|
133
144
|
try:
|
134
145
|
s = _serialize_list(value)
|
135
146
|
except TypeError:
|
@@ -151,15 +162,12 @@ def _serialize_field(value: Any) -> str:
|
|
151
162
|
f"Unsupported sequence length for field: {len(value[0])}"
|
152
163
|
)
|
153
164
|
return f"nonuniform List<{kind}> {len(value)}{s}"
|
165
|
+
else:
|
166
|
+
return f"uniform {value}"
|
154
167
|
|
155
168
|
|
156
169
|
def _serialize_dimensions(value: Any) -> str:
|
157
|
-
if (
|
158
|
-
isinstance(value, Sequence)
|
159
|
-
and not isinstance(value, str)
|
160
|
-
or numpy
|
161
|
-
and isinstance(value, np.ndarray)
|
162
|
-
) and len(value) == 7:
|
170
|
+
if _is_sequence(value) and len(value) == 7:
|
163
171
|
return f"[{' '.join(str(v) for v in value)}]"
|
164
172
|
else:
|
165
173
|
raise TypeError(f"Not a valid dimension set: {type(value)}")
|
@@ -0,0 +1,10 @@
|
|
1
|
+
foamlib/__init__.py,sha256=BmI64MQCGyuDytUoTHlKOzKRZ5_WgQ_8mmzZ0svKnS4,550
|
2
|
+
foamlib/_cases.py,sha256=Q5c8vPzKT5coOy4q_H6s5gHgEArhLHByh6GSvDVCRdY,20683
|
3
|
+
foamlib/_dictionaries.py,sha256=zB4Ubceytn_AurfMwXMgbqfVMX4jmcMhBmgjAsK70yI,13077
|
4
|
+
foamlib/_subprocesses.py,sha256=5vqdQvpN_2v4GgDqxi-s88NGhZ6doFxkh0XY89ZWuHA,1926
|
5
|
+
foamlib/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
6
|
+
foamlib-0.1.9.dist-info/LICENSE.txt,sha256=5Dte9TUnLZzPRs4NQzl-Jc2-Ljd-t_v0ZR5Ng5r0UsY,35131
|
7
|
+
foamlib-0.1.9.dist-info/METADATA,sha256=dGu57cfJ7lEfiec_q-se_ihdl9KC5ZWJNJetGkdPmv0,4526
|
8
|
+
foamlib-0.1.9.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
|
9
|
+
foamlib-0.1.9.dist-info/top_level.txt,sha256=ZdVYtetXGwPwyfL-WhlhbTFQGAwKX5P_gXxtH9JYFPI,8
|
10
|
+
foamlib-0.1.9.dist-info/RECORD,,
|
foamlib-0.1.7.dist-info/RECORD
DELETED
@@ -1,10 +0,0 @@
|
|
1
|
-
foamlib/__init__.py,sha256=4M78qiB1De99KYGW79G2QuvIQxP54HQ9fNaVeRcf-eo,550
|
2
|
-
foamlib/_cases.py,sha256=Q5c8vPzKT5coOy4q_H6s5gHgEArhLHByh6GSvDVCRdY,20683
|
3
|
-
foamlib/_dictionaries.py,sha256=IVq2dTEhSGKUVgBEIttk4NotE1FxQ5igY99rjPw-EcI,12871
|
4
|
-
foamlib/_subprocesses.py,sha256=5vqdQvpN_2v4GgDqxi-s88NGhZ6doFxkh0XY89ZWuHA,1926
|
5
|
-
foamlib/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
6
|
-
foamlib-0.1.7.dist-info/LICENSE.txt,sha256=5Dte9TUnLZzPRs4NQzl-Jc2-Ljd-t_v0ZR5Ng5r0UsY,35131
|
7
|
-
foamlib-0.1.7.dist-info/METADATA,sha256=tMiYqlMCkMvqhKrtKdnSZckprsZwIhX_guIOFqsljac,4526
|
8
|
-
foamlib-0.1.7.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
|
9
|
-
foamlib-0.1.7.dist-info/top_level.txt,sha256=ZdVYtetXGwPwyfL-WhlhbTFQGAwKX5P_gXxtH9JYFPI,8
|
10
|
-
foamlib-0.1.7.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|