collective.searchandreplace


Namecollective.searchandreplace JSON
Version 8.3 PyPI version JSON
download
home_pagehttps://github.com/collective/collective.searchandreplace
SummaryBatch Search and Replace
upload_time2023-09-25 09:17:06
maintainerMaurits van Rees
docs_urlNone
authorenPraxis
requires_python>=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*
licenseGPL
keywords batch search replace
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI
coveralls test coverage
            Introduction
============

.. image:: https://secure.travis-ci.org/collective/collective.searchandreplace.png?branch=master
   :target: https://travis-ci.org/#!/collective/collective.searchandreplace

The collective.searchandreplace product is a Plone Add-on designed to find and replace text in Plone content objects.

It searches in all text fields (since version 7.0) and all string fields (since 8.0).

This includes default content types fields like title, description, and document text.
It excludes the id/short name string field.

It operates over single or multiple Plone content objects and can show a preview of changes as well as immediately perform them.

Features include:

- being able to control searching in subfolders
- matching based on case sensitivity/insensitivity
- maximum number of results
- fast search using the catalog by default
- disable the fast search to be able to search and replace raw html tags, for example replace ``<strong>text</strong>`` by ``<em>text</em>``


Development
-----------

.. image:: https://coveralls.io/repos/github/collective/collective.searchandreplace/badge.svg?branch=master
  :target: https://coveralls.io/github/collective/collective.searchandreplace?branch=master


Binder
------

Running tests and demo Plone site on mybinder.org.

.. image:: https://mybinder.org/badge_logo.svg
 :target: https://mybinder.org/v2/gh/collective/collective.searchandreplace/master?filepath=binder%2Fpytest.ipynb


Compatibility
-------------

From version 8.0, we are compatible with
Plone 4.3, 5.1 and 5.2.

To be able to run the buildout for a specific Plone version, you need to set an environment variable for the Plone version you want to use, eg.
``export PLONE_VERSION=5.2``

.. warning:: 8.0 is not backward-compatible.

   - The Python API of the searchandreplace utility has changed. If your setup customizes searchandreplace, it will need some work.

   - String fields are now searched. You can turn that feature off to keep 7.x functionality by setting the registry
     ``include_textline_fields`` to ``False``

From version 5.0, we are compatible with
Plone 4.3 and 5.0.

The collective.searchandreplace product was initally built for use
with eduCommons by Novell, inc, later improved by EnPraxis.  It is
currently maintained by Maurits van Rees.  Plone 5 support added by
Gagaro.

Changelog
=========

8.3 (2023-09-25)
----------------

- Depend on z3c.form instead of zope.formlib
  [gotcha]


8.2.2 (2023-03-10)
------------------

- Test on GitHub Actions on Plone 4.3-6.0.  [gotcha]

- Fix isDefaultPage moved to a different interface module.
  [Rudd-O]


8.2.1 (2022-01-06)
------------------

- Fix the title of the action category disappearing (and displaying ``object`` instead) when installing this addon.
  [Rudd-O]


8.2.0 (2021-05-26)
------------------

- Do not show "Replace" button until user has seen Preview results.
  [gotcha]


8.1.1 (2021-01-11)
------------------

- Made "Find What" field required and allow empty "Replace With".
  Fixes `issue 43 <https://github.com/collective/collective.searchandreplace/issues/43>`_.
  [spereverde]


8.1.0 (2020-03-31)
------------------

- use pytest as test runner
  [gotcha]

- Enable search and replace on lines fields, Archetypes ``ILinesField`` and dexterity ``ITuple`` with ``value_type==ITextLine``
  Can be enabled with registry ``include_lines_fields`` to True
  [gotcha]



8.0.0 (2020-03-06)
------------------

- use safe_unicode from CMFPlone
  [maurits, gotcha]

- Enable search and replace on string fields, Archetypes ``IStringField`` and dexterity ``ITextLine``
  Can be disabled with registry ``include_textline_fields`` to False
  [gotcha]

- Translate field names in preview table
  [gotcha]

- Python 3 support for 5.2
  [gotcha]

- Major refactoring for readability
  [gotcha]

- Added update_modified setting to allow replacing without updating the modified index/metadata.  [Gagaro]


7.1.3 (2017-01-12)
------------------

- Fixed ImportErrors when dexterity is not available.  [maurits]


7.1.2 (2016-08-29)
------------------

Bug fixes:

- Do not use base object when replacing [Gagaro]


7.1.1 (2016-08-02)
------------------

Bug fixes:

- Fix UnicodeEncodeError when searching for non ascii characters.
  Fixes https://github.com/collective/collective.searchandreplace/issues/33
  [maurits]

- Added Russian translation and fixed translation mistakes.  [serge73]


7.1 (2016-07-20)
----------------

New features:

- Allow overriding the permission that is checked on an object.  By
  default this is the Modify portal content permission.  But when you
  have setup a workflow that does not allow editing published content,
  for example when you require doing changes with check-out/check-in
  from Iterate, then you may want to use a different permission.  You
  can then override the utility in your own code.  [maurits]

- Save a new version in the repository, when CMFEditions is enabled
  for the changed type.  [maurits]


7.0.1 (2016-07-19)
------------------

Bug fixes:

- Synced translations, updated Dutch.  [maurits]

- Do not fail when an object from the catalog cannot be found.  Print
  a warning in the logs.  [maurits]


7.0 (2016-07-19)
----------------

Breaking changes:

- Removed ``ISearchReplaceable`` behavior.  This was introduced in version 6.
  Kept the interface for backwards compatibility, but it is not used anymore.
  Instead, by default all types are searched and replaced.
  You can configure this in the new control panel.
  There you can restrict the types that are searched, if needed.

  There are upgrade steps to install the new configuration options,
  add the control panel, and remove the behavior from existing
  dexterity types.  Before you run the upgrade steps, you may see a
  warning and an error once when accessing the site in Plone 5:

  - WARNING plone.dexterity.schema No behavior registration found for behavior named: "collective.searchandreplace.interfaces.ISearchReplaceable" - trying fallback lookup..."
  - ERROR plone.dexterity.schema Error resolving behavior collective.searchandreplace.interfaces.ISearchReplaceable

  This should cause no troubles.
  This fixes issue https://github.com/collective/collective.searchandreplace/issues/25
  [maurits]

New features:

- Added option in form to use fast search.  By default this is
  checked.  This means we use the catalog, instead of waking up every
  object in the path.  [maurits]

- Search and replace in all text fields.  Removed special cases for
  Description and Text/Body field: these are handled the same as other
  text fields now.  TextLine fields and StringFields are ignored,
  except for the Title field.  [maurits]

- Ported tests to plone.app.testing.  [maurits]

- Added number of contents affected after a search. [Gagaro]

Bug fixes:

- Fixed Travis (continuous integration) test setup for Plone 5.  [maurits]

- Minor code cleanup: pyflakes, pep8, sorting imports.  [maurits]

- Conditionally load zcml for dexterity behavior/profile and ATContentTypes.  [maurits]

- Added ``plone.resource`` to our requirements for our resources.  [maurits]


6.0.4 (2016-03-23)
------------------

- Show link to searchreplace form in parent folder when you are not
  viewing a folderish item.
  [maurits]

- Add edit links in table.
  [Gagaro]

- Keep table and form values when replacing.
  [Gagaro]

- Add an option to limit the number of results shown.  Indirectly this
  limits the number of matches to replace, because matches that are
  not shown, cannot be selected for replacement.
  [Gagaro]

- Add a setting to limit the number of characters shown before and after.
  [Gagaro]

- Disable columns in searchreplaceform view.
  [Gagaro]

- Include toggleSelect for Plone 5.
  [Gagaro]


6.0.3 (2016-02-15)
------------------

- Allowed replacing with an empty string.  Fixes #13.  [maurits]

- Fix ensure we get the attributes of the base object in _getRawText.
  [Gagaro]


6.0.2 (2016-02-08)
------------------

- In SearchAndReplace.pot added the ability to translate configure.zcml , searchreplacetable.pt.
  Added Russian translation.


6.0.1 (2016-01-16)
------------------

- Added Russian translations.  [serge73]


6.0 (2015-11-30)
----------------

- Added a behavior to add ISearchReplaceable on Dexterity content types.
  Also added a profile to set this behavior on some content types.
  [Gagaro]

- Only search and replace contents with the ISearchReplaceable interface.
  [Gagaro]


5.1 (2015-10-27)
----------------

- Required ``plone.app.textfield`` in ``setup.py``.
  [maurits]


5.0 (2015-10-27)
----------------

- Compatibility with Plone 5 and Dexterity content types.
  [Gagaro]


4.2 (2015-06-22)
----------------

- Fix translation string of status message when replacing.
  [maurits]

- Nicer message when immediately replacing all text without preview.
  [maurits]


4.1 (2015-05-05)
----------------

- Add Travis badge.
  [maurits]


4.0 (2015-04-30)
----------------

- Check if the user has the ``Modify portal content`` permission for
  each item.  Ignore items for which this is not the case.
  [maurits]

- Add separate permission for showing the action.  This makes it
  easier to restrict usage of Search and Replace if wanted.  By
  default the same roles have this permission as for the standard
  'Modify portal content' permission.  Added upgrade steps for this.
  Permission title is: 'collective.searchandreplace: Use Search And
  Replace'.
  [maurits]

- Fix i18n.  Use SearchAndReplace domain everywhere.  Update po files.
  [maurits]

- Hide 'search subfolders' option for items that are not folderish or
  a default page. [davisagli]

- Also support 'search subfolders' for default pages. [davisagli]

- Use the unicode value stored in the Archetypes BaseUnit to avoid
  UnicodeDecodeErrors when the BaseUnit's encoding is not utf8.
  [davisagli]

- Enable searching the entire site. [davisagli]

- Cleanup.  Fix tests.  Add buildout for testing with Plone 4.3.
  [maurits]

- Include permissions from CMFCore, to avoid possible startup
  problems. [maurits]

- Make the plugin appears in quick installer [ivanteoh]

- Support unicode [ivanteoh]

- Fix the total of replaced instances [ivanteoh]


3.1
---

- Updated translation files [blambert555]

- Added updated Spanish translation [blambert555]

- Added updated Brazilian Porteguese translations [blambert555]


2.0/2.1
-------

- Updated for Plone 4. All forms and functionality completely refactored and brought up to date. [blambert555]


1.0.1
-----

- Updating licensing information


1.0
---

- Initial release

            

Raw data

            {
    "_id": null,
    "home_page": "https://github.com/collective/collective.searchandreplace",
    "name": "collective.searchandreplace",
    "maintainer": "Maurits van Rees",
    "docs_url": null,
    "requires_python": ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*",
    "maintainer_email": "m.van.rees@zestsoftware.nl",
    "keywords": "batch search replace",
    "author": "enPraxis",
    "author_email": "info@enpraxis.net",
    "download_url": "https://files.pythonhosted.org/packages/26/1a/9eb6e4548dc465d730780ccad56b4048392f66b679efd6e9fe2aa173eb27/collective.searchandreplace-8.3.tar.gz",
    "platform": null,
    "description": "Introduction\n============\n\n.. image:: https://secure.travis-ci.org/collective/collective.searchandreplace.png?branch=master\n   :target: https://travis-ci.org/#!/collective/collective.searchandreplace\n\nThe collective.searchandreplace product is a Plone Add-on designed to find and replace text in Plone content objects.\n\nIt searches in all text fields (since version 7.0) and all string fields (since 8.0).\n\nThis includes default content types fields like title, description, and document text.\nIt excludes the id/short name string field.\n\nIt operates over single or multiple Plone content objects and can show a preview of changes as well as immediately perform them.\n\nFeatures include:\n\n- being able to control searching in subfolders\n- matching based on case sensitivity/insensitivity\n- maximum number of results\n- fast search using the catalog by default\n- disable the fast search to be able to search and replace raw html tags, for example replace ``<strong>text</strong>`` by ``<em>text</em>``\n\n\nDevelopment\n-----------\n\n.. image:: https://coveralls.io/repos/github/collective/collective.searchandreplace/badge.svg?branch=master\n  :target: https://coveralls.io/github/collective/collective.searchandreplace?branch=master\n\n\nBinder\n------\n\nRunning tests and demo Plone site on mybinder.org.\n\n.. image:: https://mybinder.org/badge_logo.svg\n :target: https://mybinder.org/v2/gh/collective/collective.searchandreplace/master?filepath=binder%2Fpytest.ipynb\n\n\nCompatibility\n-------------\n\nFrom version 8.0, we are compatible with\nPlone 4.3, 5.1 and 5.2.\n\nTo be able to run the buildout for a specific Plone version, you need to set an environment variable for the Plone version you want to use, eg.\n``export PLONE_VERSION=5.2``\n\n.. warning:: 8.0 is not backward-compatible.\n\n   - The Python API of the searchandreplace utility has changed. If your setup customizes searchandreplace, it will need some work.\n\n   - String fields are now searched. You can turn that feature off to keep 7.x functionality by setting the registry\n     ``include_textline_fields`` to ``False``\n\nFrom version 5.0, we are compatible with\nPlone 4.3 and 5.0.\n\nThe collective.searchandreplace product was initally built for use\nwith eduCommons by Novell, inc, later improved by EnPraxis.  It is\ncurrently maintained by Maurits van Rees.  Plone 5 support added by\nGagaro.\n\nChangelog\n=========\n\n8.3 (2023-09-25)\n----------------\n\n- Depend on z3c.form instead of zope.formlib\n  [gotcha]\n\n\n8.2.2 (2023-03-10)\n------------------\n\n- Test on GitHub Actions on Plone 4.3-6.0.  [gotcha]\n\n- Fix isDefaultPage moved to a different interface module.\n  [Rudd-O]\n\n\n8.2.1 (2022-01-06)\n------------------\n\n- Fix the title of the action category disappearing (and displaying ``object`` instead) when installing this addon.\n  [Rudd-O]\n\n\n8.2.0 (2021-05-26)\n------------------\n\n- Do not show \"Replace\" button until user has seen Preview results.\n  [gotcha]\n\n\n8.1.1 (2021-01-11)\n------------------\n\n- Made \"Find What\" field required and allow empty \"Replace With\".\n  Fixes `issue 43 <https://github.com/collective/collective.searchandreplace/issues/43>`_.\n  [spereverde]\n\n\n8.1.0 (2020-03-31)\n------------------\n\n- use pytest as test runner\n  [gotcha]\n\n- Enable search and replace on lines fields, Archetypes ``ILinesField`` and dexterity ``ITuple`` with ``value_type==ITextLine``\n  Can be enabled with registry ``include_lines_fields`` to True\n  [gotcha]\n\n\n\n8.0.0 (2020-03-06)\n------------------\n\n- use safe_unicode from CMFPlone\n  [maurits, gotcha]\n\n- Enable search and replace on string fields, Archetypes ``IStringField`` and dexterity ``ITextLine``\n  Can be disabled with registry ``include_textline_fields`` to False\n  [gotcha]\n\n- Translate field names in preview table\n  [gotcha]\n\n- Python 3 support for 5.2\n  [gotcha]\n\n- Major refactoring for readability\n  [gotcha]\n\n- Added update_modified setting to allow replacing without updating the modified index/metadata.  [Gagaro]\n\n\n7.1.3 (2017-01-12)\n------------------\n\n- Fixed ImportErrors when dexterity is not available.  [maurits]\n\n\n7.1.2 (2016-08-29)\n------------------\n\nBug fixes:\n\n- Do not use base object when replacing [Gagaro]\n\n\n7.1.1 (2016-08-02)\n------------------\n\nBug fixes:\n\n- Fix UnicodeEncodeError when searching for non ascii characters.\n  Fixes https://github.com/collective/collective.searchandreplace/issues/33\n  [maurits]\n\n- Added Russian translation and fixed translation mistakes.  [serge73]\n\n\n7.1 (2016-07-20)\n----------------\n\nNew features:\n\n- Allow overriding the permission that is checked on an object.  By\n  default this is the Modify portal content permission.  But when you\n  have setup a workflow that does not allow editing published content,\n  for example when you require doing changes with check-out/check-in\n  from Iterate, then you may want to use a different permission.  You\n  can then override the utility in your own code.  [maurits]\n\n- Save a new version in the repository, when CMFEditions is enabled\n  for the changed type.  [maurits]\n\n\n7.0.1 (2016-07-19)\n------------------\n\nBug fixes:\n\n- Synced translations, updated Dutch.  [maurits]\n\n- Do not fail when an object from the catalog cannot be found.  Print\n  a warning in the logs.  [maurits]\n\n\n7.0 (2016-07-19)\n----------------\n\nBreaking changes:\n\n- Removed ``ISearchReplaceable`` behavior.  This was introduced in version 6.\n  Kept the interface for backwards compatibility, but it is not used anymore.\n  Instead, by default all types are searched and replaced.\n  You can configure this in the new control panel.\n  There you can restrict the types that are searched, if needed.\n\n  There are upgrade steps to install the new configuration options,\n  add the control panel, and remove the behavior from existing\n  dexterity types.  Before you run the upgrade steps, you may see a\n  warning and an error once when accessing the site in Plone 5:\n\n  - WARNING plone.dexterity.schema No behavior registration found for behavior named: \"collective.searchandreplace.interfaces.ISearchReplaceable\" - trying fallback lookup...\"\n  - ERROR plone.dexterity.schema Error resolving behavior collective.searchandreplace.interfaces.ISearchReplaceable\n\n  This should cause no troubles.\n  This fixes issue https://github.com/collective/collective.searchandreplace/issues/25\n  [maurits]\n\nNew features:\n\n- Added option in form to use fast search.  By default this is\n  checked.  This means we use the catalog, instead of waking up every\n  object in the path.  [maurits]\n\n- Search and replace in all text fields.  Removed special cases for\n  Description and Text/Body field: these are handled the same as other\n  text fields now.  TextLine fields and StringFields are ignored,\n  except for the Title field.  [maurits]\n\n- Ported tests to plone.app.testing.  [maurits]\n\n- Added number of contents affected after a search. [Gagaro]\n\nBug fixes:\n\n- Fixed Travis (continuous integration) test setup for Plone 5.  [maurits]\n\n- Minor code cleanup: pyflakes, pep8, sorting imports.  [maurits]\n\n- Conditionally load zcml for dexterity behavior/profile and ATContentTypes.  [maurits]\n\n- Added ``plone.resource`` to our requirements for our resources.  [maurits]\n\n\n6.0.4 (2016-03-23)\n------------------\n\n- Show link to searchreplace form in parent folder when you are not\n  viewing a folderish item.\n  [maurits]\n\n- Add edit links in table.\n  [Gagaro]\n\n- Keep table and form values when replacing.\n  [Gagaro]\n\n- Add an option to limit the number of results shown.  Indirectly this\n  limits the number of matches to replace, because matches that are\n  not shown, cannot be selected for replacement.\n  [Gagaro]\n\n- Add a setting to limit the number of characters shown before and after.\n  [Gagaro]\n\n- Disable columns in searchreplaceform view.\n  [Gagaro]\n\n- Include toggleSelect for Plone 5.\n  [Gagaro]\n\n\n6.0.3 (2016-02-15)\n------------------\n\n- Allowed replacing with an empty string.  Fixes #13.  [maurits]\n\n- Fix ensure we get the attributes of the base object in _getRawText.\n  [Gagaro]\n\n\n6.0.2 (2016-02-08)\n------------------\n\n- In SearchAndReplace.pot added the ability to translate configure.zcml , searchreplacetable.pt.\n  Added Russian translation.\n\n\n6.0.1 (2016-01-16)\n------------------\n\n- Added Russian translations.  [serge73]\n\n\n6.0 (2015-11-30)\n----------------\n\n- Added a behavior to add ISearchReplaceable on Dexterity content types.\n  Also added a profile to set this behavior on some content types.\n  [Gagaro]\n\n- Only search and replace contents with the ISearchReplaceable interface.\n  [Gagaro]\n\n\n5.1 (2015-10-27)\n----------------\n\n- Required ``plone.app.textfield`` in ``setup.py``.\n  [maurits]\n\n\n5.0 (2015-10-27)\n----------------\n\n- Compatibility with Plone 5 and Dexterity content types.\n  [Gagaro]\n\n\n4.2 (2015-06-22)\n----------------\n\n- Fix translation string of status message when replacing.\n  [maurits]\n\n- Nicer message when immediately replacing all text without preview.\n  [maurits]\n\n\n4.1 (2015-05-05)\n----------------\n\n- Add Travis badge.\n  [maurits]\n\n\n4.0 (2015-04-30)\n----------------\n\n- Check if the user has the ``Modify portal content`` permission for\n  each item.  Ignore items for which this is not the case.\n  [maurits]\n\n- Add separate permission for showing the action.  This makes it\n  easier to restrict usage of Search and Replace if wanted.  By\n  default the same roles have this permission as for the standard\n  'Modify portal content' permission.  Added upgrade steps for this.\n  Permission title is: 'collective.searchandreplace: Use Search And\n  Replace'.\n  [maurits]\n\n- Fix i18n.  Use SearchAndReplace domain everywhere.  Update po files.\n  [maurits]\n\n- Hide 'search subfolders' option for items that are not folderish or\n  a default page. [davisagli]\n\n- Also support 'search subfolders' for default pages. [davisagli]\n\n- Use the unicode value stored in the Archetypes BaseUnit to avoid\n  UnicodeDecodeErrors when the BaseUnit's encoding is not utf8.\n  [davisagli]\n\n- Enable searching the entire site. [davisagli]\n\n- Cleanup.  Fix tests.  Add buildout for testing with Plone 4.3.\n  [maurits]\n\n- Include permissions from CMFCore, to avoid possible startup\n  problems. [maurits]\n\n- Make the plugin appears in quick installer [ivanteoh]\n\n- Support unicode [ivanteoh]\n\n- Fix the total of replaced instances [ivanteoh]\n\n\n3.1\n---\n\n- Updated translation files [blambert555]\n\n- Added updated Spanish translation [blambert555]\n\n- Added updated Brazilian Porteguese translations [blambert555]\n\n\n2.0/2.1\n-------\n\n- Updated for Plone 4. All forms and functionality completely refactored and brought up to date. [blambert555]\n\n\n1.0.1\n-----\n\n- Updating licensing information\n\n\n1.0\n---\n\n- Initial release\n",
    "bugtrack_url": null,
    "license": "GPL",
    "summary": "Batch Search and Replace",
    "version": "8.3",
    "project_urls": {
        "Homepage": "https://github.com/collective/collective.searchandreplace"
    },
    "split_keywords": [
        "batch",
        "search",
        "replace"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "ccc7f3aa7b6556a6a66949bb11722ec1a6d87df254839a50d48b6234dea111b3",
                "md5": "1b30a2482bb57a05c6c99c94edcbbf0f",
                "sha256": "a3230e431fd000427f4a6d9e7b377d43f3faa2f8b4ac8e3ad06045d303133516"
            },
            "downloads": -1,
            "filename": "collective.searchandreplace-8.3-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "1b30a2482bb57a05c6c99c94edcbbf0f",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*",
            "size": 91432,
            "upload_time": "2023-09-25T09:17:03",
            "upload_time_iso_8601": "2023-09-25T09:17:03.543208Z",
            "url": "https://files.pythonhosted.org/packages/cc/c7/f3aa7b6556a6a66949bb11722ec1a6d87df254839a50d48b6234dea111b3/collective.searchandreplace-8.3-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "261a9eb6e4548dc465d730780ccad56b4048392f66b679efd6e9fe2aa173eb27",
                "md5": "449442bee281004f081c1c5488cb7c07",
                "sha256": "4457afe227f3abfe3e02acccebe75ff0a6ac8738d6cd6cbe68e5e31ce535fac6"
            },
            "downloads": -1,
            "filename": "collective.searchandreplace-8.3.tar.gz",
            "has_sig": false,
            "md5_digest": "449442bee281004f081c1c5488cb7c07",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*",
            "size": 53881,
            "upload_time": "2023-09-25T09:17:06",
            "upload_time_iso_8601": "2023-09-25T09:17:06.179532Z",
            "url": "https://files.pythonhosted.org/packages/26/1a/9eb6e4548dc465d730780ccad56b4048392f66b679efd6e9fe2aa173eb27/collective.searchandreplace-8.3.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2023-09-25 09:17:06",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "collective",
    "github_project": "collective.searchandreplace",
    "travis_ci": true,
    "coveralls": true,
    "github_actions": true,
    "tox": true,
    "lcname": "collective.searchandreplace"
}
        
Elapsed time: 0.12735s