diff --git a/.github/workflows/code-analysis.yml b/.github/workflows/code-analysis.yml deleted file mode 100644 index c157a59..0000000 --- a/.github/workflows/code-analysis.yml +++ /dev/null @@ -1,33 +0,0 @@ -# This workflow will install Python dependencies, run lint with a variety of Python versions -# For more information see: https://help.github.com/actions/language-and-framework-guides/using-python-with-github-actions - -name: Code Analysis - -on: [push] - -jobs: - build: - runs-on: ubuntu-latest - strategy: - fail-fast: false - matrix: - env: ['black-check', 'lint'] - python-version: [3.8] - steps: - - uses: actions/checkout@v3 - - uses: actions/cache@v3 - with: - path: | - ~/.cache/pip - key: ${{ runner.os }}-tox-${{ matrix.python-version }}-${{ matrix.env }}-${{ hashFiles('**/setup.py') }}-${{ hashFiles('**/requirements.txt') }}-${{ hashFiles('**/*.cfg') }}-${{ hashFiles('**/constraints.txt') }}-${{ hashFiles('**/tox.ini') }} - - name: Set up Python ${{ matrix.python-version }} - uses: actions/setup-python@v4 - with: - python-version: ${{ matrix.python-version }} - - name: Install dependencies - run: | - python -m pip install --upgrade pip - pip install tox tox-gh-actions - - name: ${{ matrix.env }} - run: | - tox -r -e ${{ matrix.env }} diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml new file mode 100644 index 0000000..baf80a3 --- /dev/null +++ b/.github/workflows/main.yml @@ -0,0 +1,93 @@ +# This workflow will install Python dependencies, run tests and lint with a variety of Python versions +# For more information see: https://help.github.com/actions/language-and-framework-guides/using-python-with-github-actions + +name: Push tests +# run-name: ${{ github.actor }} push tests + +on: + push: + pull_request: + +jobs: + test: + runs-on: ubuntu-22.04 + strategy: + fail-fast: false + matrix: + include: + - python: 2.7.18 + plone: 4.3 + - python: 3.7.14 + plone: 5.2 + - python: 3.10.11 + plone: "6.0" + - python: 3.13.1 + plone: "6.1" + steps: + - name: Checkout + uses: actions/checkout@v4 + - name: Set up pyenv and Python + uses: "gabrielfalcao/pyenv-action@v18" + with: + default: "${{ matrix.python }}" + - name: Setup Env + run: | + pip install --upgrade pip + pip install -r requirements-${{ matrix.plone }}.txt + - name: Cache eggs + uses: actions/cache@v4 + env: + cache-name: cache-eggs + with: + path: ~/buildout-cache/eggs + key: ${{ runner.os }}-test-${{ env.cache-name }}-${{ matrix.python }}-${{ matrix.plone }} + - name: buildout + run: | + sed -ie "s#test.cfg#test-${{matrix.plone}}.cfg#" gha.cfg + buildout -c gha.cfg annotate + buildout -c gha.cfg + - name: test + run: | + bin/test -t !robot + coverage: + runs-on: ubuntu-22.04 + strategy: + fail-fast: false + matrix: + include: + - python: 3.10.11 + plone: "6.0" + steps: + - name: Checkout + uses: actions/checkout@v4 + - name: Set up pyenv and Python + uses: "gabrielfalcao/pyenv-action@v18" + with: + default: "${{ matrix.python }}" + - name: Setup Env + run: | + pip install --upgrade pip + pip install -r requirements-${{matrix.plone}}.txt + pip install -U coveralls coverage + - name: Cache eggs + uses: actions/cache@v4 + env: + cache-name: cache-eggs + with: + path: ~/buildout-cache/eggs + key: ${{ runner.os }}-test-${{ env.cache-name }}-${{ matrix.python }}-${{ matrix.plone }} + - name: buildout + run: | + sed -ie "s#test.cfg#test-${{matrix.plone}}.cfg#" gha.cfg + buildout -c gha.cfg + - name: code-analysis + run: | + bin/code-analysis + - name: test coverage + run: | + coverage run bin/test -t !robot + - name: Publish to Coveralls + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + run: | + coveralls --service=github diff --git a/.github/workflows/plone-package.yml b/.github/workflows/plone-package.yml deleted file mode 100644 index b027a2b..0000000 --- a/.github/workflows/plone-package.yml +++ /dev/null @@ -1,62 +0,0 @@ -# This workflow will install Python dependencies, run tests and lint with a variety of Python versions -# For more information see: https://help.github.com/actions/language-and-framework-guides/using-python-with-github-actions - -name: collective.js.jqueryui - -on: [push] - -jobs: - build: - runs-on: ubuntu-latest - strategy: - fail-fast: false - matrix: - plone-version: ['Plone52', 'Plone51', 'Plone50', 'Plone43'] - python-version: [2.7] - include: - - plone-version: 'Plone52' - python-version: 3.7 - - plone-version: 'Plone52' - python-version: 3.8 - - steps: - - uses: actions/checkout@v3 - - uses: actions/cache@v3 - with: - path: | - ~/.cache/pip - ~/buildout-cache/eggs - ~/extends - webpack/node_modules - key: ${{ runner.os }}-tox-${{ matrix.python-version }}-${{ matrix.plone-version }}-${{ hashFiles('**/setup.py') }}-${{ hashFiles('**/requirements.txt') }}-${{ hashFiles('**/*.cfg') }}-${{ hashFiles('**/constraints.txt') }}-${{ hashFiles('**/tox.ini') }} - #restore-keys: | - # ${{ runner.os }}-tox- - - name: Set up Python ${{ matrix.python-version }} - uses: actions/setup-python@v4 - with: - python-version: ${{ matrix.python-version }} - - name: Install system libraries - run: sudo apt-get install libxml2-dev libxslt1-dev libjpeg-dev - - name: setup buildout cache - run: | - mkdir -p ~/buildout-cache/{eggs,downloads} - mkdir ~/.buildout - 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 - - name: Install dependencies - run: | - python -m pip install --upgrade pip - pip install tox tox-gh-actions - - name: Test with tox - run: | - tox -r - env: - PLONE-VERSION: ${{ matrix.plone-version }} - PYTHON-VERSION: ${{ matrix.python-version }} - - name: "Coverage report" - run: tox -r -e coverage-report - - name: "Upload coverage to Codecov" - uses: "codecov/codecov-action@v3" - with: - fail_ci_if_error: true diff --git a/.gitignore b/.gitignore index 203956e..3057ae5 100644 --- a/.gitignore +++ b/.gitignore @@ -24,6 +24,7 @@ var/ # files .installed.cfg .mr.developer.cfg +.plone.versioncheck.tracked.json coverage.xml lib64 local.cfg diff --git a/CHANGES.rst b/CHANGES.rst index 6316615..b19c3a9 100644 --- a/CHANGES.rst +++ b/CHANGES.rst @@ -6,6 +6,9 @@ JQueryUI Changelog: https://jqueryui.com/changelog/ 2.2.1 (unreleased) ------------------ +- Fix Plone 6 / Python 3 compatibility + [laulaz] + - Drop suport to Python 3.6. [wesleybl] diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..d5f447d --- /dev/null +++ b/Makefile @@ -0,0 +1,103 @@ +#!/usr/bin/make +# pyenv is a requirement, with 2.7, 3.7, 3.10, 3.13 python versions, and virtualenv installed in each version +# plone parameter must be passed to create environment 'make setup plone=6.0' or after a make cleanall +# The original Makefile can be found on https://github.com/IMIO/scripts-buildout + +SHELL=/bin/bash +plones=4.3 5.2 6.0 6.1 +b_o= +old_plone=$(shell [ -e .plone-version ] && cat .plone-version) + +ifeq (, $(shell which pyenv)) + $(error "pyenv command not found! Aborting") +endif + +ifndef plone +ifeq (,$(filter setup,$(MAKECMDGOALS))) + plone=$(old_plone) +endif +endif + +ifneq ($(wildcard bin/instance),) + b_o=-N +endif + +ifndef python +ifeq ($(plone),4.3) + python=2.7 +endif +ifeq ($(plone),5.2) + python=3.8 +endif +ifeq ($(plone),6.0) + python=3.10 +endif +ifeq ($(plone),6.1) + python=3.13 +endif +endif + +all: buildout + +.PHONY: help +help: + @awk 'BEGIN {FS = ":.*##"; printf "\nUsage:\n make \033[36m\033[0m\n\nTargets:\n"} /^[a-zA-Z_-]+:.*?##/ { printf " \033[36m%-10s\033[0m %s\n", $$1, $$2 }' $(MAKEFILE_LIST) + +.python-version: ## Setups pyenv version + @pyenv local `pyenv versions |grep " $(python)" |tail -1 |xargs` + @echo "Local pyenv version is `cat .python-version`" + @ if [[ `pyenv which virtualenv` != `pyenv prefix`* ]] ; then echo "You need to install virtualenv in `cat .python-version` pyenv python (pip install virtualenv)"; exit 1; fi + +bin/buildout: .python-version ## Setups environment + virtualenv . + ./bin/pip install --upgrade pip + ./bin/pip install -r requirements-$(plone).txt + @echo "$(plone)" > .plone-version + +.PHONY: setup +setup: oneof-plone backup cleanall bin/buildout restore ## Setups environment + +.PHONY: buildout +buildout: oneof-plone bin/buildout ## Runs setup and buildout + rm -f .installed.cfg .mr.developer.cfg + bin/buildout -t 5 -c test-$(plone).cfg ${b_o} + +.PHONY: test +test: oneof-plone bin/buildout ## run bin/test without robot + # can be run by example with: make test opt='-t "settings"' + bin/test -t \!robot ${opt} + +.PHONY: cleanall +cleanall: ## Cleans all installed buildout files + rm -fr bin include lib local share develop-eggs downloads eggs parts .installed.cfg .mr.developer.cfg .python-version pyvenv.cfg + +.PHONY: backup +backup: ## Backups db files + @if [ '$(old_plone)' != '' ] && [ -f var/filestorage/Data.fs ]; then mv var/filestorage/Data.fs var/filestorage/Data.fs.$(old_plone); mv var/blobstorage var/blobstorage.$(old_plone); fi + +.PHONY: restore +restore: ## Restores db files + @if [ '$(plone)' != '' ] && [ -f var/filestorage/Data.fs.$(plone) ]; then mv var/filestorage/Data.fs.$(plone) var/filestorage/Data.fs; mv var/blobstorage.$(plone) var/blobstorage; fi + +.PHONY: which-python +which-python: oneof-plone ## Displays versions information + @echo "current plone = $(old_plone)" + @echo "current python = `cat .python-version`" + @echo "plone var = $(plone)" + @echo "python var = $(python)" + +.PHONY: vcr +vcr: ## Shows requirements in checkversion-r.html + @bin/versioncheck -rbo checkversion-r-$(plone).html test-$(plone).cfg + +.PHONY: vcn +vcn: ## Shows newer packages in checkversion-n.html + @bin/versioncheck -npbo checkversion-n-$(plone).html test-$(plone).cfg + +.PHONY: guard-% +guard-%: + @ if [ "${${*}}" = "" ]; then echo "You must give a value for variable '$*' : like $*=xxx"; exit 1; fi + +.PHONY: oneof-% +oneof-%: + @ if ! echo "${${*}s}" | tr " " '\n' |grep -Fqx "${${*}}"; then echo "Invalid '$*' parameter ('${${*}}') : must be one of '${${*}s}'"; exit 1; fi diff --git a/base.cfg b/base.cfg index 59f4491..b7fc53e 100644 --- a/base.cfg +++ b/base.cfg @@ -1,61 +1,84 @@ [buildout] -show-picked-versions = true +package-name = collective.js.jqueryui +package-extras = [test] + +extends = + https://raw.githubusercontent.com/collective/buildout.plonetest/master/qa.cfg + checkouts.cfg + extensions = mr.developer + plone.versioncheck -parts = +parts += instance - test -# we use tox for testing and linting, by default -# code-analysis - coverage - test-coverage - createcoverage - releaser - i18ndude omelette - plone-helper-scripts + ploneversioncheck + createcoverage + robot +# coverage +# test-coverage +# plone-helper-scripts develop = . - -[instance] -recipe = plone.recipe.zope2instance -user = admin:admin -http-address = 8080 -environment-vars = - zope_i18n_compile_mo_files true -eggs = +eggs += Plone Pillow - collective.js.jqueryui [test] +# Products.PDBDebugMode +# collective.profiler +# ipdb + pdbp +# plone.reload + +package-extras += + pdbp + +always-checkout = force + +[instance] +environment-vars += + PYTHONBREAKPOINT pdbp.set_trace +eggs += + ${buildout:eggs} zcml += - collective.js.jqueryui.example -# [code-analysis] -# recipe = plone.recipe.codeanalysis -# directory = ${buildout:directory}/src/collective -# return-status-codes = False +[test] +environment = testenv +initialization += + os.environ['PYTHONBREAKPOINT'] = 'pdbp.set_trace' +[testenv] +zope_i18n_compile_mo_files = true [omelette] recipe = collective.recipe.omelette eggs = ${test:eggs} - -[test] -recipe = zc.recipe.testrunner -eggs = ${instance:eggs} -initialization = - os.environ['TZ'] = 'UTC' -defaults = ['-s', 'collective.js.jqueryui', '--auto-color', '--auto-progress'] - +[ploneversioncheck] +recipe = zc.recipe.egg +eggs = plone.versioncheck + +[code-analysis] +recipe = plone.recipe.codeanalysis +pre-commit-hook = True +return-status-codes = True +directory = ${buildout:directory}/src/collective/js/jqueryui +flake8-ignore = E123,E124,E501,E126,E127,E128,W391,C901,W503,W504 +flake8-extensions = + flake8-isort + +[robot] +recipe = zc.recipe.egg +eggs = + Pillow + ${test:eggs} + plone.app.robotframework[reload, debug] [coverage] recipe = zc.recipe.egg eggs = coverage - [test-coverage] recipe = collective.recipe.template input = inline: @@ -69,21 +92,6 @@ input = inline: output = ${buildout:directory}/bin/test-coverage mode = 755 - -[createcoverage] -recipe = zc.recipe.egg -eggs = createcoverage - - -[releaser] -recipe = zc.recipe.egg -eggs = zest.releaser - - -[i18ndude] -recipe = zc.recipe.egg -eggs = i18ndude - [plone-helper-scripts] recipe = zc.recipe.egg eggs = @@ -95,5 +103,4 @@ scripts = plone-compile-resources [versions] -# Don't use a released version of collective.js.jqueryui collective.js.jqueryui = diff --git a/buildout.cfg b/buildout.cfg index f29aa9c..05190bd 100644 --- a/buildout.cfg +++ b/buildout.cfg @@ -1,4 +1,4 @@ [buildout] extends = - test_plone52.cfg + test_plone61.cfg diff --git a/checkouts.cfg b/checkouts.cfg new file mode 100644 index 0000000..3481e15 --- /dev/null +++ b/checkouts.cfg @@ -0,0 +1,13 @@ +[buildout] +always-checkout = force +auto-checkout += + +[remotes] +plone = https://github.com/plone +plone_push = git@github.com:plone +zopefoundation = https://github.com/zopefoundation +zopefoundation_push = git@github.com:zopefoundation +collective = https://github.com/collective +collective_push = git@github.com:collective + +[sources] diff --git a/constraints.txt b/constraints.txt deleted file mode 100644 index 24cbf87..0000000 --- a/constraints.txt +++ /dev/null @@ -1 +0,0 @@ --c constraints_plone52.txt diff --git a/constraints_plone43.txt b/constraints_plone43.txt deleted file mode 100644 index b7518d6..0000000 --- a/constraints_plone43.txt +++ /dev/null @@ -1 +0,0 @@ --c https://dist.plone.org/release/5.1-latest/requirements.txt diff --git a/constraints_plone50.txt b/constraints_plone50.txt deleted file mode 100644 index b7518d6..0000000 --- a/constraints_plone50.txt +++ /dev/null @@ -1 +0,0 @@ --c https://dist.plone.org/release/5.1-latest/requirements.txt diff --git a/constraints_plone51.txt b/constraints_plone51.txt deleted file mode 100644 index b7518d6..0000000 --- a/constraints_plone51.txt +++ /dev/null @@ -1 +0,0 @@ --c https://dist.plone.org/release/5.1-latest/requirements.txt diff --git a/gha.cfg b/gha.cfg new file mode 100644 index 0000000..ef2e218 --- /dev/null +++ b/gha.cfg @@ -0,0 +1,5 @@ +[buildout] +extends = + test.cfg +eggs-directory = ~/buildout-cache/eggs +download-cache = ~/buildout-cache/downloads diff --git a/requirements-4.3.txt b/requirements-4.3.txt new file mode 100644 index 0000000..14b7bdc --- /dev/null +++ b/requirements-4.3.txt @@ -0,0 +1,4 @@ +pip==20.3.4 +setuptools==44.1.1 +zc.buildout==3.1.1 +wheel==0.37.1 diff --git a/constraints_plone52.txt b/requirements-5.2.txt similarity index 68% rename from constraints_plone52.txt rename to requirements-5.2.txt index 848b28f..65fbf37 100644 --- a/constraints_plone52.txt +++ b/requirements-5.2.txt @@ -1 +1,4 @@ -c https://dist.plone.org/release/5.2-latest/requirements.txt +setuptools +zc.buildout +wheel diff --git a/requirements-6.0.txt b/requirements-6.0.txt new file mode 100644 index 0000000..75ae54c --- /dev/null +++ b/requirements-6.0.txt @@ -0,0 +1,3 @@ +-c https://dist.plone.org/release/6.0-latest/requirements.txt +setuptools +zc.buildout diff --git a/requirements-6.1.txt b/requirements-6.1.txt new file mode 100644 index 0000000..aaf0495 --- /dev/null +++ b/requirements-6.1.txt @@ -0,0 +1,3 @@ +-c https://dist.plone.org/release/6.1-latest/requirements.txt +setuptools +zc.buildout diff --git a/requirements.txt b/requirements.txt deleted file mode 100644 index 06390bd..0000000 --- a/requirements.txt +++ /dev/null @@ -1,3 +0,0 @@ --c constraints.txt -setuptools -zc.buildout diff --git a/setup.py b/setup.py index 3b1d334..f17f32d 100644 --- a/setup.py +++ b/setup.py @@ -34,10 +34,16 @@ "Framework :: Plone :: 5.0", "Framework :: Plone :: 5.1", "Framework :: Plone :: 5.2", + "Framework :: Plone :: 6.0", + "Framework :: Plone :: 6.1", "Programming Language :: Python", "Programming Language :: Python :: 2.7", - "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", ], keywords="plone jqueryui", author="JeanMichel FRANCOIS aka toutpt", diff --git a/src/collective/js/jqueryui/resources.py b/src/collective/js/jqueryui/resources.py index 149776f..47fb864 100644 --- a/src/collective/js/jqueryui/resources.py +++ b/src/collective/js/jqueryui/resources.py @@ -167,7 +167,7 @@ def get_resources(self): alljs = list(deps.keys()) resources = [] wanted = [] # not ordered list of wanted plugins - tpl = "++resource++jquery-ui/jquery.%s.min.js" + tpl = "++resource++jquery-ui/jquery.{0}.min.js" ordered_plugins = copy(config.ORDERED_PLUGINS) for plugin in alljs: attr_name = plugin.replace(".", "_").replace("-", "_") diff --git a/src/collective/js/jqueryui/tests/test_setup.py b/src/collective/js/jqueryui/tests/test_setup.py index 58ebafb..c740414 100644 --- a/src/collective/js/jqueryui/tests/test_setup.py +++ b/src/collective/js/jqueryui/tests/test_setup.py @@ -9,10 +9,11 @@ import unittest +HAS_INSTALLER = True try: from Products.CMFPlone.utils import get_installer except ImportError: - get_installer = None + HAS_INSTALLER = False class TestSetup(unittest.TestCase): @@ -23,14 +24,19 @@ class TestSetup(unittest.TestCase): def setUp(self): """Custom shared utility setup for tests.""" self.portal = self.layer["portal"] - if get_installer: + if HAS_INSTALLER: self.installer = get_installer(self.portal, self.layer["request"]) else: self.installer = api.portal.get_tool("portal_quickinstaller") def test_product_installed(self): """Test if collective.js.jqueryui is installed.""" - self.assertTrue(self.installer.isProductInstalled("collective.js.jqueryui")) + if HAS_INSTALLER: + self.assertTrue( + self.installer.is_product_installed("collective.js.jqueryui") + ) + else: + self.assertTrue(self.installer.isProductInstalled("collective.js.jqueryui")) def test_browserlayer(self): """Test that IJqueryUILayer is registered.""" @@ -40,6 +46,8 @@ def test_browserlayer(self): self.assertIn(IJqueryUILayer, utils.registered_layers()) def test_hide_extensions_profiles(self): + if HAS_INSTALLER: + return app = self.layer["app"] request = self.layer["request"] add_plone_site = AddPloneSite(app, request) @@ -60,18 +68,26 @@ class TestUninstall(unittest.TestCase): def setUp(self): self.portal = self.layer["portal"] - if get_installer: + roles_before = api.user.get_roles(TEST_USER_ID) + setRoles(self.portal, TEST_USER_ID, ["Manager"]) + if HAS_INSTALLER: self.installer = get_installer(self.portal, self.layer["request"]) + self.installer.uninstall_product("collective.js.jqueryui") else: self.installer = api.portal.get_tool("portal_quickinstaller") - roles_before = api.user.get_roles(TEST_USER_ID) - setRoles(self.portal, TEST_USER_ID, ["Manager"]) - self.installer.uninstallProducts(["collective.js.jqueryui"]) + self.installer.uninstallProducts(["collective.js.jqueryui"]) setRoles(self.portal, TEST_USER_ID, roles_before) def test_product_uninstalled(self): """Test if collective.js.jqueryui is cleanly uninstalled.""" - self.assertFalse(self.installer.isProductInstalled("collective.js.jqueryui")) + if HAS_INSTALLER: + self.assertFalse( + self.installer.is_product_installed("collective.js.jqueryui") + ) + else: + self.assertFalse( + self.installer.isProductInstalled("collective.js.jqueryui") + ) def test_browserlayer_removed(self): """Test that IJqueryUILayer is removed.""" diff --git a/test-4.3.cfg b/test-4.3.cfg new file mode 100644 index 0000000..97dc0ba --- /dev/null +++ b/test-4.3.cfg @@ -0,0 +1,100 @@ +[buildout] + +extends = + https://raw.githubusercontent.com/collective/buildout.plonetest/master/test-4.3.x.cfg + base.cfg + +update-versions-file = test-4.3.cfg + +index = https://pypi.org/simple/ + +eggs += + Products.DocFinderTab + aws.zope2zcmldoc + +# http:///@@install-aws-zope2zcmldoc + +[versions] +zc.buildout = 2.13.3 +setuptools = 44.1.1 +traitlets = 4.3.3 +future = 0.18.3 +six = 1.16.0 + +# Max version for Plone 4.3 +Products.ExternalEditor = 1.1.3 +collective.upgrade = 1.5 +natsort = 6.2.1 +plone.api = 1.10.4 +plone.app.textfield = 1.3.4 +z3c.unconfigure = 1.0.1 +collective.z3cform.datagridfield = 1.3.3 +plone.formwidget.namedfile = 2.0.5 +plone.testing = 5.0.0 +zc.lockfile = 1.4 + +# Added by buildout at 2023-02-21 14:51:26.709124 +Products.DocFinderTab = 1.0.5 +aws.zope2zcmldoc = 1.1.0 +backports.functools-lru-cache = 1.6.4 +ipdb = 0.13.11 +iw.debug = 0.3 +pdbp = 1.2.8 +pdbpp = 0.10.3 +plone.versioncheck = 1.7.0 + +# Required by: +# ipdb +backports.shutil-get-terminal-size = 1.0.0 +enum34 = 1.1.10 +ipython = 5.10.0 +ipython-genutils = 0.2.0 +pathlib = 1.0.1 +pathlib2 = 2.3.5 +pexpect = 4.8.0 +pickleshare = 0.7.5 +prompt-toolkit = 1.0.18 +ptyprocess = 0.7.0 +scandir = 1.10.0 +simplegeneric = 0.8.1 +toml = 0.10.2 +wcwidth = 0.2.5 + +# Required by: +# qa.cfg +#check-manifest = 0.41 +#coverage = 4.5.1 +pep517 = 0.8.2 + +# Required by: +# plone.versioncheck +CacheControl = 0.12.5 +colorama = 0.3.9 +MarkupSafe = 1.0 +msgpack-python = 0.5.6 +msgpack = 0.5.6 + +# Added by buildout at 2023-03-07 15:07:25.523214 +createcoverage = 1.5 +isort = 4.3.21 +functools32 = 3.2.3.post2 +futures = 3.4.0 +lockfile = 0.12.2 +mccabe = 0.6.1 +plone.recipe.codeanalysis = 3.0.1 +pyflakes = 2.3.1 +testfixtures = 6.18.5 +typing = 3.10.0.0 +zipp = 1.2.0 + +# Required by: +# pdbpp==0.10.3 +fancycompleter = 0.9.1 +pathtools = 0.1.2 +pyrepl = 0.9.0 +wmctrl = 0.4 + +# Required by: +# pdbp = 1.2.8 +Pygments = 2.5.2 + diff --git a/test_plone52.cfg b/test-5.2.cfg similarity index 53% rename from test_plone52.cfg rename to test-5.2.cfg index 9140982..de9f6f8 100644 --- a/test_plone52.cfg +++ b/test-5.2.cfg @@ -2,5 +2,11 @@ extends = https://raw.githubusercontent.com/collective/buildout.plonetest/master/test-5.2.x.cfg - https://raw.githubusercontent.com/collective/buildout.plonetest/master/qa.cfg base.cfg + +#update-versions-file = test-5.2.cfg + +[versions] +importlib-metadata = 2.1.3 +pdbp = 1.5.4 +pygments = 2.17.2 diff --git a/test-6.0.cfg b/test-6.0.cfg new file mode 100644 index 0000000..fbdb8a1 --- /dev/null +++ b/test-6.0.cfg @@ -0,0 +1,30 @@ +[buildout] + +extends = + https://raw.githubusercontent.com/collective/buildout.plonetest/master/test-6.0.x.cfg + base.cfg + +update-versions-file = test-6.0.cfg + +[versions] +# to keep prompt-toolkit < 3 +ipython = 8.3.0 + +ipdb = 0.13.9 +iw.debug = 0.3 +jedi = 0.18.1 +parso = 0.8.3 +pdbp = 1.7.0 + +# Required by: +# ipdb +asttokens = 2.0.8 +backcall = 0.2.0 +executing = 1.1.1 +matplotlib-inline = 0.1.6 +pexpect = 4.8.0 +pickleshare = 0.7.5 +ptyprocess = 0.7.0 +pure-eval = 0.2.2 +stack-data = 0.5.1 +traitlets = 5.4.0 diff --git a/test-6.1.cfg b/test-6.1.cfg new file mode 100644 index 0000000..d708207 --- /dev/null +++ b/test-6.1.cfg @@ -0,0 +1,30 @@ +[buildout] + +extends = + https://raw.githubusercontent.com/collective/buildout.plonetest/master/test-6.1.x.cfg + base.cfg + +#update-versions-file = test-6.1.cfg + +[versions] +# to keep prompt-toolkit < 3 +ipython = 8.3.0 + +ipdb = 0.13.9 +iw.debug = 0.3 +jedi = 0.18.1 +parso = 0.8.3 +pdbp = 1.7.0 + +# Required by: +# ipdb +asttokens = 2.0.8 +backcall = 0.2.0 +executing = 1.1.1 +matplotlib-inline = 0.1.6 +pexpect = 4.8.0 +pickleshare = 0.7.5 +ptyprocess = 0.7.0 +pure-eval = 0.2.2 +stack-data = 0.5.1 +traitlets = 5.4.0 diff --git a/test_plone43.cfg b/test_plone43.cfg deleted file mode 100644 index cab502c..0000000 --- a/test_plone43.cfg +++ /dev/null @@ -1,10 +0,0 @@ -[buildout] - -extends = - https://raw.githubusercontent.com/collective/buildout.plonetest/master/test-4.3.x.cfg - https://raw.githubusercontent.com/collective/buildout.plonetest/master/qa.cfg - base.cfg - -[versions] -setuptools = 42.0.2 -zc.buildout = 2.13.3 diff --git a/test_plone50.cfg b/test_plone50.cfg deleted file mode 100644 index 104342c..0000000 --- a/test_plone50.cfg +++ /dev/null @@ -1,10 +0,0 @@ -[buildout] - -extends = - https://raw.githubusercontent.com/collective/buildout.plonetest/master/test-5.0.x.cfg - https://raw.githubusercontent.com/collective/buildout.plonetest/master/qa.cfg - base.cfg - -[versions] -setuptools = 42.0.2 -zc.buildout = 2.13.3 diff --git a/test_plone51.cfg b/test_plone51.cfg deleted file mode 100644 index 3619871..0000000 --- a/test_plone51.cfg +++ /dev/null @@ -1,6 +0,0 @@ -[buildout] - -extends = - https://raw.githubusercontent.com/collective/buildout.plonetest/master/test-5.1.x.cfg - https://raw.githubusercontent.com/collective/buildout.plonetest/master/qa.cfg - base.cfg diff --git a/tox.ini b/tox.ini deleted file mode 100644 index f4fb91c..0000000 --- a/tox.ini +++ /dev/null @@ -1,162 +0,0 @@ -[tox] -envlist = - lint, - # BBB: black is pinned to the latest Python 2 compatible version. Unpin when removing Python 2 support. - black-check, - py{38,37}-Plone{52}, - py{27}-Plone{52,51,50,43}, -# docs, - coverage-report, - -skip_missing_interpreters = True - - -[gh-actions] -python = - 2.7: py27 - 3.7: py37 - 3.8: py38 - - -[gh-actions:env] -PLONE-VERSION = - Plone52: Plone52 - Plone51: Plone51 - Plone50: Plone50 - Plone43: Plone43 - - -[testenv] -skip_install = true - -extras = - develop - test - -commands = - {envbindir}/buildout -q -c {toxinidir}/{env:version_file} buildout:directory={envdir} buildout:develop={toxinidir} bootstrap -# {envbindir}/buildout -c {toxinidir}/{env:version_file} buildout:directory={envdir} buildout:develop={toxinidir} annotate - {envbindir}/buildout -n -qq -c {toxinidir}/{env:version_file} buildout:directory={envdir} buildout:develop={toxinidir} install test - coverage run {envbindir}/test -v1 --auto-color {posargs} - # coverage run {envbindir}/test -v --all -t robot {posargs} - -setenv = - COVERAGE_FILE=.coverage.{envname} - version_file=test_plone52.cfg - Plone52: version_file=test_plone52.cfg - Plone51: version_file=test_plone51.cfg - Plone50: version_file=test_plone50.cfg - Plone43: version_file=test_plone43.cfg - -deps = - -rrequirements.txt - Plone52: -cconstraints_plone52.txt - Plone51: -cconstraints_plone51.txt - Plone50: -cconstraints_plone50.txt - Plone43: -cconstraints_plone43.txt - coverage - - -[testenv:coverage-report] -skip_install = true -usedevelop = True - -deps = - coverage - -cconstraints_plone52.txt - -setenv = - COVERAGE_FILE=.coverage - -commands = - coverage erase - coverage combine - coverage html - coverage xml - coverage report - - -[testenv:lint] -skip_install = true - -deps = - -cconstraints.txt - isort - flake8 - # helper to generate HTML reports: - flake8-html - # Useful flake8 plugins that are Python and Plone specific: - flake8-coding - flake8-debugger - flake8-deprecated - flake8-print - #flake8-pytest - flake8-todo - mccabe - # Potential flake8 plugins that should be used: # TBD - flake8-blind-except - #flake8-commas - #flake8-docstrings - #flake8-mypy - flake8-pep3101 - flake8-plone-hasattr - flake8-string-format - #flake8_strict - #flake8-quotes - flake8-polyfill - -commands = - mkdir -p {toxinidir}/reports/flake8 - - flake8 --format=html --htmldir={toxinidir}/reports/flake8 --doctests {toxinidir}/src {toxinidir}/setup.py - flake8 --doctests {toxinidir}/src {toxinidir}/setup.py - isort --check-only {toxinidir}/src {toxinidir}/setup.py - # black --check --diff -v {toxinidir}/src {toxinidir}/setup.py - -allowlist_externals = - mkdir - - -[testenv:isort-apply] -skip_install = true - -deps = - -cconstraints.txt - isort - -commands = - isort {toxinidir}/src {toxinidir}/setup.py - - -[testenv:black-check] -basepython = python3.8 -skip_install = True -deps = - -cconstraints.txt - # BBB: black 21.12b0 it is the last version with python2 support. - black[python2]==21.12b0 - # BBB: click > 8.0.4 causes error on black < 22.3.0. - click==8.0.4 - -commands = - black --check --diff -v src setup.py - - -[testenv:black-enforce] -basepython = python3.7 -skip_install = True -deps = - -cconstraints.txt - black - -commands = - black -v src setup.py - - -[testenv:docs] -skip_install = true - -deps = - Sphinx - -commands = - sphinx-build -b html -d _build/docs/doctrees docs _build/docs/html