from __future__ import annotations import platform import struct import sys from PIL import features def test_wheel_modules() -> None: expected_modules = {"pil", "tkinter", "freetype2", "littlecms2", "webp", "avif"} # tkinter is not available in cibuildwheel installed CPython on Windows try: import tkinter assert tkinter except ImportError: expected_modules.remove("tkinter") # libavif is not available on Windows for x86 and ARM64 architectures if sys.platform == "win32": if platform.machine() == "ARM64" or struct.calcsize("P") == 4: expected_modules.remove("avif") assert set(features.get_supported_modules()) == expected_modules def test_wheel_codecs() -> None: expected_codecs = {"jpg", "jpg_2000", "zlib", "libtiff"} assert set(features.get_supported_codecs()) == expected_codecs def test_wheel_features() -> None: expected_features = { "webp_anim", "webp_mux", "transp_webp", "raqm", "fribidi", "harfbuzz", "libjpeg_turbo", "zlib_ng", "xcb", } if sys.platform == "win32": expected_features.remove("xcb") assert set(features.get_supported_features()) == expected_features