qupled 1.3.4__cp310-cp310-manylinux_2_28_x86_64.whl → 1.3.5__cp310-cp310-manylinux_2_28_x86_64.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.
qupled/database.py CHANGED
@@ -4,12 +4,15 @@ import struct
4
4
  from datetime import datetime
5
5
  from enum import Enum
6
6
  from collections.abc import Callable
7
+ from pathlib import Path
7
8
 
8
9
  import numpy as np
9
10
  import sqlalchemy as sql
10
11
  from sqlalchemy.dialects.sqlite import insert as sqlite_insert
11
12
  import blosc2
12
13
 
14
+ from . import native
15
+
13
16
 
14
17
  class DataBaseHandler:
15
18
  """
@@ -18,10 +21,13 @@ class DataBaseHandler:
18
21
  and deleting data, as well as managing the database schema."
19
22
  """
20
23
 
24
+ BLOB_STORAGE_DIRECTORY = "blob_data"
25
+ DATABASE_DIRECTORY = "qupled_store"
21
26
  DEFAULT_DATABASE_NAME = "qupled.db"
22
- RUN_TABLE_NAME = "runs"
27
+ FIXED_TABLE_NAME = "fixed"
23
28
  INPUT_TABLE_NAME = "inputs"
24
29
  RESULT_TABLE_NAME = "results"
30
+ RUN_TABLE_NAME = "runs"
25
31
 
26
32
  class TableKeys(Enum):
27
33
  COUPLING = "coupling"
@@ -61,12 +67,23 @@ class DataBaseHandler:
61
67
  result_table (sqlalchemy.Table): The table schema for storing result data.
62
68
  run_id (int | None): The ID of the current run, or None if no run is active.
63
69
  """
64
- self.database_name = (
65
- database_name if database_name is not None else self.DEFAULT_DATABASE_NAME
70
+ # Database path
71
+ database_name = (
72
+ self.DEFAULT_DATABASE_NAME if database_name is None else database_name
66
73
  )
67
- self.engine = sql.create_engine(f"sqlite:///{self.database_name}")
68
- # Enforce foreign keys in sqlite
74
+ database_path = Path(self.DATABASE_DIRECTORY) / database_name
75
+ database_path.parent.mkdir(parents=True, exist_ok=True)
76
+ # Blob data storage
77
+ self.blob_storage = (
78
+ Path(self.DATABASE_DIRECTORY) / self.BLOB_STORAGE_DIRECTORY / database_name
79
+ )
80
+ self.blob_storage.mkdir(parents=True, exist_ok=True)
81
+ self.blob_storage = str(self.blob_storage)
82
+ # Create database
83
+ self.engine = sql.create_engine(f"sqlite:///{database_path}")
84
+ # Set sqlite properties
69
85
  DataBaseHandler._set_sqlite_pragma(self.engine)
86
+ # Create tables
70
87
  self.table_metadata = sql.MetaData()
71
88
  self.run_table = self._build_run_table()
72
89
  self.input_table = self._build_inputs_table()
@@ -252,6 +269,7 @@ class DataBaseHandler:
252
269
  Returns:
253
270
  None
254
271
  """
272
+ self._delete_blob_data_on_disk(run_id)
255
273
  condition = self.run_table.c[self.TableKeys.PRIMARY_KEY.value] == run_id
256
274
  statement = sql.delete(self.run_table).where(condition)
257
275
  self._execute(statement)
@@ -430,6 +448,9 @@ class DataBaseHandler:
430
448
  if run_id := result.inserted_primary_key:
431
449
  self.run_id = run_id[0]
432
450
 
451
+ def _delete_blob_data_on_disk(self, run_id: int):
452
+ native.delete_blob_data_on_disk(self.engine.url.database, run_id)
453
+
433
454
  @staticmethod
434
455
  def _set_sqlite_pragma(engine):
435
456
  """
qupled/hf.py CHANGED
@@ -87,7 +87,11 @@ class Solver:
87
87
  `self.inputs` with the current `run_id`.
88
88
  """
89
89
  self.db_handler.insert_run(self.inputs)
90
- self.inputs.database_info.run_id = self.run_id
90
+ self.inputs.database_info = DatabaseInfo(
91
+ blob_storage=self.db_handler.blob_storage,
92
+ name=self.db_handler.engine.url.database,
93
+ run_id=self.run_id,
94
+ )
91
95
 
92
96
  def _compute_native(self):
93
97
  """
@@ -197,7 +201,7 @@ class Input:
197
201
  processes: int = 1
198
202
  """Number of MPI processes for parallel calculations. Default = ``1``"""
199
203
  theory: str = "HF"
200
- database_info: DatabaseInfo = field(default_factory=lambda: DatabaseInfo())
204
+ database_info: DatabaseInfo = None
201
205
 
202
206
  def to_native(self, native_input: any):
203
207
  """
@@ -290,7 +294,9 @@ class DatabaseInfo:
290
294
  Class used to store the database information passed to the native code.
291
295
  """
292
296
 
293
- name: str = database.DataBaseHandler.DEFAULT_DATABASE_NAME
297
+ blob_storage: str = None
298
+ """Directory used to store the blob data"""
299
+ name: str = None
294
300
  """Database name"""
295
301
  run_id: int = None
296
302
  """ID of the run in the database"""
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: qupled
3
- Version: 1.3.4
3
+ Version: 1.3.5
4
4
  Summary: qupled: a package to investigate quantum plasmas via the dielectric formalism
5
5
  Author-email: Federico Lucco Castello <federico.luccocastello@gmail.com>
6
6
  License-Expression: GPL-3.0-or-later
@@ -1,9 +1,9 @@
1
1
  qupled/__init__.py,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
2
- qupled/database.py,sha256=soPmbMpIYS7oELwOKU-W61LtwxLwu5xvwOFTb7LXzdI,26636
2
+ qupled/database.py,sha256=NJP6bfMGZFD3_nMAAWCJH8HujPpFEVQjY_EXqA4WMh4,27424
3
3
  qupled/esa.py,sha256=5LpHu4zdIe2p9DBnpYAqdW7KDeL75tPmsEbM3C5_nMA,684
4
- qupled/hf.py,sha256=NYjLdeMpXHpNUuuECVGnMHlZGMi8fNESPtrrL2eHXOo,12157
4
+ qupled/hf.py,sha256=7MtwNwx0XQS6BRC97IzK-OsJH78ahKMG57U5elI6g0Y,12297
5
5
  qupled/mpi.py,sha256=fvFQr0fuQaIOo9si7-AGgctTPxpDvqo1RcsnBkNN4Cc,2998
6
- qupled/native.cpython-310-x86_64-linux-gnu.so,sha256=wIQAv3RMF9NLgYmK_mzegAkHVKdPD5ZOzaTQnYTHxME,2555889
6
+ qupled/native.cpython-310-x86_64-linux-gnu.so,sha256=Faa8BM7hunG_gxh1m8c6p98O-i7IVJKvnuuhZKNwUSw,2564777
7
7
  qupled/output.py,sha256=VP_7oKPuULYa0UB-wX_J_cLnGd2mZZxrYeeTpNY-iwE,3602
8
8
  qupled/qstls.py,sha256=G2A5e_PUP1lsUaKEajrH3ZuY2lD5wxmsyYi8n7IN6nQ,2424
9
9
  qupled/qstlsiet.py,sha256=UInCZT6jpTot8TQ6arpgqNMIg_KetCf3NL1r5xwxZhw,1039
@@ -17,8 +17,8 @@ qupled/vsstls.py,sha256=E07rQGF8HReVioWIw54vitm5lYP_hbEOi2MhoQC4aKk,7607
17
17
  qupled.libs/libgomp-870cb1d0.so.1.0.0,sha256=Ta6ZPLbakQH8LP74JzBt0DuJIBHS4nicjkSCjKnyWDw,253289
18
18
  qupled.libs/libgsl-b64c76bc.so.23.1.0,sha256=WHmErYaNTgM28syqO_oYO3j36NEhi8clvutO91MGkwQ,3132433
19
19
  qupled.libs/libgslcblas-cd2c2030.so.0.0.0,sha256=Mbx2IdhN07T41yMwqn4VY5pFrmlK3EU6rRhRppMDdx0,322777
20
- qupled-1.3.4.dist-info/METADATA,sha256=d75nW7MqQlfhF7evEanAi4GrVI2YqjjOdhmh241ptxA,4559
21
- qupled-1.3.4.dist-info/WHEEL,sha256=yzF9ixp0XVYLhnovZSdud9vspTPdVe52BzwI7Tv3jTM,113
22
- qupled-1.3.4.dist-info/top_level.txt,sha256=HLJfvnCPZQVptCRuekWA_3Z98SMkCNCXViGiGh8VenA,7
23
- qupled-1.3.4.dist-info/RECORD,,
24
- qupled-1.3.4.dist-info/licenses/LICENSE,sha256=OXLcl0T2SZ8Pmy2_dmlvKuetivmyPd5m1q-Gyd-zaYY,35149
20
+ qupled-1.3.5.dist-info/METADATA,sha256=VBEeGlRY55_tDEe-9zoVegM0Ggyqep_TCqU2pAdSpJs,4559
21
+ qupled-1.3.5.dist-info/WHEEL,sha256=yzF9ixp0XVYLhnovZSdud9vspTPdVe52BzwI7Tv3jTM,113
22
+ qupled-1.3.5.dist-info/top_level.txt,sha256=HLJfvnCPZQVptCRuekWA_3Z98SMkCNCXViGiGh8VenA,7
23
+ qupled-1.3.5.dist-info/RECORD,,
24
+ qupled-1.3.5.dist-info/licenses/LICENSE,sha256=OXLcl0T2SZ8Pmy2_dmlvKuetivmyPd5m1q-Gyd-zaYY,35149
File without changes