# -*- coding: utf-8 -*-
from functools import wraps
from inspect import signature
import numpy
SYMBOLS = {
'μ': 'mu',
'σ': 'sigma',
'α': 'alpha',
'β': 'beta',
'γ': 'gamma',
'λ': 'lambda_',
'θ': 'theta',
}
[docs]def greco_deco(func):
""" Decorator to let you use greek characters for fxn kwargs."""
@wraps(func)
def wrapper(*args, **kwargs):
sig = signature(func)
kwargs = {SYMBOLS.get(k, k): v for k, v in kwargs.items()}
bound = sig.bind(*args, **kwargs)
return func(**bound.arguments)
return wrapper
[docs]def seed(func):
""" Decorator to seed the RNG before any function. """
@wraps(func)
def wrapper(*args, **kwargs):
numpy.random.seed(0)
return func(*args, **kwargs)
return wrapper
def _get_loc_scale_keys(fit=False):
if fit:
return 'floc', 'fscale'
else:
return 'loc', 'scale'
def _pop_none(**kwargs):
"""
Removes any kwargs whose values are `None`.
"""
final = kwargs.copy()
for k in kwargs:
if kwargs[k] is None:
final.pop(k)
return final