diff --git a/.gitignore b/.gitignore
index 547483a2fd..e47f74e21b 100644
--- a/.gitignore
+++ b/.gitignore
@@ -18,6 +18,7 @@
/etc
/experimental/develop/
/pyvenv.cfg
+/release/.tox
/release/constraints2.txt
/release/constraints3*.txt
bin
diff --git a/release/RELEASE-NOTES.md b/release/RELEASE-NOTES.md
index c1b8fe8a95..a5b89d3f3c 100644
--- a/release/RELEASE-NOTES.md
+++ b/release/RELEASE-NOTES.md
@@ -1,49 +1,36 @@
-# Release notes for Plone 5.2.14
+# Release notes for Plone 5.2.15
-* Released: Thursday September 21, 2023
-* This is expected to be the last maintenance release.
+* Released: Thursday August 1, 2024
+* This is expected to be the last maintenance release. Already one more than was promised.
* Check the [release schedule](https://plone.org/download/release-schedule).
* Read the [upgrade guide](https://5.docs.plone.org/manage/upgrading/version_specific_migration/upgrade_to_52.html), explaining the biggest changes compared to 5.1.
-* Canonical place for these [release notes](https://dist.plone.org/release/5.2.14/RELEASE-NOTES.md) and the full [packages changelog](https://dist.plone.org/release/5.2.14/changelog.txt).
+* Canonical place for these [release notes](https://dist.plone.org/release/5.2.15/RELEASE-NOTES.md) and the full [packages changelog](https://dist.plone.org/release/5.2.15/changelog.txt).
If you want to jump straight in, here are two important links:
-* With pip you can use the constraints file at [https://dist.plone.org/release/5.2.14/constraints.txt](https://dist.plone.org/release/5.2.14/constraints.txt)
-* With Buildout you can use the versions file at [https://dist.plone.org/release/5.2.14/versions.cfg](https://dist.plone.org/release/5.2.14/versions.cfg).
+* With pip you can use the constraints file at [https://dist.plone.org/release/5.2.15/constraints.txt](https://dist.plone.org/release/5.2.15/constraints.txt)
+* With Buildout you can use the versions file at [https://dist.plone.org/release/5.2.15/versions.cfg](https://dist.plone.org/release/5.2.15/versions.cfg).
## Highlights
-Major changes since 5.2.13:
-
-* This includes security fixes from today's announcement:
- * https://community.plone.org/t/plone-security-advisory-2023-09-21/17941
- * https://plone.org/security/hotfix/20230921
-* `Zope`:
- * Security fixes in `AccessControl` and `RestrictedPython`. See [community announcement](https://community.plone.org/t/zope-4-8-9-and-5-8-4-released-with-a-security-fix/17849).
- * Allow only some image types to be displayed inline. Force download for others, especially SVG images.
- * Tighten down the ZMI frame source logic to only allow site-local sources.
-* `plone.namedfile`: Fix stored XSS (Cross Site Scripting) for SVG images.
-* `plone.rest`: When ``++api++`` is in the url multiple times, redirect to the proper url.
-* `plone.restapi`:
- * Fix stored XSS (Cross Site Scripting) for SVG image in user portrait.
-* `Products.CMFCore`: Make `decodeFolderFilter` and `encodeFolderFilter` non-public.
- This is the workaround from [CVE-2023-36814](https://github.com/zopefoundation/Products.CMFCore/security/advisories/GHSA-4hpj-8rhv-9x87).
-* `plone.app.multilingual`:
- * Fix various problems when using the Indonesian language in a multilingual setup.
- This language has ``id`` as code. This is not allowed as an id in Plone, so it has always been created as ``id-id`` instead.
- This needs some special handling.
- * Fix ``set_recursive_language`` to actually find child objects. This is used to make sure that a language folder only contains content in this language.
+Major changes since 5.2.14:
+
+* `plone.recipe.zope2instance`:
+ * Add support for setting max_value_length in Sentry init. When you use this option, you should use `sentry-sdk` 1.29.0 or higher.
+ * Add ``dos_protection`` config. With Zope 5.8.4+ you may get ``zExceptions.BadRequest: data exceeds memory limit`` when uploading an image or file of more than 1 MB. To increase this limit, you can add this in your instance recipe, and choose your own limit: `zope-conf-additional = form-memory-limit 4MB`
+* `plone.app.discussion`: Provide HCaptcha if `plone.formwidget.hcaptcha` is installed. Apply validation for all captchas.
+* `plone.restapi`: Added `@site` and `@navroot` endpoints.
+* For the rest see the full packages changelog linked above.
## Last maintenance release
-Plone 5.2.14 is planned to be the last regular release of Plone 5.2.
-This release was originally planned for October, but we moved it forward to have the security fixes in a full release. If there are good reasons, we can still make a new release.
+Plone 5.2.15 is planned to be the last regular release of Plone 5.2.
-After October 2023, Plone 5.2 is out of maintenance support.
+Plone 5.2 is actually already out of maintenance support since October 2023, but I decided it was fine to gather some last changes and release them.
-There is still one year of security support, until October 31, 2024.
+There is still security support, but only until October 31, 2024.
At that moment, even Python 3.8 is out of security support by the Python community.
@@ -51,7 +38,7 @@ At that moment, even Python 3.8 is out of security support by the Python communi
This release supports Python 2.7 and 3.8.
-Python 3.6 and 3.7 should still work, but these are end of life and no longer supported.
+Python 3.6 and 3.7 should still work, but these are end-of-life, untested, and no longer supported.
Plone 5.2 still supports Python 2.7, but this is end-of-life since 2020. It should only be used as a temporary stepping stone before you migrate your Plone site to Python 3.
@@ -77,13 +64,23 @@ wheel==0.38.4
In general you are free to use whatever versions work for you, especially newer ones, but these worked for us.
Note that `setuptools` 66 is more strict with what versions it can recognize. If you run `pip` or `buildout` and it suddenly cannot find a package with a non-standard version, then this may be the cause. This is why we stayed at version 65 for Plone 5.2.
+`setuptools` 70 will cause problems with current `zc.buildout` 3.0.1, so keep your eyes out for a new `zc.buildout` release.
## Installation
For installation instructions, see the [documentation](https://5.docs.plone.org/manage/installing/index.html).
-There is still a [Unified Installer](https://launchpad.net/plone/5.2/5.2.14). One warning there: we could no longer test this on Python 2.7. It *should* work though.
+There is still a [Unified Installer](https://launchpad.net/plone/5.2/5.2.15). One warning there: we could no longer test this on Python 2.7. It *should* work though.
+
+For previous Plone 5.2 patch releases we always added all used package distributions on the dist.plone.org server, so you could use this as a "find-link" in Buildout or pip.
+This was a historical practice, mostly to have a fallback when a distribution of a third party package was removed from the Python Package Index.
+This problem hardly ever happens anymore, so the added value of uploading these distributions is questionable.
+It turned out to be harder to gather all packages, so I abandoned it.
+If you somehow need this, it should work fine to add the directory of the previous release to the find-links:
+https://dist.plone.org/release/5.2.14/
+Only a few packages have different versions in 5.2.15.
+
## Issues
diff --git a/release/changelog.txt b/release/changelog.txt
index e52cd2399f..712d378015 100644
--- a/release/changelog.txt
+++ b/release/changelog.txt
@@ -1,101 +1,120 @@
-Zope 4.8.7 → 4.8.10
--------------------
-
-- Allow only some image types to be displayed inline. Force download for others, especially SVG images. By default we use a list of allowed types. You can switch a to a list of denied types by setting OS environment variable OFS_IMAGE_USE_DENYLIST=1. You can override the allowed list with environment variable ALLOWED_INLINE_MIMETYPES and the disallowed list with DISALLOWED_INLINE_MIMETYPES. Separate multiple entries by either comma or space. This change only affects direct URL access. works the same as before. (CVE-2023-42458) See security advisory.
-- Tighten down the ZMI frame source logic to only allow site-local sources. Problem reported by Miguel Segovia Gil.
-- Update RestrictedPython to version 5.4 to fix a potential a security issue. (CVE-2023-41039)
-- Update AccessControl to version 4.4 to fix a potential a security issue. (CVE-2023-41050)
-- Sanitize tainting fixing #1095
-- Restore filename on code objects of objects returned from App.Extensions.getObject(). This got lost in 4.0a6.
-- Only set response header Content-Type as text/html on exception views when the response has content. (#1089)
-Update dependencies to the latest releases for each supported Python version.
-
-plone.recipe.zope2instance: 6.12.0 → 6.12.1
+plone.recipe.zope2instance: 6.12.1 → 6.13.0
-------------------------------------------
-Documentation:
+New features:
-- Update README: for ``RotatingFileHandler`` ``maxCount`` is not a valid keyword argument.
- Use ``backupCount``.
- [gforcada] (#190)
+- Add support for setting max_value_length in Sentry init.
+ When you use this option, you should use `sentry-sdk` 1.29.0 or higher.
+ [gyst] (#193)
+- Add ``dos_protection`` config.
+ With Zope 5.8.4+ you may get ``zExceptions.BadRequest: data exceeds memory limit`` when uploading an image or file of more than 1 MB.
+ To increase this limit, you can add this in your instance recipe, and choose your own limit::
-plone.releaser: 1.8.8 → 1.8.9
------------------------------
-Bug fixes:
+ zope-conf-additional =
+
+ form-memory-limit 4MB
+
+
+ [@mamico] (#191)
-- Allow disabling PyPI rights check, as this does not know how to check organisations.
- Set env variable ``PLONE_RELEASER_CHECK_PYPI_ACCESS=0`` if you want to disable it.
- Also, we do not check PyPI if the user is `__token__`, so using an API token.
- [maurits] (#50)
+Tests
-- Fix missing changelog entries when running ``bin/manage changelog``.
- [maurits] (#60)
+- Update tox to support python 3.10 and 3.11. (#193)
-Plone: 5.2.13 → 5.2.14
+Plone: 5.2.14 → 5.2.15
----------------------
Bug fixes:
-- Release Plone 5.2.14.
+- Release Plone 5.2.15.
[maurits]
-plone.app.multilingual: 5.6.4 → 5.6.6
--------------------------------------
+plone.app.discussion: 3.4.7 → 3.4.9
+-----------------------------------
+New features:
+
+- Provide HCaptcha if plone.formwidget.hcaptcha is installed. @ksuess (#230)
+
Bug fixes:
-- Fix setting Indonesian language cookie on site root: must be ``id``, not ``id-id``.
- [maurits] (#304)
+- Apply validation for all captchas. @ksuess (#233)
-- Fix ``set_recursive_language`` to actually find child objects.
- [maurits] (#304)
-- Root language switcher: redirect to ``id-id`` if the Indonesian language is preferred.
- [maurits] (#304)
+plone.app.linkintegrity: 3.6.1 → 3.6.2
+--------------------------------------
+Bug fixes:
-- Do not unset the language on the Indonesian root language folder when saving the control panel.
- This language has ``id`` as code. This is not allowed as an id in Plone, so it is created as ``id-id`` instead.
- This needs some special handling.
- Added upgrade to recursively fix this language folder to set the Indonesian language. This is only done when the folder itself has the wrong language.
- [maurits] (#304)
+- Report sources once per breach in delete_confirmation_info.
+ [jaroel] (#95)
-plone.app.upgrade: 2.1.6 → 2.1.7
+plone.app.locales: 5.1.33 → 5.1.34
+----------------------------------
+- Update Portuguese translation
+ [ksuess]
+
+
+plone.app.upgrade: 2.1.7 → 2.1.8
--------------------------------
Bug fixes:
-- Added upgrade to 5222, Plone 5.2.14.
- [maurits] (#5222)
+- Added upgrade to 5223, Plone 5.2.15.
+ [maurits] (#5223)
-plone.namedfile: 5.6.0 → 5.6.1
-------------------------------
+plone.app.z3cform: 3.2.4 → 3.2.5
+--------------------------------
Bug fixes:
-- Fix stored XSS (Cross Site Scripting) for SVG images.
- Done by forcing a download instead of displaying inline.
- See `security advisory `_.
- [maurits] (#1)
+- Make labels/legends of fieldsets translatable.
+ [ksuess] (#87)
-plone.restapi: 7.8.2 → 7.8.3
+plone.restapi: 7.8.3 → 7.9.0
----------------------------
-Bug fixes:
-
-- Fix content serializer with an old version of an item that was renamed. @davisagli (#1651)
+New features:
+- Added `@site` and `@navroot` endpoints. @erral (#1464)
-Products.CMFCore: 2.7.0 → 2.7.1
--------------------------------
-- Make ``decodeFolderFilter`` and ``encodeFolderFilter`` non-public.
- This is the workaround from `CVE-2023-36814 `_.
+- New version pins to run tests
+ [erral] (#1721)
-Products.CMFPlone: 5.2.13 → 5.2.14
+Products.CMFPlone: 5.2.14 → 5.2.15
----------------------------------
Bug fixes:
-- Update metadata version to 5222, Plone 5.2.14.
- [maurits] (#5222)
+- Check for container field / attribute when trying to create content with same id
+ [laulaz] (#3847)
+- Fix problem when adding a Plone site with a custom INonInstallable utility without a getNonInstallableProfiles method. (#3862)
+
+- Update metadata version to 5223, Plone 5.2.15.
+ [maurits] (#5223)
+
+
+plone.app.debugtoolbar: 1.3.0 → 1.4.0
+-------------------------------------
+New features:
+
+- Added more improvements about i18n support [macagua]
+
+ Updated Spanish translation [macagua]
+
+ Updated the documentation [macagua]
+
+ Upgraded the buildout configuration to Plone 6.0 version [macagua] (#31)
+
+
+plone.app.blocks: 5.2.1 → 5.2.2
+-------------------------------
+
+- No longer test on Python 3.7 or on Plone 6.0.
+ For Plone 6 you can use version 7 or higher.
+ Plone 5.1 is officially still supported, and Python 2.7 as well.
+ [maurits]
+- Fix for AttributeError in linkintegrity code when pasting a folder containing a page with tiles.
+ Related to `issue 97 `_.
+ [cillianderoiste]
diff --git a/release/constraints.txt b/release/constraints.txt
index 381a693b6d..57e3b879d8 100644
--- a/release/constraints.txt
+++ b/release/constraints.txt
@@ -25,7 +25,7 @@ Paste==3.5.2
PasteDeploy==2.1.1; python_version < "3.0"
PasteDeploy==3.0.1; python_version >= "3.0"
Persistence==3.6
-Plone==5.2.14
+Plone==5.2.15
Products.ATContentTypes==3.0.7; python_version < "3.0"
Products.Archetypes==1.16.6; python_version < "3.0"
Products.BTreeFolder2==4.4
@@ -35,7 +35,7 @@ Products.CMFDynamicViewFTI==6.0.3
Products.CMFEditions==3.3.5
Products.CMFFormController==4.1.4
Products.CMFPlacefulWorkflow==2.0.4
-Products.CMFPlone==5.2.14
+Products.CMFPlone==5.2.15
Products.CMFQuickInstallerTool==4.0.4
Products.CMFUid==3.5
Products.DCWorkflow==2.7.0
@@ -223,7 +223,7 @@ platformdirs==2.0.2
plone.alterego==1.1.5
plone.api==1.11.1
plone.app.blob==1.8.2; python_version < "3.0"
-plone.app.blocks==5.2.1
+plone.app.blocks==5.2.2
plone.app.caching==2.2.1
plone.app.collection==1.2.8; python_version < "3.0"
plone.app.content==3.8.10
@@ -233,9 +233,9 @@ plone.app.contentrules==4.1.6
plone.app.contenttypes==2.2.3
plone.app.controlpanel==4.0.1; python_version < "3.0"
plone.app.customerize==1.3.12
-plone.app.debugtoolbar==1.3.0
+plone.app.debugtoolbar==1.4.0
plone.app.dexterity==2.6.11
-plone.app.discussion==3.4.7
+plone.app.discussion==3.4.9
plone.app.drafts==1.1.3
plone.app.event==3.2.14
plone.app.folder==1.3.2
@@ -244,8 +244,8 @@ plone.app.imaging==2.1.2; python_version < "3.0"
plone.app.intid==1.1.4
plone.app.iterate==4.0.3
plone.app.layout==3.5.2
-plone.app.linkintegrity==3.6.1
-plone.app.locales==5.1.33
+plone.app.linkintegrity==3.6.2
+plone.app.locales==5.1.34
plone.app.lockingbehavior==1.0.7
plone.app.mosaic==2.2.5
plone.app.multilingual==5.6.6
@@ -261,7 +261,7 @@ plone.app.testing==6.1.9
plone.app.textfield==1.3.7
plone.app.theming==4.1.8
plone.app.tiles==3.3.0
-plone.app.upgrade==2.1.7
+plone.app.upgrade==2.1.8
plone.app.users==2.6.8
plone.app.uuid==2.0.2
plone.app.versioningbehavior==1.4.6
@@ -269,7 +269,7 @@ plone.app.viewletmanager==3.1.3
plone.app.vocabularies==4.3.0
plone.app.widgets==3.0.7
plone.app.workflow==4.0.4
-plone.app.z3cform==3.2.4
+plone.app.z3cform==3.2.5
plone.autoform==1.9.1
plone.batching==1.1.7
plone.behavior==1.4.0
@@ -304,14 +304,14 @@ plone.recipe.alltests==1.5.2
plone.recipe.command==1.1
plone.recipe.precompiler==0.7.2
plone.recipe.zeoserver==2.0.3
-plone.recipe.zope2instance==6.12.1
+plone.recipe.zope2instance==6.13.0
plone.registry==1.2.1
plone.releaser==1.8.9
plone.reload==3.0.2
plone.resource==2.1.4
plone.resourceeditor==3.0.4
plone.rest==1.6.2
-plone.restapi==7.8.3
+plone.restapi==7.9.0
plone.rfc822==2.0.2
plone.scale==3.1.2
plone.schema==1.4.0
diff --git a/release/constraints310.txt b/release/constraints310.txt
deleted file mode 100644
index f185b9bc54..0000000000
--- a/release/constraints310.txt
+++ /dev/null
@@ -1,413 +0,0 @@
-# File created by /Users/maurits/community/plone-coredev/6.0/release/create-constraints.py
-# Constraints parsed from /Users/maurits/community/plone-coredev/6.0/ecosystem.cfg
-AccessControl==6.2
-Acquisition==5.0
-AuthEncoding==5.0
-BTrees==5.0
-Babel==2.12.1
-Chameleon==4.1.0
-DateTime==5.2
-Deprecated==1.2.14
-DocumentTemplate==4.4
-ExtensionClass==5.0
-GitPython==3.1.32
-Jinja2==3.1.2
-Markdown==3.4.3
-MarkupSafe==2.1.3
-Missing==5.0
-MultiMapping==5.0
-Paste==3.5.3
-PasteDeploy==3.0.1
-Persistence==4.0.post1
-Pillow==9.5.0
-Plone==6.0.7
-Products.BTreeFolder2==5.1
-Products.CMFCore==3.2
-Products.CMFDiffTool==4.0.1
-Products.CMFDynamicViewFTI==7.0.1
-Products.CMFEditions==4.0.1
-Products.CMFPlacefulWorkflow==3.0.3
-Products.CMFPlone==6.0.7
-Products.CMFUid==4.0
-Products.DCWorkflow==3.0
-Products.DateRecurringIndex==3.0.1
-Products.ExtendedPathIndex==4.0.1
-Products.ExternalMethod==5.0
-Products.GenericSetup==3.0.1
-Products.MailHost==5.0
-Products.MimetypesRegistry==3.0.0
-Products.PDBDebugMode==2.0
-Products.PlonePAS==8.0.2
-Products.PluggableAuthService==2.8.1
-Products.PluginRegistry==2.0
-Products.PortalTransforms==4.0.1
-Products.PrintingMailHost==1.1.7
-Products.PythonScripts==5.0
-Products.Sessions==4.15
-Products.SiteErrorLog==6.0
-Products.StandardCacheManagers==5.0
-Products.ZCatalog==7.0
-Products.ZopeVersionControl==4.0
-Products.isurlinportal==2.0.1
-Products.statusmessages==5.0.6
-Products.validation==2.1.3
-PyGithub==1.59.0
-PyJWT==2.7.0
-PyNaCl==1.5.0
-PySocks==1.7.1
-PyYAML==6.0
-Pygments==2.16.1
-Record==4.0
-RestrictedPython==6.2
-SecretStorage==3.3.3
-Sphinx==7.2.5
-Unidecode==1.3.6
-WSGIProxy2==0.5.1
-WebOb==1.8.7
-WebTest==3.0.0
-ZConfig==4.0
-ZEO==5.4.1
-ZODB==5.8.1
-ZODB3==3.11.0
-Zope==5.8.5
-Zope2==4.0
-ZopeUndo==6.0
-alabaster==0.7.13
-argcomplete==3.1.1
-argh==0.28.1
-async-generator==1.10
-attrs==23.1.0
-backports.cached-property==1.0.2
-beautifulsoup4==4.12.2
-bleach==6.0.0
-borg.localrole==3.1.10
-build==0.10.0
-cachecontrol==0.13.1
-cached-property==1.5.2
-certifi==2023.7.22
-cffi==1.15.1
-charset-normalizer==3.2.0
-check-manifest==0.49
-click==8.1.4
-click-default-group==1.2.2
-cmarkgfm==2022.10.27
-collective.MockMailHost==2.0.0
-collective.monkeypatcher==1.2.1
-collective.recipe.omelette==1.1.0
-collective.recipe.template==2.2
-collective.recipe.vscode==0.1.9
-collective.xmltestreport==2.0.2
-collective.z3cform.datagridfield==3.0.2
-colorama==0.4.6
-commonmark==0.9.1
-configparser==5.3.0
-cryptography==41.0.3
-cssselect==1.2.0
-decorator==5.1.1
-diazo==1.5.0
-distro==1.8.0
-docutils==0.18.1
-exceptiongroup==1.1.2
-fancycompleter==0.9.1
-feedparser==6.0.10
-filelock==3.12.2
-five.customerize==2.1.0
-five.intid==1.2.7
-five.localsitemanager==4.0
-furl==2.1.3
-future==0.18.3
-gitdb==4.0.10
-gunicorn==20.1.0
-h11==0.14.0
-httplib2==0.22.0
-i18ndude==6.1.0
-icalendar==5.0.7
-idna==3.4
-imagesize==1.4.1
-importlib-metadata==6.8.0
-importlib-resources==5.13.0
-incremental==22.10.0
-jaraco.classes==3.3.0
-jeepney==0.8.0
-jsonschema==4.18.2
-jsonschema-specifications==2023.6.1
-keyring==23.13.1
-lockfile==0.12.2
-lxml==4.9.3
-manuel==1.12.4
-markdown-it-py==2.2.0
-mdurl==0.1.2
-mock==5.1.0
-more-itertools==9.1.0
-mr.developer==2.0.1
-msgpack==1.0.5
-multipart==0.2.4
-mxdev==3.0.0
-nt-svcutils==2.13.0
-oauthlib==3.2.2
-orderedmultidict==1.0.1
-outcome==1.2.0
-overrides==7.3.1
-packaging==23.1
-pdbpp==0.10.3
-pep440==0.1.2
-pep517==0.13.0
-persistent==5.0
-piexif==1.1.3
-pip==23.2
-pkginfo==1.9.6
-plone.alterego==2.0.0
-plone.api==2.0.4
-plone.app.blocks==7.0.0
-plone.app.caching==3.1.2
-plone.app.content==4.0.2
-plone.app.contentlisting==3.0.3
-plone.app.contentmenu==3.0.3
-plone.app.contentrules==5.0.2
-plone.app.contenttypes==3.0.3
-plone.app.customerize==2.0.0
-plone.app.debugtoolbar==1.3.0
-plone.app.dexterity==3.1.1
-plone.app.discussion==4.0.2
-plone.app.drafts==2.0.0
-plone.app.event==5.1.0
-plone.app.i18n==4.0.1
-plone.app.intid==2.0.0
-plone.app.iterate==5.0.2
-plone.app.jquerytools==1.9.5
-plone.app.layout==4.0.7
-plone.app.linkintegrity==4.0.2
-plone.app.locales==6.0.16
-plone.app.lockingbehavior==1.0.7
-plone.app.mosaic==3.1.4
-plone.app.multilingual==7.0.3
-plone.app.portlets==5.0.6
-plone.app.querystring==2.0.6
-plone.app.redirector==3.0.1
-plone.app.registry==2.0.2
-plone.app.relationfield==3.0.3
-plone.app.robotframework==2.1.0
-plone.app.standardtiles==3.1.2
-plone.app.testing==7.0.1
-plone.app.textfield==2.0.0
-plone.app.theming==5.0.4
-plone.app.tiles==4.0.0
-plone.app.upgrade==3.0.8
-plone.app.users==3.0.3
-plone.app.uuid==2.2.2
-plone.app.versioningbehavior==2.0.1
-plone.app.viewletmanager==4.0.3
-plone.app.vocabularies==5.0.3
-plone.app.widgets==5.0.0
-plone.app.workflow==5.0.2
-plone.app.z3cform==4.3.0
-plone.autoform==2.0.1
-plone.autoinclude==1.0.1
-plone.base==1.1.4
-plone.batching==2.0.6
-plone.behavior==2.0.0
-plone.browserlayer==3.0.1
-plone.cachepurging==3.0.1
-plone.caching==2.0.0
-plone.contentrules==3.0.0
-plone.dexterity==3.0.3
-plone.event==2.0.0
-plone.folder==4.0.0
-plone.formwidget.autocomplete==1.4.1
-plone.formwidget.namedfile==3.0.2
-plone.formwidget.recurrence==3.0.3
-plone.i18n==5.0.1
-plone.indexer==2.0.0
-plone.intelligenttext==4.0.0
-plone.jsonserializer==0.9.11
-plone.keyring==4.0.0
-plone.locking==3.0.0
-plone.memoize==3.0.2
-plone.namedfile==6.2.1
-plone.outputfilters==5.0.4
-plone.portlet.collection==4.0.3
-plone.portlet.static==4.0.1
-plone.portlets==3.0.0
-plone.protect==5.0.0
-plone.recipe.command==1.1
-plone.recipe.zeoserver==3.0.0
-plone.recipe.zope2instance==6.12.1
-plone.registry==2.0.0
-plone.releaser==2.1.1
-plone.reload==3.0.2
-plone.resource==3.0.0
-plone.resourceeditor==4.0.0
-plone.rest==3.0.1
-plone.restapi==8.43.3
-plone.rfc822==3.0.0
-plone.scale==4.0.1
-plone.schema==2.0.0
-plone.schemaeditor==4.0.4
-plone.session==4.0.4
-plone.staticresources==2.1.7
-plone.stringinterp==2.0.1
-plone.subrequest==2.0.4
-plone.supermodel==2.0.3
-plone.testing==8.0.4
-plone.theme==4.0.0
-plone.tiles==2.3.1
-plone.transformchain==3.0.0
-plone.uuid==2.0.0
-plone.versioncheck==1.8.1
-plone.volto==4.1.0
-plone.z3cform==2.0.1
-plonetheme.barceloneta==3.1.5
-progress==1.6
-prompt-toolkit==2.0.10
-py==1.11.0
-pyOpenSSL==23.2.0
-pycparser==2.21
-pyparsing==3.1.0
-pyproject-hooks==1.0.0
-pyrepl==0.9.0
-pyroma==4.2
-pyrsistent==0.19.3
-python-dateutil==2.8.2
-python-dotenv==1.0.0
-python-gettext==5.0
-pytz==2023.3.post1
-readme-renderer==40.0.0
-referencing==0.29.1
-repoze.xmliter==0.6.1
-requests==2.31.0
-requests-toolbelt==1.0.0
-responses==0.23.1
-rfc3986==2.0.0
-rich==13.4.2
-robotframework==6.0.2
-robotframework-assertion-engine==1.0.0
-robotframework-browser==16.2.0
-robotframework-debuglibrary==2.3.0
-robotframework-lsp==1.10.1
-robotframework-pythonlibcore==4.1.2
-robotframework-selenium2library==3.0.0
-robotframework-selenium2screenshots==0.8.1
-robotframework-seleniumlibrary==6.1.0
-robotframework-seleniumtestability==2.1.0
-robotsuite==2.3.2
-roman==4.1
-rpds-py==0.8.10
-selenium==4.9.1
-setuptools==68.0.0
-sgmllib3k==1.0.0
-simplejson==3.19.1
-six==1.16.0
-smmap==5.0.0
-sniffio==1.3.0
-snowballstemmer==2.2.0
-sortedcontainers==2.4.0
-soupsieve==2.5
-sphinx-rtd-theme==1.3.0
-sphinxcontrib-applehelp==1.0.7
-sphinxcontrib-devhelp==1.0.5
-sphinxcontrib-htmlhelp==2.0.4
-sphinxcontrib-jquery==4.1
-sphinxcontrib-jsmath==1.0.1
-sphinxcontrib-qthelp==1.0.6
-sphinxcontrib-serializinghtml==1.1.9
-stdlib-list==0.9.0
-tempstorage==6.0
-toml==0.10.2
-tomli==2.0.1
-towncrier==23.6.0
-transaction==3.1.0
-trio==0.22.2
-trio-websocket==0.10.3
-trove-classifiers==2023.8.7
-twine==4.0.2
-types-PyYAML==6.0.12.10
-types-toml==0.10.8.5
-typing-extensions==4.7.1
-urllib3==2.0.4
-urllib3-secure-extra==0.1.0
-wadllib==1.3.6
-waitress==2.1.2
-watchdog==3.0.0
-wcwidth==0.2.6
-webencodings==0.5.1
-webresource==1.2
-wheel==0.40.0
-wmctrl==0.4
-wrapt==1.15.0
-wsproto==1.2.0
-z3c.caching==3.0
-z3c.checkversions==2.1
-z3c.dependencychecker==2.12
-z3c.form==4.3
-z3c.formwidget.query==2.0.0
-z3c.jbot==2.0
-z3c.objpath==1.3
-z3c.pt==4.0
-z3c.relationfield==1.0
-z3c.unconfigure==2.0
-z3c.zcmlhook==2.0
-zExceptions==5.0
-zc.buildout==3.0.1
-zc.lockfile==3.0.post1
-zc.recipe.egg==2.0.7
-zc.recipe.testrunner==3.0
-zc.relation==2.0
-zdaemon==5.0
-zest.pocompile==2.0.0
-zest.releaser==9.0.0
-zestreleaser.towncrier==1.3.0
-zipp==3.16.1
-zodbpickle==3.0.1
-zodbupdate==2.0
-zodbverify==1.2.0
-zope.annotation==5.0
-zope.app.locales==4.3
-zope.browser==3.0
-zope.browsermenu==5.0
-zope.browserpage==5.0
-zope.browserresource==5.1
-zope.cachedescriptors==5.0
-zope.component==6.0
-zope.componentvocabulary==2.3.0
-zope.configuration==5.0
-zope.container==5.1
-zope.contentprovider==5.0
-zope.contenttype==5.1
-zope.copy==4.3
-zope.datetime==5.0.0
-zope.deferredimport==5.0
-zope.deprecation==5.0
-zope.dottedname==6.0
-zope.event==5.0
-zope.exceptions==5.0.1
-zope.filerepresentation==6.0
-zope.globalrequest==2.0
-zope.hookable==5.4
-zope.i18n==5.1
-zope.i18nmessageid==6.0.1
-zope.interface==6.0
-zope.intid==5.0
-zope.keyreference==6.0
-zope.lifecycleevent==5.0
-zope.location==5.0
-zope.mkzeoinstance==5.1.1
-zope.pagetemplate==5.0
-zope.processlifetime==3.0
-zope.proxy==5.0.0
-zope.ptresource==5.0
-zope.publisher==7.0
-zope.ramcache==3.0
-zope.schema==7.0.1
-zope.security==6.1
-zope.sendmail==5.3
-zope.sequencesort==5.0
-zope.site==5.0
-zope.size==5.0
-zope.structuredtext==5.0
-zope.tal==5.0.1
-zope.tales==6.0
-zope.testbrowser==6.0
-zope.testing==5.0.1
-zope.testrunner==6.1
-zope.traversing==5.0
-zope.viewlet==5.0
diff --git a/release/constraints311.txt b/release/constraints311.txt
deleted file mode 100644
index f185b9bc54..0000000000
--- a/release/constraints311.txt
+++ /dev/null
@@ -1,413 +0,0 @@
-# File created by /Users/maurits/community/plone-coredev/6.0/release/create-constraints.py
-# Constraints parsed from /Users/maurits/community/plone-coredev/6.0/ecosystem.cfg
-AccessControl==6.2
-Acquisition==5.0
-AuthEncoding==5.0
-BTrees==5.0
-Babel==2.12.1
-Chameleon==4.1.0
-DateTime==5.2
-Deprecated==1.2.14
-DocumentTemplate==4.4
-ExtensionClass==5.0
-GitPython==3.1.32
-Jinja2==3.1.2
-Markdown==3.4.3
-MarkupSafe==2.1.3
-Missing==5.0
-MultiMapping==5.0
-Paste==3.5.3
-PasteDeploy==3.0.1
-Persistence==4.0.post1
-Pillow==9.5.0
-Plone==6.0.7
-Products.BTreeFolder2==5.1
-Products.CMFCore==3.2
-Products.CMFDiffTool==4.0.1
-Products.CMFDynamicViewFTI==7.0.1
-Products.CMFEditions==4.0.1
-Products.CMFPlacefulWorkflow==3.0.3
-Products.CMFPlone==6.0.7
-Products.CMFUid==4.0
-Products.DCWorkflow==3.0
-Products.DateRecurringIndex==3.0.1
-Products.ExtendedPathIndex==4.0.1
-Products.ExternalMethod==5.0
-Products.GenericSetup==3.0.1
-Products.MailHost==5.0
-Products.MimetypesRegistry==3.0.0
-Products.PDBDebugMode==2.0
-Products.PlonePAS==8.0.2
-Products.PluggableAuthService==2.8.1
-Products.PluginRegistry==2.0
-Products.PortalTransforms==4.0.1
-Products.PrintingMailHost==1.1.7
-Products.PythonScripts==5.0
-Products.Sessions==4.15
-Products.SiteErrorLog==6.0
-Products.StandardCacheManagers==5.0
-Products.ZCatalog==7.0
-Products.ZopeVersionControl==4.0
-Products.isurlinportal==2.0.1
-Products.statusmessages==5.0.6
-Products.validation==2.1.3
-PyGithub==1.59.0
-PyJWT==2.7.0
-PyNaCl==1.5.0
-PySocks==1.7.1
-PyYAML==6.0
-Pygments==2.16.1
-Record==4.0
-RestrictedPython==6.2
-SecretStorage==3.3.3
-Sphinx==7.2.5
-Unidecode==1.3.6
-WSGIProxy2==0.5.1
-WebOb==1.8.7
-WebTest==3.0.0
-ZConfig==4.0
-ZEO==5.4.1
-ZODB==5.8.1
-ZODB3==3.11.0
-Zope==5.8.5
-Zope2==4.0
-ZopeUndo==6.0
-alabaster==0.7.13
-argcomplete==3.1.1
-argh==0.28.1
-async-generator==1.10
-attrs==23.1.0
-backports.cached-property==1.0.2
-beautifulsoup4==4.12.2
-bleach==6.0.0
-borg.localrole==3.1.10
-build==0.10.0
-cachecontrol==0.13.1
-cached-property==1.5.2
-certifi==2023.7.22
-cffi==1.15.1
-charset-normalizer==3.2.0
-check-manifest==0.49
-click==8.1.4
-click-default-group==1.2.2
-cmarkgfm==2022.10.27
-collective.MockMailHost==2.0.0
-collective.monkeypatcher==1.2.1
-collective.recipe.omelette==1.1.0
-collective.recipe.template==2.2
-collective.recipe.vscode==0.1.9
-collective.xmltestreport==2.0.2
-collective.z3cform.datagridfield==3.0.2
-colorama==0.4.6
-commonmark==0.9.1
-configparser==5.3.0
-cryptography==41.0.3
-cssselect==1.2.0
-decorator==5.1.1
-diazo==1.5.0
-distro==1.8.0
-docutils==0.18.1
-exceptiongroup==1.1.2
-fancycompleter==0.9.1
-feedparser==6.0.10
-filelock==3.12.2
-five.customerize==2.1.0
-five.intid==1.2.7
-five.localsitemanager==4.0
-furl==2.1.3
-future==0.18.3
-gitdb==4.0.10
-gunicorn==20.1.0
-h11==0.14.0
-httplib2==0.22.0
-i18ndude==6.1.0
-icalendar==5.0.7
-idna==3.4
-imagesize==1.4.1
-importlib-metadata==6.8.0
-importlib-resources==5.13.0
-incremental==22.10.0
-jaraco.classes==3.3.0
-jeepney==0.8.0
-jsonschema==4.18.2
-jsonschema-specifications==2023.6.1
-keyring==23.13.1
-lockfile==0.12.2
-lxml==4.9.3
-manuel==1.12.4
-markdown-it-py==2.2.0
-mdurl==0.1.2
-mock==5.1.0
-more-itertools==9.1.0
-mr.developer==2.0.1
-msgpack==1.0.5
-multipart==0.2.4
-mxdev==3.0.0
-nt-svcutils==2.13.0
-oauthlib==3.2.2
-orderedmultidict==1.0.1
-outcome==1.2.0
-overrides==7.3.1
-packaging==23.1
-pdbpp==0.10.3
-pep440==0.1.2
-pep517==0.13.0
-persistent==5.0
-piexif==1.1.3
-pip==23.2
-pkginfo==1.9.6
-plone.alterego==2.0.0
-plone.api==2.0.4
-plone.app.blocks==7.0.0
-plone.app.caching==3.1.2
-plone.app.content==4.0.2
-plone.app.contentlisting==3.0.3
-plone.app.contentmenu==3.0.3
-plone.app.contentrules==5.0.2
-plone.app.contenttypes==3.0.3
-plone.app.customerize==2.0.0
-plone.app.debugtoolbar==1.3.0
-plone.app.dexterity==3.1.1
-plone.app.discussion==4.0.2
-plone.app.drafts==2.0.0
-plone.app.event==5.1.0
-plone.app.i18n==4.0.1
-plone.app.intid==2.0.0
-plone.app.iterate==5.0.2
-plone.app.jquerytools==1.9.5
-plone.app.layout==4.0.7
-plone.app.linkintegrity==4.0.2
-plone.app.locales==6.0.16
-plone.app.lockingbehavior==1.0.7
-plone.app.mosaic==3.1.4
-plone.app.multilingual==7.0.3
-plone.app.portlets==5.0.6
-plone.app.querystring==2.0.6
-plone.app.redirector==3.0.1
-plone.app.registry==2.0.2
-plone.app.relationfield==3.0.3
-plone.app.robotframework==2.1.0
-plone.app.standardtiles==3.1.2
-plone.app.testing==7.0.1
-plone.app.textfield==2.0.0
-plone.app.theming==5.0.4
-plone.app.tiles==4.0.0
-plone.app.upgrade==3.0.8
-plone.app.users==3.0.3
-plone.app.uuid==2.2.2
-plone.app.versioningbehavior==2.0.1
-plone.app.viewletmanager==4.0.3
-plone.app.vocabularies==5.0.3
-plone.app.widgets==5.0.0
-plone.app.workflow==5.0.2
-plone.app.z3cform==4.3.0
-plone.autoform==2.0.1
-plone.autoinclude==1.0.1
-plone.base==1.1.4
-plone.batching==2.0.6
-plone.behavior==2.0.0
-plone.browserlayer==3.0.1
-plone.cachepurging==3.0.1
-plone.caching==2.0.0
-plone.contentrules==3.0.0
-plone.dexterity==3.0.3
-plone.event==2.0.0
-plone.folder==4.0.0
-plone.formwidget.autocomplete==1.4.1
-plone.formwidget.namedfile==3.0.2
-plone.formwidget.recurrence==3.0.3
-plone.i18n==5.0.1
-plone.indexer==2.0.0
-plone.intelligenttext==4.0.0
-plone.jsonserializer==0.9.11
-plone.keyring==4.0.0
-plone.locking==3.0.0
-plone.memoize==3.0.2
-plone.namedfile==6.2.1
-plone.outputfilters==5.0.4
-plone.portlet.collection==4.0.3
-plone.portlet.static==4.0.1
-plone.portlets==3.0.0
-plone.protect==5.0.0
-plone.recipe.command==1.1
-plone.recipe.zeoserver==3.0.0
-plone.recipe.zope2instance==6.12.1
-plone.registry==2.0.0
-plone.releaser==2.1.1
-plone.reload==3.0.2
-plone.resource==3.0.0
-plone.resourceeditor==4.0.0
-plone.rest==3.0.1
-plone.restapi==8.43.3
-plone.rfc822==3.0.0
-plone.scale==4.0.1
-plone.schema==2.0.0
-plone.schemaeditor==4.0.4
-plone.session==4.0.4
-plone.staticresources==2.1.7
-plone.stringinterp==2.0.1
-plone.subrequest==2.0.4
-plone.supermodel==2.0.3
-plone.testing==8.0.4
-plone.theme==4.0.0
-plone.tiles==2.3.1
-plone.transformchain==3.0.0
-plone.uuid==2.0.0
-plone.versioncheck==1.8.1
-plone.volto==4.1.0
-plone.z3cform==2.0.1
-plonetheme.barceloneta==3.1.5
-progress==1.6
-prompt-toolkit==2.0.10
-py==1.11.0
-pyOpenSSL==23.2.0
-pycparser==2.21
-pyparsing==3.1.0
-pyproject-hooks==1.0.0
-pyrepl==0.9.0
-pyroma==4.2
-pyrsistent==0.19.3
-python-dateutil==2.8.2
-python-dotenv==1.0.0
-python-gettext==5.0
-pytz==2023.3.post1
-readme-renderer==40.0.0
-referencing==0.29.1
-repoze.xmliter==0.6.1
-requests==2.31.0
-requests-toolbelt==1.0.0
-responses==0.23.1
-rfc3986==2.0.0
-rich==13.4.2
-robotframework==6.0.2
-robotframework-assertion-engine==1.0.0
-robotframework-browser==16.2.0
-robotframework-debuglibrary==2.3.0
-robotframework-lsp==1.10.1
-robotframework-pythonlibcore==4.1.2
-robotframework-selenium2library==3.0.0
-robotframework-selenium2screenshots==0.8.1
-robotframework-seleniumlibrary==6.1.0
-robotframework-seleniumtestability==2.1.0
-robotsuite==2.3.2
-roman==4.1
-rpds-py==0.8.10
-selenium==4.9.1
-setuptools==68.0.0
-sgmllib3k==1.0.0
-simplejson==3.19.1
-six==1.16.0
-smmap==5.0.0
-sniffio==1.3.0
-snowballstemmer==2.2.0
-sortedcontainers==2.4.0
-soupsieve==2.5
-sphinx-rtd-theme==1.3.0
-sphinxcontrib-applehelp==1.0.7
-sphinxcontrib-devhelp==1.0.5
-sphinxcontrib-htmlhelp==2.0.4
-sphinxcontrib-jquery==4.1
-sphinxcontrib-jsmath==1.0.1
-sphinxcontrib-qthelp==1.0.6
-sphinxcontrib-serializinghtml==1.1.9
-stdlib-list==0.9.0
-tempstorage==6.0
-toml==0.10.2
-tomli==2.0.1
-towncrier==23.6.0
-transaction==3.1.0
-trio==0.22.2
-trio-websocket==0.10.3
-trove-classifiers==2023.8.7
-twine==4.0.2
-types-PyYAML==6.0.12.10
-types-toml==0.10.8.5
-typing-extensions==4.7.1
-urllib3==2.0.4
-urllib3-secure-extra==0.1.0
-wadllib==1.3.6
-waitress==2.1.2
-watchdog==3.0.0
-wcwidth==0.2.6
-webencodings==0.5.1
-webresource==1.2
-wheel==0.40.0
-wmctrl==0.4
-wrapt==1.15.0
-wsproto==1.2.0
-z3c.caching==3.0
-z3c.checkversions==2.1
-z3c.dependencychecker==2.12
-z3c.form==4.3
-z3c.formwidget.query==2.0.0
-z3c.jbot==2.0
-z3c.objpath==1.3
-z3c.pt==4.0
-z3c.relationfield==1.0
-z3c.unconfigure==2.0
-z3c.zcmlhook==2.0
-zExceptions==5.0
-zc.buildout==3.0.1
-zc.lockfile==3.0.post1
-zc.recipe.egg==2.0.7
-zc.recipe.testrunner==3.0
-zc.relation==2.0
-zdaemon==5.0
-zest.pocompile==2.0.0
-zest.releaser==9.0.0
-zestreleaser.towncrier==1.3.0
-zipp==3.16.1
-zodbpickle==3.0.1
-zodbupdate==2.0
-zodbverify==1.2.0
-zope.annotation==5.0
-zope.app.locales==4.3
-zope.browser==3.0
-zope.browsermenu==5.0
-zope.browserpage==5.0
-zope.browserresource==5.1
-zope.cachedescriptors==5.0
-zope.component==6.0
-zope.componentvocabulary==2.3.0
-zope.configuration==5.0
-zope.container==5.1
-zope.contentprovider==5.0
-zope.contenttype==5.1
-zope.copy==4.3
-zope.datetime==5.0.0
-zope.deferredimport==5.0
-zope.deprecation==5.0
-zope.dottedname==6.0
-zope.event==5.0
-zope.exceptions==5.0.1
-zope.filerepresentation==6.0
-zope.globalrequest==2.0
-zope.hookable==5.4
-zope.i18n==5.1
-zope.i18nmessageid==6.0.1
-zope.interface==6.0
-zope.intid==5.0
-zope.keyreference==6.0
-zope.lifecycleevent==5.0
-zope.location==5.0
-zope.mkzeoinstance==5.1.1
-zope.pagetemplate==5.0
-zope.processlifetime==3.0
-zope.proxy==5.0.0
-zope.ptresource==5.0
-zope.publisher==7.0
-zope.ramcache==3.0
-zope.schema==7.0.1
-zope.security==6.1
-zope.sendmail==5.3
-zope.sequencesort==5.0
-zope.site==5.0
-zope.size==5.0
-zope.structuredtext==5.0
-zope.tal==5.0.1
-zope.tales==6.0
-zope.testbrowser==6.0
-zope.testing==5.0.1
-zope.testrunner==6.1
-zope.traversing==5.0
-zope.viewlet==5.0
diff --git a/release/constraints39.txt b/release/constraints39.txt
deleted file mode 100644
index f185b9bc54..0000000000
--- a/release/constraints39.txt
+++ /dev/null
@@ -1,413 +0,0 @@
-# File created by /Users/maurits/community/plone-coredev/6.0/release/create-constraints.py
-# Constraints parsed from /Users/maurits/community/plone-coredev/6.0/ecosystem.cfg
-AccessControl==6.2
-Acquisition==5.0
-AuthEncoding==5.0
-BTrees==5.0
-Babel==2.12.1
-Chameleon==4.1.0
-DateTime==5.2
-Deprecated==1.2.14
-DocumentTemplate==4.4
-ExtensionClass==5.0
-GitPython==3.1.32
-Jinja2==3.1.2
-Markdown==3.4.3
-MarkupSafe==2.1.3
-Missing==5.0
-MultiMapping==5.0
-Paste==3.5.3
-PasteDeploy==3.0.1
-Persistence==4.0.post1
-Pillow==9.5.0
-Plone==6.0.7
-Products.BTreeFolder2==5.1
-Products.CMFCore==3.2
-Products.CMFDiffTool==4.0.1
-Products.CMFDynamicViewFTI==7.0.1
-Products.CMFEditions==4.0.1
-Products.CMFPlacefulWorkflow==3.0.3
-Products.CMFPlone==6.0.7
-Products.CMFUid==4.0
-Products.DCWorkflow==3.0
-Products.DateRecurringIndex==3.0.1
-Products.ExtendedPathIndex==4.0.1
-Products.ExternalMethod==5.0
-Products.GenericSetup==3.0.1
-Products.MailHost==5.0
-Products.MimetypesRegistry==3.0.0
-Products.PDBDebugMode==2.0
-Products.PlonePAS==8.0.2
-Products.PluggableAuthService==2.8.1
-Products.PluginRegistry==2.0
-Products.PortalTransforms==4.0.1
-Products.PrintingMailHost==1.1.7
-Products.PythonScripts==5.0
-Products.Sessions==4.15
-Products.SiteErrorLog==6.0
-Products.StandardCacheManagers==5.0
-Products.ZCatalog==7.0
-Products.ZopeVersionControl==4.0
-Products.isurlinportal==2.0.1
-Products.statusmessages==5.0.6
-Products.validation==2.1.3
-PyGithub==1.59.0
-PyJWT==2.7.0
-PyNaCl==1.5.0
-PySocks==1.7.1
-PyYAML==6.0
-Pygments==2.16.1
-Record==4.0
-RestrictedPython==6.2
-SecretStorage==3.3.3
-Sphinx==7.2.5
-Unidecode==1.3.6
-WSGIProxy2==0.5.1
-WebOb==1.8.7
-WebTest==3.0.0
-ZConfig==4.0
-ZEO==5.4.1
-ZODB==5.8.1
-ZODB3==3.11.0
-Zope==5.8.5
-Zope2==4.0
-ZopeUndo==6.0
-alabaster==0.7.13
-argcomplete==3.1.1
-argh==0.28.1
-async-generator==1.10
-attrs==23.1.0
-backports.cached-property==1.0.2
-beautifulsoup4==4.12.2
-bleach==6.0.0
-borg.localrole==3.1.10
-build==0.10.0
-cachecontrol==0.13.1
-cached-property==1.5.2
-certifi==2023.7.22
-cffi==1.15.1
-charset-normalizer==3.2.0
-check-manifest==0.49
-click==8.1.4
-click-default-group==1.2.2
-cmarkgfm==2022.10.27
-collective.MockMailHost==2.0.0
-collective.monkeypatcher==1.2.1
-collective.recipe.omelette==1.1.0
-collective.recipe.template==2.2
-collective.recipe.vscode==0.1.9
-collective.xmltestreport==2.0.2
-collective.z3cform.datagridfield==3.0.2
-colorama==0.4.6
-commonmark==0.9.1
-configparser==5.3.0
-cryptography==41.0.3
-cssselect==1.2.0
-decorator==5.1.1
-diazo==1.5.0
-distro==1.8.0
-docutils==0.18.1
-exceptiongroup==1.1.2
-fancycompleter==0.9.1
-feedparser==6.0.10
-filelock==3.12.2
-five.customerize==2.1.0
-five.intid==1.2.7
-five.localsitemanager==4.0
-furl==2.1.3
-future==0.18.3
-gitdb==4.0.10
-gunicorn==20.1.0
-h11==0.14.0
-httplib2==0.22.0
-i18ndude==6.1.0
-icalendar==5.0.7
-idna==3.4
-imagesize==1.4.1
-importlib-metadata==6.8.0
-importlib-resources==5.13.0
-incremental==22.10.0
-jaraco.classes==3.3.0
-jeepney==0.8.0
-jsonschema==4.18.2
-jsonschema-specifications==2023.6.1
-keyring==23.13.1
-lockfile==0.12.2
-lxml==4.9.3
-manuel==1.12.4
-markdown-it-py==2.2.0
-mdurl==0.1.2
-mock==5.1.0
-more-itertools==9.1.0
-mr.developer==2.0.1
-msgpack==1.0.5
-multipart==0.2.4
-mxdev==3.0.0
-nt-svcutils==2.13.0
-oauthlib==3.2.2
-orderedmultidict==1.0.1
-outcome==1.2.0
-overrides==7.3.1
-packaging==23.1
-pdbpp==0.10.3
-pep440==0.1.2
-pep517==0.13.0
-persistent==5.0
-piexif==1.1.3
-pip==23.2
-pkginfo==1.9.6
-plone.alterego==2.0.0
-plone.api==2.0.4
-plone.app.blocks==7.0.0
-plone.app.caching==3.1.2
-plone.app.content==4.0.2
-plone.app.contentlisting==3.0.3
-plone.app.contentmenu==3.0.3
-plone.app.contentrules==5.0.2
-plone.app.contenttypes==3.0.3
-plone.app.customerize==2.0.0
-plone.app.debugtoolbar==1.3.0
-plone.app.dexterity==3.1.1
-plone.app.discussion==4.0.2
-plone.app.drafts==2.0.0
-plone.app.event==5.1.0
-plone.app.i18n==4.0.1
-plone.app.intid==2.0.0
-plone.app.iterate==5.0.2
-plone.app.jquerytools==1.9.5
-plone.app.layout==4.0.7
-plone.app.linkintegrity==4.0.2
-plone.app.locales==6.0.16
-plone.app.lockingbehavior==1.0.7
-plone.app.mosaic==3.1.4
-plone.app.multilingual==7.0.3
-plone.app.portlets==5.0.6
-plone.app.querystring==2.0.6
-plone.app.redirector==3.0.1
-plone.app.registry==2.0.2
-plone.app.relationfield==3.0.3
-plone.app.robotframework==2.1.0
-plone.app.standardtiles==3.1.2
-plone.app.testing==7.0.1
-plone.app.textfield==2.0.0
-plone.app.theming==5.0.4
-plone.app.tiles==4.0.0
-plone.app.upgrade==3.0.8
-plone.app.users==3.0.3
-plone.app.uuid==2.2.2
-plone.app.versioningbehavior==2.0.1
-plone.app.viewletmanager==4.0.3
-plone.app.vocabularies==5.0.3
-plone.app.widgets==5.0.0
-plone.app.workflow==5.0.2
-plone.app.z3cform==4.3.0
-plone.autoform==2.0.1
-plone.autoinclude==1.0.1
-plone.base==1.1.4
-plone.batching==2.0.6
-plone.behavior==2.0.0
-plone.browserlayer==3.0.1
-plone.cachepurging==3.0.1
-plone.caching==2.0.0
-plone.contentrules==3.0.0
-plone.dexterity==3.0.3
-plone.event==2.0.0
-plone.folder==4.0.0
-plone.formwidget.autocomplete==1.4.1
-plone.formwidget.namedfile==3.0.2
-plone.formwidget.recurrence==3.0.3
-plone.i18n==5.0.1
-plone.indexer==2.0.0
-plone.intelligenttext==4.0.0
-plone.jsonserializer==0.9.11
-plone.keyring==4.0.0
-plone.locking==3.0.0
-plone.memoize==3.0.2
-plone.namedfile==6.2.1
-plone.outputfilters==5.0.4
-plone.portlet.collection==4.0.3
-plone.portlet.static==4.0.1
-plone.portlets==3.0.0
-plone.protect==5.0.0
-plone.recipe.command==1.1
-plone.recipe.zeoserver==3.0.0
-plone.recipe.zope2instance==6.12.1
-plone.registry==2.0.0
-plone.releaser==2.1.1
-plone.reload==3.0.2
-plone.resource==3.0.0
-plone.resourceeditor==4.0.0
-plone.rest==3.0.1
-plone.restapi==8.43.3
-plone.rfc822==3.0.0
-plone.scale==4.0.1
-plone.schema==2.0.0
-plone.schemaeditor==4.0.4
-plone.session==4.0.4
-plone.staticresources==2.1.7
-plone.stringinterp==2.0.1
-plone.subrequest==2.0.4
-plone.supermodel==2.0.3
-plone.testing==8.0.4
-plone.theme==4.0.0
-plone.tiles==2.3.1
-plone.transformchain==3.0.0
-plone.uuid==2.0.0
-plone.versioncheck==1.8.1
-plone.volto==4.1.0
-plone.z3cform==2.0.1
-plonetheme.barceloneta==3.1.5
-progress==1.6
-prompt-toolkit==2.0.10
-py==1.11.0
-pyOpenSSL==23.2.0
-pycparser==2.21
-pyparsing==3.1.0
-pyproject-hooks==1.0.0
-pyrepl==0.9.0
-pyroma==4.2
-pyrsistent==0.19.3
-python-dateutil==2.8.2
-python-dotenv==1.0.0
-python-gettext==5.0
-pytz==2023.3.post1
-readme-renderer==40.0.0
-referencing==0.29.1
-repoze.xmliter==0.6.1
-requests==2.31.0
-requests-toolbelt==1.0.0
-responses==0.23.1
-rfc3986==2.0.0
-rich==13.4.2
-robotframework==6.0.2
-robotframework-assertion-engine==1.0.0
-robotframework-browser==16.2.0
-robotframework-debuglibrary==2.3.0
-robotframework-lsp==1.10.1
-robotframework-pythonlibcore==4.1.2
-robotframework-selenium2library==3.0.0
-robotframework-selenium2screenshots==0.8.1
-robotframework-seleniumlibrary==6.1.0
-robotframework-seleniumtestability==2.1.0
-robotsuite==2.3.2
-roman==4.1
-rpds-py==0.8.10
-selenium==4.9.1
-setuptools==68.0.0
-sgmllib3k==1.0.0
-simplejson==3.19.1
-six==1.16.0
-smmap==5.0.0
-sniffio==1.3.0
-snowballstemmer==2.2.0
-sortedcontainers==2.4.0
-soupsieve==2.5
-sphinx-rtd-theme==1.3.0
-sphinxcontrib-applehelp==1.0.7
-sphinxcontrib-devhelp==1.0.5
-sphinxcontrib-htmlhelp==2.0.4
-sphinxcontrib-jquery==4.1
-sphinxcontrib-jsmath==1.0.1
-sphinxcontrib-qthelp==1.0.6
-sphinxcontrib-serializinghtml==1.1.9
-stdlib-list==0.9.0
-tempstorage==6.0
-toml==0.10.2
-tomli==2.0.1
-towncrier==23.6.0
-transaction==3.1.0
-trio==0.22.2
-trio-websocket==0.10.3
-trove-classifiers==2023.8.7
-twine==4.0.2
-types-PyYAML==6.0.12.10
-types-toml==0.10.8.5
-typing-extensions==4.7.1
-urllib3==2.0.4
-urllib3-secure-extra==0.1.0
-wadllib==1.3.6
-waitress==2.1.2
-watchdog==3.0.0
-wcwidth==0.2.6
-webencodings==0.5.1
-webresource==1.2
-wheel==0.40.0
-wmctrl==0.4
-wrapt==1.15.0
-wsproto==1.2.0
-z3c.caching==3.0
-z3c.checkversions==2.1
-z3c.dependencychecker==2.12
-z3c.form==4.3
-z3c.formwidget.query==2.0.0
-z3c.jbot==2.0
-z3c.objpath==1.3
-z3c.pt==4.0
-z3c.relationfield==1.0
-z3c.unconfigure==2.0
-z3c.zcmlhook==2.0
-zExceptions==5.0
-zc.buildout==3.0.1
-zc.lockfile==3.0.post1
-zc.recipe.egg==2.0.7
-zc.recipe.testrunner==3.0
-zc.relation==2.0
-zdaemon==5.0
-zest.pocompile==2.0.0
-zest.releaser==9.0.0
-zestreleaser.towncrier==1.3.0
-zipp==3.16.1
-zodbpickle==3.0.1
-zodbupdate==2.0
-zodbverify==1.2.0
-zope.annotation==5.0
-zope.app.locales==4.3
-zope.browser==3.0
-zope.browsermenu==5.0
-zope.browserpage==5.0
-zope.browserresource==5.1
-zope.cachedescriptors==5.0
-zope.component==6.0
-zope.componentvocabulary==2.3.0
-zope.configuration==5.0
-zope.container==5.1
-zope.contentprovider==5.0
-zope.contenttype==5.1
-zope.copy==4.3
-zope.datetime==5.0.0
-zope.deferredimport==5.0
-zope.deprecation==5.0
-zope.dottedname==6.0
-zope.event==5.0
-zope.exceptions==5.0.1
-zope.filerepresentation==6.0
-zope.globalrequest==2.0
-zope.hookable==5.4
-zope.i18n==5.1
-zope.i18nmessageid==6.0.1
-zope.interface==6.0
-zope.intid==5.0
-zope.keyreference==6.0
-zope.lifecycleevent==5.0
-zope.location==5.0
-zope.mkzeoinstance==5.1.1
-zope.pagetemplate==5.0
-zope.processlifetime==3.0
-zope.proxy==5.0.0
-zope.ptresource==5.0
-zope.publisher==7.0
-zope.ramcache==3.0
-zope.schema==7.0.1
-zope.security==6.1
-zope.sendmail==5.3
-zope.sequencesort==5.0
-zope.site==5.0
-zope.size==5.0
-zope.structuredtext==5.0
-zope.tal==5.0.1
-zope.tales==6.0
-zope.testbrowser==6.0
-zope.testing==5.0.1
-zope.testrunner==6.1
-zope.traversing==5.0
-zope.viewlet==5.0
diff --git a/release/tox.ini b/release/tox.ini
index 37b9f2d5ca..699efc1e23 100644
--- a/release/tox.ini
+++ b/release/tox.ini
@@ -3,8 +3,6 @@ envlist =
constraints2,
constraints38,
constraints,
- downloads2,
- downloads3,
gather,
[testenv]
@@ -27,32 +25,9 @@ depends = constraints2, constraints38
commands_pre =
commands = python combine-constraints.py {toxinidir}
-[testenv:downloads2]
-# Use pip to download all pinned packages.
-basepython = python2.7
-depends = constraints
-commands_pre = pip install -U pip
-commands =
-# I tried first calling with --no-binary :all: to get source distributions
-# and then with --only-binary :all: to get binary wheels.
-# This fails at the first package that has no such distribution.
-# Uninstalling wheel did not influence this.
- pip download -r {toxinidir}/constraints2.txt --dest {toxinidir}/dist
-# If you want to remove old dists (like a CMFPlone rc after you have done a final),
-# do 'mv dist olddist', and use the next line in both downloads2 and downloads3:
-# pip download -r {toxinidir}/constraints.txt --dest {toxinidir}/dist --no-index --find-links {toxinidir}/olddist
-
-[testenv:downloads3]
-basepython = python3.8
-depends = constraints
-commands_pre = pip install -U pip
-commands =
- pip download -r {toxinidir}/constraints38.txt --dest {toxinidir}/dist
-
[testenv:gather]
# Copy a few more files to the dist directory, for syncing with dist.plone.org.
basepython = python3.8
-depends = downloads2, downloads3
allowlist_externals =
cp
mkdir