# -*- coding: utf-8 -*- # # Taylor G Smith # # Wrapped functions from functools import wraps import warnings from statsmodels.tsa.stattools import acf as sm_acf, pacf as sm_pacf __all__ = [ 'acf', 'pacf' ] # TODO: remove all explicit args/kwargs, making them *args, **kwargs def inheritdoc(parent): """Inherit documentation from a parent Parameters ---------- parent : callable The parent function or class that contains the sought-after docstring. If it doesn't have a docstring, this might behave in unexpected ways. Examples -------- >>> def a(x=1): ... '''This is documentation''' ... return x ... >>> @inheritdoc(a) ... def b(x): ... return 2 * a(x) ... >>> print(b.__doc__) This is documentation >>> print(b(2)) 4 """ def wrapper(func): # Assign the parent docstring to the child func.__doc__ = parent.__doc__ @wraps(func) def caller(*args, **kwargs): return func(*args, **kwargs) return caller return wrapper @inheritdoc(parent=sm_acf) def acf( x, nlags=None, qstat=False, fft=None, alpha=None, missing='none', adjusted=False, ): return sm_acf( x=x, nlags=nlags, qstat=qstat, fft=fft, alpha=alpha, missing=missing, adjusted=adjusted, ) @inheritdoc(parent=sm_pacf) def pacf(x, nlags=None, method='ywadjusted', alpha=None): # Handle kwarg deprecation in statsmodels 0.13.0 if "unbiased" in method: warnings.warn( "The `*unbiased` methods have been deprecated in " "statsmodels >= 0.13.0. Please use `*adjusted` instead.", DeprecationWarning ) method = method.replace("unbiased", "adjusted") elif method in ("ydu", "ywu", "ldu"): warnings.warn( "The `ydu`, `ywu`, and `ldu` methods have been deprecated in " "statsmodels >= 0.13.0. Please use `yda`, `ywa`, and `lda` " "instead.", DeprecationWarning ) method = method.replace("u", "a") return sm_pacf(x=x, nlags=nlags, method=method, alpha=alpha)