ordered-set
ordered-set copied to clipboard
Make T covariant
The containers from typing are covariant in their args. It'd make sense to make OrderedSet covariant too.
from ordered_set import OrderedSet
class A:
pass
class B(A):
pass
def my_fun(things: OrderedSet[A]) -> None:
pass
things1 = OrderedSet([A()])
things2 = OrderedSet([B()])
my_fun(things1) # ok
my_fun(things2) # Argument 1 to "my_fun" has incompatible type "OrderedSet[B]"; expected "OrderedSet[A]" [arg-type]
# Workaround:
from typing import cast
my_fun(cast(OrderedSet[A], things2))