feat: support passing watchfiles.BaseFilter instance
I think the user should be able to create their own reload filter and pass it this way. The current way of customizing reload filters is very limited, while this way removes all limitations.
import watchfiles
from granian import Granian
reload_filter_instance = watchfiles.PythonFilter(extra_extensions=(".html",))
# Let's call it reload_filter_instance to avoid making breaking changes
Granian(..., reload_filter_instance=reload_filter_instance).serve()
I am willing to submit a PR if you approve this change.
For CLI users, we can add the ability to pass the path to the instance by --reload-filter-instance some_package.some_module:my_reload_filter.
Sounds good to me in regards of the Python interface, but for the CLI maybe an alternative approach could be to add the --reload-only-* counterparts of the existing --reload-ignore-* params?
At that point the usage would be smth like --reload-only-patterns *.py --reload-only-patterns *.html..
WDYT @monosans?
Closing as stale