Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Add revision management capability + tests + docs#1534

Open
amithkk wants to merge 5 commits intopython-openxml:masterfrom
amithkk:feat/revision-management
Open

Add revision management capability + tests + docs#1534
amithkk wants to merge 5 commits intopython-openxml:masterfrom
amithkk:feat/revision-management

Conversation

@amithkk
Copy link

This PR adds comprehensive support for creating and managing tracked changes (revisions) in Word documents, enabling programmatic document editing with full revision history visible in Microsoft Word.

Tests have been added for new functionality, and existing tests have been run to ensure that backwards compatibility is maintained.

Why?

Users need to make programmatic changes to Word documents while preserving some sort of an audit trail. Solves#930 and#340

Features

  • Paragraph.add_run_tracked() - Add text as a tracked insertion
  • Run.delete_tracked() - Mark existing text as a tracked deletion
  • Paragraph.replace_tracked() - Replace specific text with revision tracking
  • Document.find_and_replace_tracked() - Bulk find-and-replace across entire document
  • document.settings.track_revisions - Enable/disable track changes mode
  • TrackedInsertion andTrackedDeletion proxy classes withaccept() andreject() methods
  • Author and date metadata on all tracked changes
  • Optional comment attachment to replacements

Example Usage

fromdocximportDocumentdoc=Document('contract.docx')doc.settings.track_revisions=Truecount=doc.find_and_replace_tracked("ACME Corp","NewCo Inc",author="Legal Bot",comment="Company name updated per merger")doc.save('contract_revised.docx')

This is just barebones, and this capability can be extended by later additions to possibly build out a context manager (eg.with document.track_all_changes() as doc:) to make it function similar to how "Track Changes" works in word. However there are a fair number of edge cases you'd have to deal with in that situation.

Some of this work draws on the exhaustive code written inOpenXmlPowerTools WmlComparer and the underlying .NET library.

sadovnychyi reacted with eyes emoji
@amithkkamithkk mentioned this pull requestJan 7, 2026
@jfthuong
Copy link

jfthuong commentedJan 9, 2026
edited
Loading

Nice job.

Would you consider adding aproperty for the Paragraph object to get the final text? (similar to the different solutions proposed on#340 )

@louspringer
Copy link

Hi@jfthuong and@amithkk, following up on the discussion here about reading the final text: I've opened#1538 which implements native support forw:ins inparagraph.text (resolving to the 'Accepted' view) and registersw:delText for provenance tools. It might be a useful complement to the writing capabilities here.

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

Reviewers

No reviews

Assignees

No one assigned

Labels

None yet

Projects

None yet

Milestone

No milestone

Development

Successfully merging this pull request may close these issues.

3 participants

@amithkk@jfthuong@louspringer

[8]ページ先頭

©2009-2026 Movatter.jp