Source code for encommon.config.utils
"""
Functions and routines associated with Enasis Network Common Library.
This file is part of Enasis Network software eco-system. Distribution
is permitted, for more information consult the project license file.
"""
from pathlib import Path
from typing import Optional
from typing import TYPE_CHECKING
from yaml import SafeLoader
from yaml import load
from .. import PROJECT
from .. import WORKSPACE
from ..types import DictStrAny
from ..utils import read_text
from ..utils import resolve_path
from ..utils import resolve_paths
if TYPE_CHECKING:
from ..utils.common import PATHABLE
from ..utils.common import REPLACE
[docs]
def config_load(
path: str | Path,
) -> DictStrAny:
"""
Load configuration using the directory or file provided.
:param path: Complete or relative path to configuration.
:returns: New resolved filesystem path object instance.
"""
loaded = read_text(
config_path(path))
parsed = load(loaded, SafeLoader)
assert isinstance(parsed, dict)
return parsed
[docs]
def config_path(
path: str | Path,
) -> Path:
"""
Resolve the provided path replacing the magic keywords.
.. note::
This function simply wraps one from utils subpackage.
:param path: Complete or relative path for processing.
:returns: New resolved filesystem path object instance.
"""
replace = {
'PROJECT': PROJECT,
'WORKSPACE': WORKSPACE}
return resolve_path(path, replace)
[docs]
def config_paths(
paths: 'PATHABLE',
replace: Optional['REPLACE'] = None,
) -> tuple[Path, ...]:
"""
Resolve the provided paths replacing the magic keywords.
.. note::
This function simply wraps one from utils subpackage.
:param paths: Complete or relative paths for processing.
:param replace: Optional values to replace in the path.
:returns: New resolved filesystem path object instances.
"""
if replace is None:
replace = {}
replace = dict(replace)
replace = {
'PROJECT': PROJECT,
'WORKSPACE': WORKSPACE}
return resolve_paths(
paths, replace)