Source code for holoviews.util.warnings

import inspect
import os
import warnings

import param
from packaging.version import Version

__all__ = (
    "deprecated",
    "find_stack_level",
    "HoloviewsDeprecationWarning",
    "HoloviewsUserWarning",
    "warn",
)


def warn(message, category=None, stacklevel=None):
    if stacklevel is None:
        stacklevel = find_stack_level()

    warnings.warn(message, category, stacklevel=stacklevel)


[docs]def find_stack_level(): """ Find the first place in the stack that is not inside Holoviews and Param. Inspired by: pandas.util._exceptions.find_stack_level """ import holoviews as hv pkg_dir = os.path.dirname(hv.__file__) test_dir = os.path.join(pkg_dir, "tests") param_dir = os.path.dirname(param.__file__) frame = inspect.currentframe() try: stacklevel = 0 while frame: fname = inspect.getfile(frame) if fname.startswith((pkg_dir, param_dir)) and not fname.startswith(test_dir): frame = frame.f_back stacklevel += 1 else: break finally: # See: https://docs.python.org/3/library/inspect.html#inspect.Traceback del frame return stacklevel
def deprecated(remove_version, old, new=None, extra=None): import holoviews as hv current_version = Version(Version(hv.__version__).base_version) if isinstance(remove_version, str): remove_version = Version(remove_version) if remove_version <= current_version: # This error is mainly for developers to remove the deprecated. raise ValueError( f"{old!r} should have been removed in {remove_version}, current version {current_version}." ) message = f"{old!r} is deprecated and will be removed in version {remove_version}." if new: message = f"{message[:-1]}, use {new!r} instead." if extra: message += " " + extra.strip() warn(message, HoloviewsDeprecationWarning)
[docs]class HoloviewsDeprecationWarning(DeprecationWarning): """A Holoviews-specific ``DeprecationWarning`` subclass. Used to selectively filter Holoviews deprecations for unconditional display. """
[docs]class HoloviewsUserWarning(UserWarning): """A Holoviews-specific ``UserWarning`` subclass. Used to selectively filter Holoviews warnings for unconditional display. """
warnings.simplefilter("always", HoloviewsDeprecationWarning) warnings.simplefilter("always", HoloviewsUserWarning)