@@ -48,7 +48,7 @@ class _HasRadiusAndRect(_HasRect, Protocol):
4848 radius : float
4949
5050# non-generic Group, used in Sprite
51- _Group = AbstractGroup [_SupportsSprite ]
51+ _Group = AbstractGroup [Any ]
5252
5353# protocol helps with structural subtyping for typevars in sprite group generics
5454# and allows the use of any class with the required attributes and methods
@@ -118,35 +118,32 @@ class DirtySprite(Sprite, _SupportsDirtySprite):
118118 def _set_visible (self , val : int ) -> None : ...
119119 def _get_visible (self ) -> int : ...
120120
121- # covariant typevar bound to Sprite, _SupportsSprite Protocol ensures sprite
121+ # typevar bound to Sprite, _SupportsSprite Protocol ensures sprite
122122# subclass passed to group has image and rect attributes
123- # covariant is required for _Group to work with any AbstractGroup
124- # otherwise Sprite.add/remove do not accept AbstractGroup as arguments
125- _TSprite_co = TypeVar ("_TSprite_co" , bound = _SupportsSprite , covariant = True )
126- _TDirtySprite_co = TypeVar (
127- "_TDirtySprite_co" , bound = _SupportsDirtySprite , covariant = True
128- )
123+ _TSprite = TypeVar ("_TSprite" , bound = _SupportsSprite )
124+ _TSprite2 = TypeVar ("_TSprite2" , bound = _SupportsSprite )
125+ _TDirtySprite = TypeVar ("_TDirtySprite" , bound = _SupportsDirtySprite )
129126
130127# typevar for sprite or iterable of sprites, used in Group init, add and remove
131- _SpriteOrIterable = Union [_TSprite_co , Iterable [_SpriteOrIterable [_TSprite_co ]]]
128+ _SpriteOrIterable = Union [_TSprite , Iterable [_SpriteOrIterable [_TSprite ]]]
132129
133- class AbstractGroup (Generic [_TSprite_co ]):
134- spritedict : dict [_TSprite_co , Optional [Union [FRect , Rect ]]]
130+ class AbstractGroup (Generic [_TSprite ]):
131+ spritedict : dict [_TSprite , Optional [Union [FRect , Rect ]]]
135132 lostsprites : list [Union [FRect , Rect ]]
136133 def __class_getitem__ (cls , item : Any , / ) -> types .GenericAlias : ...
137134 def __init__ (self ) -> None : ...
138135 def __len__ (self ) -> int : ...
139- def __iter__ (self ) -> Iterator [_TSprite_co ]: ...
136+ def __iter__ (self ) -> Iterator [_TSprite ]: ...
140137 def __bool__ (self ) -> bool : ...
141138 def __contains__ (self , item : Any ) -> bool : ...
142- def add_internal (self , sprite : _SupportsSprite , layer : None = None ) -> None : ...
143- def remove_internal (self , sprite : _SupportsSprite ) -> None : ...
144- def has_internal (self , sprite : _SupportsSprite ) -> bool : ...
139+ def add_internal (self , sprite : _TSprite , layer : None = None ) -> None : ...
140+ def remove_internal (self , sprite : _TSprite ) -> None : ...
141+ def has_internal (self , sprite : _TSprite ) -> bool : ...
145142 def copy (self ) -> Self : ...
146- def sprites (self ) -> list [_TSprite_co ]: ...
147- def add (self , * sprites : _SpriteOrIterable [_TSprite_co ]) -> None : ...
148- def remove (self , * sprites : _SpriteOrIterable [_TSprite_co ]) -> None : ...
149- def has (self , * sprites : _SpriteOrIterable [_TSprite_co ]) -> bool : ...
143+ def sprites (self ) -> list [_TSprite ]: ...
144+ def add (self , * sprites : _SpriteOrIterable [_TSprite ]) -> None : ...
145+ def remove (self , * sprites : _SpriteOrIterable [_TSprite ]) -> None : ...
146+ def has (self , * sprites : _SpriteOrIterable [_TSprite ]) -> bool : ...
150147 def update (self , * args : Any , ** kwargs : Any ) -> None : ...
151148 def draw (
152149 self , surface : Surface , bgd : Optional [Surface ] = None , special_flags : int = 0
@@ -158,41 +155,41 @@ class AbstractGroup(Generic[_TSprite_co]):
158155 ) -> None : ...
159156 def empty (self ) -> None : ...
160157
161- class Group (AbstractGroup [_TSprite_co ]):
162- def __init__ (self , * sprites : _SpriteOrIterable [_TSprite_co ]) -> None : ...
158+ class Group (AbstractGroup [_TSprite ]):
159+ def __init__ (self , * sprites : _SpriteOrIterable [_TSprite ]) -> None : ...
163160
164161# these are aliased in the code too
165162@deprecated ("Use `pygame.sprite.Group` instead" )
166- class RenderPlain (Group [_TSprite_co ]): ...
163+ class RenderPlain (Group [_TSprite ]): ...
167164
168165@deprecated ("Use `pygame.sprite.Group` instead" )
169- class RenderClear (Group [_TSprite_co ]): ...
166+ class RenderClear (Group [_TSprite ]): ...
170167
171- class RenderUpdates (Group [_TSprite_co ]): ...
168+ class RenderUpdates (Group [_TSprite ]): ...
172169
173170@deprecated ("Use `pygame.sprite.RenderUpdates` instead" )
174- class OrderedUpdates (RenderUpdates [_TSprite_co ]): ...
171+ class OrderedUpdates (RenderUpdates [_TSprite ]): ...
175172
176- class LayeredUpdates (AbstractGroup [_TSprite_co ]):
173+ class LayeredUpdates (AbstractGroup [_TSprite ]):
177174 def __init__ (
178- self , * sprites : _SpriteOrIterable [_TSprite_co ], ** kwargs : Any
175+ self , * sprites : _SpriteOrIterable [_TSprite ], ** kwargs : Any
179176 ) -> None : ...
180- def add (self , * sprites : _SpriteOrIterable [_TSprite_co ], ** kwargs : Any ) -> None : ...
181- def get_sprites_at (self , pos : Point ) -> list [_TSprite_co ]: ...
182- def get_sprite (self , idx : int ) -> _TSprite_co : ...
183- def remove_sprites_of_layer (self , layer_nr : int ) -> list [_TSprite_co ]: ...
177+ def add (self , * sprites : _SpriteOrIterable [_TSprite ], ** kwargs : Any ) -> None : ...
178+ def get_sprites_at (self , pos : Point ) -> list [_TSprite ]: ...
179+ def get_sprite (self , idx : int ) -> _TSprite : ...
180+ def remove_sprites_of_layer (self , layer_nr : int ) -> list [_TSprite ]: ...
184181 def layers (self ) -> list [int ]: ...
185- def change_layer (self , sprite : _SupportsSprite , new_layer : int ) -> None : ...
186- def get_layer_of_sprite (self , sprite : _SupportsSprite ) -> int : ...
182+ def change_layer (self , sprite : _TSprite , new_layer : int ) -> None : ...
183+ def get_layer_of_sprite (self , sprite : _TSprite ) -> int : ...
187184 def get_top_layer (self ) -> int : ...
188185 def get_bottom_layer (self ) -> int : ...
189- def move_to_front (self , sprite : _SupportsSprite ) -> None : ...
190- def move_to_back (self , sprite : _SupportsSprite ) -> None : ...
191- def get_top_sprite (self ) -> _TSprite_co : ...
192- def get_sprites_from_layer (self , layer : int ) -> list [_TSprite_co ]: ...
186+ def move_to_front (self , sprite : _TSprite ) -> None : ...
187+ def move_to_back (self , sprite : _TSprite ) -> None : ...
188+ def get_top_sprite (self ) -> _TSprite : ...
189+ def get_sprites_from_layer (self , layer : int ) -> list [_TSprite ]: ...
193190 def switch_layer (self , layer1_nr : int , layer2_nr : int ) -> None : ...
194191
195- class LayeredDirty (LayeredUpdates [_TDirtySprite_co ]):
192+ class LayeredDirty (LayeredUpdates [_TDirtySprite ]):
196193 def draw (
197194 self ,
198195 surface : Surface ,
@@ -210,9 +207,9 @@ class LayeredDirty(LayeredUpdates[_TDirtySprite_co]):
210207 )
211208 def set_timing_treshold (self , time_ms : SupportsFloat ) -> None : ...
212209
213- class GroupSingle (AbstractGroup [_TSprite_co ]):
214- sprite : _TSprite_co
215- def __init__ (self , sprite : Optional [_TSprite_co ] = None ) -> None : ...
210+ class GroupSingle (AbstractGroup [_TSprite ]):
211+ sprite : _TSprite
212+ def __init__ (self , sprite : Optional [_TSprite ] = None ) -> None : ...
216213
217214# argument to collide_rect must have rect attribute
218215def collide_rect (left : _HasRect , right : _HasRect ) -> bool : ...
@@ -244,9 +241,7 @@ def collide_mask(
244241 left : _SupportsCollideMask , right : _SupportsCollideMask
245242) -> Optional [tuple [int , int ]]: ...
246243
247- # typevars for sprite collide functions
248- _TSprite = TypeVar ("_TSprite" , bound = _SupportsSprite )
249- _TSprite2 = TypeVar ("_TSprite2" , bound = _SupportsSprite )
244+ # _HasRect typevar for sprite collide functions
250245_THasRect = TypeVar ("_THasRect" , bound = _HasRect )
251246
252247def spritecollide (
0 commit comments