foamlib 0.3.8__py3-none-any.whl → 0.3.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/_cases.py +13 -7
- foamlib/_files/_io.py +8 -0
- {foamlib-0.3.8.dist-info → foamlib-0.3.9.dist-info}/METADATA +1 -1
- {foamlib-0.3.8.dist-info → foamlib-0.3.9.dist-info}/RECORD +8 -8
- {foamlib-0.3.8.dist-info → foamlib-0.3.9.dist-info}/LICENSE.txt +0 -0
- {foamlib-0.3.8.dist-info → foamlib-0.3.9.dist-info}/WHEEL +0 -0
- {foamlib-0.3.8.dist-info → foamlib-0.3.9.dist-info}/top_level.txt +0 -0
foamlib/__init__.py
CHANGED
foamlib/_cases.py
CHANGED
@@ -56,23 +56,29 @@ class FoamCaseBase(Sequence["FoamCaseBase.TimeDirectory"]):
|
|
56
56
|
return self.path.name
|
57
57
|
|
58
58
|
def __getitem__(self, key: str) -> FoamFieldFile:
|
59
|
-
|
59
|
+
if (self.path / key).is_file():
|
60
60
|
return FoamFieldFile(self.path / key)
|
61
|
-
|
62
|
-
|
61
|
+
elif (self.path / f"{key}.gz").is_file():
|
62
|
+
return FoamFieldFile(self.path / f"{key}.gz")
|
63
|
+
else:
|
64
|
+
raise KeyError(key)
|
63
65
|
|
64
66
|
def __contains__(self, obj: object) -> bool:
|
65
67
|
if isinstance(obj, FoamFieldFile):
|
66
68
|
return obj.path.parent == self.path
|
67
69
|
elif isinstance(obj, str):
|
68
|
-
return (self.path / obj).is_file()
|
70
|
+
return (self.path / obj).is_file() or (
|
71
|
+
self.path / f"{obj}.gz"
|
72
|
+
).is_file()
|
69
73
|
else:
|
70
74
|
return False
|
71
75
|
|
72
76
|
def __iter__(self) -> Iterator[FoamFieldFile]:
|
73
77
|
for p in self.path.iterdir():
|
74
|
-
if p.is_file()
|
75
|
-
|
78
|
+
if p.is_file() and (
|
79
|
+
p.suffix != ".gz" or not p.with_suffix("").is_file()
|
80
|
+
):
|
81
|
+
yield FoamFieldFile(p)
|
76
82
|
|
77
83
|
def __len__(self) -> int:
|
78
84
|
return len(list(iter(self)))
|
@@ -114,7 +120,7 @@ class FoamCaseBase(Sequence["FoamCaseBase.TimeDirectory"]):
|
|
114
120
|
self, index: Union[int, slice, float, str]
|
115
121
|
) -> Union["FoamCaseBase.TimeDirectory", Sequence["FoamCaseBase.TimeDirectory"]]:
|
116
122
|
if isinstance(index, str):
|
117
|
-
return FoamCaseBase.TimeDirectory(self.path /
|
123
|
+
return FoamCaseBase.TimeDirectory(self.path / index)
|
118
124
|
elif isinstance(index, float):
|
119
125
|
for time in self._times:
|
120
126
|
if time.time == index:
|
foamlib/_files/_io.py
CHANGED
@@ -1,3 +1,4 @@
|
|
1
|
+
import gzip
|
1
2
|
import sys
|
2
3
|
from copy import deepcopy
|
3
4
|
from pathlib import Path
|
@@ -47,6 +48,10 @@ class FoamFileIO:
|
|
47
48
|
def _read(self) -> Tuple[bytes, Parsed]:
|
48
49
|
if not self.__defer_io:
|
49
50
|
contents = self.path.read_bytes()
|
51
|
+
|
52
|
+
if self.path.suffix == ".gz":
|
53
|
+
contents = gzip.decompress(contents)
|
54
|
+
|
50
55
|
if contents != self.__contents:
|
51
56
|
self.__contents = contents
|
52
57
|
self.__parsed = None
|
@@ -63,6 +68,9 @@ class FoamFileIO:
|
|
63
68
|
self.__contents = contents
|
64
69
|
self.__parsed = None
|
65
70
|
if not self.__defer_io:
|
71
|
+
if self.path.suffix == ".gz":
|
72
|
+
contents = gzip.compress(contents)
|
73
|
+
|
66
74
|
self.path.write_bytes(contents)
|
67
75
|
self.__dirty = False
|
68
76
|
else:
|
@@ -1,15 +1,15 @@
|
|
1
|
-
foamlib/__init__.py,sha256=
|
2
|
-
foamlib/_cases.py,sha256=
|
1
|
+
foamlib/__init__.py,sha256=VA5OODQTc1hOiKx4Hg0kYE_r9Q9num_-mR-wMHHhR1c,431
|
2
|
+
foamlib/_cases.py,sha256=4b9CCDAuKi5Dp8DUksIbaMsp0Yi0xv5QeZLVAUrKRh8,21417
|
3
3
|
foamlib/_util.py,sha256=vL03aAzpWdZyYIhe2WTxHiz9b4lnttVnRuzqUmZvXXk,3047
|
4
4
|
foamlib/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
5
5
|
foamlib/_files/__init__.py,sha256=vDkPj8u8bX_I_m2YfeKvXBgwg8D1ufyFCfHGHKN3JPQ,140
|
6
6
|
foamlib/_files/_base.py,sha256=YA5a-i5HZuA3JslCD6r-DwZzpSA8r42dqSXef286Ako,2050
|
7
7
|
foamlib/_files/_files.py,sha256=4rZb3HMJADmJBGmRpChiujJNX1UIxhgHI5YPEmEOWvE,10784
|
8
|
-
foamlib/_files/_io.py,sha256=
|
8
|
+
foamlib/_files/_io.py,sha256=pGYMoLI5Dz2Y90EB1CtklZiffpDTGuQbbbkyqRe0JAo,2115
|
9
9
|
foamlib/_files/_parsing.py,sha256=sWUeF9xiM6AriQjljl3jEpvoFRMmaS1h3bT3b0oor3U,7279
|
10
10
|
foamlib/_files/_serialization.py,sha256=rmZW42Pyn1DIJbGMZqFG_lZ5DcLhPmfUgH24qsu2rIk,3400
|
11
|
-
foamlib-0.3.
|
12
|
-
foamlib-0.3.
|
13
|
-
foamlib-0.3.
|
14
|
-
foamlib-0.3.
|
15
|
-
foamlib-0.3.
|
11
|
+
foamlib-0.3.9.dist-info/LICENSE.txt,sha256=5Dte9TUnLZzPRs4NQzl-Jc2-Ljd-t_v0ZR5Ng5r0UsY,35131
|
12
|
+
foamlib-0.3.9.dist-info/METADATA,sha256=FmZVopicBSscMw3JI3D6dnpLLDfcHLn4BQkrhklp8Sw,5242
|
13
|
+
foamlib-0.3.9.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
|
14
|
+
foamlib-0.3.9.dist-info/top_level.txt,sha256=ZdVYtetXGwPwyfL-WhlhbTFQGAwKX5P_gXxtH9JYFPI,8
|
15
|
+
foamlib-0.3.9.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|