code: def test_append_images(tmp_path):
      out = str(tmp_path / "temp.gif")
  
      # Test appending single frame images
      im = Image.new("RGB", (100, 100), "#f00")
      ims = [
          Image.new("RGB", (100, 100), color)
          for color in ["#0f0", "#00f"]
      ]
      im.copy().save(out, save_all=True, append_images=ims)
  
      with Image.open(out) as reread:
          assert reread.n_frames == 3
  
      # Tests appending using a generator
      def imGenerator(ims):
          yield from ims
  
      im.save(out, save_all=True, append_images=imGenerator(ims))
  
      with Image.open(out) as reread:
          assert reread.n_frames == 3
  
      # Tests appending single and multiple frame images
      with Image.open("Tests/images/dispose_none.gif") as im:
          with Image.open("Tests/images/dispose_prev.gif") as im2:
              im.save(out, save_all=True, append_images=[im2])
  
      with Image.open(out) as reread:
          assert reread.n_frames == 10
  
imports: from io import BytesIO
  import pytest
  from PIL import GifImagePlugin, Image, ImageDraw, ImagePalette, features
  from .helper import assert_image_equal, assert_image_equal_tofile, assert_image_similar, hopper, is_pypy, netpbm_available
label_desc: Use image node_id 48 for calling a global function with example usage: test_append_images(tmp_path) without return types