@@ -519,7 +519,7 @@ class TraitType(BaseDescriptor, t.Generic[G, S]):
519519 default_value : t .Any = Undefined
520520
521521 def __init__ (
522- self : TraitType [ G , S ] ,
522+ self ,
523523 default_value : t .Any = Undefined ,
524524 allow_none : bool = False ,
525525 read_only : bool | None = None ,
@@ -3580,7 +3580,7 @@ def item_from_string(self, s: str, index: int | None = None) -> T | str:
35803580 return s
35813581
35823582
3583- class List (Container [t .List [T ]]):
3583+ class List (Container [t .List [T ]], t . Generic [ T ] ):
35843584 """An instance of a Python list."""
35853585
35863586 klass = list # type:ignore[assignment]
@@ -3645,7 +3645,7 @@ def set(self, obj: t.Any, value: t.Any) -> None:
36453645 return super ().set (obj , value )
36463646
36473647
3648- class Set (Container [t .Set [t . Any ] ]):
3648+ class Set (Container [t .Set [T ]], t . Generic [ T ]):
36493649 """An instance of a Python set."""
36503650
36513651 klass = set
@@ -3656,8 +3656,8 @@ class Set(Container[t.Set[t.Any]]):
36563656 # Redefine __init__ just to make the docstring more accurate.
36573657 def __init__ (
36583658 self ,
3659- trait : t .Any = None ,
3660- default_value : t .Any = Undefined ,
3659+ trait : TraitType [ T , t .Any ] | t . Iterable [ T ] | None = None ,
3660+ default_value : set [ T ] | t .Any = Undefined ,
36613661 minlen : int = 0 ,
36623662 maxlen : int = sys .maxsize ,
36633663 ** kwargs : t .Any ,
@@ -3720,13 +3720,13 @@ def default_value_repr(self) -> str:
37203720 return "{" + list_repr [1 :- 1 ] + "}"
37213721
37223722
3723- class Tuple (Container [t .Tuple [t . Any , ...] ]):
3723+ class Tuple (Container [t .Tuple [T ]], t . Generic [ T ]):
37243724 """An instance of a Python tuple."""
37253725
37263726 klass = tuple
37273727 _cast_types = (list ,)
37283728
3729- def __init__ (self , * traits : t . Any , ** kwargs : t .Any ) -> None :
3729+ def __init__ (self , * traits : T , ** kwargs : t .Any ) -> None :
37303730 """Create a tuple from a list, set, or tuple.
37313731
37323732 Create a fixed-type tuple with Traits:
@@ -3869,9 +3869,9 @@ class Dict(Instance["dict[K, V]"]):
38693869
38703870 def __init__ (
38713871 self ,
3872- value_trait : TraitType [t . Any , t .Any ] | dict [K , V ] | Sentinel | None = None ,
3872+ value_trait : TraitType [V , t .Any ] | dict [K , V ] | Sentinel | None = None ,
38733873 per_key_traits : t .Any = None ,
3874- key_trait : TraitType [t . Any , t .Any ] | None = None ,
3874+ key_trait : TraitType [K , t .Any ] | None = None ,
38753875 default_value : dict [K , V ] | Sentinel | None = Undefined ,
38763876 ** kwargs : t .Any ,
38773877 ) -> None :
@@ -4203,7 +4203,7 @@ def validate(self, obj: t.Any, value: t.Any) -> re.Pattern[t.Any] | None:
42034203 self .error (obj , value )
42044204
42054205
4206- class UseEnum (TraitType [t . Any , t . Any ]):
4206+ class UseEnum (TraitType [G , S ], t . Generic [ G , S ]):
42074207 """Use a Enum class as model for the data type description.
42084208 Note that if no default-value is provided, the first enum-value is used
42094209 as default-value.
@@ -4236,9 +4236,7 @@ class MyEntity(HasTraits):
42364236 default_value : enum .Enum | None = None
42374237 info_text = "Trait type adapter to a Enum class"
42384238
4239- def __init__ (
4240- self , enum_class : type [t .Any ], default_value : t .Any = None , ** kwargs : t .Any
4241- ) -> None :
4239+ def __init__ (self , enum_class : type [G ], default_value : t .Any = None , ** kwargs : t .Any ) -> None :
42424240 assert issubclass (enum_class , enum .Enum ), "REQUIRE: enum.Enum, but was: %r" % enum_class
42434241 allow_none = kwargs .get ("allow_none" , False )
42444242 if default_value is None and not allow_none :
0 commit comments