from functools import wraps import numpy as np import statsmodels.tools.validation.validation as v def array_like( pos, name, dtype=np.double, ndim=None, maxdim=None, shape=None, order="C", contiguous=False, ): def inner(func): @wraps(func) def wrapper(*args, **kwargs): if pos < len(args): arg = args[pos] arg = v.array_like( arg, name, dtype, ndim, maxdim, shape, order, contiguous ) if pos == 0: args = (arg,) + args[1:] else: args = args[:pos] + (arg,) + args[pos + 1:] else: arg = kwargs[name] arg = v.array_like( arg, name, dtype, ndim, maxdim, shape, order, contiguous ) kwargs[name] = arg return func(*args, **kwargs) return wrapper return inner