vcorelib.io.arbiter package#

Submodules#

vcorelib.io.arbiter.base module#

A module exposing data-file encoders and decoders.

class vcorelib.io.arbiter.base.DataArbiterBase(logger: ~logging.Logger | ~logging.LoggerAdapter[~typing.Any] = <Logger vcorelib.io.arbiter.base (WARNING)>, encoding: str = 'utf-8')[source]#

Bases: object

A class for looking up encode and decode functions for given data types.

decode(pathlike: Path | str | None, logger: Logger | LoggerAdapter[Any] = None, require_success: bool = False, includes_key: str = None, preprocessor: Callable[[TextIO | StringIO], TextIO | StringIO] = None, maxsplit: int = 1, expect_overwrite: bool = False, strategy: MergeStrategy = MergeStrategy.RECURSIVE, files_loaded: List[Path] = None, **kwargs) LoadResult[source]#

Attempt to load data from a file.

decode_stream(ext: str, stream: TextIO | StringIO, logger: Logger | LoggerAdapter[Any] = None, **kwargs) LoadResult[source]#

Attempt to load data from a text stream.

encode(pathlike: Path | str | None, data: Dict[str, str | int | float | bool | None | Dict[str, str | int | float | bool | None] | List[str | int | float | bool | None]], logger: Logger | LoggerAdapter[Any] = None, maxsplit: int = 1, **kwargs) Tuple[bool, int][source]#

Encode data to a file on disk.

encode_stream(ext: str, stream: TextIO | StringIO, data: Dict[str, str | int | float | bool | None | Dict[str, str | int | float | bool | None] | List[str | int | float | bool | None]], logger: Logger | LoggerAdapter[Any] = None, **kwargs) Tuple[bool, int][source]#

Serialize data to an output stream.

vcorelib.io.arbiter.context module#

A module implementing various context-manager interfaces for the data arbiter.

class vcorelib.io.arbiter.context.DataArbiterContext(logger: ~logging.Logger | ~logging.LoggerAdapter[~typing.Any] = <Logger vcorelib.io.arbiter.base (WARNING)>, encoding: str = 'utf-8')[source]#

Bases: DataArbiterDirectories

A class implementing context-manager interfaces for the data arbiter.

object_directory_context(pathlike: Path | str | None, decode_kwargs: Dict[str, Any] = None, encode_kwargs: Dict[str, Any] = None) Iterator[Dict[str, str | int | float | bool | None | Dict[str, str | int | float | bool | None] | List[str | int | float | bool | None]]][source]#

Provide a loaded directory as a context.

object_file_context(pathlike: Path | str | None, decode_kwargs: Dict[str, Any] = None, encode_kwargs: Dict[str, Any] = None) Iterator[Dict[str, str | int | float | bool | None | Dict[str, str | int | float | bool | None] | List[str | int | float | bool | None]]][source]#

Provide data loaded from a file as a context so that it’s written back when the context ends.

vcorelib.io.arbiter.directory module#

A data-arbiter extension for working with directories.

class vcorelib.io.arbiter.directory.DataArbiterDirectories(logger: ~logging.Logger | ~logging.LoggerAdapter[~typing.Any] = <Logger vcorelib.io.arbiter.base (WARNING)>, encoding: str = 'utf-8')[source]#

Bases: DataArbiterBase

A class adding interfaces for working with directories.

decode_directory(pathlike: Path | str | None, logger: Logger | LoggerAdapter[Any] = None, require_success: bool = False, path_filter: Callable[[Path], bool] = None, recurse: bool = False, **kwargs) LoadResult[source]#

Attempt to decode data files in a directory. Assigns data loaded from each file to a key, returns whether or not any files failed to load and the cumulative time that each file-load took.

encode_directory(pathlike: Path | str | None, data: Dict[str, str | int | float | bool | None | Dict[str, str | int | float | bool | None] | List[str | int | float | bool | None]], ext: str = 'json', logger: Logger | LoggerAdapter[Any] = None, **kwargs) Tuple[bool, int][source]#

Encode data to a directory where every key becomes a file with the provided extension. The encoding scheme is implied by the extension.

Module contents#

A module aggregating all data-arbiter capabilities.

class vcorelib.io.arbiter.DataArbiter(logger: ~logging.Logger | ~logging.LoggerAdapter[~typing.Any] = <Logger vcorelib.io.arbiter.base (WARNING)>, encoding: str = 'utf-8')[source]#

Bases: DataArbiterContext

A class aggregating all data-arbiter capabilities.