def instantiate_target(tdesc, params, connect=None, extra_platform_params=None): # pylint: disable=too-many-locals,too-many-branches target_params = get_config_point_map(tdesc.target_params) platform_params = get_config_point_map(tdesc.platform_params) conn_params = get_config_point_map(tdesc.conn_params) assistant_params = get_config_point_map(tdesc.assistant_params) tp, pp, cp = {}, {}, {} for supported_params, new_params in (target_params, tp), (platform_params, pp), (conn_params, cp): for name, value in supported_params.items(): if value.default and name == value.name: new_params[name] = value.default for name, value in params.items(): if name in target_params: if not target_params[name].deprecated: tp[name] = value elif name in platform_params: if not platform_params[name].deprecated: pp[name] = value elif name in conn_params: if not conn_params[name].deprecated: cp[name] = value elif name in assistant_params: pass else: msg = 'Unexpected parameter for {}: {}' raise ValueError(msg.format(tdesc.name, name)) for pname, pval in (extra_platform_params or {}).items(): if pname in pp: raise RuntimeError('Platform parameter clash: {}'.format(pname)) pp[pname] = pval tp['platform'] = (tdesc.platform or Platform)(**pp) if cp: tp['connection_settings'] = cp if tdesc.connection: tp['conn_cls'] = tdesc.connection if connect is not None: tp['connect'] = connect return tdesc.target(**tp)
def instantiate_target(tdesc, params, connect=None, extra_platform_params=None): # pylint: disable=too-many-locals,too-many-branches target_params = get_config_point_map(tdesc.target_params) platform_params = get_config_point_map(tdesc.platform_params) conn_params = get_config_point_map(tdesc.conn_params) assistant_params = get_config_point_map(tdesc.assistant_params) tp, pp, cp = {}, {}, {} for supported_params, new_params in (target_params, tp), (platform_params, pp), (conn_params, cp): for name, value in supported_params.items(): if value.default and name == value.name: new_params[name] = value.default for name, value in params.items(): if name in target_params: tp[name] = value elif name in platform_params: pp[name] = value elif name in conn_params: cp[name] = value elif name in assistant_params: pass else: msg = 'Unexpected parameter for {}: {}' raise ValueError(msg.format(tdesc.name, name)) for pname, pval in (extra_platform_params or {}).items(): if pname in pp: raise RuntimeError('Platform parameter clash: {}'.format(pname)) pp[pname] = pval tp['platform'] = (tdesc.platform or Platform)(**pp) if cp: tp['connection_settings'] = cp if tdesc.connection: tp['conn_cls'] = tdesc.connection if connect is not None: tp['connect'] = connect return tdesc.target(**tp)
def _get_target_params(self, name): td = self.targets[name] return get_config_point_map( chain(td.target_params, td.platform_params, td.conn_params, td.assistant_params))
def get_plugin_parameters(self, name): if name in self.targets: return self._get_target_params(name) params = self.loader.get_plugin_class(name).parameters return get_config_point_map(params)
def _get_target_params(self, name): td = self.targets[name] return get_config_point_map(chain(td.target_params, td.platform_params, td.conn_params, td.assistant_params))
def get_plugin_parameters(self, name): if name in self.targets: return self._get_target_params(name) params = self.loader.get_plugin_class(name).parameters return get_config_point_map(params)