Source code for nxtomomill.io.config.optionlevel
from __future__ import annotations
from copy import copy
from typing import Any
from silx.utils.enum import Enum as _Enum
__all__ = ["OptionLevel", "filter_options_level_items"]
[docs]class OptionLevel(_Enum):
REQUIRED = "required"
ADVANCED = "advanced"
[docs]def filter_options_level_items(
dict_: dict[str, Any], level: OptionLevel, level_ref: dict[str, OptionLevel]
) -> dict[str, Any]:
r"""
Filer items in given dict from there configuration level.
:param dict\_: that we want to filter. All possible keys must contained in `level_ref`. Else a KEyError exception will be raised.
:param level: the OptionLevel we want to get. All keys which an higher option level will be removed from the dictionary
:param level_ref: dict containing all possible 'dict\_' keys with associated option level
"""
res = copy(dict_)
keys = tuple(res.keys())
for key in keys:
if level == OptionLevel.REQUIRED and level_ref[key] == OptionLevel.ADVANCED:
del res[key]
return res