From 421c5dc286cac62338567b7f140263d3a67697cd Mon Sep 17 00:00:00 2001 From: Jan Griesfeller Date: Mon, 15 Apr 2024 12:59:09 +0200 Subject: [PATCH] add missing include file --- src/pyaro_readers/nilupmfebas/_warnings.py | 62 ++++++++++++++++++++++ 1 file changed, 62 insertions(+) create mode 100644 src/pyaro_readers/nilupmfebas/_warnings.py diff --git a/src/pyaro_readers/nilupmfebas/_warnings.py b/src/pyaro_readers/nilupmfebas/_warnings.py new file mode 100644 index 0000000..be99cec --- /dev/null +++ b/src/pyaro_readers/nilupmfebas/_warnings.py @@ -0,0 +1,62 @@ +import warnings +from contextlib import contextmanager + + +@contextmanager +def ignore_warnings(category: type[Warning], *messages: str): + """ + Ignore particular warnings with a decorator or context manager + + Parameters + ---------- + category : subclass of Warning + warning category to be ignored. E.g. UserWarning, DeprecationWarning. + The default is Warning. + *messages : str, optional + warning messages to be ignored. E.g. + ignore_warnings(Warning, 'Warning that can safely be ignored', 'Other warning to ignore'). + For each + `` :func:`warnigns.filterwarnings('ignore', Warning, message=)` + is called. + + Example + ------- + @ignore_warnings(UserWarning) + @ignore_warnings(DeprecationWarning) + @ignore_warnings(Warning, 'I REALLY') + def warn_randomly_and_add_numbers(num1, num2): + warnings.warn(UserWarning('Harmless user warning')) + warnings.warn(DeprecationWarning('This function is deprecated')) + warnings.warn(Warning('I REALLY NEED TO REACH YOU')) + return num1+num2 + + """ + if not issubclass(category, Warning): + raise ValueError("category must be a Warning subclass") + + if not messages: + message = "" + elif all(isinstance(msg, str) for msg in messages): + message = "|".join(messages) + else: + raise ValueError("messages must be list of strings") + + with warnings.catch_warnings(): + warnings.filterwarnings("ignore", category=category, message=message) + yield + + +def ignore_basemap_warning(): # pragma: no cover + warnings.filterwarnings( + "ignore", r".*install Basemap$", UserWarning, "geonum", append=True + ) + + +def ignore_earth_radius_warning(): # pragma: no cover + warnings.filterwarnings( + "ignore", + "Using DEFAULT_SPHERICAL_EARTH_RADIUS", + UserWarning, + "iris.*", + append=True, + )