Merge pull request 'cli/integrity' (#33) from cli/integrity into develop
Reviewed-on: https://www.kuhl-mann.de/git/git/jkuhl/corrlib/pulls/33
This commit is contained in:
commit
4411f63984
2 changed files with 18 additions and 3 deletions
|
|
@ -1,6 +1,7 @@
|
||||||
from typing import Optional
|
from typing import Optional
|
||||||
import typer
|
import typer
|
||||||
from corrlib import __app_name__
|
from corrlib import __app_name__
|
||||||
|
|
||||||
from .initialization import create
|
from .initialization import create
|
||||||
from .toml import import_tomls, update_project, reimport_project
|
from .toml import import_tomls, update_project, reimport_project
|
||||||
from .find import find_record, list_projects
|
from .find import find_record, list_projects
|
||||||
|
|
@ -8,6 +9,8 @@ from .tools import str2list
|
||||||
from .main import update_aliases
|
from .main import update_aliases
|
||||||
from .meas_io import drop_cache as mio_drop_cache
|
from .meas_io import drop_cache as mio_drop_cache
|
||||||
from .meas_io import load_record as mio_load_record
|
from .meas_io import load_record as mio_load_record
|
||||||
|
from .integrity import full_integrity_check
|
||||||
|
|
||||||
import os
|
import os
|
||||||
from pyerrors import Corr
|
from pyerrors import Corr
|
||||||
from importlib.metadata import version
|
from importlib.metadata import version
|
||||||
|
|
@ -137,6 +140,16 @@ def stat(
|
||||||
return
|
return
|
||||||
|
|
||||||
|
|
||||||
|
@app.command()
|
||||||
|
def check(path: Path = typer.Option(
|
||||||
|
Path('./corrlib'),
|
||||||
|
"--dataset",
|
||||||
|
"-d",
|
||||||
|
),
|
||||||
|
) -> None:
|
||||||
|
full_integrity_check(path)
|
||||||
|
|
||||||
|
|
||||||
@app.command()
|
@app.command()
|
||||||
def importer(
|
def importer(
|
||||||
path: Path = typer.Option(
|
path: Path = typer.Option(
|
||||||
|
|
|
||||||
|
|
@ -27,19 +27,21 @@ def are_keys_unique(db: Path, table: str, col: str) -> bool:
|
||||||
def check_db_integrity(path: Path) -> None:
|
def check_db_integrity(path: Path) -> None:
|
||||||
db = get_db_file(path)
|
db = get_db_file(path)
|
||||||
|
|
||||||
if not are_keys_unique(db, 'backlogs', 'path'):
|
if not are_keys_unique(path / db, 'backlogs', 'path'):
|
||||||
raise Exception("The paths the backlog table of the database links are not unique.")
|
raise Exception("The paths the backlog table of the database links are not unique.")
|
||||||
|
|
||||||
search_expr = "SELECT * FROM 'backlogs'"
|
search_expr = "SELECT * FROM 'backlogs'"
|
||||||
conn = sqlite3.connect(db)
|
conn = sqlite3.connect(path / db)
|
||||||
results = pd.read_sql(search_expr, conn)
|
results = pd.read_sql(search_expr, conn)
|
||||||
|
|
||||||
for _, result in results.iterrows():
|
for _, result in results.iterrows():
|
||||||
if not has_valid_times(result):
|
if not has_valid_times(result):
|
||||||
raise ValueError(f"Result with id {result[id]} has wrong time signatures.")
|
raise ValueError(f"Result with id {result[id]} has wrong time signatures.")
|
||||||
|
print("DB:\t✅")
|
||||||
|
|
||||||
|
|
||||||
def full_integrity_check(path: Path) -> None:
|
def full_integrity_check(path: Path) -> None:
|
||||||
check_db_integrity(path)
|
check_db_integrity(path)
|
||||||
|
print("Full:\t✅")
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue