@@ -118,14 +118,14 @@ class DirtySprite(Sprite, _SupportsDirtySprite):
118
118
def _set_visible (self , val : int ) -> None : ...
119
119
def _get_visible (self ) -> int : ...
120
120
121
- # typevar bound to Sprite, _SupportsSprite Protocol ensures sprite
121
+ # covariant typevar bound to Sprite, _SupportsSprite Protocol ensures sprite
122
122
# subclass passed to group has image and rect attributes
123
- _TSprite = TypeVar ("_TSprite" , bound = _SupportsSprite )
123
+ # covariant is required for _Group to work with any AbstractGroup
124
+ # otherwise Sprite.add/remove do not accept AbstractGroup as arguments
124
125
_TSprite_co = TypeVar ("_TSprite_co" , bound = _SupportsSprite , covariant = True )
125
- _TSprite2 = TypeVar ("_TSprite2" , bound = _SupportsSprite )
126
-
127
- # almost the same as _TSprite but bound to DirtySprite
128
- _TDirtySprite_co = TypeVar ("_TDirtySprite_co" , bound = _SupportsDirtySprite , covariant = True )
126
+ _TDirtySprite_co = TypeVar (
127
+ "_TDirtySprite_co" , bound = _SupportsDirtySprite , covariant = True
128
+ )
129
129
130
130
# typevar for sprite or iterable of sprites, used in Group init, add and remove
131
131
_SpriteOrIterable = Union [_TSprite_co , Iterable [_SpriteOrIterable [_TSprite_co ]]]
@@ -210,9 +210,9 @@ class LayeredDirty(LayeredUpdates[_TDirtySprite_co]):
210
210
)
211
211
def set_timing_treshold (self , time_ms : SupportsFloat ) -> None : ...
212
212
213
- class GroupSingle (AbstractGroup [_TSprite ]):
214
- sprite : _TSprite
215
- def __init__ (self , sprite : Optional [_TSprite ] = None ) -> None : ...
213
+ class GroupSingle (AbstractGroup [_TSprite_co ]):
214
+ sprite : _TSprite_co
215
+ def __init__ (self , sprite : Optional [_TSprite_co ] = None ) -> None : ...
216
216
217
217
# argument to collide_rect must have rect attribute
218
218
def collide_rect (left : _HasRect , right : _HasRect ) -> bool : ...
@@ -244,7 +244,9 @@ def collide_mask(
244
244
left : _SupportsCollideMask , right : _SupportsCollideMask
245
245
) -> Optional [tuple [int , int ]]: ...
246
246
247
- # generic for _HasRect, used in sprite collide functions
247
+ # typevars for sprite collide functions
248
+ _TSprite = TypeVar ("_TSprite" , bound = _SupportsSprite )
249
+ _TSprite2 = TypeVar ("_TSprite2" , bound = _SupportsSprite )
248
250
_THasRect = TypeVar ("_THasRect" , bound = _HasRect )
249
251
250
252
def spritecollide (
0 commit comments