示例#1
0
文件: utils.py 项目: yasyaindra/trax
def _np_signature(f):
  """An enhanced funcsigs.signature that can handle numpy.ufunc."""
  if not isinstance(f, np.ufunc):
    return funcsigs.signature(f)
  def names_from_num(prefix, n):
    if n <= 0:
      return []
    elif n == 1:
      return [prefix]
    else:
      return [prefix + str(i + 1) for i in range(n)]
  input_names = names_from_num('x', f.nin)
  output_names = names_from_num('out', f.nout)
  keyword_only_params = [
      ('where', True),
      ('casting', 'same_kind'),
      ('order', 'K'),
      ('dtype', None),
      ('subok', True),
      ('signature', None),
      ('extobj', None)]
  params = []
  params += [Parameter(name, Parameter.POSITIONAL_ONLY) for name in input_names]
  if f.nout > 1:
    params += [Parameter(name, Parameter.POSITIONAL_ONLY, default=None)
               for name in output_names]
  params += [Parameter('out', Parameter.POSITIONAL_OR_KEYWORD,
                       default=None if f.nout == 1 else (None,) * f.nout)]
  params += [Parameter(name, Parameter.KEYWORD_ONLY, default=default)
             for name, default in keyword_only_params]
  return funcsigs.Signature(params)
示例#2
0
def _restore_parameters(ray_parameters):
    """Reconstructs the funcsigs.Parameter objects."""
    return [
        Parameter(rayparam.name,
                  _convert_to_parameter_kind(rayparam.kind_int),
                  default=rayparam.default,
                  annotation=rayparam.annotation,
                  _partial_kwarg=rayparam.partial_kwarg)
        for rayparam in ray_parameters
    ]
示例#3
0
    def __init__(self, singular_cost_functions):
        self._cost_function_handle = MultiCostFunction.cost_sum
        self._cost_function_argcount = len(singular_cost_functions)
        self._cost_function_signature = Signature(parameters=[
            Parameter(name='cost%s' % _i, kind=Parameter.POSITIONAL_OR_KEYWORD)
            for _i in range(self._cost_function_argcount)
        ])
        self._assign_function_formatter()

        self._flags = {}
        self._ndf = None
        self._needs_errors = False
        for _singular_cost_function in singular_cost_functions:
            if _singular_cost_function.needs_errors:
                self._needs_errors = True
                break
示例#4
0
文件: model.py 项目: ralfulrich/kafe2
    def defaults(self, new_defaults):
        if self.parcount != len(
                new_defaults
        ):  # first arg is independent variable, but not a parameter
            raise ModelFunctionException(
                'Expected %s parameter defaults (1 per parameter), but received %s'
                % (self.parcount, len(new_defaults)))

        # pad defaults with empties for 'x'
        new_defaults = [Parameter.empty
                        ] * (self.argcount - self.parcount) + new_defaults

        # set new signature
        self._model_function_signature = Signature(parameters=[
            Parameter(
                name=_par.name,
                kind=_par.kind,
                default=_par_default,
            ) for _par, _par_default in zip(self.signature.parameters.values(),
                                            new_defaults)
        ])
示例#5
0
def make_signature(names):
    return Signature(
        Parameter(name, Parameter.POSITIONAL_OR_KEYWORD) for name in names)