I wonder if the special status of "history" should be defined by a default value argument:
```
def is_compatible(self, other, ignore=('history',)):
```

It's just an idea - I'm not even sure I agree with it myself.