import numpy as np
from .catch_errors import check_for_period_error
from .function_helper import fill_for_noncomputable_vals

np.seterr(divide='ignore', invalid='ignore')

def standard_variance(data, period):
    """
    Standard Variance.

    Formula:
    (Ct - AVGt)^2 / N
    """
    check_for_period_error(data, period)
    sv = list(map(
        lambda idx:
        np.var(data[idx+1-period:idx+1], ddof=1),
        range(period-1, len(data))
        ))
    sv = fill_for_noncomputable_vals(data, sv)

    return sv