code: def test_rotate_supported_PIL_kwargs(
      unsupported_kwargs,
      monkeypatch,
  ):
      """Test supported 'rotate' FX arguments by PIL version."""
      rotate_module = importlib.import_module("moviepy.video.fx.rotate")
  
      # patch supported kwargs data by PIL version
      new_PIL_rotate_kwargs_supported, min_version_by_kwarg_name = (
          {},
          {},
      )
      for kwarg, (
          kw_name,
          supported,
          min_version,
      ) in rotate_module.PIL_rotate_kwargs_supported.items():
          supported = kw_name not in unsupported_kwargs
          new_PIL_rotate_kwargs_supported[kwarg] = [
              kw_name,
              supported,
              min_version,
          ]
  
          min_version_by_kwarg_name[kw_name] = ".".join(
              str(n) for n in min_version
          )
  
      monkeypatch.setattr(
          rotate_module,
          "PIL_rotate_kwargs_supported",
          new_PIL_rotate_kwargs_supported,
      )
  
      with pytest.warns(UserWarning) as record:
          BitmapClip([["R", "G", "B"]], fps=1).fx(
              rotate_module.rotate,
              45,
              bg_color=(10, 10, 10),
              center=(1, 1),
              translate=(1, 0),
          )
  
      # assert number of warnings filtering other non related warnings
      warning_records = list(
          filter(
              lambda rec: rec.category.__name__ == "UserWarning",
              record.list,
          )
      )
      assert len(warning_records) == len(unsupported_kwargs)
  
      # assert messages contents
      messages = []
      for warning in warning_records:
          messages.append(warning.message.args[0])
  
      for unsupported_kwarg in unsupported_kwargs:
          expected_message = (
              f"rotate '{unsupported_kwarg}' argument is not supported by your"
              " Pillow version and is being ignored. Minimum Pillow version"
              f" required: v{min_version_by_kwarg_name[unsupported_kwarg]}"
          )
          assert expected_message in messages
  
imports: import decimal
  import importlib
  import math
  import numbers
  import os
  import random
  import sys
  import numpy
  import pytest
  from moviepy import AudioClip, AudioFileClip, BitmapClip, ColorClip, VideoClip, VideoFileClip
  from moviepy.audio.fx import audio_delay, audio_fadein, audio_fadeout, audio_normalize, multiply_stereo_volume, multiply_volume
  from moviepy.tools import convert_to_seconds
  from moviepy.video.fx import blackwhite, crop, even_size, fadein, fadeout, freeze, freeze_region, invert_colors, loop, lum_contrast, make_loopable, margin, mask_and, mask_or, mirror_x, mirror_y, multiply_color, multiply_speed, resize, rotate, time_mirror, time_symmetrize
label_desc: Use image node_id 27 for calling a global function with example usage: test_rotate_supported_PIL_kwargs(unsupported_kwargs, monkeypatch) without return types