foamlib 0.1.7__py3-none-any.whl → 0.1.8__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.8"
2
2
 
3
3
  from ._cases import FoamCase, AsyncFoamCase, FoamTimeDirectory, FoamCaseBase
4
4
  from ._dictionaries import (
foamlib/_dictionaries.py CHANGED
@@ -64,45 +64,46 @@ FoamValue = Union[
64
64
  A value that can be stored in an OpenFOAM dictionary.
65
65
  """
66
66
 
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()
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 = Opt(
71
+ Literal("List") + Literal("<") + common.identifier + Literal(">")
72
+ ).suppress() + (
73
+ (
74
+ Opt(common.integer).suppress()
75
+ + Literal("(").suppress()
76
+ + Group(ZeroOrMore(_VALUE))
77
+ + Literal(")").suppress()
78
+ )
79
+ | (
80
+ common.integer + Literal("{").suppress() + _VALUE + Literal("}").suppress()
81
+ ).set_parse_action(lambda s, loc, tks: [tks[1]] * tks[0])
75
82
  )
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
83
+ _FIELD = (Keyword("uniform").suppress() + _VALUE) | (
84
+ Keyword("nonuniform").suppress() + _LIST
83
85
  )
84
- _dimensions = (
86
+ _DIMENSIONS = (
85
87
  Literal("[").suppress() + common.number * 7 + Literal("]").suppress()
86
88
  ).set_parse_action(lambda s, loc, tks: FoamDimensionSet(*tks))
87
- _dimensioned = (common.identifier + _dimensions + _value).set_parse_action(
89
+ _DIMENSIONED = (common.identifier + _DIMENSIONS + _VALUE).set_parse_action(
88
90
  lambda s, loc, tks: FoamDimensioned(tks[0], tks[1], tks[2].as_list())
89
91
  )
90
92
 
91
- _value << (
92
- _uniform_field
93
- | _nonuniform_field
94
- | _list
95
- | _dimensioned
96
- | _dimensions
93
+ _VALUE << (
94
+ _FIELD
95
+ | _LIST
96
+ | _DIMENSIONED
97
+ | _DIMENSIONS
97
98
  | common.number
98
- | _yes
99
- | _no
99
+ | _YES
100
+ | _NO
100
101
  | common.identifier
101
102
  )
102
103
 
103
104
 
104
105
  def _parse(value: str) -> FoamValue:
105
- return cast(FoamValue, _value.parse_string(value, parse_all=True).as_list()[0])
106
+ return cast(FoamValue, _VALUE.parse_string(value, parse_all=True).as_list()[0])
106
107
 
107
108
 
108
109
  def _serialize_bool(value: Any) -> str:
@@ -114,22 +115,24 @@ def _serialize_bool(value: Any) -> str:
114
115
  raise TypeError(f"Not a bool: {type(value)}")
115
116
 
116
117
 
117
- def _serialize_list(sequence: Any) -> str:
118
- if (
119
- isinstance(sequence, Sequence)
120
- and not isinstance(sequence, str)
118
+ def _is_sequence(value: Any) -> bool:
119
+ return (
120
+ isinstance(value, Sequence)
121
+ and not isinstance(value, str)
121
122
  or numpy
122
- and isinstance(sequence, np.ndarray)
123
- ):
124
- return f"({' '.join(_serialize(v) for v in sequence)})"
123
+ and isinstance(value, np.ndarray)
124
+ )
125
+
126
+
127
+ def _serialize_list(value: Any) -> str:
128
+ if _is_sequence(value):
129
+ return f"({' '.join(_serialize(v) for v in value)})"
125
130
  else:
126
- raise TypeError(f"Not a valid sequence: {type(sequence)}")
131
+ raise TypeError(f"Not a valid sequence: {type(value)}")
127
132
 
128
133
 
129
134
  def _serialize_field(value: Any) -> str:
130
- if isinstance(value, (int, float)):
131
- return f"uniform {value}"
132
- else:
135
+ if _is_sequence(value):
133
136
  try:
134
137
  s = _serialize_list(value)
135
138
  except TypeError:
@@ -151,15 +154,12 @@ def _serialize_field(value: Any) -> str:
151
154
  f"Unsupported sequence length for field: {len(value[0])}"
152
155
  )
153
156
  return f"nonuniform List<{kind}> {len(value)}{s}"
157
+ else:
158
+ return f"uniform {value}"
154
159
 
155
160
 
156
161
  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:
162
+ if _is_sequence(value) and len(value) == 7:
163
163
  return f"[{' '.join(str(v) for v in value)}]"
164
164
  else:
165
165
  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.8
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=Lq8PsAvbE-bdL4D_1TWlLVltS9_14AhRrY0xq_u-bZE,550
2
+ foamlib/_cases.py,sha256=Q5c8vPzKT5coOy4q_H6s5gHgEArhLHByh6GSvDVCRdY,20683
3
+ foamlib/_dictionaries.py,sha256=71E0IMfU4sxjxsHJ7-_kUyuZX6olU31OLKxFhoEvC0s,12903
4
+ foamlib/_subprocesses.py,sha256=5vqdQvpN_2v4GgDqxi-s88NGhZ6doFxkh0XY89ZWuHA,1926
5
+ foamlib/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
6
+ foamlib-0.1.8.dist-info/LICENSE.txt,sha256=5Dte9TUnLZzPRs4NQzl-Jc2-Ljd-t_v0ZR5Ng5r0UsY,35131
7
+ foamlib-0.1.8.dist-info/METADATA,sha256=lTbuF5eCAj3Nce2vHZGBS6xoQPzorYG_GMp5iogXo_A,4526
8
+ foamlib-0.1.8.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
9
+ foamlib-0.1.8.dist-info/top_level.txt,sha256=ZdVYtetXGwPwyfL-WhlhbTFQGAwKX5P_gXxtH9JYFPI,8
10
+ foamlib-0.1.8.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,,