X-Git-Url: https://plomlompom.com/repos/foo.html?a=blobdiff_plain;ds=inline;f=plomtask%2Fversioned_attributes.py;h=cc42bbc40f761c35715f11b0ca4f61ba67dbe579;hb=84ff28d055b785e5f205f942c68ece72136e5af1;hp=d3c364942e3d76edf0eb9618df8366866c603709;hpb=1a9178b2b7bb66e77f3df01a0c7b2812839637ba;p=plomtask diff --git a/plomtask/versioned_attributes.py b/plomtask/versioned_attributes.py index d3c3649..cc42bbc 100644 --- a/plomtask/versioned_attributes.py +++ b/plomtask/versioned_attributes.py @@ -19,6 +19,18 @@ class VersionedAttribute: self.default = default self.history: dict[str, str | float] = {} + def __hash__(self) -> int: + history_tuples = tuple((k, v) for k, v in self.history.items()) + hashable = (self.parent.id_, self.table_name, self.default, + history_tuples) + return hash(hashable) + + @property + def as_dict(self) -> dict[str, object]: + """Return self as (json.dumps-coompatible) dict.""" + d = {'parent_id': self.parent.id_, 'history': self.history} + return d + @property def _newest_timestamp(self) -> str: """Return most recent timestamp."""