def METHOD_NAME(cls, p1: numpy.ndarray, p2: numpy.ndarray, base_array: numpy.ndarray) -> Optional[numpy.ndarray]:
    """Return indices that mark one side of the line, used by arrayFromPolygon
    Uses the line defined by p1 and p2 to check array of
    input indices against interpolated value
    Returns boolean array, with True inside and False outside of shape
    Originally from: `Stackoverflow - generating a filled polygon inside a numpy array <https://stackoverflow.com/questions/37117878/generating-a-filled-polygon-inside-a-numpy-array>`_
    :param p1: 2-tuple with x, y for point 1
    :param p2: 2-tuple with x, y for point 2
    :param base_array: boolean array to project the line on
    :return: A numpy array with indices that mark one side of the line
    """
    if p1[0] == p2[0] and p1[1] == p2[1]:
        return None
    idxs = numpy.indices(base_array.shape)  # Create 3D array of indices
    p1 = p1.astype(float)
    p2 = p2.astype(float)
    if p2[0] == p1[0]:
        sign = numpy.sign(p2[1] - p1[1])
        return idxs[1] * sign
    if p2[1] == p1[1]:
        sign = numpy.sign(p2[0] - p1[0])
        return idxs[1] * sign
    # Calculate max column idx for each row idx based on interpolated line between two points
    max_col_idx = (idxs[0] - p1[0]) / (p2[0] - p1[0]) * (p2[1] - p1[1]) + p1[1]
    sign = numpy.sign(p2[0] - p1[0])
    return idxs[1] * sign <= max_col_idx * sign