tinkoff-ai / etna

ETNA – Time-Series Library

Home Page:https://etna.tinkoff.ru

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

[BUG] Method `to_dict` doesn't capture parameters of classes from external libraries

Mr-Geekman opened this issue Β· comments

πŸ› 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

  • Bug appears at the latest library version