Skip to content

Commit d19dc7f

Browse files
authored
Merge pull request #303 from MC-kit/devel
Devel
2 parents 8ec767b + 7cc33fc commit d19dc7f

File tree

5 files changed

+30
-30
lines changed

5 files changed

+30
-30
lines changed

pyproject.toml

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[tool.poetry]
22
name = "xpypact"
3-
version = "0.9.0"
3+
version = "0.9.1"
44
description = "\"Python workflow framework for FISPACT.\""
55
authors = ["dvp <[email protected]>"]
66
license = "MIT"

src/xpypact/collector.py

+21-21
Original file line numberDiff line numberDiff line change
@@ -356,6 +356,27 @@ class Result(ms.Struct):
356356
gbins: pl.DataFrame | None
357357
timestep_gamma: pl.DataFrame | None
358358

359+
def save_to_parquets(self, out: Path, *, override: bool = False) -> None:
360+
"""Save collectd data as parquet files.
361+
362+
Args:
363+
out: directory where to save
364+
override: override existing files, default - raise exception
365+
366+
Raises:
367+
FileExistError: if destination file exists and override is not specified.
368+
"""
369+
collected = ms.structs.asdict(self)
370+
out.mkdir(parents=True, exist_ok=True)
371+
for name, df in collected.items():
372+
if df is None: # pragma: no cover
373+
continue
374+
dst = out / f"{name}.parquet"
375+
if dst.exists() and not override:
376+
msg = f"File {dst} already exists and override is not specified."
377+
raise FileExistsError(msg)
378+
df.write_parquet(dst)
379+
359380
def get_result(self) -> FullDataCollector.Result:
360381
"""Finish and present collected data."""
361382
return FullDataCollector.Result(
@@ -388,24 +409,3 @@ def get_result(self) -> FullDataCollector.Result:
388409
gbins=self.get_gbins(),
389410
timestep_gamma=self.get_timestep_gamma_as_spectrum(),
390411
)
391-
392-
def save_to_parquets(self, out: Path, *, override: bool = False) -> None:
393-
"""Save collectd data as parquet files.
394-
395-
Args:
396-
out: directory where to save
397-
override: override existing files, default - raise exception
398-
399-
Raises:
400-
FileExistError: if destination file exists and override is not specified.
401-
"""
402-
collected = ms.structs.asdict(self.get_result())
403-
out.mkdir(parents=True, exist_ok=True)
404-
for name, df in collected.items():
405-
if df is None: # pragma: no cover
406-
continue
407-
dst = out / f"{name}.parquet"
408-
if dst.exists() and not override:
409-
msg = f"File {dst} already exists and override is not specified."
410-
raise FileExistsError(msg)
411-
df.write_parquet(dst)

src/xpypact/dao/duckdb/implementation.py

+3-3
Original file line numberDiff line numberDiff line change
@@ -139,15 +139,15 @@ def load_gamma(self, time_step_number: int | None = None) -> db.DuckDBPyRelation
139139

140140
def save(
141141
cursor: db.DuckDBPyConnection,
142-
collector: FullDataCollector,
142+
collector_result: FullDataCollector.Result,
143143
) -> None:
144144
"""Save collected inventories to a DuckDB database.
145145
146146
Args:
147147
cursor: separate multi-threaded cursor to access DuckDB, use con.cursor() in caller
148-
collector: collected inventories as Polars frames
148+
collector_result: collected inventories as Polars frames
149149
"""
150-
collected = ms.structs.asdict(collector.get_result())
150+
collected = ms.structs.asdict(collector_result)
151151
for name, df in collected.items():
152152
if df is not None: # pragma: no cover
153153
cursor.execute(f"create or replace table {name} as select * from df") # noqa: S608

tests/test_collector.py

+4-4
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,7 @@ def test_one_cell_json(one_cell: Inventory, one_cell_time_step7_gamma_spectrum,
8989
)
9090

9191
con = db.connect()
92-
save(con, collector)
92+
save(con, collector.get_result())
9393
gamma_from_db = con.sql(
9494
"""
9595
select
@@ -109,10 +109,10 @@ def test_one_cell_json(one_cell: Inventory, one_cell_time_step7_gamma_spectrum,
109109
)
110110
collected = collector.get_result()
111111
assert collected.timestep_times.height == 7
112-
collector.save_to_parquets(tmp_path)
113-
collector.save_to_parquets(tmp_path, override=True)
112+
collected.save_to_parquets(tmp_path)
113+
collected.save_to_parquets(tmp_path, override=True)
114114
with pytest.raises(FileExistsError):
115-
collector.save_to_parquets(tmp_path, override=False)
115+
collected.save_to_parquets(tmp_path, override=False)
116116

117117

118118
if __name__ == "__main__":

tests/test_duckdb_dao.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ def test_save(inventory_with_gamma) -> None:
4343
dao = DataAccessObject(con)
4444
dc = FullDataCollector()
4545
dc.append(inventory_with_gamma, material_id=1, case_id=1)
46-
save(con, dc)
46+
save(con, dc.get_result())
4747
run_data = dao.load_rundata().df().loc[0]
4848
assert run_data["timestamp"] == pd.Timestamp("2022-02-21 01:52:45")
4949
assert run_data["run_name"] == "* Material Cu, fluxes 104_2_1_1"

0 commit comments

Comments
 (0)