foamlib 0.8.10__tar.gz → 0.8.11__tar.gz

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.
Files changed (63) hide show
  1. {foamlib-0.8.10 → foamlib-0.8.11}/PKG-INFO +1 -26
  2. {foamlib-0.8.10 → foamlib-0.8.11}/foamlib/__init__.py +1 -1
  3. {foamlib-0.8.10 → foamlib-0.8.11}/foamlib/_files/_parsing.py +12 -0
  4. {foamlib-0.8.10 → foamlib-0.8.11}/pyproject.toml +19 -18
  5. {foamlib-0.8.10 → foamlib-0.8.11}/tests/test_files/test_parsing/test_advanced.py +5 -6
  6. {foamlib-0.8.10 → foamlib-0.8.11}/tests/test_files/test_parsing/test_basic.py +6 -0
  7. {foamlib-0.8.10 → foamlib-0.8.11}/tests/test_files/test_parsing/test_decompose_par.py +3 -3
  8. {foamlib-0.8.10 → foamlib-0.8.11}/tests/test_files/test_parsing/test_fields.py +7 -4
  9. {foamlib-0.8.10 → foamlib-0.8.11}/tests/test_files/test_parsing/test_fv_schemes.py +7 -7
  10. {foamlib-0.8.10 → foamlib-0.8.11}/tests/test_files/test_parsing/test_intermediate.py +4 -2
  11. {foamlib-0.8.10 → foamlib-0.8.11}/tests/test_files/test_parsing/test_poly_mesh.py +17 -15
  12. {foamlib-0.8.10 → foamlib-0.8.11}/.devcontainer.json +0 -0
  13. {foamlib-0.8.10 → foamlib-0.8.11}/.dockerignore +0 -0
  14. {foamlib-0.8.10 → foamlib-0.8.11}/.git-blame-ignore-revs +0 -0
  15. {foamlib-0.8.10 → foamlib-0.8.11}/.github/dependabot.yml +0 -0
  16. {foamlib-0.8.10 → foamlib-0.8.11}/.github/workflows/ci.yml +0 -0
  17. {foamlib-0.8.10 → foamlib-0.8.11}/.github/workflows/docker.yml +0 -0
  18. {foamlib-0.8.10 → foamlib-0.8.11}/.github/workflows/dockerhub-description.yml +0 -0
  19. {foamlib-0.8.10 → foamlib-0.8.11}/.github/workflows/pypi-publish.yml +0 -0
  20. {foamlib-0.8.10 → foamlib-0.8.11}/.gitignore +0 -0
  21. {foamlib-0.8.10 → foamlib-0.8.11}/.readthedocs.yaml +0 -0
  22. {foamlib-0.8.10 → foamlib-0.8.11}/CONTRIBUTING.md +0 -0
  23. {foamlib-0.8.10 → foamlib-0.8.11}/Dockerfile +0 -0
  24. {foamlib-0.8.10 → foamlib-0.8.11}/LICENSE.txt +0 -0
  25. {foamlib-0.8.10 → foamlib-0.8.11}/README.md +0 -0
  26. {foamlib-0.8.10 → foamlib-0.8.11}/benchmark/benchmark.png +0 -0
  27. {foamlib-0.8.10 → foamlib-0.8.11}/benchmark/benchmark.py +0 -0
  28. {foamlib-0.8.10 → foamlib-0.8.11}/benchmark/requirements.txt +0 -0
  29. {foamlib-0.8.10 → foamlib-0.8.11}/benchmark/ruff.toml +0 -0
  30. {foamlib-0.8.10 → foamlib-0.8.11}/docs/Makefile +0 -0
  31. {foamlib-0.8.10 → foamlib-0.8.11}/docs/cases.rst +0 -0
  32. {foamlib-0.8.10 → foamlib-0.8.11}/docs/conf.py +0 -0
  33. {foamlib-0.8.10 → foamlib-0.8.11}/docs/files.rst +0 -0
  34. {foamlib-0.8.10 → foamlib-0.8.11}/docs/index.rst +0 -0
  35. {foamlib-0.8.10 → foamlib-0.8.11}/docs/make.bat +0 -0
  36. {foamlib-0.8.10 → foamlib-0.8.11}/docs/ruff.toml +0 -0
  37. {foamlib-0.8.10 → foamlib-0.8.11}/foamlib/_cases/__init__.py +0 -0
  38. {foamlib-0.8.10 → foamlib-0.8.11}/foamlib/_cases/_async.py +0 -0
  39. {foamlib-0.8.10 → foamlib-0.8.11}/foamlib/_cases/_base.py +0 -0
  40. {foamlib-0.8.10 → foamlib-0.8.11}/foamlib/_cases/_run.py +0 -0
  41. {foamlib-0.8.10 → foamlib-0.8.11}/foamlib/_cases/_slurm.py +0 -0
  42. {foamlib-0.8.10 → foamlib-0.8.11}/foamlib/_cases/_subprocess.py +0 -0
  43. {foamlib-0.8.10 → foamlib-0.8.11}/foamlib/_cases/_sync.py +0 -0
  44. {foamlib-0.8.10 → foamlib-0.8.11}/foamlib/_cases/_util.py +0 -0
  45. {foamlib-0.8.10 → foamlib-0.8.11}/foamlib/_files/__init__.py +0 -0
  46. {foamlib-0.8.10 → foamlib-0.8.11}/foamlib/_files/_files.py +0 -0
  47. {foamlib-0.8.10 → foamlib-0.8.11}/foamlib/_files/_io.py +0 -0
  48. {foamlib-0.8.10 → foamlib-0.8.11}/foamlib/_files/_serialization.py +0 -0
  49. {foamlib-0.8.10 → foamlib-0.8.11}/foamlib/_files/_types.py +0 -0
  50. {foamlib-0.8.10 → foamlib-0.8.11}/foamlib/py.typed +0 -0
  51. {foamlib-0.8.10 → foamlib-0.8.11}/logo.png +0 -0
  52. {foamlib-0.8.10 → foamlib-0.8.11}/tests/__init__.py +0 -0
  53. {foamlib-0.8.10 → foamlib-0.8.11}/tests/ruff.toml +0 -0
  54. {foamlib-0.8.10 → foamlib-0.8.11}/tests/test_cases/__init__.py +0 -0
  55. {foamlib-0.8.10 → foamlib-0.8.11}/tests/test_cases/test_cavity.py +0 -0
  56. {foamlib-0.8.10 → foamlib-0.8.11}/tests/test_cases/test_cavity_async.py +0 -0
  57. {foamlib-0.8.10 → foamlib-0.8.11}/tests/test_cases/test_flange.py +0 -0
  58. {foamlib-0.8.10 → foamlib-0.8.11}/tests/test_cases/test_flange_async.py +0 -0
  59. {foamlib-0.8.10 → foamlib-0.8.11}/tests/test_example.py +0 -0
  60. {foamlib-0.8.10 → foamlib-0.8.11}/tests/test_files/__init__.py +0 -0
  61. {foamlib-0.8.10 → foamlib-0.8.11}/tests/test_files/test_dumps.py +0 -0
  62. {foamlib-0.8.10 → foamlib-0.8.11}/tests/test_files/test_files.py +0 -0
  63. {foamlib-0.8.10 → foamlib-0.8.11}/tests/test_files/test_parsing/__init__.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: foamlib
3
- Version: 0.8.10
3
+ Version: 0.8.11
4
4
  Summary: A Python interface for interacting with OpenFOAM
5
5
  Project-URL: Homepage, https://github.com/gerlero/foamlib
6
6
  Project-URL: Repository, https://github.com/gerlero/foamlib
@@ -30,35 +30,10 @@ Requires-Dist: numpy<3,>=1
30
30
  Requires-Dist: pyparsing<4,>=3.1.2
31
31
  Requires-Dist: rich<15,>=13
32
32
  Requires-Dist: typing-extensions<5,>=4; python_version < '3.11'
33
- Provides-Extra: dev
34
- Requires-Dist: mypy<2,>=1; extra == 'dev'
35
- Requires-Dist: pytest-asyncio<0.27,>=0.21; extra == 'dev'
36
- Requires-Dist: pytest-cov; extra == 'dev'
37
- Requires-Dist: pytest<9,>=7; extra == 'dev'
38
- Requires-Dist: ruff; extra == 'dev'
39
- Requires-Dist: scipy-stubs; (python_version >= '3.10') and extra == 'dev'
40
- Requires-Dist: scipy<2,>=1; extra == 'dev'
41
- Requires-Dist: sphinx-rtd-theme; extra == 'dev'
42
- Requires-Dist: sphinx<9,>=5; extra == 'dev'
43
33
  Provides-Extra: docs
44
34
  Requires-Dist: ruff; extra == 'docs'
45
35
  Requires-Dist: sphinx-rtd-theme; extra == 'docs'
46
36
  Requires-Dist: sphinx<9,>=5; extra == 'docs'
47
- Provides-Extra: lint
48
- Requires-Dist: ruff; extra == 'lint'
49
- Provides-Extra: test
50
- Requires-Dist: mypy<2,>=1; extra == 'test'
51
- Requires-Dist: pytest-asyncio<0.27,>=0.21; extra == 'test'
52
- Requires-Dist: pytest-cov; extra == 'test'
53
- Requires-Dist: pytest<9,>=7; extra == 'test'
54
- Requires-Dist: scipy<2,>=1; extra == 'test'
55
- Provides-Extra: typing
56
- Requires-Dist: mypy<2,>=1; extra == 'typing'
57
- Requires-Dist: pytest-asyncio<0.27,>=0.21; extra == 'typing'
58
- Requires-Dist: pytest-cov; extra == 'typing'
59
- Requires-Dist: pytest<9,>=7; extra == 'typing'
60
- Requires-Dist: scipy-stubs; (python_version >= '3.10') and extra == 'typing'
61
- Requires-Dist: scipy<2,>=1; extra == 'typing'
62
37
  Description-Content-Type: text/markdown
63
38
 
64
39
  [<img alt="foamlib" src="https://github.com/gerlero/foamlib/raw/main/logo.png" height="65">](https://github.com/gerlero/foamlib)
@@ -1,6 +1,6 @@
1
1
  """A Python interface for interacting with OpenFOAM."""
2
2
 
3
- __version__ = "0.8.10"
3
+ __version__ = "0.8.11"
4
4
 
5
5
  from ._cases import (
6
6
  AsyncFoamCase,
@@ -115,6 +115,10 @@ def _tensor_list(
115
115
  rf"\((?:{ignore_pattern})?(?:{tensor.re.pattern}{ignore_pattern})*{tensor.re.pattern}(?:{ignore_pattern})?\)"
116
116
  ).add_parse_action(
117
117
  lambda tks: [_parse_ascii_field(tks[0], tensor_kind, ignore=ignore)]
118
+ ) | (
119
+ (Literal("(") + Literal(")"))
120
+ .suppress()
121
+ .add_parse_action(lambda: np.array([]).reshape(0, *tensor_kind.shape))
118
122
  )
119
123
 
120
124
  def count_parse_action(tks: ParseResults) -> None:
@@ -122,6 +126,14 @@ def _tensor_list(
122
126
  length = tks[0]
123
127
  assert isinstance(length, int)
124
128
 
129
+ if not length:
130
+ list_ <<= (
131
+ ((Literal("(") + Literal(")")) | (Literal("{") + Literal("}")))
132
+ .suppress()
133
+ .add_parse_action(lambda: np.array([]).reshape(0, *tensor_kind.shape))
134
+ )
135
+ return
136
+
125
137
  list_ <<= (
126
138
  Regex(
127
139
  rf"\((?:{ignore_pattern})?(?:{tensor.re.pattern}{ignore_pattern}){{{length - 1}}}{tensor.re.pattern}(?:{ignore_pattern})?\)"
@@ -39,36 +39,34 @@ dependencies = [
39
39
  dynamic = ["version"]
40
40
 
41
41
  [dependency-groups]
42
- dev = ["foamlib[dev]"]
43
- lint = ["foamlib[lint]"]
44
- test = ["foamlib[test]"]
45
- typing = ["foamlib[typing]"]
46
- docs = ["foamlib[docs]"]
47
-
48
- [project.optional-dependencies]
49
42
  lint = ["ruff"]
50
- test = [
43
+ typing = [
51
44
  "mypy>=1,<2",
45
+ "scipy-stubs; python_version>='3.10'",
46
+ ]
47
+ test = [
52
48
  "pytest>=7,<9",
53
49
  "pytest-asyncio>=0.21,<0.27",
54
50
  "pytest-cov",
55
51
  "scipy>=1,<2",
56
52
  ]
57
- typing = [
58
- "foamlib[test]",
59
- "mypy>=1,<2",
60
- "scipy-stubs; python_version>='3.10'",
61
- ]
62
53
  docs = [
63
54
  "ruff",
64
55
  "sphinx>=5,<9",
65
56
  "sphinx_rtd_theme",
66
57
  ]
67
58
  dev = [
68
- "foamlib[lint]",
69
- "foamlib[test]",
70
- "foamlib[typing]",
71
- "foamlib[docs]",
59
+ {include-group = "lint"},
60
+ {include-group = "typing"},
61
+ {include-group = "test"},
62
+ {include-group = "docs"},
63
+ ]
64
+
65
+ [project.optional-dependencies]
66
+ docs = [
67
+ "ruff",
68
+ "sphinx>=5,<9",
69
+ "sphinx_rtd_theme",
72
70
  ]
73
71
 
74
72
  [project.urls]
@@ -80,7 +78,10 @@ Documentation = "https://foamlib.readthedocs.io"
80
78
  path = "foamlib/__init__.py"
81
79
 
82
80
  [tool.mypy]
83
- packages = ["foamlib"]
81
+ packages = [
82
+ "foamlib",
83
+ "tests",
84
+ ]
84
85
  strict = true
85
86
 
86
87
  [tool.ruff.lint]
@@ -1,6 +1,5 @@
1
1
  # Based on https://foss.heptapod.net/fluiddyn/fluidsimfoam/-/blob/branch/default/tests/test_parser_advanced.py
2
2
 
3
- import numpy as np
4
3
  import pytest
5
4
  from foamlib._files._parsing import Parsed
6
5
 
@@ -17,10 +16,10 @@ def test_dict_strange_name() -> None:
17
16
  """
18
17
  )
19
18
  assert parsed[
20
- (("div(phi,ft_b_ha_hau)", "Gauss", "multivariateSelection"), "ft")
19
+ (("div(phi,ft_b_ha_hau)", "Gauss", "multivariateSelection"), "ft") # type: ignore[index]
21
20
  ] == ("limitedLinear01", 1)
22
21
  assert parsed[
23
- (("div(phi,ft_b_ha_hau)", "Gauss", "multivariateSelection"), "b")
22
+ (("div(phi,ft_b_ha_hau)", "Gauss", "multivariateSelection"), "b") # type: ignore[index]
24
23
  ] == ("limitedLinear01", 1)
25
24
 
26
25
 
@@ -263,7 +262,7 @@ def test_list_triple_named() -> None:
263
262
  """
264
263
  )
265
264
  assert parsed[("velocity-inlet-5", "type")] == "fixedValue"
266
- assert np.allclose(parsed[("velocity-inlet-5", "value")], [1, 0, 0])
265
+ assert parsed[("velocity-inlet-5", "value")] == pytest.approx([1, 0, 0])
267
266
 
268
267
 
269
268
  def test_assignment_strange_name() -> None:
@@ -356,9 +355,9 @@ def test_list_as_write_cell_centers() -> None:
356
355
  );
357
356
  """
358
357
  )
359
- assert np.allclose(parsed[("value",)], [47.619, 142.857])
358
+ assert parsed[("value",)] == pytest.approx([47.619, 142.857])
360
359
 
361
360
 
362
361
  def test_list_as_write_cell_centers_short() -> None:
363
362
  parsed = Parsed(b"value nonuniform List<scalar> 4(250 750 1250 1750);")
364
- assert np.allclose(parsed[("value",)], [250, 750, 1250, 1750])
363
+ assert parsed[("value",)] == pytest.approx([250, 750, 1250, 1750])
@@ -26,6 +26,12 @@ def test_parse_value() -> None:
26
26
  field = Parsed(b"nonuniform List<scalar> 2{1}")[()]
27
27
  assert isinstance(field, np.ndarray)
28
28
  assert np.array_equal(field, [1, 1])
29
+ field = Parsed(b"nonuniform List<symmTensor> 0()")[()]
30
+ assert isinstance(field, np.ndarray)
31
+ assert field.shape == (0, 6)
32
+ field = Parsed(b"nonuniform List<tensor> ()")[()]
33
+ assert isinstance(field, np.ndarray)
34
+ assert field.shape == (0, 9)
29
35
  assert Parsed(b"3(1 2 3)")[()] == [1, 2, 3]
30
36
  assert Parsed(b"2((1 2 3) (4 5 6))")[()] == [
31
37
  [1, 2, 3],
@@ -43,9 +43,9 @@ def test_simple(tmp_path: Path) -> None:
43
43
 
44
44
  assert decompose_par_dict["numberOfSubdomains"] == 8
45
45
  assert decompose_par_dict["method"] == "simple"
46
- assert decompose_par_dict["coeffs"]["n"] == [4, 2, 1]
47
- assert decompose_par_dict["coeffs"]["order"] == "xyz"
48
- assert decompose_par_dict["coeffs"]["delta"] == 0.001
46
+ assert decompose_par_dict["coeffs", "n"] == [4, 2, 1]
47
+ assert decompose_par_dict["coeffs", "order"] == "xyz"
48
+ assert decompose_par_dict["coeffs", "delta"] == 0.001
49
49
 
50
50
 
51
51
  def test_scotch(tmp_path: Path) -> None:
@@ -4,6 +4,7 @@ from pathlib import Path
4
4
  from textwrap import dedent
5
5
 
6
6
  import numpy as np
7
+ import pytest
7
8
  from foamlib import FoamFieldFile
8
9
 
9
10
  code_p = dedent(
@@ -79,8 +80,9 @@ def test_nut(tmp_path: Path) -> None:
79
80
 
80
81
  assert field.dimensions == FoamFieldFile.DimensionSet(length=2, time=-1)
81
82
  assert field.internal_field == 0
82
- assert field.boundary_field["wall"]["type"] == "nutkWallFunction"
83
- assert field.boundary_field["wall"]["value"] == "$internalField"
83
+ assert isinstance(field.boundary_field["wall"], FoamFieldFile.BoundarySubDict)
84
+ assert field.boundary_field["wall"].type == "nutkWallFunction"
85
+ assert field.boundary_field["wall"].value == "$internalField"
84
86
  assert field.boundary_field["#includeEtc"] == '"caseDicts/setConstraintTypes"'
85
87
 
86
88
 
@@ -282,7 +284,7 @@ code_cx = dedent(
282
284
  )
283
285
 
284
286
 
285
- def test_cells_centers(tmp_path: Path) -> None:
287
+ def test_cell_centers(tmp_path: Path) -> None:
286
288
  """Data obtained with `postProcess -func writeCellCentres`
287
289
 
288
290
  https://www.openfoam.com/documentation/guides/latest/doc/guide-fos-field-writeCellCentres.html
@@ -299,4 +301,5 @@ def test_cells_centers(tmp_path: Path) -> None:
299
301
  assert field_c.dimensions == FoamFieldFile.DimensionSet(length=1)
300
302
  assert field_cx.dimensions == FoamFieldFile.DimensionSet(length=1)
301
303
 
302
- assert np.allclose(field_c.internal_field[:, 0], field_cx.internal_field)
304
+ assert isinstance(field_c.internal_field, np.ndarray)
305
+ assert field_c.internal_field[:, 0] == pytest.approx(field_cx.internal_field)
@@ -59,14 +59,14 @@ def test_simple(tmp_path: Path) -> None:
59
59
 
60
60
  fv_schemes = FoamFile(path)
61
61
 
62
- assert fv_schemes["ddtSchemes"]["default"] == "Euler"
62
+ assert fv_schemes["ddtSchemes", "default"] == "Euler"
63
63
  assert not fv_schemes["gradSchemes"]
64
- assert fv_schemes["divSchemes"]["div(phi,T)"] == ("Gauss", "limitedLinear", 1)
65
- assert fv_schemes["divSchemes"]["div(phi,U)"] == "foo"
66
- assert fv_schemes["divSchemes"]["div(phi.b,k.b)"] == ("Gauss", "limitedLinear", 1)
67
- assert fv_schemes["divSchemes"]["div(phi,k)"] == "$turbulence"
64
+ assert fv_schemes["divSchemes", "div(phi,T)"] == ("Gauss", "limitedLinear", 1)
65
+ assert fv_schemes["divSchemes", "div(phi,U)"] == "foo"
66
+ assert fv_schemes["divSchemes", "div(phi.b,k.b)"] == ("Gauss", "limitedLinear", 1)
67
+ assert fv_schemes["divSchemes", "div(phi,k)"] == "$turbulence"
68
68
  assert not fv_schemes["laplacianSchemes"]
69
69
  assert not fv_schemes["interpolationSchemes"]
70
70
  assert not fv_schemes["snGradSchemes"]
71
- assert fv_schemes["fluxRequired"]["default"] is False
72
- assert fv_schemes["fluxRequired"]["p_rbgh"] == ""
71
+ assert fv_schemes["fluxRequired", "default"] is False
72
+ assert fv_schemes["fluxRequired", "p_rbgh"] == ""
@@ -1,6 +1,5 @@
1
1
  # Based on https://foss.heptapod.net/fluiddyn/fluidsimfoam/-/blob/branch/default/tests/test_parser.py
2
2
 
3
- import numpy as np
4
3
  import pytest
5
4
  from foamlib import FoamFile
6
5
  from foamlib._files._parsing import Parsed
@@ -383,8 +382,11 @@ def test_dimension_set() -> None:
383
382
  }
384
383
  """)
385
384
  assert parsed[("dimensions",)] == FoamFile.DimensionSet(length=2, time=-1)
385
+ assert isinstance(parsed[("nu",)], FoamFile.Dimensioned)
386
386
  assert parsed[("nu",)].dimensions == FoamFile.DimensionSet(length=2, time=-1)
387
+ assert isinstance(parsed[("nu1",)], FoamFile.Dimensioned)
387
388
  assert parsed[("nu1",)].dimensions == FoamFile.DimensionSet(length=2, time=-1)
389
+ assert isinstance(parsed[("SIMPLE", "rhoMin")], FoamFile.Dimensioned)
388
390
  assert parsed[("SIMPLE", "rhoMin")].dimensions == FoamFile.DimensionSet(
389
391
  mass=1, length=-3
390
392
  )
@@ -715,4 +717,4 @@ def test_list_uniform() -> None:
715
717
  );
716
718
  """)
717
719
  assert parsed[("a",)] == 1
718
- assert np.allclose(parsed[("internalField",)], [0.1, 0, 0])
720
+ assert parsed[("internalField",)] == pytest.approx([0.1, 0, 0])
@@ -1,6 +1,5 @@
1
1
  # Based on https://foss.heptapod.net/fluiddyn/fluidsimfoam/-/blob/branch/default/tests/test_polymesh.py
2
2
 
3
-
4
3
  from pathlib import Path
5
4
 
6
5
  from foamlib import FoamFile
@@ -47,20 +46,23 @@ def test_get_cells_coords(tmp_path: Path) -> None:
47
46
  path = tmp_path / "points"
48
47
  path.write_text(contents)
49
48
 
50
- points = FoamFile(path)
49
+ file = FoamFile(path)
50
+
51
+ points = file[None]
52
+ assert isinstance(points, list)
51
53
 
52
- assert points[None][0] == [0, 0, 0]
53
- assert points[None][1] == [0.15707963268, 0, 0]
54
- assert points[None][2] == [0.314159265359, 0, 0]
55
- assert points[None][3] == [0.471238898038, 0, 0]
56
- assert points[None][4] == [0.628318530718, 0, 0]
57
- assert points[None][5] == [0, 0, 0]
58
- assert points[None][6] == [0.15707963268, 0, 0]
59
- assert points[None][7] == [0.314159265359, 0, 0]
60
- assert points[None][8] == [0.471238898038, 0, 0]
61
- assert points[None][9] == [0.628318530718, 0, 0]
54
+ assert points[0] == [0, 0, 0]
55
+ assert points[1] == [0.15707963268, 0, 0]
56
+ assert points[2] == [0.314159265359, 0, 0]
57
+ assert points[3] == [0.471238898038, 0, 0]
58
+ assert points[4] == [0.628318530718, 0, 0]
59
+ assert points[5] == [0, 0, 0]
60
+ assert points[6] == [0.15707963268, 0, 0]
61
+ assert points[7] == [0.314159265359, 0, 0]
62
+ assert points[8] == [0.471238898038, 0, 0]
63
+ assert points[9] == [0.628318530718, 0, 0]
62
64
 
63
- assert len(points[None]) == 10
65
+ assert len(points) == 10
64
66
 
65
- assert list(points) == [None]
66
- assert "FoamFile" in points
67
+ assert list(file) == [None]
68
+ assert "FoamFile" in file
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes