class_docstr: Forms a diagonal window where window_size controls the maximum allowed shift between the two series.
  If both time-series have the same time axis, window_size corresponds to the maximum number of time periods
code: def init_size(self, n: int, m: int):
      self.n = n
      self.m = m
  
      diff = abs(n - m)
      raise_if_not(
          diff < self.window_size,
          f"Window size must at least cover size difference ({diff})",
      )
  
      ranges = np.repeat(np.arange(n), 2)
      ranges[0::2] -= (self.window_size,)
      ranges[1::2] += self.window_size
  
      ranges[0::2] = np.maximum(0, ranges[0::2])
      ranges[1::2] = np.minimum(self.m, ranges[1::2] + 1)
      ranges = np.reshape(ranges, (-1, 2))
  
      super().__init__(n, m, ranges)
  
imports: import array
  from abc import ABC, abstractmethod
  from math import atan, tan
  from typing import Tuple
  import numpy
  from darts.logging import raise_if, raise_if_not
label_desc: Use image node_id 2 for calling the SakoeChiba obj's underlying member method code with example usage: obj.init_size(n, m) without return types