NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
PyPI · #277 most downloaded on PyPI
Create, read, and update Microsoft Word .docx files.
Last release 1 years ago
16 Jun 2025
Release timing varies
gaps range from 8 days to 2.4 years
Nearly every release is documented
notes for 31 of 31 stable releases
Nothing withdrawn
no release was ever pulled
13 years old
38 releases · first in 2014
Drop support for Python 3.8, add testing for Python 3.13
Add support for comments
Drop support for Python 3.8, add testing for Python 3.13
Fix #1383 Revert lxml<=4.9.2 pin that breaks Python 3.12 install
Fix #1383 Revert lxml<=4.9.2 pin that breaks Python 3.12 install
Fix #1385 Support use of Part._rels by python-docx-template
Add support and testing for Python 3.12
One column per quarter.
Fix #531, #1146 Index error on table with misaligned borders
Fix #531, #1146 Index error on table with misaligned borders
Fix #1335 Tolerate invalid float value in bottom-margin
Fix #1337 Do not require typing-extensions at runtime
Add BlockItemContainer.iter_inner_content()
Add BlockItemContainer.iter_inner_content()
Fix #1256: parse_xml() and OxmlElement moved.
Fix #1256: parse_xml() and OxmlElement moved.
Add Hyperlink.fragment and .url
Remove Python 2 support. Supported versions are 3.7+
Remove Python 2 support. Supported versions are 3.7+
Fix #85: Paragraph.text includes hyperlink text
Add #1113: Hyperlink.address
Add Hyperlink.contains_page_break
Add Hyperlink.runs
Add Hyperlink.text
Add Paragraph.contains_page_break
Add Paragraph.hyperlinks
Add Paragraph.iter_inner_content()
Add Paragraph.rendered_page_breaks
Add RenderedPageBreak.following_paragraph_fragment
Add RenderedPageBreak.preceding_paragraph_fragment
Add Run.contains_page_break
Add Run.iter_inner_content()
Add Section.iter_inner_content()
Nothing published for this version
Small build changes and Python 3.8 version changes like collections.abc location.
Small build changes and Python 3.8 version changes like collections.abc location.
Revert use of expanded package directory for default.docx to work around setup.py problem with filenames containing square brackets.
Revert use of expanded package directory for default.docx to work around setup.py problem with filenames containing square brackets.
Fix gap in MANIFEST.in that excluded default document template directory
Fix gap in MANIFEST.in that excluded default document template directory
Add support for headers and footers
Add support for headers and footers
Fix #455: increment next_id, don't fill gaps
Add _Row.height_rule
Add _Row.height
Add _Cell.vertical_alignment
Fix #455: increment next_id, don't fill gaps
Add #375: import docx failure on --OO optimization
Add #254: remove default zoom percentage
Add #266: miscellaneous documentation fixes
Add #175: refine MANIFEST.ini
Add #168: Unicode error on core-props in Python 2
Add #257: add Font.highlight_color
Add #257: add Font.highlight_color
Add #261: add ParagraphFormat.tab_stops
Add #303: disallow XML entity expansion
Fix #149: KeyError on Document.add_table()
Fix #149: KeyError on Document.add_table()
Fix #78: feature: add_table() sets cell widths
Add #106: feature: Table.direction (i.e. right-to-left)
Add #102: feature: add CT_Row.trPr
Fix #151: tests won't run on PyPI distribution
Fix #151: tests won't run on PyPI distribution
Fix #124: default to inches on no TIFF resolution unit
Add #121, #135, #139: feature: Font.color
Add #121, #135, #139: feature: Font.color
Fix #94: picture prints at wrong size when scaled
Fix #94: picture prints at wrong size when scaled
Extract docx.document.Document object from DocumentPart
Refactor docx.Document from an object into a factory function for new docx.document.Document object. Extract methods from prior docx.Document and docx.parts.document.DocumentPart to form the new API class and retire docx.Document class.
Migrate Document.numbering_part to DocumentPart.numbering_part. The numbering_part property is not part of the published API and is an interim internal feature to be replaced in a future release, perhaps with something like Document.numbering_definitions. In the meantime, it can now be accessed using Document.part.numbering_part.
Fix #140: Warning triggered on Document.add_heading/table()
Fix #140: Warning triggered on Document.add_heading/table()
Add styles. Provides general capability to access and manipulate paragraph, character, and table styles.
Add styles. Provides general capability to access and manipulate paragraph, character, and table styles.
Add ParagraphFormat object, accessible on Paragraph.paragraph_format, and providing the following paragraph formatting properties:
paragraph alignment (justfification)
space before and after paragraph
line spacing
indentation
keep together, keep with next, page break before, and widow control
Add Font object, accessible on Run.font, providing character-level formatting including:
typeface (e.g. 'Arial')
point size
underline
italic
bold
superscript and subscript
The following issues were retired:
Add feature #56: superscript/subscript
Add feature #67: lookup style by UI name
Add feature #98: Paragraph indentation
Add feature #120: Document.styles
Backward incompatibilities
Paragraph.style now returns a Style object. Previously it returned the style name as a string. The name can now be retrieved using the Style.name property, for example, paragraph.style.name.
Add feature #69: Table.alignment
Add feature #69: Table.alignment
Add feature #29: Document.core_properties
- Add feature #65: _Cell.merge()
Add feature #65: _Cell.merge()
Add feature #45: _Cell.add_table()
Add feature #45: _Cell.add_table()
Add feature #76: _Cell.add_paragraph()
Add _Cell.tables property (read-only)
- Add Table.autofit - Add feature #46: _Cell.width
Add Table.autofit
Add feature #46: _Cell.width
Fix: Word does not interpret as line feed
Fix: Word does not interpret <w:cr/> as line feed
Add feature #14: Run.add_picture()
Add feature #14: Run.add_picture()
Add feature #68: Paragraph.insert_paragraph_before()
Add feature #68: Paragraph.insert_paragraph_before()
Add feature #51: Paragraph.alignment (read/write)
Add feature #61: Paragraph.text setter
Add feature #58: Run.add_tab()
Add feature #70: Run.clear()
Add feature #60: Run.text setter
Add feature #39: Run.text and Paragraph.text interpret 'n' and 't' chars
Add feature #15: section page size
Add feature #15: section page size
Add feature #66: add section
Add page margins and page orientation properties on Section
Major refactoring of oxml layer
Add feature #19: Run.underline property
Add feature #19: Run.underline property
Add feature #17: character style
Add feature #17: character style
Fix issue #23, Document.add_picture() raises ValueError when document contains VML drawing.
Fix issue #23, Document.add_picture() raises ValueError when document contains VML drawing.
Add 20 tri-state properties on Run, including all-caps, double-strike, hidden, shadow, small-caps, and 15 others.
Add 20 tri-state properties on Run, including all-caps, double-strike, hidden, shadow, small-caps, and 15 others.
Advance from alpha to beta status.
Advance from alpha to beta status.
Add pure-python image header parsing; drop Pillow dependency
Hotfix: issue #4, Document.add_picture() fails on second and subsequent images.
Hotfix: issue #4, Document.add_picture() fails on second and subsequent images.
Complete Python 3 support, tested on Python 3.3
Complete Python 3 support, tested on Python 3.3
Fix setup.py error on some Windows installs
Fix setup.py error on some Windows installs
Nothing published for this version
Feature-parity with prior version
Full object-oriented rewrite
Feature-parity with prior version
text: add paragraph, run, text, bold, italic
table: add table, add row, add column
styles: specify style for paragraph, table
picture: add inline picture, auto-scaling
breaks: add page break
tests: full pytest and behave-based 2-layer test suite
Round-trip .docx file, preserving all parts and relationships
Round-trip .docx file, preserving all parts and relationships
Load default "template" .docx on open with no filename
Open from stream and save to stream (file-like object)
Add paragraph at and of document
Your coding agent can read these notes before it upgrades. Set up the MCP server →