iden.io
iden.io ¶
Contain data loaders and savers.
iden.io.AutoFileLoader ¶
Bases: BaseLoader[Any]
Implement a data loader to load data based on the file extension.
Example usage:
>>> import tempfile
>>> from pathlib import Path
>>> from iden.io import save_json, AutoFileLoader
>>> with tempfile.TemporaryDirectory() as tmpdir:
... path = Path(tmpdir).joinpath("data.json")
... save_json({"key1": [1, 2, 3], "key2": "abc"}, path)
... loader = AutoFileLoader()
... data = loader.load(path)
... data
...
{'key1': [1, 2, 3], 'key2': 'abc'}
iden.io.AutoFileLoader.add_loader
classmethod
¶
add_loader(
extension: str,
loader: BaseLoader,
exist_ok: bool = False,
) -> None
Add a loader for a given file extension.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
extension |
str
|
The file extension. |
required |
loader |
BaseLoader
|
The loader to use for the given file extension. |
required |
exist_ok |
bool
|
If |
False
|
Raises:
Type | Description |
---|---|
RuntimeError
|
if a loader is already registered for the
extension and |
Example usage:
>>> from iden.io import AutoFileLoader, TextLoader
>>> AutoFileLoader.add_loader("text", TextLoader())
iden.io.AutoFileLoader.find_loader
classmethod
¶
find_loader(extension: str) -> BaseLoader
Find the loader associated to the file extension.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
extension |
str
|
The file extension. |
required |
Returns:
Type | Description |
---|---|
BaseLoader
|
The loader for the given file extension. |
Raises:
Type | Description |
---|---|
TypeError
|
if the file extension is not registered. |
Example usage:
>>> from iden.io import AutoFileLoader
>>> AutoFileLoader.find_loader("txt")
TextLoader()
>>> AutoFileLoader.find_loader("json")
JsonLoader()
iden.io.AutoFileLoader.has_loader
classmethod
¶
has_loader(extension: str) -> bool
Indicate if a loader is registered for the given file extension.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
extension |
str
|
The file extension. |
required |
Returns:
Type | Description |
---|---|
bool
|
|
Example usage:
>>> from iden.io import AutoFileLoader
>>> AutoFileLoader.has_loader("txt")
True
>>> AutoFileLoader.has_loader("newtxt")
False
iden.io.BaseFileSaver ¶
Bases: BaseSaver[T]
Define the base class to implement a file saver.
Example usage:
>>> import tempfile
>>> from pathlib import Path
>>> from iden.io import JsonSaver, JsonLoader
>>> with tempfile.TemporaryDirectory() as tmpdir:
... path = Path(tmpdir).joinpath("data.json")
... JsonSaver().save({"key1": [1, 2, 3], "key2": "abc"}, path)
... data = JsonLoader().load(path)
... data
...
{'key1': [1, 2, 3], 'key2': 'abc'}
iden.io.BaseFileSaver.save ¶
save(
to_save: T, path: Path, *, exist_ok: bool = False
) -> None
Save the data into the given path.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
to_save |
T
|
The data to save. The data should be compatible with the saving engine. |
required |
path |
Path
|
Specifies the path where to save the data. |
required |
exist_ok |
bool
|
If |
False
|
Raises:
Type | Description |
---|---|
FileExistsError
|
if the file already exists. |
Example usage:
>>> import tempfile
>>> from pathlib import Path
>>> from iden.io import JsonSaver, JsonLoader
>>> with tempfile.TemporaryDirectory() as tmpdir:
... path = Path(tmpdir).joinpath("data.json")
... JsonSaver().save({"key1": [1, 2, 3], "key2": "abc"}, path)
... data = JsonLoader().load(path)
... data
...
{'key1': [1, 2, 3], 'key2': 'abc'}
iden.io.BaseLoader ¶
Bases: Generic[T]
, ABC
Define the base class to implement a data loader.
Example usage:
>>> import tempfile
>>> from pathlib import Path
>>> from iden.io import save_json, JsonLoader
>>> with tempfile.TemporaryDirectory() as tmpdir:
... path = Path(tmpdir).joinpath("data.json")
... save_json({"key1": [1, 2, 3], "key2": "abc"}, path)
... data = JsonLoader().load(path)
... data
...
{'key1': [1, 2, 3], 'key2': 'abc'}
iden.io.BaseLoader.load
abstractmethod
¶
load(path: Path) -> T
Save the data into the given path.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
path |
Path
|
The path with the data to load. |
required |
Returns:
Type | Description |
---|---|
T
|
The data |
Example usage:
>>> import tempfile
>>> from pathlib import Path
>>> from iden.io import save_json, JsonLoader
>>> with tempfile.TemporaryDirectory() as tmpdir:
... path = Path(tmpdir).joinpath("data.json")
... save_json({"key1": [1, 2, 3], "key2": "abc"}, path)
... data = JsonLoader().load(path)
... data
...
{'key1': [1, 2, 3], 'key2': 'abc'}
iden.io.BaseSaver ¶
Bases: Generic[T]
, ABC
Define the base class to implement a data saver.
Example usage:
>>> import tempfile
>>> from pathlib import Path
>>> from iden.io import JsonSaver, JsonLoader
>>> with tempfile.TemporaryDirectory() as tmpdir:
... path = Path(tmpdir).joinpath("data.json")
... JsonSaver().save({"key1": [1, 2, 3], "key2": "abc"}, path)
... data = JsonLoader().load(path)
... data
...
{'key1': [1, 2, 3], 'key2': 'abc'}
iden.io.BaseSaver.save
abstractmethod
¶
save(
to_save: T, path: Path, *, exist_ok: bool = False
) -> None
Save the data into the given path.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
to_save |
T
|
The data to save. The data should be compatible with the saving engine. |
required |
path |
Path
|
Specifies the path where to save the data. |
required |
exist_ok |
bool
|
If |
False
|
Example usage:
>>> import tempfile
>>> from pathlib import Path
>>> from iden.io import JsonSaver, JsonLoader
>>> with tempfile.TemporaryDirectory() as tmpdir:
... path = Path(tmpdir).joinpath("data.json")
... JsonSaver().save({"key1": [1, 2, 3], "key2": "abc"}, path)
... data = JsonLoader().load(path)
... data
...
{'key1': [1, 2, 3], 'key2': 'abc'}
iden.io.JsonLoader ¶
Bases: BaseLoader[Any]
Implement a data loader to load data in a JSON file.
Example usage:
>>> import tempfile
>>> from pathlib import Path
>>> from iden.io import save_json, JsonLoader
>>> with tempfile.TemporaryDirectory() as tmpdir:
... path = Path(tmpdir).joinpath("data.json")
... save_json({"key1": [1, 2, 3], "key2": "abc"}, path)
... data = JsonLoader().load(path)
... data
...
{'key1': [1, 2, 3], 'key2': 'abc'}
iden.io.JsonSaver ¶
Bases: BaseFileSaver[Any]
Implement a file saver to save data with a JSON file.
Example usage:
>>> import tempfile
>>> from pathlib import Path
>>> from iden.io import JsonSaver, JsonLoader
>>> with tempfile.TemporaryDirectory() as tmpdir:
... path = Path(tmpdir).joinpath("data.json")
... JsonSaver().save({"key1": [1, 2, 3], "key2": "abc"}, path)
... data = JsonLoader().load(path)
... data
...
{'key1': [1, 2, 3], 'key2': 'abc'}
iden.io.PickleLoader ¶
Bases: BaseLoader[Any]
Implement a data loader to load data in a pickle file.
Example usage:
>>> import tempfile
>>> from pathlib import Path
>>> from iden.io import save_pickle, PickleLoader
>>> with tempfile.TemporaryDirectory() as tmpdir:
... path = Path(tmpdir).joinpath("data.pkl")
... save_pickle({"key1": [1, 2, 3], "key2": "abc"}, path)
... data = PickleLoader().load(path)
... data
...
{'key1': [1, 2, 3], 'key2': 'abc'}
iden.io.PickleSaver ¶
Bases: BaseFileSaver[Any]
Implement a file saver to save data with a pickle file.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
protocol |
int
|
The pickle protocol. By default, it uses the highest protocol available. |
HIGHEST_PROTOCOL
|
Example usage:
>>> import tempfile
>>> from pathlib import Path
>>> from iden.io import PickleSaver, PickleLoader
>>> with tempfile.TemporaryDirectory() as tmpdir:
... path = Path(tmpdir).joinpath("data.pkl")
... PickleSaver().save({"key1": [1, 2, 3], "key2": "abc"}, path)
... data = PickleLoader().load(path)
... data
...
{'key1': [1, 2, 3], 'key2': 'abc'}
iden.io.TextLoader ¶
Bases: BaseLoader[Any]
Implement a data loader to load data in a text file.
Example usage:
>>> import tempfile
>>> from pathlib import Path
>>> from iden.io import save_text, TextLoader
>>> with tempfile.TemporaryDirectory() as tmpdir:
... path = Path(tmpdir).joinpath("data.txt")
... save_text("hello", path)
... data = TextLoader().load(path)
... data
...
'hello'
iden.io.TextSaver ¶
Bases: BaseFileSaver[Any]
Implement a file saver to save data with a text file.
Note
If the data to save is not a string, it is converted to
a string before to be saved by using str
.
Example usage:
>>> import tempfile
>>> from pathlib import Path
>>> from iden.io import TextSaver, TextLoader
>>> with tempfile.TemporaryDirectory() as tmpdir:
... path = Path(tmpdir).joinpath("data.txt")
... TextSaver().save("hello", path)
... data = TextLoader().load(path)
... data
...
'hello'
iden.io.TorchLoader ¶
Bases: BaseLoader[Any]
Implement a data loader to load data in a JSON file.
Example usage:
>>> import tempfile
>>> from pathlib import Path
>>> from iden.io import save_torch, TorchLoader
>>> with tempfile.TemporaryDirectory() as tmpdir:
... path = Path(tmpdir).joinpath("data.pt")
... save_torch({"key1": [1, 2, 3], "key2": "abc"}, path)
... data = TorchLoader().load(path)
... data
...
{'key1': [1, 2, 3], 'key2': 'abc'}
iden.io.TorchSaver ¶
Bases: BaseFileSaver[Any]
Implement a file saver to save data with a JSON file.
Example usage:
>>> import tempfile
>>> from pathlib import Path
>>> from iden.io import TorchSaver, TorchLoader
>>> with tempfile.TemporaryDirectory() as tmpdir:
... path = Path(tmpdir).joinpath("data.pt")
... TorchSaver().save({"key1": [1, 2, 3], "key2": "abc"}, path)
... data = TorchLoader().load(path)
... data
...
{'key1': [1, 2, 3], 'key2': 'abc'}
iden.io.YamlLoader ¶
Bases: BaseLoader[Any]
Implement a data loader to load data in a YAML file.
Example usage:
>>> import tempfile
>>> from pathlib import Path
>>> from iden.io import save_yaml, YamlLoader
>>> with tempfile.TemporaryDirectory() as tmpdir:
... path = Path(tmpdir).joinpath("data.yaml")
... save_yaml({"key1": [1, 2, 3], "key2": "abc"}, path)
... data = YamlLoader().load(path)
... data
...
{'key1': [1, 2, 3], 'key2': 'abc'}
iden.io.YamlSaver ¶
Bases: BaseFileSaver[Any]
Implement a file saver to save data with a YAML file.
Example usage:
>>> import tempfile
>>> from pathlib import Path
>>> from iden.io import YamlSaver, YamlLoader
>>> with tempfile.TemporaryDirectory() as tmpdir:
... path = Path(tmpdir).joinpath("data.yaml")
... YamlSaver().save({"key1": [1, 2, 3], "key2": "abc"}, path)
... data = YamlLoader().load(path)
... data
...
{'key1': [1, 2, 3], 'key2': 'abc'}
iden.io.is_loader_config ¶
is_loader_config(config: dict) -> bool
Indicate if the input configuration is a configuration for a
BaseLoader
.
This function only checks if the value of the key _target_
is valid. It does not check the other values. If _target_
indicates a function, the returned type hint is used to check
the class.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
config |
dict
|
Specifies the configuration to check. |
required |
Returns:
Type | Description |
---|---|
bool
|
|
Example usage:
>>> from iden.io import is_loader_config
>>> is_loader_config({"_target_": "iden.io.JsonLoader"})
True
iden.io.is_saver_config ¶
is_saver_config(config: dict) -> bool
Indicate if the input configuration is a configuration for a
BaseSaver
.
This function only checks if the value of the key _target_
is valid. It does not check the other values. If _target_
indicates a function, the returned type hint is used to check
the class.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
config |
dict
|
Specifies the configuration to check. |
required |
Returns:
Type | Description |
---|---|
bool
|
|
Example usage:
>>> from iden.io import is_saver_config
>>> is_saver_config({"_target_": "iden.io.JsonSaver"})
True
iden.io.load_json ¶
load_json(path: Path) -> Any
Load the data from a given JSON file.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
path |
Path
|
Specifies the path to the JSON file. |
required |
Returns:
Type | Description |
---|---|
Any
|
The data from the JSON file. |
Example usage:
>>> import tempfile
>>> from pathlib import Path
>>> from iden.io import save_json, load_json
>>> with tempfile.TemporaryDirectory() as tmpdir:
... path = Path(tmpdir).joinpath("data.json")
... save_json({"key1": [1, 2, 3], "key2": "abc"}, path)
... data = load_json(path)
... data
...
{'key1': [1, 2, 3], 'key2': 'abc'}
iden.io.load_pickle ¶
load_pickle(path: Path) -> Any
Load the data from a given pickle file.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
path |
Path
|
Specifies the path to the pickle file. |
required |
Returns:
Type | Description |
---|---|
Any
|
The data from the pickle file. |
Example usage:
>>> import tempfile
>>> from pathlib import Path
>>> from iden.io import save_pickle, load_pickle
>>> with tempfile.TemporaryDirectory() as tmpdir:
... path = Path(tmpdir).joinpath("data.pkl")
... save_pickle({"key1": [1, 2, 3], "key2": "abc"}, path)
... data = load_pickle(path)
... data
...
{'key1': [1, 2, 3], 'key2': 'abc'}
iden.io.load_text ¶
load_text(path: Path) -> str
Load the data from a given text file.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
path |
Path
|
Specifies the path where to the text file. |
required |
Returns:
Type | Description |
---|---|
str
|
The data from the text file. |
Example usage:
>>> import tempfile
>>> from pathlib import Path
>>> from iden.io import save_text, load_text
>>> with tempfile.TemporaryDirectory() as tmpdir:
... path = Path(tmpdir).joinpath("data.txt")
... save_text("hello", path)
... data = load_text(path)
... data
...
'hello'
iden.io.load_torch ¶
load_torch(path: Path) -> Any
Load the data from a given JSON file.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
path |
Path
|
Specifies the path to the JSON file. |
required |
Returns:
Type | Description |
---|---|
Any
|
The data from the JSON file. |
Example usage:
>>> import tempfile
>>> from pathlib import Path
>>> from iden.io import save_torch, load_torch
>>> with tempfile.TemporaryDirectory() as tmpdir:
... path = Path(tmpdir).joinpath("data.pt")
... save_torch({"key1": [1, 2, 3], "key2": "abc"}, path)
... data = load_torch(path)
... data
...
{'key1': [1, 2, 3], 'key2': 'abc'}
iden.io.load_yaml ¶
load_yaml(path: Path) -> Any
Load the data from a given YAML file.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
path |
Path
|
Specifies the path to the YAML file. |
required |
Returns:
Type | Description |
---|---|
Any
|
The data from the YAML file. |
Example usage:
>>> import tempfile
>>> from pathlib import Path
>>> from iden.io import load_yaml, save_yaml
>>> with tempfile.TemporaryDirectory() as tmpdir:
... path = Path(tmpdir).joinpath("data.yaml")
... save_yaml({"key1": [1, 2, 3], "key2": "abc"}, path)
... data = load_yaml(path)
... data
...
{'key1': [1, 2, 3], 'key2': 'abc'}
iden.io.save_json ¶
save_json(
to_save: Any, path: Path, *, exist_ok: bool = False
) -> None
Save the given data in a JSON file.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
to_save |
Any
|
Specifies the data to write in a JSON file. |
required |
path |
Path
|
Specifies the path where to write the JSON file. |
required |
exist_ok |
bool
|
If |
False
|
Raises:
Type | Description |
---|---|
FileExistsError
|
if the file already exists. |
Example usage:
>>> import tempfile
>>> from pathlib import Path
>>> from iden.io import save_json, load_json
>>> with tempfile.TemporaryDirectory() as tmpdir:
... path = Path(tmpdir).joinpath("data.json")
... save_json({"key1": [1, 2, 3], "key2": "abc"}, path)
... data = load_json(path)
... data
...
{'key1': [1, 2, 3], 'key2': 'abc'}
iden.io.save_pickle ¶
save_pickle(
to_save: Any,
path: Path,
*,
exist_ok: bool = False,
protocol: int = pickle.HIGHEST_PROTOCOL
) -> None
Save the given data in a pickle file.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
to_save |
Any
|
Specifies the data to write in a pickle file. |
required |
path |
Path
|
Specifies the path where to write the pickle file. |
required |
exist_ok |
bool
|
If |
False
|
protocol |
int
|
Specifies the pickle protocol. By default, it uses the highest protocol available. |
HIGHEST_PROTOCOL
|
Raises:
Type | Description |
---|---|
FileExistsError
|
if the file already exists. |
Example usage:
>>> import tempfile
>>> from pathlib import Path
>>> from iden.io import save_pickle, load_pickle
>>> with tempfile.TemporaryDirectory() as tmpdir:
... path = Path(tmpdir).joinpath("data.pkl")
... save_pickle({"key1": [1, 2, 3], "key2": "abc"}, path)
... data = load_pickle(path)
... data
...
{'key1': [1, 2, 3], 'key2': 'abc'}
iden.io.save_text ¶
save_text(
to_save: Any, path: Path, *, exist_ok: bool = False
) -> None
Save the given data in a text file.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
to_save |
Any
|
Specifies the data to write in a text file. |
required |
path |
Path
|
Specifies the path where to write the text file. |
required |
exist_ok |
bool
|
If |
False
|
Raises:
Type | Description |
---|---|
FileExistsError
|
if the file already exists. |
Note
If the data to save is not a string, it is converted to
a string before to be saved by using str
.
Example usage:
>>> import tempfile
>>> from pathlib import Path
>>> from iden.io import save_text, load_text
>>> with tempfile.TemporaryDirectory() as tmpdir:
... path = Path(tmpdir).joinpath("data.txt")
... save_text("hello", path)
... data = load_text(path)
... data
...
'hello'
iden.io.save_torch ¶
save_torch(
to_save: Any, path: Path, *, exist_ok: bool = False
) -> None
Save the given data in a JSON file.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
to_save |
Any
|
Specifies the data to write in a JSON file. |
required |
path |
Path
|
Specifies the path where to write the JSON file. |
required |
exist_ok |
bool
|
If |
False
|
Raises:
Type | Description |
---|---|
FileExistsError
|
if the file already exists. |
Example usage:
>>> import tempfile
>>> from pathlib import Path
>>> from iden.io import save_torch, load_torch
>>> with tempfile.TemporaryDirectory() as tmpdir:
... path = Path(tmpdir).joinpath("data.pt")
... save_torch({"key1": [1, 2, 3], "key2": "abc"}, path)
... data = load_torch(path)
... data
...
{'key1': [1, 2, 3], 'key2': 'abc'}
iden.io.save_yaml ¶
save_yaml(
to_save: Any, path: Path, *, exist_ok: bool = False
) -> None
Save the given data in a YAML file.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
to_save |
Any
|
Specifies the data to write in a YAML file. |
required |
path |
Path
|
Specifies the path where to write the YAML file. |
required |
exist_ok |
bool
|
If |
False
|
Raises:
Type | Description |
---|---|
FileExistsError
|
if the file already exists. |
Example usage:
>>> import tempfile
>>> from pathlib import Path
>>> from iden.io import load_yaml, save_yaml
>>> with tempfile.TemporaryDirectory() as tmpdir:
... path = Path(tmpdir).joinpath("data.yaml")
... save_yaml({"key1": [1, 2, 3], "key2": "abc"}, path)
... data = load_yaml(path)
... data
...
{'key1': [1, 2, 3], 'key2': 'abc'}
iden.io.setup_loader ¶
setup_loader(
loader: BaseLoader[T] | dict,
) -> BaseLoader[T]
Set up a data loader.
The data loader is instantiated from its configuration by using the
BaseLoader
factory function.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
loader |
BaseLoader[T] | dict
|
Specifies the data loader or its configuration. |
required |
Returns:
Type | Description |
---|---|
BaseLoader[T]
|
The instantiated data loader. |
Example usage:
>>> from iden.io import setup_loader
>>> loader = setup_loader({"_target_": "iden.io.JsonLoader"})
>>> loader
JsonLoader()
iden.io.setup_saver ¶
Set up a data saver.
The data saver is instantiated from its configuration by using the
BaseSaver
factory function.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
saver |
BaseSaver[T] | dict
|
Specifies the data saver or its configuration. |
required |
Returns:
Type | Description |
---|---|
BaseSaver[T]
|
The instantiated data saver. |
Example usage:
>>> from iden.io import setup_saver
>>> saver = setup_saver({"_target_": "iden.io.JsonSaver"})
>>> saver
JsonSaver()