From f36ea5a93a02c0abcd14ef80672867dc3d4cf700 Mon Sep 17 00:00:00 2001 From: ale-rt Date: Thu, 13 Nov 2025 17:11:09 +0100 Subject: [PATCH] Support Plone 6.0+ and Python3.9+ Actually no change was done in the code, but supporting GHA for older versions is not feasible anymore. --- .gha.cfg | 5 + .github/workflows/tests.yml | 25 +++-- CHANGES.rst | 5 +- Makefile | 106 ------------------ README.rst | 13 ++- base.cfg | 4 +- plone-5.1.x.cfg | 80 ------------- plone-5.2.x.cfg | 53 --------- plone-6.0.x.cfg | 9 ++ plone-6.1.x.cfg | 9 ++ requirements-6.0.txt | 1 + requirements-6.1.txt | 1 + requirements.txt | 4 - setup.py | 15 +-- .../workspace/tests/test_workspace.py | 2 +- .../workspace/tests/workspace.robot | 15 ++- versions.cfg | 50 --------- 17 files changed, 77 insertions(+), 320 deletions(-) delete mode 100644 Makefile delete mode 100644 plone-5.1.x.cfg delete mode 100644 plone-5.2.x.cfg create mode 100644 plone-6.0.x.cfg create mode 100644 plone-6.1.x.cfg create mode 100644 requirements-6.0.txt create mode 100644 requirements-6.1.txt delete mode 100644 requirements.txt delete mode 100644 versions.cfg diff --git a/.gha.cfg b/.gha.cfg index af1a4f2..c3ea277 100644 --- a/.gha.cfg +++ b/.gha.cfg @@ -5,3 +5,8 @@ extends = plone-x.x.x.cfg recipe = plone.recipe.codeanalysis pre-commit-hook = False return-status-codes = True + +[versions] +# Use the versions from the requirements files +setuptools = +zc.buildout = diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 37676bb..6975d1e 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -15,19 +15,16 @@ jobs: strategy: matrix: config: - - ["Py2.7-Plone5.1", "2.7", "5.1"] - - ["Py2.7-Plone5.2", "2.7", "5.2"] - - ["Py3.6-Plone5.2", "3.6", "5.2"] - - ["Py3.7-Plone5.2", "3.7", "5.2"] - - ["Py3.8-Plone5.2", "3.8", "5.2"] + - ["Py3.9-Plone6.0", "3.9", "6.0"] + - ["Py3.13-Plone6.1", "3.13", "6.1"] steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v5 - name: Set up Python ${{ matrix.config[1] }} - uses: actions/setup-python@v2 + uses: actions/setup-python@v6 with: python-version: ${{ matrix.config[1] }} - name: Pip cache - uses: actions/cache@v2 + uses: actions/cache@v4 with: path: | ~/.cache/pip @@ -44,10 +41,14 @@ jobs: echo "[buildout]" > $HOME/.buildout/default.cfg echo "download-cache = $HOME/buildout-cache/downloads" >> $HOME/.buildout/default.cfg echo "eggs-directory = $HOME/buildout-cache/eggs" >> $HOME/.buildout/default.cfg - wget https://github.com/mozilla/geckodriver/releases/download/v0.26.0/geckodriver-v0.26.0-linux64.tar.gz - mkdir geckodriver && tar zxvf geckodriver-v0.26.0-linux64.tar.gz -C geckodriver - python -m pip install --upgrade pip - pip install -r requirements.txt + echo "abi-tag-eggs = true" >> $HOME/.buildout/default.cfg + + - name: Install requirements and buildout + run: | + pip install -r requirements-${{ matrix.config[2] }}.txt + + - name: Run buildout + run: | sed -ie "s#plone-x.x.x.cfg#plone-${{ matrix.config[2] }}.x.cfg#" .gha.cfg buildout -c .gha.cfg - name: Test diff --git a/CHANGES.rst b/CHANGES.rst index b1f4189..0ac60ad 100644 --- a/CHANGES.rst +++ b/CHANGES.rst @@ -1,10 +1,11 @@ Changelog ========= -3.0.1 (unreleased) +4.0.0 (unreleased) ------------------ -- Nothing changed yet. +- Support only Python 3.9+ and Plone 6.0+ + [ale-rt] 3.0.0 (2021-02-17) diff --git a/Makefile b/Makefile deleted file mode 100644 index 5d3ae6b..0000000 --- a/Makefile +++ /dev/null @@ -1,106 +0,0 @@ -# keep in sync with: https://github.com/kitconcept/buildout/edit/master/Makefile -# update by running 'make update' -SHELL := /bin/bash -CURRENT_DIR:=$(shell dirname $(realpath $(lastword $(MAKEFILE_LIST)))) - -version = 3 - -# We like colors -# From: https://coderwall.com/p/izxssa/colored-makefile-for-golang-projects -RED=`tput setaf 1` -GREEN=`tput setaf 2` -RESET=`tput sgr0` -YELLOW=`tput setaf 3` - -all: .installed.cfg - -# Add the following 'help' target to your Makefile -# And add help text after each target name starting with '\#\#' -.PHONY: help -help: ## This help message - @grep -E '^[a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST) | sort | awk 'BEGIN {FS = ":.*?## "}; {printf "\033[36m%-30s\033[0m %s\n", $$1, $$2}' - -.PHONY: Update Makefile and Buildout -update: ## Update Make and Buildout - wget -O Makefile https://raw.githubusercontent.com/kitconcept/buildout/master/Makefile - wget -O requirements.txt https://raw.githubusercontent.com/kitconcept/buildout/master/requirements.txt - wget -O plone-5.1.x.cfg https://raw.githubusercontent.com/kitconcept/buildout/master/plone-5.1.x.cfg - wget -O plone-5.2.x.cfg https://raw.githubusercontent.com/kitconcept/buildout/master/plone-5.2.x.cfg - wget -O versions.cfg https://raw.githubusercontent.com/kitconcept/buildout/master/versions.cfg - -.installed.cfg: bin/buildout *.cfg - bin/buildout - -bin/buildout: bin/pip - bin/pip install --upgrade pip - bin/pip install -r requirements.txt - bin/pip install black || true - @touch -c $@ - -bin/python bin/pip: - python$(version) -m venv . || virtualenv --clear --python=python$(version) . - -py2: - virtualenv --clear --python=python2 . - bin/pip install --upgrade pip - bin/pip install -r requirements.txt - -.PHONY: Build Plone 5.0 -build-plone-5.0: py2 ## Build Plone 5.0 - bin/pip install --upgrade pip - bin/pip install -r requirements.txt - bin/buildout -c plone-5.0.x.cfg - -.PHONY: Build Plone 5.1 -build-plone-5.1: py2 ## Build Plone 5.1 - bin/pip install --upgrade pip - bin/pip install -r requirements.txt - bin/buildout -c plone-5.1.x.cfg - -.PHONY: Build Plone 5.2 -build-plone-5.2: .installed.cfg ## Build Plone 5.2 - bin/pip install --upgrade pip - bin/pip install -r requirements.txt - bin/buildout -c plone-5.2.x.cfg - -.PHONY: Build Plone 5.2 Performance -build-plone-5.2-performance: .installed.cfg ## Build Plone 5.2 - bin/pip install --upgrade pip - bin/pip install -r requirements.txt - bin/buildout -c plone-5.2.x-performance.cfg - -.PHONY: Test -test: ## Test - bin/test - -.PHONY: Test Performance -test-performance: - jmeter -n -t performance.jmx -l jmeter.jtl - -.PHONY: Code Analysis -code-analysis: ## Code Analysis - bin/code-analysis - if [ -f "bin/black" ]; then bin/black src/ --check ; fi - -.PHONY: Black -black: ## Black - bin/code-analysis - if [ -f "bin/black" ]; then bin/black src/ ; fi - -.PHONY: Build Docs -docs: ## Build Docs - bin/sphinxbuilder - -.PHONY: Test Release -test-release: ## Run Pyroma and Check Manifest - bin/pyroma -n 10 -d . - -.PHONY: Release -release: ## Release - bin/fullrelease - -.PHONY: Clean -clean: ## Clean - git clean -Xdf - -.PHONY: all clean diff --git a/README.rst b/README.rst index 425241a..036e871 100644 --- a/README.rst +++ b/README.rst @@ -37,8 +37,17 @@ Basic Installation Compatibility ------------- -For Plone 5.1 and 5.2 you should use version 3.x. -For Plone 4.3 and 5.0 you should use version 2.x. +This table shows which version of collective.workspace is compatible with which versions of Plone and Python: + ++---------------+----------------------+---------------------------+ +| Plone | Python | collective.workspace | ++===============+======================+===========================+ +| 6.0+ | 3.9+ | 4 | ++---------------+----------------------+---------------------------+ +| 5.1, 5.2 | 2.7 - 3.8 | 3 | ++---------------+----------------------+---------------------------+ +| 4.3, 5.0 | 2.7 | 2 | ++---------------+----------------------+---------------------------+ Custom Workspace Groups ----------------------- diff --git a/base.cfg b/base.cfg index b6a8801..77cef98 100644 --- a/base.cfg +++ b/base.cfg @@ -50,7 +50,7 @@ flake8-extensions = # flake8-select = E123 [test] -recipe = collective.xmltestreport +recipe = zc.recipe.testrunner eggs = ${instance:eggs} defaults = ['-s', 'collective.workspace', '--auto-color', '--auto-progress'] environment = environment @@ -106,4 +106,4 @@ mode = 755 [versions] collective.workspace = setuptools = -zc.buildout = \ No newline at end of file +zc.buildout = diff --git a/plone-5.1.x.cfg b/plone-5.1.x.cfg deleted file mode 100644 index 4764d92..0000000 --- a/plone-5.1.x.cfg +++ /dev/null @@ -1,80 +0,0 @@ -[buildout] -extends = - base.cfg - https://dist.plone.org/release/5.1.7/versions.cfg - versions.cfg -show-picked-versions = true - -[versions] -plone.testing = 5.0.0 - -# Error: The requirement ('virtualenv>=20.0.35') is not allowed by your [versions] constraint (20.0.26) -virtualenv = 20.0.35 - -# Error: The requirement ('distlib<1,>=0.3.1') is not allowed by your [versions] constraint (0.3.0) -distlib = 0.3.1 - -# fixes: SyntaxError: invalid syntax (more.py, line 340) -zipp = 0.5.2 - -# zest.releaser -zest.releaser = 6.20.1 -twine = 1.11.0 -towncrier = 19.2.0 -zestreleaser.towncrier = 1.1.0 -# docutils = 0.13.1 - -# Sphinx -Sphinx = 1.6.5 -docutils = 0.14 -Pygments = 2.5.1 -sphinxcontrib-httpexample = 0.7.0 -sphinxcontrib-httpdomain = 1.5.0 -sphinx-rtd-theme = 0.2.4 -Jinja2 = 2.10 -Babel = 2.5.1 -astunparse = 1.6.2 - -PyYAML = 5.3 -argh = 0.26.2 -bleach = 3.2.1 -flake8-debugger = 3.2.1 -flake8-print = 3.1.4 -mccabe = 0.6.1 -pathtools = 0.1.2 -pkginfo = 1.6.1 -pyflakes = 1.6.0 -pyparsing = 2.4.7 -pyroma = 2.6 -readme = 0.7.1 -requests-toolbelt = 0.9.1 -watchdog = 0.9.0 -zest.pocompile = 1.5.0 - -# Required by: -# plone.recipe.codeanalysis==3.0.1 -check-manifest = 0.42 - -# Required by: -# bleach==3.2.1 -packaging = 20.4 - -# Required by: -# importlib-metadata==1.6.1 -pathlib2 = 2.3.5 - -# Required by: -# check-manifest==0.42 -pep517 = 0.9.1 - -# Required by: -# readme==0.7.1 -readme-renderer = 28.0 - -# Required by: -# pathlib2==2.3.5 -scandir = 1.10.0 - -# Required by: -# bleach==3.2.1 -webencodings = 0.5.1 diff --git a/plone-5.2.x.cfg b/plone-5.2.x.cfg deleted file mode 100644 index afeba1e..0000000 --- a/plone-5.2.x.cfg +++ /dev/null @@ -1,53 +0,0 @@ -[buildout] -extends = - base.cfg - https://dist.plone.org/release/5.2.3/versions.cfg -find-links += https://dist.plone.org/thirdparty/ -versions=versions -show-picked-versions = true - -[versions] -black = 20.8b1 - -# Error: The requirement ('virtualenv>=20.0.35') is not allowed by your [versions] constraint (20.0.26) -virtualenv = 20.0.35 - -# Error: The requirement ('pep517>=0.9') is not allowed by your [versions] constraint (0.8.2) -pep517 = 0.9.1 - -# cryptography 3.4 requires a rust compiler installed on the system: -# https://github.com/pyca/cryptography/blob/master/CHANGELOG.rst#34---2021-02-07 -cryptography = 3.3.2 - -PyYAML = 5.3 -argh = 0.26.2 -flake8 = 3.8.3 -flake8-coding = 1.3.2 -flake8-debugger = 3.2.1 -flake8-print = 3.1.4 -mccabe = 0.6.1 -pathtools = 0.1.2 -plone.recipe.codeanalysis = 3.0.1 -prompt-toolkit = 1.0.18 -pyflakes = 2.2.0 -pyroma = 2.6 -readme = 0.7.1 -watchdog = 0.9.0 -zest.pocompile = 1.5.0 - -# Required by: -# plone.recipe.codeanalysis==3.0.1 -check-manifest = 0.42 - -# Required by: -# flake8-debugger==3.2.1 -# flake8-print==3.1.4 -pycodestyle = 2.6.0 - -# Required by: -# prompt-toolkit==1.0.18 -wcwidth = 0.2.5 - -SecretStorage = 3.1.2 -jeepney = 0.4.3 -keyring = 21.2.1 diff --git a/plone-6.0.x.cfg b/plone-6.0.x.cfg new file mode 100644 index 0000000..ed6d09f --- /dev/null +++ b/plone-6.0.x.cfg @@ -0,0 +1,9 @@ +[buildout] +extends = + base.cfg + https://dist.plone.org/release/6.0-latest/versions.cfg + https://dist.plone.org/release/6.0-latest/versions-ecosystem.cfg + https://dist.plone.org/release/6.0-latest/versions-extra.cfg +find-links += https://dist.plone.org/thirdparty/ +versions=versions +show-picked-versions = true diff --git a/plone-6.1.x.cfg b/plone-6.1.x.cfg new file mode 100644 index 0000000..dc3eb96 --- /dev/null +++ b/plone-6.1.x.cfg @@ -0,0 +1,9 @@ +[buildout] +extends = + base.cfg + https://dist.plone.org/release/6.1-latest/versions.cfg + https://dist.plone.org/release/6.1-latest/versions-ecosystem.cfg + https://dist.plone.org/release/6.1-latest/versions-extra.cfg +find-links += https://dist.plone.org/thirdparty/ +versions=versions +show-picked-versions = true diff --git a/requirements-6.0.txt b/requirements-6.0.txt new file mode 100644 index 0000000..3ae6c36 --- /dev/null +++ b/requirements-6.0.txt @@ -0,0 +1 @@ +-r https://dist.plone.org/release/6.0-latest/requirements.txt diff --git a/requirements-6.1.txt b/requirements-6.1.txt new file mode 100644 index 0000000..b48e71e --- /dev/null +++ b/requirements-6.1.txt @@ -0,0 +1 @@ +-r https://dist.plone.org/release/6.1-latest/requirements.txt diff --git a/requirements.txt b/requirements.txt deleted file mode 100644 index 8466fed..0000000 --- a/requirements.txt +++ /dev/null @@ -1,4 +0,0 @@ -# Keep this file in sync with: https://github.com/kitconcept/buildout/edit/master/requirements.txt -setuptools==42.0.2 -zc.buildout==2.13.3 -wheel diff --git a/setup.py b/setup.py index 1bf5548..78e1726 100644 --- a/setup.py +++ b/setup.py @@ -1,6 +1,6 @@ from setuptools import setup, find_packages -version = "3.0.1.dev0" +version = "4.0.0.dev0" long_description = ( open("README.rst").read() + "\n" + "Contributors\n" @@ -23,14 +23,15 @@ "Environment :: Web Environment", "Framework :: Plone", "Framework :: Plone :: Addon", - "Framework :: Plone :: 5.1", - "Framework :: Plone :: 5.2", + "Framework :: Plone :: 6.0", + "Framework :: Plone :: 6.1", "Operating System :: OS Independent", "Programming Language :: Python", - "Programming Language :: Python :: 2.7", - "Programming Language :: Python :: 3.6", - "Programming Language :: Python :: 3.7", - "Programming Language :: Python :: 3.8", + "Programming Language :: Python :: 3.9", + "Programming Language :: Python :: 3.10", + "Programming Language :: Python :: 3.11", + "Programming Language :: Python :: 3.12", + "Programming Language :: Python :: 3.13", "Topic :: Software Development :: Libraries :: Python Modules", ], keywords="plone workspace collaboration", diff --git a/src/collective/workspace/tests/test_workspace.py b/src/collective/workspace/tests/test_workspace.py index c10280b..f93dbf3 100644 --- a/src/collective/workspace/tests/test_workspace.py +++ b/src/collective/workspace/tests/test_workspace.py @@ -181,7 +181,7 @@ def test_creating_and_removing_plone_groups_is_possible(self): self.assertIsNone(api.group.get(test_group_id)) api.group.create(test_group_id) group = api.group.get(test_group_id) - self.assertEquals(group.getId(), test_group_id) + self.assertEqual(group.getId(), test_group_id) api.group.delete(test_group_id) self.assertIsNone(api.group.get(test_group_id)) diff --git a/src/collective/workspace/tests/workspace.robot b/src/collective/workspace/tests/workspace.robot index 70c68ba..d062f65 100644 --- a/src/collective/workspace/tests/workspace.robot +++ b/src/collective/workspace/tests/workspace.robot @@ -28,15 +28,28 @@ Scenario: Workspace member gains access to workspace Start browser Open browser ${START_URL} browser=${BROWSER} + Set window size 1200 1000 a test workspace Log in as site owner Go to ${PLONE_URL} - Open Add New Menu + Compatible Open Add New Menu Click link css=.contenttype-workspace Input text form-widgets-IBasic-title Test Workspace Click button Save +# This is done to support multiple Plone versions where the +# Add New Menu structure changeds slightly. The selector switched from: +# css=#plone-contentmenu-factories > div > ul +# to: +# css=#plone-contentmenu-factories > ul +Compatible Open Add New Menu + ${status}= Run Keyword And Return Status Open Add New Menu + IF '${status}' == 'FAIL' + Wait Until Element Is Visible css=#plone-contentmenu-factories > ul + END + + the test user is added to the roster Click link css=#contentview-team-roster a Click Overlay Link workspace-add-user diff --git a/versions.cfg b/versions.cfg deleted file mode 100644 index 52d0af6..0000000 --- a/versions.cfg +++ /dev/null @@ -1,50 +0,0 @@ -[versions] -# Buildout -setuptools = -zc.buildout = -zc.recipe.egg = 2.0.3 - -# fixes Getting distribution for 'configparser'. assert newdist is not None # newloc above is missing our dist?! -configparser = 3.5.3 - -# fixes Error: The requirement ('Pygments>=2.5.1') is not allowed by your [versions] constraint (2.2.0) -Pygments = 2.5.1 - -# plone.recipe.varnish -plone.recipe.varnish = 1.3 - -# Code-analysis -plone.recipe.codeanalysis = 3.0.1 -coverage = 3.7.1 -pep8 = 1.7.1 -flake8 = 3.5.0 -flake8-coding = 1.3.2 -pycodestyle = 2.3.1 - -# Release -zest.releaser = 6.17.0 -twine = 1.11.0 -towncrier = 19.2.0 -zestreleaser.towncrier = 1.1.0 -docutils = 0.13.1 - -# Sphinx -Sphinx = 1.6.5 -docutils = 0.14 -Pygments = 2.2.0 -sphinxcontrib-httpexample = 0.7.0 -sphinxcontrib-httpdomain = 1.5.0 -sphinx-rtd-theme = 0.2.4 -Jinja2 = 2.10 -Babel = 2.5.1 - -# plone.rest(api) specific pins - -# Latest version compatible with Python 2 -httpie = 1.0.3 - -# Latest version compatible with Python 2 -PyJWT = 1.7.1 - -importlib-metadata = 1.6.1 -importlib-resources = 3.3.1