def METHOD_NAME(f):
    def decorator(self, *args, **kwargs):
        """
        This is our decorator function, used to modify the inputs of __call__
        methods to reflect preferences we set in config file.
        Notes:
        inspect.getargspec will tell us the names of all arguments and their default values.
        Later we'll have to be more careful - all_defs only makes entries for arguments that actually
        have default values
        """
        with warnings.catch_warnings():
            # ignore deprecation warning: getargspec does what we want here and
            # we have to jump through hoops to get "signature" to work.
            # This is not python4-compatible, but I don't have internet access
            # now and can't figure out how to make it so.
            warnings.simplefilter('ignore')
            all_args, all_vars, all_keys, all_defs = inspect.getargspec(f)
        all_args.pop(0) # pop self
        # Construct dictionary containing all of f's keyword arguments
        argsdefs = {}
        for i, arg in enumerate(all_args):
            argsdefs[arg] = all_defs[i]
        # Include these in our new_kwargs dictionary
        new_kwargs = argsdefs
        # Read in config file and replace keyword arguments that have been defined in it
        for arg in new_kwargs:
            if arg in mycfg: new_kwargs[arg] = mycfg[arg]
        # If we've changed anything on call, reflect this in new_kwargs
        for arg in kwargs:
            new_kwargs[arg] = kwargs[arg]
        f(self, *args, **new_kwargs)
    # documentation should be passed on, else sphinx doesn't work and the user can't access the docs
    decorator.__doc__ = f.__doc__
    decorator.__defaults__ = f.__defaults__
    decorator.__repr__ = f.__repr__
    return decorator