Skip to main content

Overview

Diff tool for Plone.

Dexterity

To enable versioning for a Dexterity content type you need to:

  1. Install plone.app.versioningbehavior and use it on your content type.

  2. Enable versioning for the type in the types control panel.

  3. Install this package.

  4. Go to the portal_diff tool ZMI page.

  5. Add Compound Diff for Dexterity types for your content type. Field name can be anything, e.g: “any”.

You can enable versioning on Dexterity content types without these steps, but then you’ll have to add the correct “diff type” for each field of your content type.

Changelog

5.0.1 (2026-11-03)

Internal:

  • Fix testHTMLDiff test on Python 3.15, which adds a diff_changed css class to changed cells in difflib.HtmlDiff output. [maurits]

  • Move package metadata from setup.py to pyproject.toml. [plone devs]

  • Update configuration files. [plone devs]

5.0.0 (2026-05-18)

Internal:

  • Update configuration files. [plone devs]

5.0.0a1 (2025-11-20)

Breaking changes:

  • Replace pkg_resources namespace with PEP 420 native namespace. Support only Plone 6.2 and Python 3.10+. (#3928)

4.0.5 (2025-09-10)

Internal:

  • Move distribution to src layout [gforcada] (#4217)

4.0.4 (2024-06-13)

Tests

  • Fix tests to run with plone.app.discussion as core add-on. [@jensens] (#57)

4.0.3 (2024-02-21)

Bug fixes:

  • Make sure diff still renders when a relationlist has broken relations [pbauer] (#54)

4.0.2 (2024-02-01)

Bug fixes:

  • Rerelease 2.0.7 as 4.0.2. There was a double version number. [maurits] (#402)

2.0.7 (2024-01-22)

Internal:

  • Update configuration files. [plone devs] (cfffba8c)

4.0.1 (2023-04-15)

Internal:

  • Update configuration files. [plone devs] (3333c742)

4.0.0 (2023-03-14)

Breaking changes:

  • Drop compatibility with Plone 5.2, Python 2, Archetypes. [maurits] (#60)

3.3.3 (2021-06-30)

Bug fixes:

  • Added XSS fix from PloneHotfix20210518 for inline diff. See vulnerability. The first version of the hotfix escaped all html. Now for the rich text field, use the safe html transform, otherwise the inline diff is no longer inline. [maurits] (#39)

3.3.2 (2020-09-21)

Bug fixes:

  • Fixed invalid escape sequences. [maurits] (#3130)

3.3.1 (2020-04-22)

Bug fixes:

  • Minor packaging updates. (#1)

3.3.0 (2019-06-27)

New features:

  • Add support for Python 3.8 [pbauer]

3.2.2 (2018-10-24)

Bug fixes:

  • Display titles in diff of zope.schema.List using vocabulary [sgeulette]

  • Flake8 corrections [sgeulette]

  • fix AT tests [petschki]

3.2.1 (2018-09-23)

Bug fixes:

  • Fix diff and tests in py3 [pbauer, hverlarde, jensens]

3.2.0 (2018-04-03)

New features:

  • Use plone domain for translations [erral]

Bug fixes:

3.1.6 (2018-02-11)

Bug fixes:

  • Bug fix for dict type, because we use DataGridField. [terapyon]

3.1.5 (2018-02-05)

New features:

  • Add Python 2 / 3 compatibility [davilima6]

3.1.4 (2017-03-23)

New features:

  • When field is a Relation List, get the referenced objects instead of diffing on the actual reference objects. [frapell]

Bug fixes:

  • Fixed AttributeError: ‘NoneType’ if the object doesn’t have the expected attribute [rristow]

3.1.3 (2016-09-09)

Bug fixes:

  • Fix error in showing changes to objects of type “set” [deankarlen]

3.1.2 (2016-07-29)

Bug fixes:

  • Use zope.interface decorator. [gforcada]

3.1.1 (2016-04-18)

Bug fixes:

  • Rerelease, as 3.1.0 was broken on one of our test servers. Should be fine elsewhere. [maurits]

3.1.0 (2016-04-15)

New features:

  • Add generic inline_diff implementation for FieldDiff. [davisagli]

3.0.4 (2016-02-27)

New:

  • Include fields in additional fieldsets for DX content types [frapell]

3.0.3 (2016-02-15)

Fixes:

  • Test fixes. [do3cc, pbauer]

  • Removed ZopeTestCase tests. [do3cc]

3.0.2 (2015-08-13)

3.0.1 (2015-05-12)

  • Prevent AttributeError issue when performing diff on Dexterity contents. Close #330. [keul, cekk]

3.0.0 (2015-03-08)

  • Ported tests to plone.app.testing [tomgross]

  • Fix _getValue() bug for dexterity behaviour empty fields. [sdelcourt]

2.1 (2013-05-26)

  • Nothing changed yet.

2.0.2 (2013-03-05)

  • Merge Rafael Oliveira’s (@rafaelbco) Dexterity support from collective.dexteritydiff. [rpatterson]

2.0.1 (2012-09-01)

  • Adjust test assertions to match new diff output in Python 2.7. [hannosch]

2.0 - 2010-07-15

2.0b3 - 2010-05-20

  • Added filename to BinaryDiff, TextDiff and CMFDTHtmlDiff. [davidblewett]

  • Added i18n support for filename. [davidblewett]

  • Updated code + test cases to use os.linesep instead of hard-coding them. [davidblewett]

  • Updated TextDiff to use the splitlines string method instead of splitting on a hard-coded value. [davidblewett]

  • Fix test failure as a result of string field diff assignment change. [alecm]

2.0b2 - 2010-04-28

  • Added inline diff view for simple text fields. [alecm]

  • Added blob support to ATCompoundDiff. [davidblewett]

2.0b1 - 2009-12-27

  • Added missing test dependency. [hannosch]

2.0a1 - 2009-11-14

  • Use unicode in diff generation, now that Python’s difflib supports it. [alecm]

  • Adjusted interface test to zope.interface-style interfaces. [hannosch]

  • Use new-style utility setup for portal_diff instead of the toolset handling. [hannosch]

  • Added the z3c.autoinclude entry point so this package is automatically loaded on Plone 3.3 and above. [hannosch]

  • Add encoding declaration in python files [encolpe]

  • Removed the persistent version of the changeset type. [hannosch]

  • Declare package dependencies and fixed deprecation warnings for use of Globals. [hannosch]

  • Added GS import step registration to the product. It was only registered as part of the CMFPlone base profile. [hannosch]

  • Use the real BadRequest exception instead of relying on a string exception. [hannosch]

  • Purged old Zope 2 Interface interfaces for Zope 2.12 compatibility. [elro]

0.5.2 - 2009-07-08

  • Fix #9355: Support generalized schema extension for AT fields. [alecm]

0.5.1 - 2009-06-19

  • Fix #9092: Support archetypes schema extension for ATCompoundDiff. [alecm]

0.5 - 2009-05-16

  • Fix #9108: EncodingDecodeError in TextDiff.html_diff [encolpe]

0.5b1 - 2009-03-07

  • Move CMF skin layer registration to zcml. [wichert]

  • Move GenericSetup step registration to zcml. [wichert]

0.4 - 2008-10-06

  • Switch to egg-based releases. [hannosch]

  • Added GS import step registration to the product. It was only registered as part of the CMFPlone base profile. [hannosch]

0.3.6 - 2008-04-20

  • Added protection against missing diff_tool in the exportimport handler. [hannosch]

  • Added metadata.xml file to the profile. [hannosch]

0.3.5 - 2007-12-02

  • Don’t assume there’s a portal_type for objects. Fixes http://dev.plone.org/plone/ticket/7295 [alecm]

  • Fixed issue causing diffs to break for folders that switched between inside and outside ref modifiers. [alecm]

  • Make ChangeSet compatible with CMF trunk. [wiggy]

  • Updated componentregisty.xml to new style. [hannosch]

0.3.4 - 2007-06-08

  • Fixed i18n markup in at_changeset.pt. [hannosch]

0.3.3 - 2007-03-05

  • Removed default config for ATCT types, it goes in Plone now [alecm]

0.3.2 - 2007-03-05

  • Added default config for ATCT types [alecm]

0.3.1 - 2007-02-09

  • Removed useless status message. [hannosch]

  • Added ZCML layer setup for tests [alecm]

0.3 - 2006-10-02

  • Product installation is now based on a GenericSetup extension profile. [hannosch]

  • Code modernization for Python 2.4 / CMF 1.6. [hannosch]

  • Initial version. [brentmh]

Metadata

Release files for Products.CMFDiffTool 5.0.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for Products.CMFDiffTool 5.0.1
File Size Uploaded Provenance Actions
products_cmfdifftool-5.0.1.tar.gz 44.8 kB Without provenance Details for products_cmfdifftool-5.0.1.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for Products.CMFDiffTool 5.0.1
File Interpreter ABI Platform Actions
products_cmfdifftool-5.0.1-py3-none-any.whl Python 3 none any Details for products_cmfdifftool-5.0.1-py3-none-any.whl

Total release size: 92.7 kB

Release files / products_cmfdifftool-5.0.1.tar.gz

Download URL products_cmfdifftool-5.0.1.tar.gz
Size 44.8 kB
Tags Source
SHA-256 checksum
How to use checksums
f69002bedf1294ef603c795208c3f76b909499f92e1c93b7b7d48d5f17360f22
BLAKE2b-256 checksum
How to use checksums
7ffd2dfd3d798b37e6c7f69272360bcfff24e592cc6b4d69712bea438ac9d572
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.18

Release files / products_cmfdifftool-5.0.1-py3-none-any.whl

Download URL products_cmfdifftool-5.0.1-py3-none-any.whl
Size 47.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
05e6962a86e1bf97fa167161e78d419f4b3f324294f4c55ad1386c89cc74b009
BLAKE2b-256 checksum
How to use checksums
5902deb7e1b039a06097b1579b9579bdd155c8911e16a0dbe35d6ae69e3eff07
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.18

Security for Products.CMFDiffTool 5.0.1

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release

5.0.1 This release

2 release files No provenance

1.0

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page