Source code for hpotk.util._validate

import typing


T = typing.TypeVar('T')


[docs] def validate_instance(obj: T, clz: type, param_name: typing.Optional[str] = None) -> T: """ Validate that `obj` is instance of `clz` or raise :class:`ValueError` otherwise. :param obj: and instance for validation. :param clz: the target class. :param param_name: name of the object to include in the error message. :return: the `obj` if the validation passes. :raise ValueError: if the instance check fails. """ if not isinstance(obj, clz): if param_name is None: raise ValueError(f'The object must be an instance of {clz} but was {type(obj)}') else: raise ValueError(f'{param_name} must be an instance of {clz} but was {type(obj)}') return obj
[docs] def validate_optional_instance(obj: typing.Optional[T], clz: type, param_name: typing.Optional[str] = None) -> typing.Optional[T]: """ Validate that `obj` is instance of `clz` or `None`, or raise :class:`ValueError` otherwise. :param obj: and instance for validation or `None`. :param clz: the target class. :param param_name: name of the object to include in the error message. :return: the `obj` if the validation passes. :raise ValueError: if `obj` is *not* `None` and the instance check fails. """ if obj is not None: return validate_instance(obj, clz, param_name)