      def __init__(self, data, amount):
          assert data.ndim == 1
          amount = min(max(amount, 0.001), 0.999)
  
          self._data = data
          self._alpha = 1. - amount
          self._dtype = "float32" if data.dtype == np.float32 else "float64"
          self._row_size = self._get_max_row_size()
          self._out = np.empty_like(data, dtype=self._dtype)
  
 
</s> remove     def __init__(self, data, amount):
 </s> add     def __init__(self, data: np.ndarray, amount: float) -> None: </s> remove     def __call__(self):
 </s> add     def __call__(self) -> np.ndarray: </s> remove     def _ewma_vectorized_safe(self):
 </s> add     def _ewma_vectorized_safe(self) -> None: </s> remove             lblcmb = ttk.Label(cmbframe, text="{}:".format(item), width=7, anchor=tk.W)
 </s> add             lblcmb = ttk.Label(cmbframe, text=f"{item}:", width=7, anchor=tk.W) </s> remove                 text = "Show {}".format(item.title())
 </s> add                 text = f"Show {item.title()}"
        self._data = np.nan_to_num(data)
      def __init__(self, data, amount):
          assert data.ndim == 1
          amount = min(max(amount, 0.001), 0.999)
  
        self._data = np.nan_to_num(data)
          self._alpha = 1. - amount
          self._dtype = "float32" if data.dtype == np.float32 else "float64"
          self._row_size = self._get_max_row_size()
          self._out = np.empty_like(data, dtype=self._dtype)
  
keep keep keep keep replace keep keep keep keep keep
 Bugfixes:
  - Stats graph - Handle NaNs in data
  - logger - de-elevate matplotlib font messages 
lib/gui/analysis/stats.py