If you're trying to be fully correct about this, your best bet is probably to slice the modulestore api into the Read and Write components. XML would implement only the Read portion, and mongo and split would implement both.

I'm not sure what you mean about 'applying the decorator counts as overriding the method'. From the rest of your comment, it seems like the issue is more that not all classes provide an implementation of `delete_item`, and if it's marked with `@abstractmethod` then any subclass that doesn't override it also has to be abstract.