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 CHANGED
@@ -1,4 +1,4 @@
1
- __version__ = "0.1.7"
1
+ __version__ = "0.1.9"
2
2
 
3
3
  from ._cases import FoamCase, AsyncFoamCase, FoamTimeDirectory, FoamCaseBase
4
4
  from ._dictionaries import (
foamlib/_dictionaries.py CHANGED
@@ -23,7 +23,19 @@ except ModuleNotFoundError:
23
23
  else:
24
24
  numpy = True
25
25
 
26
- from pyparsing import Group, Keyword, Opt, ZeroOrMore, Literal, Forward, common
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
- _yes = Keyword("yes").set_parse_action(lambda s, loc, tks: True)
68
- _no = Keyword("no").set_parse_action(lambda s, loc, tks: False)
69
- _value = Forward()
70
- _list = (
71
- Opt(common.integer).suppress()
72
- + Literal("(").suppress()
73
- + Group(ZeroOrMore(_value))
74
- + Literal(")").suppress()
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
- _uniform_field = Keyword("uniform").suppress() + _value
77
- _nonuniform_field = (
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
- _dimensions = (
101
+ _DIMENSIONS = (
85
102
  Literal("[").suppress() + common.number * 7 + Literal("]").suppress()
86
103
  ).set_parse_action(lambda s, loc, tks: FoamDimensionSet(*tks))
87
- _dimensioned = (common.identifier + _dimensions + _value).set_parse_action(
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
- _value << (
92
- _uniform_field
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, _value.parse_string(value, parse_all=True).as_list()[0])
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 _serialize_list(sequence: Any) -> str:
118
- if (
119
- isinstance(sequence, Sequence)
120
- and not isinstance(sequence, str)
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(sequence, np.ndarray)
123
- ):
124
- return f"({' '.join(_serialize(v) for v in sequence)})"
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(sequence)}")
139
+ raise TypeError(f"Not a valid sequence: {type(value)}")
127
140
 
128
141
 
129
142
  def _serialize_field(value: Any) -> str:
130
- if isinstance(value, (int, float)):
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)}")
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: foamlib
3
- Version: 0.1.7
3
+ Version: 0.1.9
4
4
  Summary: A Python interface for interacting with OpenFOAM
5
5
  Author-email: "Gabriel S. Gerlero" <ggerlero@cimec.unl.edu.ar>
6
6
  Project-URL: Homepage, https://github.com/gerlero/foamlib
@@ -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,,
@@ -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,,