153 lines
3.5 KiB
Python
153 lines
3.5 KiB
Python
import os
|
|
from configparser import ConfigParser
|
|
from typing import Any
|
|
from pathlib import Path
|
|
|
|
CONFIG_FILENAME = ".corrlib"
|
|
cached: bool = True
|
|
|
|
|
|
def str2list(string: str) -> list[str]:
|
|
"""
|
|
Convert a comma-separated string to a list.
|
|
|
|
Parameters
|
|
----------
|
|
string: str
|
|
The sting holding a comma-sparated list.
|
|
|
|
Returns
|
|
-------
|
|
s: list[str]
|
|
The list of strings that was held bythe comma separated string.
|
|
"""
|
|
return string.split(",")
|
|
|
|
def list2str(mylist: list[str]) -> str:
|
|
"""
|
|
Convert a list to a comma-separated string.
|
|
|
|
Parameters
|
|
----------
|
|
mylist: list[str]
|
|
A list of strings to be concatinated.
|
|
|
|
Returns
|
|
-------
|
|
s: list[str]
|
|
The sting holding a comma-sparated list.
|
|
"""
|
|
s = ",".join(mylist)
|
|
return s
|
|
|
|
def m2k(m: float) -> float:
|
|
"""
|
|
Convert to bare quark mas $m$ to inverse mass parameter $kappa$.
|
|
|
|
Parameters
|
|
----------
|
|
m: float
|
|
Bare quark mass.
|
|
|
|
Returns
|
|
-------
|
|
k: float
|
|
The corresponing $kappa$.
|
|
"""
|
|
return 1/(2*m+8)
|
|
|
|
|
|
def k2m(k: float) -> float:
|
|
"""
|
|
Convert from the inverse bare quark parameter $kappa$ to the bare quark mass $m$.
|
|
|
|
Parameters
|
|
----------
|
|
k: float
|
|
Inverse bare quark mass parameter $kappa$.
|
|
|
|
Returns
|
|
-------
|
|
m: float
|
|
The corresponing bare quark mass.
|
|
"""
|
|
return (1/(2*k))-4
|
|
|
|
|
|
def set_config(path: Path, section: str, option: str, value: Any) -> None:
|
|
"""
|
|
Set configuration parameters for the library.
|
|
|
|
Parameters
|
|
----------
|
|
path: str
|
|
The path of the library.
|
|
section: str
|
|
The section within the configuration file.
|
|
option: str
|
|
The option to be set to value.
|
|
value: Any
|
|
The value we set the option to.
|
|
"""
|
|
config_path = os.path.join(path, CONFIG_FILENAME)
|
|
config = ConfigParser()
|
|
if os.path.exists(config_path):
|
|
config.read(config_path)
|
|
if not config.has_section(section):
|
|
config.add_section(section)
|
|
config.set(section, option, value)
|
|
with open(config_path, 'w') as configfile:
|
|
config.write(configfile)
|
|
return
|
|
|
|
|
|
def get_db_file(path: Path) -> Path:
|
|
"""
|
|
Get the database file associated with the library at the given path.
|
|
|
|
Parameters
|
|
----------
|
|
path: str
|
|
The path of the library.
|
|
|
|
Returns
|
|
-------
|
|
db_file: str
|
|
The file holding the database.
|
|
"""
|
|
config_path = os.path.join(path, CONFIG_FILENAME)
|
|
config = ConfigParser()
|
|
if os.path.exists(config_path):
|
|
config.read(config_path)
|
|
else:
|
|
raise FileNotFoundError("Configuration file not found.")
|
|
db_file = Path(config.get('paths', 'db', fallback='backlogger.db'))
|
|
return db_file
|
|
|
|
|
|
def cache_enabled(path: Path) -> bool:
|
|
"""
|
|
Check, whether the library is cached.
|
|
Fallback is true.
|
|
|
|
Parameters
|
|
----------
|
|
path: str
|
|
The path of the library.
|
|
|
|
Returns
|
|
-------
|
|
cached_bool: bool
|
|
Whether the given library is cached.
|
|
"""
|
|
config_path = os.path.join(path, CONFIG_FILENAME)
|
|
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
|