Problem:
Currently fastcore’s [sort_by_run](https://github.com/fastai/fastcore/blob/4d5efa5c96f3f036e3ce54da8e5bdcc9e3c9855f/nbs/03_xtras.ipynb)
only supports towards_end
,run_before
, and run_after
. This has allows callbacks to be ordered, but requires the developer to always implement the correct run_before
or run_after
.
Suggestion:
Add a numerical order
concept similar to transforms, lower order goes first, higher order goes last. Default non-implmented order could be 15. towards_end
could be 50, run_before
and run_after
could be target.order ±1. Exact implementation details left up to contributor.
Considerations:
- Maybe this order logic could be shared between callbacks and transforms?
- There is no
towards_begin
, maybe set this to a low number
Example where this would be useful: https://github.com/fastai/fastai/pull/2944
Instead of every callback needing to specify run_before
, they could specify a very lower order. Numerical order allows for fine-tuned control.