objects that take list should use a covariant type like Sequence instead
if i pass a list of jobs to the needs argument in Job's constructor, i get the following error from my type checker (pyright):
def get_jobs() -> list[Job]: ...
jobs: list[Job] = get_jobs()
job = Job(needs=jobs, script="asdf") # error
Argument of type "list[Job]" cannot be assigned to parameter "needs" of type "List[Need | Job | Sequence] | None" in function "__init__"
Type "list[Job]" is not assignable to type "List[Need | Job | Sequence] | None"
"list[Job]" is not assignable to "List[Need | Job | Sequence]"
Type parameter "_T@list" is invariant, but "Job" is not the same as "Need | Job | Sequence"
Consider switching from "list" to "Sequence" which is covariant
"list[Job]" is not assignable to "None"
if needs was a typing.Sequence instead of a List, this error would go away. it should use Sequence instead because the class does not mutate the list