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)