A single shape whose type python-pptx can't identify makes MarkItDown fail the entire PPTX, losing every slide.
Repro
Convert a deck containing an unrecognized shape (docling ships one: powerpoint_unrecognized_shape.pptx, slide 2 has a shape named BadShape). It raises and returns nothing, though the other two slides are ordinary:
PptxConverter threw NotImplementedError with message: Shape instance of unrecognized shape type
PptxConverter reads shape.shape_type (in _is_picture, _is_table, and the group-shape check); for an unmapped shape that access raises and propagates out of convert().
Expected
One unreadable shape should be skipped and the rest of the deck converted, in the same spirit as the tolerance fixes already merged for PptxConverter: #2059 (tolerate None shape/notes text), #2194 (chart title without a text frame), and #2408 (top-zero sort).
The PR is written and tested; it adds a small _shape_type_or_none() helper that returns the type or None on NotImplementedError, so the shape falls through as "none of the handled types" and its own text is still recovered.
A single shape whose type
python-pptxcan't identify makes MarkItDown fail the entire PPTX, losing every slide.Repro
Convert a deck containing an unrecognized shape (docling ships one:
powerpoint_unrecognized_shape.pptx, slide 2 has a shape namedBadShape). It raises and returns nothing, though the other two slides are ordinary:PptxConverterreadsshape.shape_type(in_is_picture,_is_table, and the group-shape check); for an unmapped shape that access raises and propagates out ofconvert().Expected
One unreadable shape should be skipped and the rest of the deck converted, in the same spirit as the tolerance fixes already merged for
PptxConverter: #2059 (tolerateNoneshape/notes text), #2194 (chart title without a text frame), and #2408 (top-zero sort).The PR is written and tested; it adds a small
_shape_type_or_none()helper that returns the type orNoneonNotImplementedError, so the shape falls through as "none of the handled types" and its own text is still recovered.