pythonwrench.cast module

pythonwrench.cast.as_builtin(x: Counter, **kwargs) dict[Any, int][source]
pythonwrench.cast.as_builtin(x: date, **kwargs) str
pythonwrench.cast.as_builtin(x: Enum, **kwargs) str
pythonwrench.cast.as_builtin(x: Path, **kwargs) str
pythonwrench.cast.as_builtin(x: Pattern, **kwargs) str
pythonwrench.cast.as_builtin(x: Namespace, **kwargs) dict[str, Any]
pythonwrench.cast.as_builtin(x: Mapping[K, V], **kwargs) dict[K, V]
pythonwrench.cast.as_builtin(x: DataclassInstance, **kwargs) dict[str, Any]
pythonwrench.cast.as_builtin(x: NamedTupleInstance, **kwargs) dict[str, Any]
pythonwrench.cast.as_builtin(x: T_BuiltinScalar, **kwargs) T_BuiltinScalar
pythonwrench.cast.as_builtin(x: Any, **kwargs) Any

Convert an object to a sanitized python builtin equivalent recursively.

This function can be used to sanitize data before saving to a JSON, YAML or CSV file.

Additional objects to convert can be added dynamically with pythonwrench.register_as_builtin_fn function decorator.

Here is the list of default objects converted to built-in: - tuple -> list - collections.Counter -> dict - datetime.date -> str - argparse.Namespace -> dict - re.Pattern -> str - pathlib.Path -> str - enum.Enum -> str - Mapping -> dict - Iterable -> list - Dataclass -> dict - NamedTuple -> dict

Note: By default, tuple objects are converted to list.

Args:

x: Object to convert to built-in equivalent.

pythonwrench.cast.register_as_builtin_fn(class_or_tuple: type | tuple[type, ...], *, custom_predicate: None = None, priority: int = 0) Callable[source]
pythonwrench.cast.register_as_builtin_fn(class_or_tuple: None = None, *, custom_predicate: Predicate, priority: int = 0) Callable

Decorator to add an as_builtin function.

Example

>>> import numpy as np
>>> @register_as_builtin_fn(np.ndarray)
>>> def my_checksum_for_numpy(x: np.ndarray):
>>>     return x.tolist()
>>> pw.as_builtin([np.array([1, 2]), [3, 4]])
... [[1, 2], [3, 4]]