def METHOD_NAME(
    file_path: str, target_name: str
) -> Tuple[np.ndarray, np.ndarray, list]:
    """Reads data from CSV file and prepares it for model fitting.
    Args:
        file_path (str): relative path to CSV file
        target_name (str): name of dependent variable in the dataset
    Returns:
        Tuple[np.ndarray, np.ndarray, list, str]:
            1. n-dim array of independent variables
            2. 1-dim array of dependent variable
            3. List of feature names
            4. Name of dependent variable (updated in case of demo dataset)
    """
    # read data from file as pandas dataframe
    try:
        data = pd.read_csv(file_path)
    except FileNotFoundError:
        sys.exit("Invalid path provided.")
    # separate features and target
    if target_name:
        y = np.array(data.pop(target_name))
    else:
        target_name = data.columns[-1]
        y = np.array(data.pop(data.columns[-1]))
    features = list(data.columns)
    X = np.array(data)
    # add bias term in the form of constant column
    X = np.column_stack((X, np.ones(len(X))))
    features.append("constant")
    return X, y, features, target_name