Source code for astrophot.utils.decorators

from functools import wraps
import inspect
import warnings

import numpy as np


[docs] def ignore_numpy_warnings(func): """This decorator is used to turn off numpy warnings. This should only be used in initialize scripts which often run heuristic code to determine initial parameter values. These heuristics may encounter log(0) or sqrt(-1) or other numerical artifacts and should handle them before returning. This decorator simply cleans up that processes to minimize clutter in the output. """ @wraps(func) def wrapped(*args, **kwargs): old_settings = np.seterr(all="ignore") warnings.filterwarnings("ignore", category=np.VisibleDeprecationWarning) result = func(*args, **kwargs) np.seterr(**old_settings) warnings.filterwarnings("default", category=np.VisibleDeprecationWarning) return result return wrapped
[docs] def default_internal(func): """This decorator inspects the input parameters for a function which expects to recieve `image` and `parameters` arguments. If either of these are not given, then the model can use its default values for the parameters assuming the `image` is the internal `target` object and the `parameters` are the internally stored parameters. """ sig = inspect.signature(func) @wraps(func) def wrapper(self, *args, **kwargs): bound = sig.bind(self, *args, **kwargs) bound.apply_defaults() if bound.arguments.get("image") is None: bound.arguments["image"] = self.target if bound.arguments.get("parameters") is None: bound.arguments["parameters"] = self.parameters return func(*bound.args, **bound.kwargs) return wrapper