1111"""
1212
1313from collections .abc import Iterable
14+ from typing import TypeVar
1415from warnings import warn
1516
1617from arcade import Sprite , SpriteList
2021
2122__all__ = ["Scene" , "SceneKeyError" ]
2223
24+ _S = TypeVar ("_S" , bound = Sprite )
25+
2326
2427class SceneKeyError (KeyError ):
2528 """
@@ -151,7 +154,7 @@ def __getitem__(self, key: str) -> SpriteList:
151154
152155 raise SceneKeyError (key )
153156
154- def add_sprite (self , name : str , sprite : Sprite ) -> None :
157+ def add_sprite (self , name : str , sprite : _S ) -> _S :
155158 """
156159 Add a Sprite to the SpriteList with the specified name.
157160
@@ -177,12 +180,14 @@ def add_sprite(self, name: str, sprite: Sprite) -> None:
177180 new_list .append (sprite )
178181 self .add_sprite_list (name = name , sprite_list = new_list )
179182
183+ return sprite
184+
180185 def add_sprite_list (
181186 self ,
182187 name : str ,
183188 use_spatial_hash : bool = False ,
184189 sprite_list : SpriteList | None = None ,
185- ) -> None :
190+ ) -> SpriteList :
186191 """
187192 Add a SpriteList to the scene with the specified name.
188193
@@ -207,14 +212,15 @@ def add_sprite_list(
207212 )
208213 self ._name_mapping [name ] = sprite_list
209214 self ._sprite_lists .append (sprite_list )
215+ return sprite_list
210216
211217 def add_sprite_list_before (
212218 self ,
213219 name : str ,
214220 before : str ,
215221 use_spatial_hash : bool = False ,
216222 sprite_list : SpriteList | None = None ,
217- ) -> None :
223+ ) -> SpriteList :
218224 """
219225 Add a sprite list to the scene with the specified name before another SpriteList.
220226
@@ -244,6 +250,7 @@ def add_sprite_list_before(
244250 before_list = self ._name_mapping [before ]
245251 index = self ._sprite_lists .index (before_list )
246252 self ._sprite_lists .insert (index , sprite_list )
253+ return sprite_list
247254
248255 def move_sprite_list_before (
249256 self ,
@@ -279,7 +286,7 @@ def add_sprite_list_after(
279286 after : str ,
280287 use_spatial_hash : bool = False ,
281288 sprite_list : SpriteList | None = None ,
282- ) -> None :
289+ ) -> SpriteList :
283290 """
284291 Add a SpriteList to the scene with the specified name after a specific SpriteList.
285292
@@ -309,6 +316,7 @@ def add_sprite_list_after(
309316 after_list = self ._name_mapping [after ]
310317 index = self ._sprite_lists .index (after_list ) + 1
311318 self ._sprite_lists .insert (index , sprite_list )
319+ return sprite_list
312320
313321 def move_sprite_list_after (
314322 self ,
@@ -338,19 +346,21 @@ def move_sprite_list_after(
338346 old_index = self ._sprite_lists .index (name_list )
339347 self ._sprite_lists .insert (new_index , self ._sprite_lists .pop (old_index ))
340348
341- def remove_sprite_list_by_index (self , index : int ) -> None :
349+ def remove_sprite_list_by_index (self , index : int ) -> SpriteList :
342350 """
343351 Remove a layer from the scene by its index in the draw order.
344352
345353 Args:
346354 index: The index of the sprite list to remove.
347355 """
348- self .remove_sprite_list_by_object (self ._sprite_lists [index ])
356+ sprite_list = self ._sprite_lists [index ]
357+ self .remove_sprite_list_by_object (sprite_list )
358+ return sprite_list
349359
350360 def remove_sprite_list_by_name (
351361 self ,
352362 name : str ,
353- ) -> None :
363+ ) -> SpriteList :
354364 """
355365 Remove a layer from the scene by its name.
356366
@@ -363,6 +373,7 @@ def remove_sprite_list_by_name(
363373 sprite_list = self ._name_mapping [name ]
364374 self ._sprite_lists .remove (sprite_list )
365375 del self ._name_mapping [name ]
376+ return sprite_list
366377
367378 def remove_sprite_list_by_object (self , sprite_list : SpriteList ) -> None :
368379 """
0 commit comments