def __init__(
            self, origin,
            name=None, return_type=str, args=None, needs_context=False):

        self.origin = origin

        self.name = name or origin.__name__
        self.documentation = origin.__doc__
        self.return_type = TypeFactory(return_type or str)
        self.needs_context = needs_context

        # Get argument names from origin
        arg_names = [(x, ) for x in getargspec(origin)[0]
            if not needs_context or x != CONTEXT_ARG_NAME]

        # Get argument types
        if not args:
            args = (str,) * len(arg_names)
        args_ = map(lambda x: x[0] + x[1], zip(arg_names,
            map(lambda arg: isinstance(arg, tuple) and arg or (arg,), args)))

        # Build arguments specification
        self.args = DictOf(self.type_name, *args_)
``origin`` is a native Python function to be wrapped.
dataset/ETHPy150Open stepank/pyws/src/pyws/functions/__init__.py/NativeFunctionAdapter.__init__