<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def line_where( x1: int, y1: int, x2: int, y2: int, inclusive: bool = True ) -> Tuple[np.array, np.array]: """Return a NumPy index array following a Bresenham line. If `inclusive` is true then the start point is included in the result. Example: array([[0, 0, 0, 0, 0], [1, 2, 0, 0, 0], [0, 0, 3, 4, 0], [0, 0, 0, 0, 5], .. versionadded:: 4.6 """

    length = max(abs(x1 - x2), abs(y1 - y2)) + 1
    array = np.ndarray((2, length), dtype=np.intc)
    x = ffi.cast("int*", array[0].ctypes.data)
    y = ffi.cast("int*", array[1].ctypes.data)
    lib.LineWhere(x1, y1, x2, y2, x, y)
    if not inclusive:
        array = array[:, 1:]
    return tuple(array)