Personally I prefer that we require all filters to extend one our base class. This allows us later on to add possible new functionality while staying backwards compatible. Check how I check this [here](https://github.com/wlanslovenija/nodewatcher/blob/development/nodewatcher/core/frontend/components/pool.py) (wording and stuff).

You can then additionally check if they implemented the filter method (or the filter method could just raise NotImplemented exception).