def setParam(self, results, method, **param):
        name, value = param.items()[0]
        f = getattr(self, method, None)
        if not f or value is None:
            return
        if isinstance(value, list):
            result = f(*value)
        elif isinstance(value, dict):
            # In some cases, we're passing a dict with non-string keywords,
            # and thus must pass f( value ) instead of f( **value ).

            # Python 2x prohibits passing dicts with non-string keywords
            # (see Python/getargs.c for additional details)

            # To determine when we need to do this, we iterate through all
            # dict keys to discover non-string keys. We could also use a
            # flag or catch an exception, but these may have side-effects
            if all(isinstance(k, basestring) for k in value):
                result = f(**value)
            else:
                result = f(value)
        else:
            result = f(value)
        results[name] = result
        return result

    # Override on config() to support extended parameters
Internal method: configure a *single* parameter
dataset/ETHPy150Open USC-NSL/miniNExT/mininext/node.py/Node.setParam