def test__load_primitive_value_error(load_mock, gpp_mock): load_mock.return_value = None gpp_mock.return_value = ['a', 'b'] with pytest.raises(ValueError): discovery.load_primitive('invalid.primitive') load_mock.assert_called_once_with('invalid.primitive', ['a', 'b'])
def __init__(self, name, **kwargs): self.name = name metadata = load_primitive(name) self.primitive = import_object(metadata['primitive']) self._fit = metadata.get('fit', dict()) self.fit_args = self._fit.get('args', []) self.fit_method = self._fit.get('method') self._produce = metadata['produce'] self.produce_args = self._produce['args'] self.produce_output = self._produce['output'] self.produce_method = self._produce.get('method') self._class = bool(self.produce_method) hyperparameters = metadata.get('hyperparameters', dict()) init_params, fit_params, produce_params = self._extract_params( kwargs, hyperparameters) self._hyperparameters = init_params self._fit_params = fit_params self._produce_params = produce_params self._tunable = self._get_tunable(hyperparameters, init_params) default = { name: param['default'] for name, param in self._tunable.items() # TODO: support undefined defaults } self.set_hyperparameters(default)
def test__load_primitive_success(load_mock, gpp_mock): gpp_mock.return_value = ['a', 'b'] primitive = discovery.load_primitive('valid.primitive') load_mock.assert_called_once_with('valid.primitive', ['a', 'b']) assert primitive == load_mock.return_value
def _get_primitive_instance(primitive, kwargs): expected_args = load_primitive(primitive).get('hyperparameters', {}).get('fixed', {}) given_args = { key: value for key, value in kwargs.items() if key in expected_args } return MLBlock(primitive, **given_args)