Skip to content

Commit

Permalink
Update adf_dataset.py
Browse files Browse the repository at this point in the history
  • Loading branch information
justin-richling authored Feb 18, 2025
1 parent 47836c8 commit 80485f5
Showing 1 changed file with 55 additions and 0 deletions.
55 changes: 55 additions & 0 deletions lib/adf_dataset.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
import sys, builtins

from pathlib import Path
import xarray as xr

Expand Down Expand Up @@ -409,3 +411,56 @@ def get_time_slice_by_year(self, time, startyear, endyear):
start_time_index = np.argwhere((time.dt.year >= startyear).values).flatten().min()
end_time_index = np.argwhere((time.dt.year <= endyear).values).flatten().max()
return slice(start_time_index, end_time_index+1)












def set_warning_filter(enable=True):
"""Enable or disable filtering of print statements containing 'WARNING'."""
original_print = builtins.print

def filtered_print(*args, **kwargs):
message = " ".join(map(str, args))
if enable and "WARNING" in message:
return # Skip printing warnings
original_print(*args, **kwargs)

builtins.print = filtered_print if enable else original_print


class SuppressWarningsPrint:
"""Context manager to suppress print statements containing specific keywords."""

def __init__(self, suppress=True, keywords=None):
"""
Parameters:
- suppress (bool): Whether to suppress matching print statements.
- keywords (list): List of keywords to filter (default: ["INFO", "WARNING", "ERROR"]).
"""
self.suppress = suppress
self.original_print = print # Store the original print function
self.keywords = keywords if keywords is not None else ["INFO", "WARNING", "ERROR"]

def filtered_print(self, *args, **kwargs):
"""Custom print function that filters out messages containing specified keywords."""
message = " ".join(map(str, args))
if not self.suppress or not any(keyword in message for keyword in self.keywords):
self.original_print(*args, **kwargs)

def __enter__(self):
"""Override the print function globally."""
if self.suppress:
sys.modules['builtins'].print = self.filtered_print

def __exit__(self, exc_type, exc_value, traceback):
"""Restore the original print function."""
sys.modules['builtins'].print = self.original_print

0 comments on commit 80485f5

Please sign in to comment.