Rewrite list scheduler and related schedulers
I think the following pattern makes more sense (modulo spelling/details)
class ListScheduler(Scheduler, ABC):
def __init__(
self,
max_resources: Optional[dict[TypeName, int]] = None,
max_concurrent_reads: Optional[int] = None,
max_concurrent_writes: Optional[int] = None,
input_times: Optional[dict["GraphID", int]] = None,
output_delta_times: Optional[dict["GraphID", int]] = None,
cyclic: Optional[bool] = False,
sort_order = tuple(tuple(int, int), ...) # Or whatever the type is
) -> None:
class EarliestDeadlineScheduler(Scheduler, ABC):
def __init__(
self,
max_resources: Optional[dict[TypeName, int]] = None,
max_concurrent_reads: Optional[int] = None,
max_concurrent_writes: Optional[int] = None,
input_times: Optional[dict["GraphID", int]] = None,
output_delta_times: Optional[dict["GraphID", int]] = None,
cyclic: Optional[bool] = False,
) -> None:
super().__init__(max_resources=max_resources, ..., sort_order=((1, None)))
In that way a user can easily specify their own sort order if wanted.