Python funcsigs.signature() Examples
The following are 30
code examples of funcsigs.signature().
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example.
You may also want to check out all available functions/classes of the module
funcsigs
, or try the search function
.
Example #1
Source File: worker.py From ray-legacy with BSD 3-Clause "New" or "Revised" License | 6 votes |
def check_signature_supported(has_kwargs_param, has_vararg_param, keyword_defaults, name): """Check if we support the signature of this function. We currently do not allow remote functions to have **kwargs. We also do not support keyword argumens in conjunction with a *args argument. Args: has_kwards_param (bool): True if the function being checked has a **kwargs argument. has_vararg_param (bool): True if the function being checked has a *args argument. keyword_defaults (List): A list of the default values for the arguments to the function being checked. name (str): The name of the function to check. Raises: Exception: An exception is raised if the signature is not supported. """ # check if the user specified kwargs if has_kwargs_param: raise "Function {} has a **kwargs argument, which is currently not supported.".format(name) # check if the user specified a variable number of arguments and any keyword arguments if has_vararg_param and any([d != funcsigs._empty for _, d in keyword_defaults]): raise "Function {} has a *args argument as well as a keyword argument, which is currently not supported.".format(name)
Example #2
Source File: signature.py From mockito-python with MIT License | 6 votes |
def get_signature(obj, method_name): method = getattr(obj, method_name) # Eat self for unbound methods bc signature doesn't do it if PY3: if ( inspect.isclass(obj) and not inspect.ismethod(method) and not isinstance(obj.__dict__.get(method_name), staticmethod) ): method = functools.partial(method, None) else: if ( isinstance(method, types.UnboundMethodType) and method.__self__ is None ): method = functools.partial(method, None) try: return signature(method) except Exception: return None
Example #3
Source File: mock.py From keras-lambda with MIT License | 6 votes |
def _call_matcher(self, _call): """ Given a call (or simply a (args, kwargs) tuple), return a comparison key suitable for matching with other calls. This is a best effort method which relies on the spec's signature, if available, or falls back on the arguments themselves. """ sig = self._spec_signature if sig is not None: if len(_call) == 2: name = '' args, kwargs = _call else: name, args, kwargs = _call try: return name, sig.bind(*args, **kwargs) except TypeError as e: e.__traceback__ = None return e else: return _call
Example #4
Source File: utils.py From trax with Apache License 2.0 | 6 votes |
def np_doc(np_fun): """Attachs numpy docstring to a function. Args: np_fun: the numpy function whose docstring will be used. Returns: A function decorator that attaches the docstring from `np_fun` to the decorated function. """ np_sig = _np_signature(np_fun) def decorator(f): """The decorator.""" sig = funcsigs.signature(f) unsupported_params = [] for name in np_sig.parameters: if name not in sig.parameters: unsupported_params.append(name) f.__doc__ = _np_doc_helper(f, np_fun, unsupported_params) return f return decorator
Example #5
Source File: mock.py From odoo12-x64 with GNU General Public License v3.0 | 6 votes |
def _call_matcher(self, _call): """ Given a call (or simply a (args, kwargs) tuple), return a comparison key suitable for matching with other calls. This is a best effort method which relies on the spec's signature, if available, or falls back on the arguments themselves. """ sig = self._spec_signature if sig is not None: if len(_call) == 2: name = '' args, kwargs = _call else: name, args, kwargs = _call try: return name, sig.bind(*args, **kwargs) except TypeError as e: e.__traceback__ = None return e else: return _call
Example #6
Source File: mock.py From auto-alt-text-lambda-api with MIT License | 6 votes |
def _call_matcher(self, _call): """ Given a call (or simply a (args, kwargs) tuple), return a comparison key suitable for matching with other calls. This is a best effort method which relies on the spec's signature, if available, or falls back on the arguments themselves. """ sig = self._spec_signature if sig is not None: if len(_call) == 2: name = '' args, kwargs = _call else: name, args, kwargs = _call try: return name, sig.bind(*args, **kwargs) except TypeError as e: e.__traceback__ = None return e else: return _call
Example #7
Source File: mock.py From Tautulli with GNU General Public License v3.0 | 6 votes |
def _set_signature(mock, original, instance=False): # creates a function with signature (*args, **kwargs) that delegates to a # mock. It still does signature checking by calling a lambda with the same # signature as the original. skipfirst = isinstance(original, ClassTypes) result = _get_signature_object(original, instance, skipfirst) if result is None: return mock func, sig = result def checksig(*args, **kwargs): sig.bind(*args, **kwargs) _copy_func_details(func, checksig) name = original.__name__ if not _isidentifier(name): name = 'funcopy' context = {'_checksig_': checksig, 'mock': mock} src = """def %s(*args, **kwargs): _checksig_(*args, **kwargs) return mock(*args, **kwargs)""" % name six.exec_(src, context) funcopy = context[name] _setup_func(funcopy, mock, sig) return funcopy
Example #8
Source File: utils.py From trax with Apache License 2.0 | 6 votes |
def np_doc_only(np_f): """Attachs numpy docstring to a function. This differs from np_doc in that it doesn't check for a match in signature. Args: np_f: the numpy function whose docstring will be used. Returns: A function decorator that attaches the docstring from `np_f` to the decorated function. """ def decorator(f): f.__doc__ = _np_doc_helper(f, np_f) return f return decorator
Example #9
Source File: mock.py From Tautulli with GNU General Public License v3.0 | 6 votes |
def _call_matcher(self, _call): """ Given a call (or simply an (args, kwargs) tuple), return a comparison key suitable for matching with other calls. This is a best effort method which relies on the spec's signature, if available, or falls back on the arguments themselves. """ sig = self._spec_signature if sig is not None: if len(_call) == 2: name = '' args, kwargs = _call else: name, args, kwargs = _call try: return name, sig.bind(*args, **kwargs) except TypeError as e: e.__traceback__ = None return e else: return _call
Example #10
Source File: from_dict.py From snips-nlu with Apache License 2.0 | 6 votes |
def from_dict(cls, dict): if dict is None: return cls() params = inspect.signature(cls.__init__).parameters if any(p.kind == inspect.Parameter.VAR_KEYWORD for p in params.values()): return cls(**dict) param_names = set() for i, (name, param) in enumerate(iteritems(params)): if i == 0 and name == "self": continue if param.kind in KEYWORD_KINDS: param_names.add(name) filtered_dict = {k: v for k, v in iteritems(dict) if k in param_names} return cls(**filtered_dict)
Example #11
Source File: test_general.py From symfit with GNU General Public License v2.0 | 6 votes |
def test_2D_fitting(): """ Makes sure that a scalar model with 2 independent variables has the proper signature, and that the fit result is of the correct type. """ xdata = np.random.randint(-10, 11, size=(2, 400)) zdata = 2.5*xdata[0]**2 + 7.0*xdata[1]**2 a = Parameter('a') b = Parameter('b') x = Variable('x') y = Variable('y') new = a*x**2 + b*y**2 fit = Fit(new, xdata[0], xdata[1], zdata) result = fit.model(xdata[0], xdata[1], 2, 3) assert isinstance(result, tuple) for arg_name, name in zip(('x', 'y', 'a', 'b'), inspect_sig.signature(fit.model).parameters): assert arg_name == name fit_result = fit.execute() assert isinstance(fit_result, FitResults)
Example #12
Source File: test_support.py From symfit with GNU General Public License v2.0 | 6 votes |
def test_keywordonly_class(): """ Decorating a function with no **kwargs-like argument should not be allowed. """ kinds = { 'self': inspect_sig.Parameter.POSITIONAL_OR_KEYWORD, 'a': inspect_sig.Parameter.POSITIONAL_OR_KEYWORD, 'b': inspect_sig.Parameter.POSITIONAL_OR_KEYWORD, 'args': inspect_sig.Parameter.VAR_POSITIONAL, 'kwargs': inspect_sig.Parameter.VAR_KEYWORD, 'c': inspect_sig.Parameter.KEYWORD_ONLY, 'd': inspect_sig.Parameter.KEYWORD_ONLY, } sig = inspect_sig.signature(A.__init__) for param in sig.parameters.values(): assert param.kind == kinds[param.name]
Example #13
Source File: test_support.py From symfit with GNU General Public License v2.0 | 6 votes |
def test_keywordonly_signature(): """ Test the keywordonly decorators ability to update the signature of the function it wraps. """ kinds = { 'a': inspect_sig.Parameter.POSITIONAL_OR_KEYWORD, 'b': inspect_sig.Parameter.POSITIONAL_OR_KEYWORD, 'args': inspect_sig.Parameter.VAR_POSITIONAL, 'kwargs': inspect_sig.Parameter.VAR_KEYWORD, 'c': inspect_sig.Parameter.KEYWORD_ONLY, 'd': inspect_sig.Parameter.KEYWORD_ONLY, } sig_f = inspect_sig.signature(f) for param in sig_f.parameters.values(): assert param.kind == kinds[param.name]
Example #14
Source File: mock.py From rules_pip with MIT License | 6 votes |
def _set_signature(mock, original, instance=False): # creates a function with signature (*args, **kwargs) that delegates to a # mock. It still does signature checking by calling a lambda with the same # signature as the original. skipfirst = isinstance(original, ClassTypes) result = _get_signature_object(original, instance, skipfirst) if result is None: return mock func, sig = result def checksig(*args, **kwargs): sig.bind(*args, **kwargs) _copy_func_details(func, checksig) name = original.__name__ if not _isidentifier(name): name = 'funcopy' context = {'_checksig_': checksig, 'mock': mock} src = """def %s(*args, **kwargs): _checksig_(*args, **kwargs) return mock(*args, **kwargs)""" % name six.exec_(src, context) funcopy = context[name] _setup_func(funcopy, mock, sig) return funcopy
Example #15
Source File: mock.py From rules_pip with MIT License | 6 votes |
def _call_matcher(self, _call): """ Given a call (or simply an (args, kwargs) tuple), return a comparison key suitable for matching with other calls. This is a best effort method which relies on the spec's signature, if available, or falls back on the arguments themselves. """ sig = self._spec_signature if sig is not None: if len(_call) == 2: name = '' args, kwargs = _call else: name, args, kwargs = _call try: return name, sig.bind(*args, **kwargs) except TypeError as e: e.__traceback__ = None return e else: return _call
Example #16
Source File: mock.py From odoo13-x64 with GNU General Public License v3.0 | 6 votes |
def _call_matcher(self, _call): """ Given a call (or simply a (args, kwargs) tuple), return a comparison key suitable for matching with other calls. This is a best effort method which relies on the spec's signature, if available, or falls back on the arguments themselves. """ sig = self._spec_signature if sig is not None: if len(_call) == 2: name = '' args, kwargs = _call else: name, args, kwargs = _call try: return name, sig.bind(*args, **kwargs) except TypeError as e: e.__traceback__ = None return e else: return _call
Example #17
Source File: mock.py From ImageFusion with MIT License | 6 votes |
def _call_matcher(self, _call): """ Given a call (or simply a (args, kwargs) tuple), return a comparison key suitable for matching with other calls. This is a best effort method which relies on the spec's signature, if available, or falls back on the arguments themselves. """ sig = self._spec_signature if sig is not None: if len(_call) == 2: name = '' args, kwargs = _call else: name, args, kwargs = _call try: return name, sig.bind(*args, **kwargs) except TypeError as e: e.__traceback__ = None return e else: return _call
Example #18
Source File: utils.py From Counterfactual-StoryRW with MIT License | 6 votes |
def get_args(fn): """Gets the arguments of a function. Args: fn (callable): The function to inspect. Returns: list: A list of argument names (str) of the function. """ argspec = _inspect_getargspec(fn) args = argspec.args # Empty args can be because `fn` is decorated. Use `funcsigs.signature` # to re-do the inspect if len(args) == 0: args = funcsigs.signature(fn).parameters.keys() args = list(args) return args
Example #19
Source File: utils.py From texar with Apache License 2.0 | 6 votes |
def get_args(fn): """Gets the arguments of a function. Args: fn (callable): The function to inspect. Returns: list: A list of argument names (str) of the function. """ argspec = _inspect_getargspec(fn) args = argspec.args # Empty args can be because `fn` is decorated. Use `funcsigs.signature` # to re-do the inspect if len(args) == 0: args = funcsigs.signature(fn).parameters.keys() args = list(args) return args
Example #20
Source File: utils.py From texar-pytorch with Apache License 2.0 | 6 votes |
def get_args(fn: Callable) -> List[str]: r"""Gets the arguments of a function. Args: fn (callable): The function to inspect. Returns: list: A list of argument names (``str``) of the function. """ argspec = inspect.getfullargspec(fn) args = argspec.args # Empty args can be because `fn` is decorated. Use `funcsigs.signature` # to re-do the inspect if len(args) == 0: args = funcsigs.signature(fn).parameters.keys() args = list(args) return args
Example #21
Source File: mock.py From Tautulli with GNU General Public License v3.0 | 5 votes |
def _mock_check_sig(self, *args, **kwargs): # stub method that can be replaced with one with a specific signature pass
Example #22
Source File: util_inspect.py From netharn with Apache License 2.0 | 5 votes |
def default_kwargs(cls): """ Grab initkw defaults from the constructor Args: cls (type | callable): a class or function Example: >>> from netharn.util.util_inspect import * # NOQA >>> import netharn as nh >>> import torch >>> import ubelt as ub >>> cls = torch.optim.Adam >>> default_kwargs(cls) >>> cls = nh.initializers.KaimingNormal >>> print(ub.repr2(default_kwargs(cls), nl=0)) {'mode': 'fan_in', 'param': 0} >>> cls = nh.initializers.NoOp >>> default_kwargs(cls) {} SeeAlso: xinspect.get_func_kwargs(cls) """ if six.PY2: if cls.__init__ is object.__init__: # hack for python2 classes without __init__ return {} else: import funcsigs sig = funcsigs.signature(cls) else: import inspect sig = inspect.signature(cls) default_kwargs = { k: p.default for k, p in sig.parameters.items() if p.default is not p.empty } return default_kwargs
Example #23
Source File: mock.py From odoo13-x64 with GNU General Public License v3.0 | 5 votes |
def _mock_check_sig(self, *args, **kwargs): # stub method that can be replaced with one with a specific signature pass
Example #24
Source File: mock.py From odoo12-x64 with GNU General Public License v3.0 | 5 votes |
def _get_signature_object(func, as_instance, eat_self): """ Given an arbitrary, possibly callable object, try to create a suitable signature object. Return a (reduced func, signature) tuple, or None. """ if isinstance(func, ClassTypes) and not as_instance: # If it's a type and should be modelled as a type, use __init__. try: func = func.__init__ except AttributeError: return None # Skip the `self` argument in __init__ eat_self = True elif not isinstance(func, FunctionTypes): # If we really want to model an instance of the passed type, # __call__ should be looked up, not __init__. try: func = func.__call__ except AttributeError: return None if eat_self: sig_func = partial(func, None) else: sig_func = func try: return func, inspectsignature(sig_func) except ValueError: # Certain callable types are not supported by inspect.signature() return None
Example #25
Source File: mock.py From odoo13-x64 with GNU General Public License v3.0 | 5 votes |
def _set_signature(mock, original, instance=False): # creates a function with signature (*args, **kwargs) that delegates to a # mock. It still does signature checking by calling a lambda with the same # signature as the original. if not _callable(original): return skipfirst = isinstance(original, ClassTypes) result = _get_signature_object(original, instance, skipfirst) if result is None: return func, sig = result def checksig(*args, **kwargs): sig.bind(*args, **kwargs) _copy_func_details(func, checksig) name = original.__name__ if not _isidentifier(name): name = 'funcopy' context = {'_checksig_': checksig, 'mock': mock} src = """def %s(*args, **kwargs): _checksig_(*args, **kwargs) return mock(*args, **kwargs)""" % name six.exec_(src, context) funcopy = context[name] _setup_func(funcopy, mock) return funcopy
Example #26
Source File: mock.py From odoo13-x64 with GNU General Public License v3.0 | 5 votes |
def _get_signature_object(func, as_instance, eat_self): """ Given an arbitrary, possibly callable object, try to create a suitable signature object. Return a (reduced func, signature) tuple, or None. """ if isinstance(func, ClassTypes) and not as_instance: # If it's a type and should be modelled as a type, use __init__. try: func = func.__init__ except AttributeError: return None # Skip the `self` argument in __init__ eat_self = True elif not isinstance(func, FunctionTypes): # If we really want to model an instance of the passed type, # __call__ should be looked up, not __init__. try: func = func.__call__ except AttributeError: return None if eat_self: sig_func = partial(func, None) else: sig_func = func try: return func, inspectsignature(sig_func) except ValueError: # Certain callable types are not supported by inspect.signature() return None
Example #27
Source File: mock.py From odoo12-x64 with GNU General Public License v3.0 | 5 votes |
def _set_signature(mock, original, instance=False): # creates a function with signature (*args, **kwargs) that delegates to a # mock. It still does signature checking by calling a lambda with the same # signature as the original. if not _callable(original): return skipfirst = isinstance(original, ClassTypes) result = _get_signature_object(original, instance, skipfirst) if result is None: return func, sig = result def checksig(*args, **kwargs): sig.bind(*args, **kwargs) _copy_func_details(func, checksig) name = original.__name__ if not _isidentifier(name): name = 'funcopy' context = {'_checksig_': checksig, 'mock': mock} src = """def %s(*args, **kwargs): _checksig_(*args, **kwargs) return mock(*args, **kwargs)""" % name six.exec_(src, context) funcopy = context[name] _setup_func(funcopy, mock) return funcopy
Example #28
Source File: mock.py From odoo12-x64 with GNU General Public License v3.0 | 5 votes |
def _mock_check_sig(self, *args, **kwargs): # stub method that can be replaced with one with a specific signature pass
Example #29
Source File: mock.py From odoo12-x64 with GNU General Public License v3.0 | 5 votes |
def __call__(_mock_self, *args, **kwargs): # can't use self in-case a function / method we are mocking uses self # in the signature _mock_self._mock_check_sig(*args, **kwargs) return _mock_self._mock_call(*args, **kwargs)
Example #30
Source File: mock.py From keras-lambda with MIT License | 5 votes |
def __call__(_mock_self, *args, **kwargs): # can't use self in-case a function / method we are mocking uses self # in the signature _mock_self._mock_check_sig(*args, **kwargs) return _mock_self._mock_call(*args, **kwargs)