code: def test_apng_reading(tmp_path, test_images):
      # create a APNG
      img = iio.imread(test_images / "newtonscradle.gif")
      iio.imwrite(tmp_path / "test.apng", img)
  
      props = iio.improps(tmp_path / "test.apng")
      assert props.shape == (36, 150, 200, 3)
      assert props.is_batch is True
  
      # test single image read
      with Image.open(tmp_path / "test.apng") as im:
          im.seek(8)
          expected = np.asarray(im)
      actual = iio.imread(tmp_path / "test.apng", index=8)
      assert np.allclose(actual, expected)
  
      # test reading all frames
      all_frames = iio.imread(tmp_path / "test.apng")
      with Image.open(tmp_path / "test.apng") as im:
          for idx, frame in enumerate(ImageSequence.Iterator(im)):
              expected = np.asarray(frame)
              actual = all_frames[idx]
              assert np.allclose(actual, expected)
  
imports: import io
  import os
  from pathlib import Path
  import imageio.v3
  import numpy
  import pytest
  from imageio.core.request import InitializationError, Request
  from imageio.core.v3_plugin_api import PluginV3
  from imageio.plugins.pillow import PillowPlugin
  from PIL import Image, ImageSequence, ImageOps, __version__
label_desc: Use image node_id 35 for calling a global function with example usage: test_apng_reading(tmp_path, test_images) without return types