diff --git a/declearn/dataset/_split_data.py b/declearn/dataset/_split_data.py index 1729c2ddea23edb0719a9181c0d2e66d94cab5e6..aa4829f75be405f3ba68a355f0b285932b01eda0 100644 --- a/declearn/dataset/_split_data.py +++ b/declearn/dataset/_split_data.py @@ -130,6 +130,8 @@ def _extract_column_by_index( csc = inputs.tocsc() # sparse matrix with efficient column slicing idx = [i for i in range(inputs.shape[1]) if i != target] inputs = type(inputs)(csc[:, idx]) + else: # pragma: no cover + raise TypeError("Invalid type for 'inputs'.") return inputs, labels diff --git a/declearn/model/sklearn/_sgd.py b/declearn/model/sklearn/_sgd.py index 17263da5a57ced83ff95517307ddf0dfda23bfbb..c0c8aba02b159c9f45365e024696c815e998f67a 100644 --- a/declearn/model/sklearn/_sgd.py +++ b/declearn/model/sklearn/_sgd.py @@ -302,6 +302,12 @@ class SklearnSGDModel(Model): if loss not in REG_LOSSES: raise ValueError(f"Invalid loss '{loss}' for SGDRegressor.") sk_cls = SGDRegressor + # Invalid input case. + else: # pragma: no cover + raise ValueError( + "Invalid value for SklearnSGDModel 'kind': must be one of " + f"{'classifier', 'regressor'}, received '{kind}'." + ) # Instantiate the sklearn model, wrap it up and return. model = sk_cls( loss=loss, diff --git a/declearn/optimizer/_base.py b/declearn/optimizer/_base.py index 4894e1e43f118fd2b2156cd8c9f9171f460f36a1..1b637693678c73ec3ca3f4f683865c083f02aaee 100644 --- a/declearn/optimizer/_base.py +++ b/declearn/optimizer/_base.py @@ -295,6 +295,7 @@ class Optimizer: weights = model.get_weights(trainable=True) # Run input gradients and weights through plug-in regularizers. if self.regularizers: + # false-positive; pylint: disable=possibly-used-before-assignment for regularizer in self.regularizers: gradients = regularizer.run(gradients, weights) # Run input gradients through plug-in modules. diff --git a/test/model/test_haiku_model.py b/test/model/test_haiku_model.py index 7e31f04854c36508a9619dd59c62295981bc1c0b..8d0d9aec63a7ee04d86b4b0dc51f2be90bc3e000 100644 --- a/test/model/test_haiku_model.py +++ b/test/model/test_haiku_model.py @@ -144,6 +144,8 @@ class HaikuTestCase(ModelTestCase): inputs = rng.choice(100, size=(2, 32, 128)) elif self.kind == "CNN": inputs = rng.normal(size=(2, 32, 64, 64, 3)).astype("float32") + else: + raise ValueError("Invalid model 'kind'.") labels = rng.choice(2, size=(2, 32)) # Convert that data to jax-numpy and return it. with warnings.catch_warnings(): # jax.jit(device=...) is deprecated @@ -164,6 +166,8 @@ class HaikuTestCase(ModelTestCase): elif self.kind == "RNN": shape = [128] model_fn = rnn_fn + else: + raise ValueError("Invalid model 'kind'.") model = HaikuModel(model_fn, loss_fn) model.initialize( { diff --git a/test/model/test_tflow_model.py b/test/model/test_tflow_model.py index 65805b5fdde68ef61ecb46d2c31c18005b101086..d9d4589635865b5b243f579e8c303b9092a0a692 100644 --- a/test/model/test_tflow_model.py +++ b/test/model/test_tflow_model.py @@ -97,6 +97,8 @@ class TensorflowTestCase(ModelTestCase): inputs = rng.uniform((2, 32, 128), 0, 100, tf.int32) elif self.kind == "CNN": inputs = rng.normal((2, 32, 64, 64, 3)) + else: + raise ValueError("Invalid model 'kind'.") labels = rng.uniform((2, 32), 0, 2, tf.int32) dataset = tf.data.Dataset.from_tensor_slices((inputs, labels, None)) return list(iter(dataset)) @@ -133,6 +135,8 @@ class TensorflowTestCase(ModelTestCase): tf_keras.layers.Dense(1, activation="sigmoid"), ] shape = [None, 64, 64, 3] + else: + raise ValueError("Invalid model 'kind'.") tfmod = tf_keras.Sequential(stack) tfmod.build(shape) # as model is built, no data_info is required return TensorflowModel(tfmod, loss="binary_crossentropy", metrics=None) diff --git a/test/model/test_torch_model.py b/test/model/test_torch_model.py index 725e81c863da0614319620c110f0b2684120e361..e442e07567433f5361443b33f0739acd2e94778f 100644 --- a/test/model/test_torch_model.py +++ b/test/model/test_torch_model.py @@ -127,6 +127,8 @@ class TorchTestCase(ModelTestCase): inputs = torch.randint(0, 100, (2, 32, 128), generator=rng) elif self.kind == "CNN": inputs = torch.randn((2, 32, 3, 64, 64), generator=rng) + else: + raise ValueError("Invalid model 'kind'.") labels = torch.randint(0, 2, (2, 32, 1), generator=rng) labels = labels.type(torch.float) dataset = torch.utils.data.TensorDataset(inputs, labels)