Products.CMFDiffTool


NameProducts.CMFDiffTool JSON
Version 4.0.4 PyPI version JSON
download
home_pagehttps://github.com/plone/Products.CMFDiffTool
SummaryDiff tool for Plone
upload_time2024-06-13 18:38:00
maintainerNone
docs_urlNone
authorBrent Hendricks
requires_python>=3.8
licenseGPL
keywords diff plone
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            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.

.. References
.. _`Products.CMFDiffTool`: http://pypi.python.org/pypi/Products.CMFDiffTool
.. _Dexterity: http://pypi.python.org/pypi/plone.app.dexterity
.. _`plone.app.versioningbehavior`: http://pypi.python.org/pypi/plone.app.versioningbehavior

Changelog
=========

.. You should *NOT* be adding new change log entries to this file.
   You should create a file in the news directory instead.
   For helpful instructions, please see:
   https://github.com/plone/plone.releaser/blob/master/ADD-A-NEWS-ITEM.rst

.. towncrier release notes start

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 <https://plone.org/security/hotfix/20210518/xss-vulnerability-in-cmfdifftool>`_.
  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:

- Fix display of subjects diff
  https://github.com/plone/Products.CMFPlone/issues/2340
  [tomgross]

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)
------------------

- Fixed UnicodeDecodeError in dump/ndiff.
  Issue https://github.com/plone/Products.CMFPlone/issues/820
  [maurits]

- Provide diff for dexterity behaviors' fields.
  [cedricmessiant]

- Fix bug with encoding in TextDiff.
  [cedricmessiant]


3.0.1 (2015-05-12)
------------------

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

__ https://github.com/plone/Products.CMFPlone/issues/330


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
----------------

- Make TextDiff more defensive in parsing. This fixes
  http://dev.plone.org/plone/ticket/10716 and
  http://dev.plone.org/plone/ticket/10737.
  [davidblewett]

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]

            

Raw data

            {
    "_id": null,
    "home_page": "https://github.com/plone/Products.CMFDiffTool",
    "name": "Products.CMFDiffTool",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.8",
    "maintainer_email": null,
    "keywords": "Diff Plone",
    "author": "Brent Hendricks",
    "author_email": "plone-developers@lists.sourceforge.net",
    "download_url": "https://files.pythonhosted.org/packages/a7/c8/6b863fd370fdddef90cbd729fefc14c3bccc0667a80b0a47079f5d8c3a32/products_cmfdifftool-4.0.4.tar.gz",
    "platform": null,
    "description": "Overview\n========\n\nDiff tool for Plone.\n\nDexterity\n---------\n\nTo enable versioning for a Dexterity content type you need to:\n\n1. Install `plone.app.versioningbehavior`_ and use it on your content type.\n2. Enable versioning for the type in the types control panel.\n3. Install this package.\n4. Go to the ``portal_diff`` tool ZMI page.\n5. Add ``Compound Diff for Dexterity types`` for your content type. ``Field name`` can be anything,\n   e.g: \"any\".\n\nYou can enable versioning on Dexterity content types without these\nsteps, but then you'll have to add the correct \"diff type\" for each\nfield of your content type.\n\n.. References\n.. _`Products.CMFDiffTool`: http://pypi.python.org/pypi/Products.CMFDiffTool\n.. _Dexterity: http://pypi.python.org/pypi/plone.app.dexterity\n.. _`plone.app.versioningbehavior`: http://pypi.python.org/pypi/plone.app.versioningbehavior\n\nChangelog\n=========\n\n.. You should *NOT* be adding new change log entries to this file.\n   You should create a file in the news directory instead.\n   For helpful instructions, please see:\n   https://github.com/plone/plone.releaser/blob/master/ADD-A-NEWS-ITEM.rst\n\n.. towncrier release notes start\n\n4.0.4 (2024-06-13)\n------------------\n\nTests\n\n\n- Fix tests to run with plone.app.discussion as core add-on. [@jensens] (#57)\n\n\n4.0.3 (2024-02-21)\n------------------\n\nBug fixes:\n\n\n- Make sure diff still renders when a relationlist has broken relations\n  [pbauer] (#54)\n\n\n4.0.2 (2024-02-01)\n------------------\n\nBug fixes:\n\n\n- Rerelease 2.0.7 as 4.0.2.  There was a double version number.\n  [maurits] (#402)\n\n\n2.0.7 (2024-01-22)\n------------------\n\nInternal:\n\n\n- Update configuration files.\n  [plone devs] (cfffba8c)\n\n\n4.0.1 (2023-04-15)\n------------------\n\nInternal:\n\n\n- Update configuration files.\n  [plone devs] (3333c742)\n\n\n4.0.0 (2023-03-14)\n------------------\n\nBreaking changes:\n\n\n- Drop compatibility with Plone 5.2, Python 2, Archetypes.\n  [maurits] (#60)\n\n\n3.3.3 (2021-06-30)\n------------------\n\nBug fixes:\n\n\n- Added XSS fix from PloneHotfix20210518 for inline diff.\n  See `vulnerability <https://plone.org/security/hotfix/20210518/xss-vulnerability-in-cmfdifftool>`_.\n  The first version of the hotfix escaped all html.\n  Now for the rich text field, use the safe html transform, otherwise the inline diff is no longer inline.\n  [maurits] (#39)\n\n\n3.3.2 (2020-09-21)\n------------------\n\nBug fixes:\n\n\n- Fixed invalid escape sequences.\n  [maurits] (#3130)\n\n\n3.3.1 (2020-04-22)\n------------------\n\nBug fixes:\n\n\n- Minor packaging updates. (#1)\n\n\n3.3.0 (2019-06-27)\n------------------\n\nNew features:\n\n- Add support for Python 3.8\n  [pbauer]\n\n\n3.2.2 (2018-10-24)\n------------------\n\nBug fixes:\n\n- Display titles in diff of zope.schema.List using vocabulary\n  [sgeulette]\n- Flake8 corrections\n  [sgeulette]\n- fix AT tests\n  [petschki]\n\n3.2.1 (2018-09-23)\n------------------\n\nBug fixes:\n\n- Fix diff and tests in py3\n  [pbauer, hverlarde, jensens]\n\n\n3.2.0 (2018-04-03)\n------------------\n\nNew features:\n\n- Use plone domain for translations\n  [erral]\n\nBug fixes:\n\n- Fix display of subjects diff\n  https://github.com/plone/Products.CMFPlone/issues/2340\n  [tomgross]\n\n3.1.6 (2018-02-11)\n------------------\n\nBug fixes:\n\n- Bug fix for dict type, because we use DataGridField.\n  [terapyon]\n\n\n3.1.5 (2018-02-05)\n------------------\n\nNew features:\n\n- Add Python 2 / 3 compatibility [davilima6]\n\n\n3.1.4 (2017-03-23)\n------------------\n\nNew features:\n\n- When field is a Relation List, get the referenced objects instead of diffing\n  on the actual reference objects.\n  [frapell]\n\nBug fixes:\n\n- Fixed AttributeError: 'NoneType' if the object doesn't have the expected attribute [rristow]\n\n\n3.1.3 (2016-09-09)\n------------------\n\nBug fixes:\n\n- Fix error in showing changes to objects of type \"set\" [deankarlen]\n\n\n3.1.2 (2016-07-29)\n------------------\n\nBug fixes:\n\n- Use zope.interface decorator.\n  [gforcada]\n\n\n3.1.1 (2016-04-18)\n------------------\n\nBug fixes:\n\n- Rerelease, as 3.1.0 was broken on one of our test servers.  Should\n  be fine elsewhere.  [maurits]\n\n\n3.1.0 (2016-04-15)\n------------------\n\nNew features:\n\n- Add generic `inline_diff` implementation for FieldDiff.\n  [davisagli]\n\n\n3.0.4 (2016-02-27)\n------------------\n\nNew:\n\n- Include fields in additional fieldsets for DX content types\n  [frapell]\n\n\n3.0.3 (2016-02-15)\n------------------\n\nFixes:\n\n- Test fixes.  [do3cc, pbauer]\n\n- Removed ZopeTestCase tests.  [do3cc]\n\n\n3.0.2 (2015-08-13)\n------------------\n\n- Fixed UnicodeDecodeError in dump/ndiff.\n  Issue https://github.com/plone/Products.CMFPlone/issues/820\n  [maurits]\n\n- Provide diff for dexterity behaviors' fields.\n  [cedricmessiant]\n\n- Fix bug with encoding in TextDiff.\n  [cedricmessiant]\n\n\n3.0.1 (2015-05-12)\n------------------\n\n- Prevent ``AttributeError`` issue when performing diff\n  on Dexterity contents. Close `#330`__.\n  [keul, cekk]\n\n__ https://github.com/plone/Products.CMFPlone/issues/330\n\n\n3.0.0 (2015-03-08)\n------------------\n\n- Ported tests to plone.app.testing\n  [tomgross]\n- Fix _getValue() bug for dexterity behaviour empty fields.\n  [sdelcourt]\n\n\n2.1 (2013-05-26)\n----------------\n\n- Nothing changed yet.\n\n\n2.0.2 (2013-03-05)\n------------------\n\n- Merge Rafael Oliveira's (@rafaelbco) Dexterity support from\n  collective.dexteritydiff.\n  [rpatterson]\n\n\n2.0.1 (2012-09-01)\n------------------\n\n- Adjust test assertions to match new diff output in Python 2.7.\n  [hannosch]\n\n2.0 - 2010-07-15\n----------------\n\n- Make TextDiff more defensive in parsing. This fixes\n  http://dev.plone.org/plone/ticket/10716 and\n  http://dev.plone.org/plone/ticket/10737.\n  [davidblewett]\n\n2.0b3 - 2010-05-20\n------------------\n\n- Added filename to BinaryDiff, TextDiff and CMFDTHtmlDiff.\n  [davidblewett]\n\n- Added i18n support for filename.\n  [davidblewett]\n\n- Updated code + test cases to use os.linesep instead of hard-coding them.\n  [davidblewett]\n\n- Updated TextDiff to use the splitlines string method instead of\n  splitting on a hard-coded value.\n  [davidblewett]\n\n- Fix test failure as a result of string field diff assignment change.\n  [alecm]\n\n2.0b2 - 2010-04-28\n------------------\n\n- Added inline diff view for simple text fields.\n  [alecm]\n\n- Added blob support to ATCompoundDiff.\n  [davidblewett]\n\n\n2.0b1 - 2009-12-27\n------------------\n\n- Added missing test dependency.\n  [hannosch]\n\n2.0a1 - 2009-11-14\n------------------\n\n- Use unicode in diff generation, now that Python's difflib supports it.\n  [alecm]\n\n- Adjusted interface test to zope.interface-style interfaces.\n  [hannosch]\n\n- Use new-style utility setup for portal_diff instead of the toolset handling.\n  [hannosch]\n\n- Added the z3c.autoinclude entry point so this package is automatically loaded\n  on Plone 3.3 and above.\n  [hannosch]\n\n- Add encoding declaration in python files\n  [encolpe]\n\n- Removed the persistent version of the changeset type.\n  [hannosch]\n\n- Declare package dependencies and fixed deprecation warnings for use\n  of Globals.\n  [hannosch]\n\n- Added GS import step registration to the product. It was only registered\n  as part of the CMFPlone base profile.\n  [hannosch]\n\n- Use the real BadRequest exception instead of relying on a string exception.\n  [hannosch]\n\n- Purged old Zope 2 Interface interfaces for Zope 2.12 compatibility.\n  [elro]\n\n0.5.2 - 2009-07-08\n------------------\n- Fix #9355: Support generalized schema extension for AT fields.\n  [alecm]\n\n0.5.1 - 2009-06-19\n------------------\n- Fix #9092: Support archetypes schema extension for ATCompoundDiff.\n  [alecm]\n\n0.5 - 2009-05-16\n----------------\n\n- Fix #9108: EncodingDecodeError in TextDiff.html_diff\n  [encolpe]\n\n0.5b1 - 2009-03-07\n------------------\n\n- Move CMF skin layer registration to zcml.\n  [wichert]\n\n- Move GenericSetup step registration to zcml.\n  [wichert]\n\n0.4 - 2008-10-06\n----------------\n\n- Switch to egg-based releases.\n  [hannosch]\n\n- Added GS import step registration to the product. It was only registered\n  as part of the CMFPlone base profile.\n  [hannosch]\n\n0.3.6 - 2008-04-20\n------------------\n\n- Added protection against missing diff_tool in the exportimport handler.\n  [hannosch]\n\n- Added metadata.xml file to the profile.\n  [hannosch]\n\n0.3.5 - 2007-12-02\n------------------\n\n- Don't assume there's a portal_type for objects.\n  Fixes http://dev.plone.org/plone/ticket/7295\n  [alecm]\n\n- Fixed issue causing diffs to break for folders that switched between\n  inside and outside ref modifiers.\n  [alecm]\n\n- Make ChangeSet compatible with CMF trunk.\n  [wiggy]\n\n- Updated componentregisty.xml to new style.\n  [hannosch]\n\n0.3.4 - 2007-06-08\n------------------\n\n- Fixed i18n markup in at_changeset.pt.\n  [hannosch]\n\n0.3.3 - 2007-03-05\n------------------\n\n- Removed default config for ATCT types, it goes in Plone now\n  [alecm]\n\n0.3.2 - 2007-03-05\n------------------\n\n- Added default config for ATCT types\n  [alecm]\n\n0.3.1 - 2007-02-09\n------------------\n\n- Removed useless status message.\n  [hannosch]\n\n- Added ZCML layer setup for tests\n  [alecm]\n\n0.3 - 2006-10-02\n----------------\n\n- Product installation is now based on a GenericSetup extension profile.\n  [hannosch]\n\n- Code modernization for Python 2.4 / CMF 1.6.\n  [hannosch]\n\n- Initial version.\n  [brentmh]\n",
    "bugtrack_url": null,
    "license": "GPL",
    "summary": "Diff tool for Plone",
    "version": "4.0.4",
    "project_urls": {
        "Homepage": "https://github.com/plone/Products.CMFDiffTool"
    },
    "split_keywords": [
        "diff",
        "plone"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "5c57b5d989e4bbb6739de8d4ee7a5c4c9c1b9267270b738233f7ae52f8396673",
                "md5": "00f581ad113f356c07a9a517416baacf",
                "sha256": "202670342365cfc600d312976fd33814a7b56f0bde39d7aaa47ab8a0d0baca00"
            },
            "downloads": -1,
            "filename": "Products.CMFDiffTool-4.0.4-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "00f581ad113f356c07a9a517416baacf",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.8",
            "size": 48167,
            "upload_time": "2024-06-13T18:37:58",
            "upload_time_iso_8601": "2024-06-13T18:37:58.274465Z",
            "url": "https://files.pythonhosted.org/packages/5c/57/b5d989e4bbb6739de8d4ee7a5c4c9c1b9267270b738233f7ae52f8396673/Products.CMFDiffTool-4.0.4-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "a7c86b863fd370fdddef90cbd729fefc14c3bccc0667a80b0a47079f5d8c3a32",
                "md5": "eae9c8fb162a67d1ef7fbbe9b62372ea",
                "sha256": "3865971f0d147694fbc470e60a33777f9361995dd59ed3666db6193d39368b44"
            },
            "downloads": -1,
            "filename": "products_cmfdifftool-4.0.4.tar.gz",
            "has_sig": false,
            "md5_digest": "eae9c8fb162a67d1ef7fbbe9b62372ea",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.8",
            "size": 47702,
            "upload_time": "2024-06-13T18:38:00",
            "upload_time_iso_8601": "2024-06-13T18:38:00.613852Z",
            "url": "https://files.pythonhosted.org/packages/a7/c8/6b863fd370fdddef90cbd729fefc14c3bccc0667a80b0a47079f5d8c3a32/products_cmfdifftool-4.0.4.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2024-06-13 18:38:00",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "plone",
    "github_project": "Products.CMFDiffTool",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": true,
    "tox": true,
    "lcname": "products.cmfdifftool"
}
        
Elapsed time: 2.63416s