Visitar URL original
Check pull request comments and evaluate pulls · Issue #13 · toxicphreAK/python-docx-ng · GitHub
Skip to content

Check pull request comments and evaluate pulls #13

Closed

Activity

  1. toxicphreAK commented on Aug 3, 2026

    @toxicphreAK
    OwnerAuthor

    Reviewed in the 2.0.0 feature pass (August 2026) and left open deliberately: this is a standing research task rather than a unit of implementable work, so there is nothing here to close.

    Several of the features these threads point at have since landed on main independently — tracked changes (#74), fields and TOC (#80), list numbering (#73), cross-run search and replace (#76), floating images (#85), watermarks (#86) and style copying (#87). Worth re-reading this list against HISTORY.rst before spending time on it, since the overlap is now substantial.

  2. toxicphreAK commented on Aug 4, 2026

    @toxicphreAK
    OwnerAuthor

    Worked through this: all 133 open pull requests against python-openxml/python-docx, not just the two linked above, each checked against main rather than against its own description.

    The overlap with #11 is large — many of these PRs are the upstream-facing half of the forks surveyed there, by the same authors. Everything genuinely new is now filed.

    New issues from this survey

    Upstream PR
    #103 w:shd modelled wrongly — we emit invalid XML and raise on valid input python-openxml#250, python-openxml#1129, python-openxml#908
    #104 Character-unit indents and line-unit spacing (w:firstLineChars and friends) python-openxml#941, upstream issue python-openxml#685
    #105 Paragraph mark run properties (w:pPr/w:rPr) python-openxml#537, python-openxml#417
    #106 _Row.repeat_as_header and the rest of w:trPr python-openxml#226
    #107 Table.width (w:tblW), percentage widths, w:tblInd, w:tblCellMar python-openxml#1529
    #108 RTL and vertical text — w:bidi, w:textDirection python-openxml#307
    #109 Table alt text — w:tblCaption, w:tblDescription adjacent to python-openxml#1530
    #110 Style lookup fails on UI-cased built-in style names python-openxml#958, python-openxml#1043, python-openxml#239
    #111 Accept os.PathLike python-openxml#1571, python-openxml#1168
    #112 Copy API for paragraphs, runs, rows and tables python-openxml#277, python-openxml#1309, python-openxml#429

    Two of those are bugs rather than gaps, both reproduced against main:

    • w:shd is modelled wrongly: required w:val missing, optional w:fill required #103 — CT_Shd declares w:fill required and does not model w:val at all. The schema (ref/xsd/wml.xsd:467) says the opposite. So font.shading_fill = "FF0000" writes <w:shd w:fill="FF0000"/> with the required w:val missing, and reading a legal <w:shd w:val="pct25" w:color="FF0000"/> raises InvalidXmlError. Every non-solid Word shading preset is in the second category.
    • Style lookup fails on documents that store the UI-cased built-in style name #110 — a document whose styles.xml stores <w:name w:val="Heading 1"/> instead of the internal "heading 1" cannot have a heading added to it: add_heading() raises KeyError and "Heading 1" in document.styles is False, with the style sitting right there. Word is case-insensitive here, which is why such documents exist.

    The two PRs linked above

    Already on main

    Roughly four fifths of the substantive PRs. Tracked changes (python-openxml#1538, python-openxml#1534, python-openxml#1270) — #74. Footnotes (python-openxml#1392) and comments — upstream v1.2.0 and #34. Fields (python-openxml#1017) — #80. Bookmarks (python-openxml#539, python-openxml#445) — #75. Hyperlinks (python-openxml#784). Custom properties (python-openxml#1273, python-openxml#468) — #72; extended properties (python-openxml#1206). WebP (python-openxml#1423), EMF (python-openxml#196), WMF (python-openxml#731), SVG (python-openxml#798) — #35. .docm / .dotx (python-openxml#1407, python-openxml#1378, python-openxml#716, python-openxml#673). Outline level (python-openxml#1393, python-openxml#1295, python-openxml#1064). East Asian fonts (python-openxml#1437, python-openxml#576, python-openxml#781, python-openxml#329). Borders (python-openxml#326, python-openxml#1129). Section columns (python-openxml#355) — #78. Cell vertical alignment (python-openxml#312). Section.paragraphs (python-openxml#755) — replaced by iter_inner_content(). Reproducible output (python-openxml#810). xpath() namespaces (python-openxml#622). Restart numbering (python-openxml#210). Merged cells (python-openxml#1036), incomplete rows (python-openxml#564), cell-access caching (python-openxml#1051, python-openxml#565). Alt text (python-openxml#1530, python-openxml#227, python-openxml#317). Fractional font sizes (python-openxml#1478), w:highlight w:val="none" (python-openxml#1560), huge attribute values (python-openxml#1174, python-openxml#1272), dangling relationships (python-openxml#1219), corrupt packages (python-openxml#1562), entity expansion (python-openxml#303). Form fields and AltChunk (python-openxml#649). Numbering (python-openxml#582, python-openxml#643) — #73, #98. tblLook (python-openxml#579, python-openxml#1524, python-openxml#462) — #97. Endnotes (python-openxml#860) — #94. Text after tracked changes (python-openxml#734) — Paragraph.original_text.

    Also verified fixed independently, so no issue filed: python-openxml#1566 (non-image parts in the sha1 match — package.py:47 skips them), python-openxml#1526 (CT_Tc.bottom on a merge whose origin omits w:vMerge), python-openxml#863 (w:sectPr inside w:sectPrChange is excluded by the anchored xpath at oxml/document.py:45), python-openxml#1024 (next_id takes the max over all @id), python-openxml#1505 (image dpi defaults to 72).

    Looked at and deliberately not filed

    Nothing left to track here.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions