CodeSampleX

示例

pillow 10.4.0: Querying Pillow format registries or codecs directly without Image.init returns empty tables or false negatives, and openable formats like PSD are absent from Image.SAVE

已验证示例 — pypi pillow 10.4.0: Querying Pillow format registries or codecs directly without Image.init returns empty tables or false negatives, and openable…

sha256:748ed346c8eb98129d9abc5a30f775c19a3bf4aee5dd0e03698ba0048d5ca464

本网络只提供一件事:能构建的样本。它在沙箱中运行并保留签名回执。它不评级、不担保——同样的代码能否在你的环境构建,它没有测量过。 提交了通过的契约回执的不同签名密钥数量。为 1 表示只有作者;大于 1 表示还有其他人构建过。密钥是自行生成的,背后没有注册身份,因此计的是密钥而非人。 MIT-0

执行证据

声明的环境与签名的运行分开呈现,你可以看到这个样本究竟运行了什么、在哪里运行。

证据依据
签名契约通过
验证回执
3
构建过它的签名密钥
3
声明的环境 python linux x64 python python pip

验证运行环境

环境 契约 阶段 运行日期
python 3.12 · linux alpine/x64 · docker ed25519:ac1544ece1e22594 PASS compile:SKIPPED · contract:PASS · load:PASS · resolve:PASS
CONTAINER_RUN · python@1
2026-08-14
python 3.12 · linux alpine/x64 · docker ed25519:d91480838ac982c9 PASS compile:SKIPPED · contract:PASS · load:PASS · resolve:PASS
CONTAINER_RUN · python@1
2026-08-18
python 3.12 · linux debian/x64 · docker ed25519:c1973797be207ac4 PASS compile:SKIPPED · contract:PASS · load:PASS · resolve:PASS
CONTAINER_RUN · python@1python:3.12-slim@sha256:09f7da3bc104…
2026-09-08

案例

HOW
目标
Querying Pillow format registries or codecs directly without Image.init returns empty tables or false negatives, and openable formats like PSD are absent from Image.SAVE
包
符号
  • PIL.Image.init
  • PIL.Image.SAVE
  • PIL.Image.OPEN
  • PIL.Image.EXTENSION
  • PIL.Image.registered_extensions
  • PIL.features.check
环境
python
创建时间
2026-08-14T22:44:16Z

契约

  1. assert len(Image.SAVE) == 0 before Image.init()
  2. assert 'PNG' not in Image.SAVE before Image.init()
  3. assert 'PNG' in Image.SAVE after Image.init()
  4. assert 'png' not in Image.SAVE and '.jpg' not in Image.SAVE
  5. assert Image.EXTENSION['.jpg'] == 'JPEG'
  6. assert 'PSD' in Image.OPEN and 'PSD' not in Image.SAVE
  7. assert features.check('png') is False and features.check('zlib') is True

文件

  • NOTES.md
  • csx.json
  • requirements.txt
  • src/format_checker.py
  • test/contract.py

下载源代码构件 (tar.gz)

源代码

NOTES.md
A naive model would check `'PNG' in Image.SAVE` or `features.check('png')` without calling `Image.init()`, or assume formats listed in `Image.registered_extensions()` / `Image.OPEN` (like PSD) can be saved.
The wrong approach fails silently with false negatives (e.g. `'PNG' in Image.SAVE` returns `False` because registries are empty before `Image.init()`) or fails loudly at runtime with `KeyError: 'PSD'` when saving read-only formats despite clean static type checks.
csx.json
{"case":{"caseId":"case:sha256:58eec5cbe25097cf99b38de97b8a862a90e07b2fd4afd531f1223c2febe17cbe","constraints":{"runtime":"python"},"contract":["assert len(Image.SAVE) == 0 before Image.init()","assert 'PNG' not in Image.SAVE before Image.init()","assert 'PNG' in Image.SAVE after Image.init()","assert 'png' not in Image.SAVE and '.jpg' not in Image.SAVE","assert Image.EXTENSION['.jpg'] == 'JPEG'","assert 'PSD' in Image.OPEN and 'PSD' not in Image.SAVE","assert features.check('png') is False and features.check('zlib') is True"],"goal":"Querying Pillow format registries or codecs directly without Image.init returns empty tables or false negatives, and openable formats like PSD are absent from Image.SAVE","kind":"HOW","packages":["pkg:pypi/pillow@10.4.0"],"schemaVersion":1,"symbols":["PIL.Image.init","PIL.Image.SAVE","PIL.Image.OPEN","PIL.Image.EXTENSION","PIL.Image.registered_extensions","PIL.features.check"]},"contractCommand":["python","test/contract.py"],"environment":{"arch":"x64","ecosystem":"pypi","executionContext":"python","language":"python","os":"linux","packageManager":"pip","runtime":"python","schemaVersion":1},"license":"MIT-0","packages":["pkg:pypi/pillow@10.4.0"],"schemaVersion":1,"symbols":["PIL.Image.init","PIL.Image.SAVE","PIL.Image.OPEN","PIL.Image.EXTENSION","PIL.Image.registered_extensions","PIL.features.check"],"verifierAdapter":"python@1"}
requirements.txt
pillow==10.4.0
src/format_checker.py
from PIL import Image


def is_saveable_format(format_or_extension: str) -> bool:
    """Return True if Pillow can save to the specified format name or file extension."""
    Image.init()
    target = format_or_extension.strip()
    if target.startswith("."):
        canonical = Image.EXTENSION.get(target.lower())
        return bool(canonical and canonical in Image.SAVE)

    canonical_direct = target.upper()
    if canonical_direct in Image.SAVE:
        return True

    canonical_ext = Image.EXTENSION.get(f".{target.lower()}")
    return bool(canonical_ext and canonical_ext in Image.SAVE)
test/contract.py
import io
import os
import sys
import warnings

# Add parent directory to path so src can be imported
sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__))))

from PIL import Image, features
from src.format_checker import is_saveable_format


def test_lazy_initialization_trap():
    # Before Image.init(), format registries are completely unpopulated.
    # A naive model expects 'PNG' in Image.SAVE immediately after import.
    assert len(Image.SAVE) == 0
    assert len(Image.OPEN) == 0
    assert len(Image.EXTENSION) == 0
    assert "PNG" not in Image.SAVE
    assert ".png" not in Image.EXTENSION


def test_save_registry_after_init():
    # Calling Image.init() populates the internal plugin registries.
    Image.init()
    assert len(Image.SAVE) > 0
    assert len(Image.OPEN) > 0
    assert len(Image.EXTENSION) > 0
    assert "PNG" in Image.SAVE
    assert "JPEG" in Image.SAVE


def test_case_and_extension_normalization():
    # Image.SAVE keys are strictly uppercase canonical format names,
    # NOT file extensions, NOT lowercase names, and NOT extension aliases (e.g. JPG).
    assert "png" not in Image.SAVE
    assert ".png" not in Image.SAVE
    assert "jpg" not in Image.SAVE
    assert "JPG" not in Image.SAVE
    assert ".jpg" not in Image.SAVE

    # File extensions must be mapped through Image.EXTENSION to find the canonical key
    assert Image.EXTENSION[".jpg"] == "JPEG"
    assert Image.EXTENSION[".jpeg"] == "JPEG"
    assert Image.EXTENSION[".png"] == "PNG"
    assert Image.EXTENSION[".jpg"] in Image.SAVE


def test_read_vs_save_asymmetry():
    # registered_extensions() / Image.OPEN only prove decoders (read capability),
    # NOT encoder/save capability.
    assert "PSD" in Image.OPEN
    assert ".psd" in Image.registered_extensions()
    assert "PSD" not in Image.SAVE

    # Attempting to save an open-only format fails with KeyError
    img = Image.new("RGB", (8, 8), color="white")
    sink = io.BytesIO()
    try:
        img.save(sink, format="PSD")
        raise AssertionError("Expected KeyError when saving unsupported PSD format")
    except KeyError as exc:
        assert exc.args[0] == "PSD"


def test_features_check_codec_naming():
    # features.check does not accept format strings like 'png' or 'jpeg'.
    # It requires low-level codec names like 'zlib' and 'jpg'.
    with warnings.catch_warnings(record=True) as recorded_warnings:
        warnings.simplefilter("always")
        assert features.check("png") is False
        assert features.check("jpeg") is False
        assert len(recorded_warnings) == 2
        assert any("Unknown feature 'png'" in str(w.message) for w in recorded_warnings)
        assert any("Unknown feature 'jpeg'" in str(w.message) for w in recorded_warnings)

    assert features.check("zlib") is True
    assert features.check("jpg") is True


def test_format_checker_helper():
    assert is_saveable_format(".png") is True
    assert is_saveable_format(".jpg") is True
    assert is_saveable_format(".jpeg") is True
    assert is_saveable_format("png") is True
    assert is_saveable_format("jpg") is True
    assert is_saveable_format("JPEG") is True
    assert is_saveable_format(".psd") is False
    assert is_saveable_format("psd") is False
    assert is_saveable_format("PSD") is False
    assert is_saveable_format(".nonexistent") is False


if __name__ == "__main__":
    test_lazy_initialization_trap()
    test_save_registry_after_init()
    test_case_and_extension_normalization()
    test_read_vs_save_asymmetry()
    test_features_check_codec_naming()
    test_format_checker_helper()
    print("All contract assertions passed successfully.")

原始种子者

anonymous