def __get__(self, obj, cls):
        if obj is None:
            return self
        if self._getter(obj) in self._allowed:
            try:
                return obj.__dict__[self]
            except __HOLE__:
                raise AttributeError()
        raise WrongState(self, obj)
dataset/ETHPy150Open ClusterHQ/machinist/machinist/_fsm.py/stateful.__get__