def _param_resolve(self, param): # Resolves to canonical parameters, including default case. if param is None: assert self._allow_default assert len(self.param_list) > 0 param = self.param_list[0] elif not isinstance(param, tuple): if not isinstance(param, list): # Assume scalar. param = (param, ) else: param = tuple(param) return get_param_canonical(param)
def add_instantiation(self, param, instantiation): """Adds a unique instantiation. """ assert instantiation is not None # Ensure that we do not already have this tuple. param = get_param_canonical(self._param_resolve(param)) if param in self._instantiation_map: raise RuntimeError( "Parameter instantiation already registered: {}".format(param)) # Register it. self.param_list.append(param) self._instantiation_map[param] = instantiation self._on_add(param, instantiation) return param
def _param_resolve(self, param): # Resolves to canonical parameters, including default case. if param is None: assert self._allow_default assert len(self.param_list) > 0 param = self.param_list[0] elif not isinstance(param, tuple): if not isinstance(param, list): # Assume scalar. param = (param,) else: param = tuple(param) return get_param_canonical(param)
def add_instantiation(self, param, instantiation): """Adds a unique instantiation. @pre `param` must not have already been added. """ # Ensure that we do not already have this tuple. param = get_param_canonical(self._param_resolve(param)) if param in self._instantiation_map: raise RuntimeError( "Parameter instantiation already registered: {}".format(param)) # Register it. self.param_list.append(param) self._add_instantiation_internal(param, instantiation) return param
def _check_alias(self, canonical, alias): actual = get_param_canonical([alias])[0] self.assertTrue(actual is canonical)