etna
etna copied to clipboard
[BUG] Method `to_dict` doesn't capture parameters of classes from external libraries
🐛 Bug Report
We want to distinguish between transforms
transform_1 = ChangePointsTrendTransform(
in_column="target",
change_points_model=RupturesChangePointsModel(
change_points_model=Binseg(model="ar"),
n_bkps=5,
),
)
transform_2 = ChangePointsTrendTransform(
in_column="target",
change_points_model=RupturesChangePointsModel(
change_points_model=Binseg(model="l1"),
n_bkps=5,
)
)
But currently they have the same to_dict
, because Binseg
isn't etna class.
We can have a similar problem with other external classes too, we should try to create a general solution for all such cases.
Expected behavior
We should learn how to handle external classes correctly.
How To Reproduce
from ruptures import Binseg
from etna.transforms.decomposition import RupturesChangePointsModel
from etna.transforms import ChangePointsTrendTransform
def main():
transform_1 = ChangePointsTrendTransform(
in_column="target",
change_points_model=RupturesChangePointsModel(
change_points_model=Binseg(model="ar"),
n_bkps=5,
),
)
transform_2 = ChangePointsTrendTransform(
in_column="target",
change_points_model=RupturesChangePointsModel(
change_points_model=Binseg(model="l1"),
n_bkps=5,
)
)
assert transform_1.to_dict() != transform_2.to_dict()
if __name__ == "__main__":
main()
Environment
No response
Additional context
No response
Checklist
- [X] Bug appears at the latest library version