diff --git a/.github/workflows/test-matrix.yml b/.github/workflows/test-matrix.yml index 05872b5a..8b2da2b5 100644 --- a/.github/workflows/test-matrix.yml +++ b/.github/workflows/test-matrix.yml @@ -19,7 +19,7 @@ jobs: - ["ubuntu", "ubuntu-latest"] config: # [Python version, visual name, tox env] - - ["3.13", "6.2 on py3.13", "py313-plone62"] + - ["3.14", "6.2 on py3.14", "py314-plone62"] - ["3.10", "6.2 on py3.10", "py310-plone62"] runs-on: ${{ matrix.os[1] }} diff --git a/.meta.toml b/.meta.toml index a83820d7..5c153587 100644 --- a/.meta.toml +++ b/.meta.toml @@ -3,7 +3,7 @@ # See the inline comments on how to expand/tweak this configuration file [meta] template = "default" -commit-id = "2.3.2" +commit-id = "2.5.1" [pyproject] dependencies_ignores = "['Products.LinguaPlone.interfaces.ITranslatable', 'collective.akismet', 'collective.z3cform.norobots', 'plone.formwidget.captcha', 'plone.formwidget.recaptcha', 'plone.formwidget.hcaptcha', 'plone.contentrules', 'plone.app.contentrules', 'plone.restapi', 'plone.stringinterp', 'plone.app.collection']" diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 26c3c6fa..2e8482be 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -10,13 +10,13 @@ repos: rev: v3.21.2 hooks: - id: pyupgrade - args: [--py38-plus] + args: [--py310-plus] - repo: https://github.com/pycqa/isort - rev: 7.0.0 + rev: 8.0.1 hooks: - id: isort - repo: https://github.com/psf/black-pre-commit-mirror - rev: 25.12.0 + rev: 26.1.0 hooks: - id: black - repo: https://github.com/collective/zpretty diff --git a/pyproject.toml b/pyproject.toml index 28737f50..6e826f8e 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -2,7 +2,7 @@ # https://github.com/plone/meta/tree/main/src/plone/meta/default # See the inline comments on how to expand/tweak this configuration file [build-system] -requires = ["setuptools>=68.2,<80", "wheel"] +requires = ["setuptools>=68.2,<83", "wheel"] [tool.towncrier] directory = "news/" @@ -60,7 +60,7 @@ profile = "plone" ## [tool.black] -target-version = ["py38"] +target-version = ["py310"] ## # Add extra configuration options in .meta.toml: diff --git a/setup.py b/setup.py index 62a0d8cd..4b906230 100644 --- a/setup.py +++ b/setup.py @@ -1,7 +1,6 @@ from pathlib import Path from setuptools import setup - long_description = ( f"{Path('README.rst').read_text()}\n{Path('CHANGES.rst').read_text()}" ) diff --git a/src/plone/app/discussion/__init__.py b/src/plone/app/discussion/__init__.py index 8efe8b3c..1bf09ebe 100644 --- a/src/plone/app/discussion/__init__.py +++ b/src/plone/app/discussion/__init__.py @@ -1,4 +1,3 @@ from zope.i18nmessageid import MessageFactory - _ = MessageFactory("plone") diff --git a/src/plone/app/discussion/behavior.py b/src/plone/app/discussion/behavior.py index 9691f694..2e91a196 100644 --- a/src/plone/app/discussion/behavior.py +++ b/src/plone/app/discussion/behavior.py @@ -9,7 +9,6 @@ from zope.schema.vocabulary import SimpleTerm from zope.schema.vocabulary import SimpleVocabulary - options = SimpleVocabulary( [ SimpleTerm(value=True, title=_("Yes")), diff --git a/src/plone/app/discussion/browser/comments.py b/src/plone/app/discussion/browser/comments.py index 330a30b3..2b381e3e 100644 --- a/src/plone/app/discussion/browser/comments.py +++ b/src/plone/app/discussion/browser/comments.py @@ -33,7 +33,6 @@ from zope.i18nmessageid import Message from zope.interface import alsoProvides - COMMENT_DESCRIPTION_PLAIN_TEXT = _( "comment_description_plain_text", default="You can add a comment by filling out the form below. " diff --git a/src/plone/app/discussion/browser/moderation.py b/src/plone/app/discussion/browser/moderation.py index 0b5b717a..e74b0414 100644 --- a/src/plone/app/discussion/browser/moderation.py +++ b/src/plone/app/discussion/browser/moderation.py @@ -15,7 +15,6 @@ from Products.statusmessages.interfaces import IStatusMessage from zope.event import notify - # Translations for generated values in buttons # States _("comment_pending", default="pending") diff --git a/src/plone/app/discussion/browser/restapi.py b/src/plone/app/discussion/browser/restapi.py index 2162bf5c..307c0216 100644 --- a/src/plone/app/discussion/browser/restapi.py +++ b/src/plone/app/discussion/browser/restapi.py @@ -10,7 +10,6 @@ from zope.component import adapter from zope.interface import Interface - try: from plone.restapi.interfaces import IControlpanelLayer except ImportError: diff --git a/src/plone/app/discussion/browser/validator.py b/src/plone/app/discussion/browser/validator.py index 4cbed9ef..b3c12427 100644 --- a/src/plone/app/discussion/browser/validator.py +++ b/src/plone/app/discussion/browser/validator.py @@ -14,7 +14,6 @@ from zope.interface import Interface from zope.schema.interfaces import IField - try: from collective.z3cform.norobots.validator import WrongNorobotsAnswer except ImportError: diff --git a/src/plone/app/discussion/catalog.py b/src/plone/app/discussion/catalog.py index e9f14176..81b1eab7 100644 --- a/src/plone/app/discussion/catalog.py +++ b/src/plone/app/discussion/catalog.py @@ -13,7 +13,6 @@ from Products.CMFCore.interfaces import IContentish from Products.ZCatalog.interfaces import IZCatalog - MAX_DESCRIPTION = 25 # Conversation Indexers diff --git a/src/plone/app/discussion/comment.py b/src/plone/app/discussion/comment.py index 9e4174bd..cfd6a8fa 100644 --- a/src/plone/app/discussion/comment.py +++ b/src/plone/app/discussion/comment.py @@ -42,7 +42,6 @@ import logging - COMMENT_TITLE = _( "comment_title", default="${author_name} on ${content}", diff --git a/src/plone/app/discussion/contentrules.py b/src/plone/app/discussion/contentrules.py index d91a3641..60a3435d 100644 --- a/src/plone/app/discussion/contentrules.py +++ b/src/plone/app/discussion/contentrules.py @@ -2,7 +2,6 @@ from plone.app.discussion import _ - try: from plone.stringinterp.adapters import BaseSubstitution except ImportError: diff --git a/src/plone/app/discussion/interfaces.py b/src/plone/app/discussion/interfaces.py index a8817d6d..ce659995 100644 --- a/src/plone/app/discussion/interfaces.py +++ b/src/plone/app/discussion/interfaces.py @@ -10,7 +10,6 @@ from zope.interface.common.mapping import IIterableMapping from zope.interface.interfaces import IObjectEvent - DISCUSSION_ANNOTATION_KEY = "plone.app.discussion:conversation" diff --git a/src/plone/app/discussion/setuphandlers.py b/src/plone/app/discussion/setuphandlers.py index 19afede9..cce566e5 100644 --- a/src/plone/app/discussion/setuphandlers.py +++ b/src/plone/app/discussion/setuphandlers.py @@ -2,7 +2,6 @@ from Products.CMFCore.utils import getToolByName from zope.interface import implementer - DEFAULT_TYPES = [ "Document", "Event", diff --git a/src/plone/app/discussion/tests/test_comment.py b/src/plone/app/discussion/tests/test_comment.py index 742b4563..4e5d9529 100644 --- a/src/plone/app/discussion/tests/test_comment.py +++ b/src/plone/app/discussion/tests/test_comment.py @@ -13,7 +13,6 @@ import logging import unittest - logger = logging.getLogger("plone.app.discussion.tests") logger.addHandler(logging.StreamHandler()) diff --git a/src/plone/app/discussion/tests/test_comments_viewlet.py b/src/plone/app/discussion/tests/test_comments_viewlet.py index e9806b57..2396585c 100644 --- a/src/plone/app/discussion/tests/test_comments_viewlet.py +++ b/src/plone/app/discussion/tests/test_comments_viewlet.py @@ -33,7 +33,6 @@ import time import unittest - TEXT = b"file data" diff --git a/src/plone/app/discussion/tests/test_events.py b/src/plone/app/discussion/tests/test_events.py index 24851f35..787435d8 100644 --- a/src/plone/app/discussion/tests/test_events.py +++ b/src/plone/app/discussion/tests/test_events.py @@ -11,7 +11,6 @@ import Products.Five import unittest - # # Fake events registry # diff --git a/src/plone/app/discussion/tests/test_functional.py b/src/plone/app/discussion/tests/test_functional.py index de624aa1..9f70bc7a 100644 --- a/src/plone/app/discussion/tests/test_functional.py +++ b/src/plone/app/discussion/tests/test_functional.py @@ -7,7 +7,6 @@ import pprint import unittest - optionflags = ( doctest.ELLIPSIS | doctest.NORMALIZE_WHITESPACE | doctest.REPORT_ONLY_FIRST_FAILURE ) diff --git a/src/plone/app/discussion/tests/test_indexers.py b/src/plone/app/discussion/tests/test_indexers.py index 723f5804..18504ea1 100644 --- a/src/plone/app/discussion/tests/test_indexers.py +++ b/src/plone/app/discussion/tests/test_indexers.py @@ -16,7 +16,6 @@ import unittest - LONG_TEXT = """Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. diff --git a/src/plone/app/discussion/upgrades.py b/src/plone/app/discussion/upgrades.py index cab45926..a60ef577 100644 --- a/src/plone/app/discussion/upgrades.py +++ b/src/plone/app/discussion/upgrades.py @@ -8,7 +8,6 @@ import logging - default_profile = "profile-plone.app.discussion:default" logger = logging.getLogger("plone.app.discussion") diff --git a/src/plone/app/discussion/vocabularies.py b/src/plone/app/discussion/vocabularies.py index 3d28ee49..4550bef5 100644 --- a/src/plone/app/discussion/vocabularies.py +++ b/src/plone/app/discussion/vocabularies.py @@ -2,7 +2,6 @@ from zope.schema.vocabulary import SimpleTerm from zope.schema.vocabulary import SimpleVocabulary - HAS_CAPTCHA = False try: import plone.formwidget.captcha # noqa diff --git a/tox.ini b/tox.ini index e27f2bd0..635b7c28 100644 --- a/tox.ini +++ b/tox.ini @@ -7,6 +7,7 @@ min_version = 4.4.0 envlist = lint test + py314-plone62 py313-plone62 py312-plone62 py311-plone62 @@ -18,6 +19,7 @@ envlist = # Add extra configuration options in .meta.toml: # - to specify a custom testing combination of Plone and python versions, use `test_matrix` # Use ["*"] to use all supported Python versions for this Plone version. +# - to disable the test matrix entirely, set `use_test_matrix = false` # - to specify extra custom environments, use `envlist_lines` # - to specify extra `tox` top-level options, use `config_lines` # [tox] @@ -133,6 +135,7 @@ extras = ## # Add extra configuration options in .meta.toml: # [tox] +# skip_test_extra = true # test_extras = """ # tests # widgets