def __init__(self, **kwargs): self._spec = b.OpSpec(type(self).__name__) self._schema = b.GetSchema(type(self).__name__) # Get the device argument. We will need this to determine # the device that our outputs will be stored on if "device" in kwargs.keys(): self._device = kwargs["device"] del kwargs["device"] else: self._device = op_device self._spec.AddArg("device", self._device) if "preserve" in kwargs.keys(): self._preserve = kwargs["preserve"] else: self._preserve = False self._spec.AddArg("preserve", self._preserve) self._preserve = self._preserve or self._schema.IsNoPrune() # Store the specified arguments for key, value in kwargs.items(): if value is None: # None is not a valid value for any argument type, so treat it # as if the argument was not supplied at all continue dtype = self._schema.GetArgumentType(key) if isinstance(value, (list, tuple)): if len(value) == 0: self._spec.AddArgEmptyList(key, _vector_element_type(dtype)) continue converted_value = _type_convert_value(dtype, value) self._spec.AddArg(key, converted_value)
def __init__(self, **kwargs): schema_name = _schema_name(type(self)) self._spec = _b.OpSpec(schema_name) self._schema = _b.GetSchema(schema_name) # Get the device argument. We will need this to determine # the device that our outputs will be stored on if "device" in kwargs.keys(): self._device = kwargs["device"] del kwargs["device"] else: self._device = op_device self._spec.AddArg("device", self._device) if "preserve" in kwargs.keys(): self._preserve = kwargs["preserve"] else: self._preserve = False self._spec.AddArg("preserve", self._preserve) self._preserve = self._preserve or self._schema.IsNoPrune() # Check for any deprecated arguments that should be replaced or removed arg_names = list(kwargs.keys()) for arg_name in arg_names: if not self._schema.IsDeprecatedArg(arg_name): continue meta = self._schema.DeprecatedArgMeta(arg_name) new_name = meta['renamed_to'] removed = meta['removed'] msg = meta['msg'] if new_name: if new_name in kwargs: raise TypeError( "Operator {} got an unexpected '{}' deprecated argument when '{}' was already provided" .format(type(self).__name__, arg_name, new_name)) kwargs[new_name] = kwargs[arg_name] del kwargs[arg_name] elif removed: del kwargs[arg_name] with warnings.catch_warnings(): warnings.simplefilter("default") warnings.warn(msg, DeprecationWarning, stacklevel=2) # Store the specified arguments for key, value in kwargs.items(): if value is None: # None is not a valid value for any argument type, so treat it # as if the argument was not supplied at all continue dtype = self._schema.GetArgumentType(key) if isinstance(value, (list, tuple)): if len(value) == 0: self._spec.AddArgEmptyList(key, _vector_element_type(dtype)) continue converted_value = _type_convert_value(dtype, value) self._spec.AddArg(key, converted_value)
def _add_spec_args(schema, spec, kwargs): for key, value in kwargs.items(): if value is None: # None is not a valid value for any argument type, so treat it # as if the argument was not supplied at all continue dtype = schema.GetArgumentType(key) if isinstance(value, (list, tuple)): if len(value) == 0: spec.AddArgEmptyList(key, _vector_element_type(dtype)) continue converted_value = _type_convert_value(dtype, value) spec.AddArg(key, converted_value)