def add_range(self, column: int, start: int, end: int):
        """Extends the active cells in the column by the range (start,end).
        Ranges smaller than the current one are ignored.
        Note (1, m+1), not (0,m) corresponds to an entire column.

        Parameters
        ----------
        column
            Column int index
        start
            Row element int index where start >= 1 and start <= end
        end
            Row element int index where end >= 1 and end <= m+1
        """

        if start < 1 or start > self.m:
            raise IndexError(f"Start must be >=1 and <=m, got {start}")
        if end < 1 or end > self.m + 1:
            raise IndexError(f"End must be >=1 and <=m+1, got {end}")

        start_idx = column * 2 + 0
        end_idx = column * 2 + 1

        orig_start = self.column_ranges[start_idx]
        orig_end = self.column_ranges[end_idx]

        start, end = min(orig_start, start), max(orig_end, end)

        orig_row_length = gtz(orig_end - orig_start)
        row_length = gtz(end - start)

        self.length += row_length - orig_row_length
        self.column_ranges[start_idx] = start
        self.column_ranges[end_idx] = end
Extends the active cells in the column by the range (start,end).
        Ranges smaller than the current one are ignored.
        Note (1, m+1), not (0,m) corresponds to an entire column.

        Parameters
        ----------
        column
            Column int index
        start
            Row element int index where start >= 1 and start <= end
        end
            Row element int index where end >= 1 and end <= m+1
        
darts/dataprocessing/dtw/window.py