Compare commits

...

6 commits

Author SHA1 Message Date
110ddaf3a1
add error messages
Some checks failed
Mypy / mypy (push) Failing after 1m10s
Pytest / pytest (3.12) (push) Successful in 1m17s
Pytest / pytest (3.13) (push) Successful in 1m12s
Pytest / pytest (3.14) (push) Successful in 1m13s
Ruff / ruff (push) Successful in 1m1s
2026-03-23 15:21:34 +01:00
97e30fa27d
use Path in type annotations oat 2 2026-03-23 13:06:12 +01:00
92f307b83a
use Path in type annotations 2026-03-23 13:05:33 +01:00
6bb48f151c
add types 2026-03-23 13:01:58 +01:00
7e76966d5f
replace config file name with var 2026-03-23 12:59:59 +01:00
776e4a3d8d
add further tests for tools 2026-03-23 12:59:33 +01:00
6 changed files with 84 additions and 21 deletions

View file

@ -1,6 +1,7 @@
import os
from configparser import ConfigParser
from typing import Any
from pathlib import Path
CONFIG_FILENAME = ".corrlib"
cached: bool = True
@ -73,7 +74,7 @@ def k2m(k: float) -> float:
return (1/(2*k))-4
def set_config(path: str, section: str, option: str, value: Any) -> None:
def set_config(path: Path, section: str, option: str, value: Any) -> None:
"""
Set configuration parameters for the library.
@ -88,7 +89,7 @@ def set_config(path: str, section: str, option: str, value: Any) -> None:
value: Any
The value we set the option to.
"""
config_path = os.path.join(path, '.corrlib')
config_path = os.path.join(path, CONFIG_FILENAME)
config = ConfigParser()
if os.path.exists(config_path):
config.read(config_path)
@ -100,7 +101,7 @@ def set_config(path: str, section: str, option: str, value: Any) -> None:
return
def get_db_file(path: str) -> str:
def get_db_file(path: Path) -> str:
"""
Get the database file associated with the library at the given path.
@ -118,11 +119,13 @@ def get_db_file(path: str) -> str:
config = ConfigParser()
if os.path.exists(config_path):
config.read(config_path)
else:
raise FileNotFoundError("Configuration file not found.")
db_file = config.get('paths', 'db', fallback='backlogger.db')
return db_file
def cache_enabled(path: str) -> bool:
def cache_enabled(path: Path) -> bool:
"""
Check, whether the library is cached.
Fallback is true.
@ -141,6 +144,10 @@ def cache_enabled(path: str) -> bool:
config = ConfigParser()
if os.path.exists(config_path):
config.read(config_path)
else:
raise FileNotFoundError("Configuration file not found.")
cached_str = config.get('core', 'cached', fallback='True')
if cached_str not in ['True', 'False']:
raise ValueError(f"String {cached_str} is not a valid option, only True and False are allowed!")
cached_bool = cached_str == ('True')
return cached_bool

View file

@ -2,18 +2,19 @@ from typer.testing import CliRunner
from corrlib.cli import app
import os
import sqlite3 as sql
from pathlib import Path
runner = CliRunner()
def test_version():
def test_version() -> None:
result = runner.invoke(app, ["--version"])
assert result.exit_code == 0
assert "corrlib" in result.output
def test_init_folders(tmp_path):
def test_init_folders(tmp_path: Path) -> None:
dataset_path = tmp_path / "test_dataset"
result = runner.invoke(app, ["init", "--dataset", str(dataset_path)])
assert result.exit_code == 0
@ -21,7 +22,7 @@ def test_init_folders(tmp_path):
assert os.path.exists(str(dataset_path / "backlogger.db"))
def test_init_db(tmp_path):
def test_init_db(tmp_path: Path) -> None:
dataset_path = tmp_path / "test_dataset"
result = runner.invoke(app, ["init", "--dataset", str(dataset_path)])
assert result.exit_code == 0
@ -81,7 +82,7 @@ def test_init_db(tmp_path):
assert expected_col in backlog_column_names
def test_list(tmp_path):
def test_list(tmp_path: Path) -> None:
dataset_path = tmp_path / "test_dataset"
result = runner.invoke(app, ["init", "--dataset", str(dataset_path)])
assert result.exit_code == 0

View file

@ -1,7 +1,7 @@
import corrlib.toml as t
def test_toml_check_measurement_data():
def test_toml_check_measurement_data() -> None:
measurements = {
"a":
{

View file

@ -1,7 +1,7 @@
import corrlib.input.sfcf as input
import json
def test_get_specs():
def test_get_specs() -> None:
parameters = {
'crr': [
'f_P', 'f_A'

View file

@ -1,22 +1,23 @@
import corrlib.initialization as init
import os
import sqlite3 as sql
from pathlib import Path
def test_init_folders(tmp_path):
def test_init_folders(tmp_path: Path) -> None:
dataset_path = tmp_path / "test_dataset"
init.create(str(dataset_path))
assert os.path.exists(str(dataset_path))
assert os.path.exists(str(dataset_path / "backlogger.db"))
def test_init_folders_no_tracker(tmp_path):
def test_init_folders_no_tracker(tmp_path: Path) -> None:
dataset_path = tmp_path / "test_dataset"
init.create(str(dataset_path), tracker="None")
assert os.path.exists(str(dataset_path))
assert os.path.exists(str(dataset_path / "backlogger.db"))
def test_init_config(tmp_path):
def test_init_config(tmp_path: Path) -> None:
dataset_path = tmp_path / "test_dataset"
init.create(str(dataset_path), tracker="None")
config_path = dataset_path / ".corrlib"
@ -34,7 +35,7 @@ def test_init_config(tmp_path):
assert config.get("paths", "import_scripts_path") == "import_scripts"
def test_init_db(tmp_path):
def test_init_db(tmp_path: Path) -> None:
dataset_path = tmp_path / "test_dataset"
init.create(str(dataset_path))
assert os.path.exists(str(dataset_path / "backlogger.db"))

View file

@ -1,31 +1,85 @@
from corrlib import tools as tl
from configparser import ConfigParser
import os
from pathlib import Path
import pytest
def test_m2k():
def test_m2k() -> None:
for m in [0.1, 0.5, 1.0]:
expected_k = 1 / (2 * m + 8)
assert tl.m2k(m) == expected_k
def test_k2m():
def test_k2m() -> None:
for m in [0.1, 0.5, 1.0]:
assert tl.k2m(m) == (1/(2*m))-4
def test_k2m_m2k():
def test_k2m_m2k() -> None:
for m in [0.1, 0.5, 1.0]:
k = tl.m2k(m)
m_converted = tl.k2m(k)
assert abs(m - m_converted) < 1e-9
def test_str2list():
def test_str2list() -> None:
assert tl.str2list("a,b,c") == ["a", "b", "c"]
assert tl.str2list("1,2,3") == ["1", "2", "3"]
def test_list2str():
def test_list2str() -> None:
assert tl.list2str(["a", "b", "c"]) == "a,b,c"
assert tl.list2str(["1", "2", "3"]) == "1,2,3"
def test_set_config(tmp_path: Path) -> None:
section = "core"
option = "test_option"
value = "test_value"
# config is not yet available
tl.set_config(tmp_path, section, option, value)
config_path = os.path.join(tmp_path, '.corrlib')
config = ConfigParser()
config.read(config_path)
assert config.get('core', 'test_option', fallback="not the value") == "test_value"
# now, a config file is already present
section = "core"
option = "test_option2"
value = "test_value2"
tl.set_config(tmp_path, section, option, value)
config_path = os.path.join(tmp_path, '.corrlib')
config = ConfigParser()
config.read(config_path)
assert config.get('core', 'test_option2', fallback="not the value") == "test_value2"
# update option 2
section = "core"
option = "test_option2"
value = "test_value3"
tl.set_config(tmp_path, section, option, value)
config_path = os.path.join(tmp_path, '.corrlib')
config = ConfigParser()
config.read(config_path)
assert config.get('core', 'test_option2', fallback="not the value") == "test_value3"
def test_get_db_file(tmp_path: Path) -> None:
section = "paths"
option = "db"
value = "test_value"
# config is not yet available
tl.set_config(tmp_path, section, option, value)
assert tl.get_db_file(tmp_path) == "test_value"
def test_cache_enabled(tmp_path: Path) -> None:
section = "core"
option = "cached"
# config is not yet available
tl.set_config(tmp_path, section, option, "True")
assert tl.cache_enabled(tmp_path)
tl.set_config(tmp_path, section, option, "False")
assert not tl.cache_enabled(tmp_path)
tl.set_config(tmp_path, section, option, "lalala")
with pytest.raises(ValueError) as e_info:
tl.cache_enabled(tmp_path)