Authoring library should drop the template thumbnail so the saved package never ships a stale preview image.
Library verdicts: python-pptx: — pptxjs: —
| Feature id | pptx/package-thumbnail-dropped |
|---|---|
| Format | pptx |
| Category | packaging |
| Spec | ecma-376-5-part-2 § 10.1.10 |
| ID / part | Predicate | XPath | python-pptx | pptxjs |
|---|---|---|---|---|
thumbnail-part-absent | absent`docProps/thumbnail.jpeg` SHOULD NOT appear in the output package. Currently expected to fail for python-pptx until the drop is implemented. | — | — |
No render assertions declared.
scripts/gen_pptx_package_thumbnail_dropped.py
#!/usr/bin/env python3
"""Generate ``fixtures/pptx/package-thumbnail-dropped.pptx``.
Sibling of ``gen_package_thumbnail_dropped.py`` (docx) but for
python-pptx. As of 2026.05 python-pptx does NOT drop the template
thumbnail on save, so the generated fixture still ships
``docProps/thumbnail.jpeg`` and the conformance manifest fails
deliberately — the failure is the tombstone motivating a future
port of python-docx's `_drop_unused_package_rels` to python-pptx.
"""
from __future__ import annotations
from pathlib import Path
from pptx import Presentation
_REPO_ROOT = Path(__file__).resolve().parent.parent
_OUT = _REPO_ROOT / "fixtures" / "pptx" / "package-thumbnail-dropped.pptx"
def main() -> int:
prs = Presentation()
prs.slides.add_slide(prs.slide_layouts[0])
_OUT.parent.mkdir(parents=True, exist_ok=True)
prs.save(_OUT)
print(_OUT)
return 0
if __name__ == "__main__":
raise SystemExit(main())
{
"$schema": "../manifest.schema.json",
"id": "pptx/package-thumbnail-dropped",
"title": "Package thumbnail dropped on save",
"format": "pptx",
"category": "packaging",
"summary": "Authoring library should drop the template thumbnail so the saved package never ships a stale preview image.",
"roles": [
"authoring"
],
"spec": {
"source": "ecma-376-5-part-2",
"clause": "10.1.10",
"notes": "The python-pptx default template (src/pptx/templates/default.pptx) carries a rendered `docProps/thumbnail.jpeg`. As of 2026.05 python-pptx does NOT drop it on save, so the generated fixture still contains the stale template preview and the assertion FAILS. That failure is the tombstone: the fix is to port python-docx's `_drop_unused_package_rels` pattern into python-pptx. Tracked by a future wave — this manifest is the known-failing marker that will flip green when the port lands."
},
"fixtures": {
"machine": "pptx/package-thumbnail-dropped"
},
"generator": {
"python": "scripts/gen_pptx_package_thumbnail_dropped.py"
},
"assertions": [
{
"id": "thumbnail-part-absent",
"kind": "zip_contains_path",
"path": "docProps/thumbnail.jpeg",
"must": "absent",
"description": "`docProps/thumbnail.jpeg` SHOULD NOT appear in the output package. Currently expected to fail for python-pptx until the drop is implemented."
}
]
}
No rendered reference is available for this case.