diff --git a/src/configuraptor/__init__.py b/src/configuraptor/__init__.py index ba3b758..6cfed2c 100644 --- a/src/configuraptor/__init__.py +++ b/src/configuraptor/__init__.py @@ -11,6 +11,7 @@ check_and_convert_data, convert_config, ensure_types, + load_data, load_into, load_into_class, load_into_instance, @@ -38,6 +39,7 @@ "check_and_convert_data", "convert_config", "ensure_types", + "load_data", "load_into", "load_into_class", "load_into_instance", diff --git a/src/configuraptor/core.py b/src/configuraptor/core.py index 2135fb0..1d6b519 100644 --- a/src/configuraptor/core.py +++ b/src/configuraptor/core.py @@ -111,7 +111,7 @@ def from_url(url: str, _dummy: bool = False) -> tuple[io.BytesIO, str]: return io.BytesIO(data.encode()), filetype -def __load_data( +def _load_data( data: T_data, key: str = None, classname: str = None, @@ -136,7 +136,7 @@ def __load_data( final_data: dict[str, typing.Any] = {} for source in data: - final_data |= _load_data(source, key=key, classname=classname, lower_keys=True, allow_types=allow_types) + final_data |= load_data(source, key=key, classname=classname, lower_keys=True, allow_types=allow_types) return final_data @@ -180,7 +180,7 @@ def __load_data( return data -def _load_data( +def load_data( data: T_data, key: str = None, classname: str = None, @@ -195,10 +195,10 @@ def _load_data( data = find_pyproject_toml() try: - return __load_data(data, key, classname, lower_keys=lower_keys, allow_types=allow_types) + return _load_data(data, key, classname, lower_keys=lower_keys, allow_types=allow_types) except Exception as e: if key != "": - return __load_data(data, "", classname, lower_keys=lower_keys, allow_types=allow_types) + return _load_data(data, "", classname, lower_keys=lower_keys, allow_types=allow_types) else: # pragma: no cover warnings.warn(f"Data could not be loaded: {e}", source=e) # key already was "", just return data! @@ -499,7 +499,7 @@ def load_into_class( Shortcut for _load_data + load_into_recurse. """ allow_types = (dict, bytes) if issubclass(cls, BinaryConfig) else (dict,) - to_load = _load_data(data, key, cls.__name__, lower_keys=lower_keys, allow_types=allow_types) + to_load = load_data(data, key, cls.__name__, lower_keys=lower_keys, allow_types=allow_types) return _load_into_recurse(cls, to_load, init=init, strict=strict, convert_types=convert_types) @@ -518,7 +518,7 @@ def load_into_instance( """ cls = inst.__class__ allow_types = (dict, bytes) if issubclass(cls, BinaryConfig) else (dict,) - to_load = _load_data(data, key, cls.__name__, lower_keys=lower_keys, allow_types=allow_types) + to_load = load_data(data, key, cls.__name__, lower_keys=lower_keys, allow_types=allow_types) return _load_into_instance(inst, cls, to_load, init=init, strict=strict, convert_types=convert_types) diff --git a/tests/test_core.py b/tests/test_core.py index b1dbbed..a3cbafd 100644 --- a/tests/test_core.py +++ b/tests/test_core.py @@ -42,17 +42,17 @@ def test_no_data(): # data must be a dict: with pytest.raises(ValueError): - configuraptor.core._load_data(42, key=None) + configuraptor.core.load_data(42, key=None) with pytest.raises(ValueError): - configuraptor.core._load_data([], key=None) + configuraptor.core.load_data([], key=None) # but other than that, it should be fine: - configuraptor.core._load_data({}, key="") - configuraptor.core._load_data({}, key=None) - configuraptor.core._load_data({"-": 0, "+": None}, key="joe", classname="-.+") - configuraptor.core._load_data({"-": 0, "+": None}, key="+", classname="-.+") - configuraptor.core._load_data({"-": 0, "+": None}, key="", classname="-.+") - configuraptor.core._load_data({"-": 0, "+": None}, key=None, classname="-.+") + configuraptor.core.load_data({}, key="") + configuraptor.core.load_data({}, key=None) + configuraptor.core.load_data({"-": 0, "+": None}, key="joe", classname="-.+") + configuraptor.core.load_data({"-": 0, "+": None}, key="+", classname="-.+") + configuraptor.core.load_data({"-": 0, "+": None}, key="", classname="-.+") + configuraptor.core.load_data({"-": 0, "+": None}, key=None, classname="-.+") def test_str_to_none():