Source code for vcorelib.io.arbiter

"""
A module aggregating all data-arbiter capabilities.
"""

# built-in
from pathlib import Path
from typing import Any

# internal
from vcorelib.io.arbiter.context import DataArbiterContext


[docs] class DataArbiter(DataArbiterContext): """A class aggregating all data-arbiter capabilities."""
ARBITER = DataArbiter()
[docs] def encode_if_different( output: Path, data: dict[str, Any], encode_kwargs: dict[str, Any] = None, **decode_kwargs, ) -> bool: """Encode a data file if its contents are different.""" if ( output.is_file() and data == ARBITER.decode(output, require_success=True, **decode_kwargs).data ): return True return ARBITER.encode( output, data, **(encode_kwargs if encode_kwargs is not None else {}) )[0]