Skip to content
Open
Show file tree
Hide file tree
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions skbase/base/_meta.py
Original file line number Diff line number Diff line change
Expand Up @@ -120,6 +120,7 @@ def set_params(self, **kwargs):
Instance of self.
"""
# Use tag interface that will be available when mixin is used
self.reset() # <- Add this line to align behavior with BaseObject
named_object_attr = self.get_tag("named_object_parameters") # type: ignore
return self._set_params(named_object_attr, **kwargs)

Expand Down
21 changes: 21 additions & 0 deletions skbase/tests/test_meta.py
Original file line number Diff line number Diff line change
Expand Up @@ -168,3 +168,24 @@ def test_metaestimator_composite(long_steps):

meta_est.set_params(bar__b="something else")
assert meta_est.get_params()["bar__b"] == "something else"


def test_basemetaobject_set_params_calls_reset():
"""Test that BaseMetaObject.set_params calls reset."""

class ResetCheckMetaObject(BaseMetaObject):
def __init__(self, a=1, steps=[]): # ✅ change None → []
self.a = a
self.steps = steps
self.was_reset = False
super().__init__()

def reset(self):
self.was_reset = True

obj = ResetCheckMetaObject()
obj.set_params(a=42)
assert obj.a == 42
assert (
obj.was_reset is True
), "`reset` should be called in set_params for BaseMetaObject"