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'])
Exemple #2
0
    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
Exemple #4
0
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)