refactor(modeltime): use dataclass, add type hints #2528
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This allows removing some boilerplate. Also:
astype
tsmult
value was int, not float__eq__
. Unfortunately we can't use the one fromdataclass
, lists play nice with==
but not numpy arrays, anddataclasses.field
doesn't let you override the comparator. However,attrs
does and we could makeModelTime
anattrs
class when we bring that dependency in, as planned for 4.x.A caveat. This sacrifices the ability to parse from string when setting
time_units
andstart_datetime
after initialization.dataclasses.field
doesn't support converters asattrs.field
does. Do we expect people to mutateModelTime
? It's easy enough to create a new one — it could even be a frozen dataclass. If we want it to stay mutable, I will just close this for now and reconsider whenattrs
is available. Or we could just bring inattrs
now. It is dependency free.