diff --git a/mailman-3.3.6.tar.gz b/mailman-3.3.6.tar.gz deleted file mode 100644 index 2ba0f3a..0000000 --- a/mailman-3.3.6.tar.gz +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:0d2ece475c020ad9d063d70f3637c86a31df0d48a0148f8ed6c8b9481e8e5d63 -size 1628026 diff --git a/mailman-3.3.8.tar.gz b/mailman-3.3.8.tar.gz new file mode 100644 index 0000000..87918b1 --- /dev/null +++ b/mailman-3.3.8.tar.gz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:83ac07ee55ea2b4c89f00c4ed4717132f06270127d3465a53de3c5cb197d41ce +size 1676901 diff --git a/mailman-support-sqlalchemy-1-4.patch b/mailman-support-sqlalchemy-1-4.patch deleted file mode 100644 index cb2f5f0..0000000 --- a/mailman-support-sqlalchemy-1-4.patch +++ /dev/null @@ -1,71 +0,0 @@ -The TypeDecorator.cache_ok class-level flag indicates if this custom -TypeDecorator is safe to be used as part of a cache key. This flag defaults to -None which will initially generate a warning when the SQL compiler attempts to -generate a cache key for a statement that uses this type. If the TypeDecorator -is not guaranteed to produce the same bind/result behavior and SQL generation -every time, this flag should be set to False; otherwise if the class produces -the same behavior each time, it may be set to True. See TypeDecorator.cache_ok -for further notes on how this works. - -As I don't know if those can be safely cached, just disable the warning. - -Index: mailman-3.3.5/src/mailman/database/types.py -=================================================================== ---- mailman-3.3.5.orig/src/mailman/database/types.py 2021-09-06 02:19:59.000000000 +0200 -+++ mailman-3.3.5/src/mailman/database/types.py 2022-06-23 08:57:19.527825754 +0200 -@@ -34,6 +34,7 @@ class Enum(TypeDecorator): - converts it on-the-fly. - """ - impl = Integer -+ cache_ok = False - - def __init__(self, enum, *args, **kw): - super().__init__(*args, **kw) -@@ -59,6 +60,7 @@ class UUID(TypeDecorator): - - """ - impl = CHAR -+ cache_ok = False - - def load_dialect_impl(self, dialect): - if dialect.name == 'postgresql': -@@ -97,6 +99,7 @@ class SAUnicode(TypeDecorator): - column needs to be indexed, otherwise use SAUnicode4Byte. - """ - impl = Unicode -+ cache_ok = False - - - @compiles(SAUnicode) -@@ -120,6 +123,7 @@ class SAUnicode4Byte(TypeDecorator): - type and it can still be used if needed in the codebase. - """ - impl = Unicode -+ cache_ok = False - - - @compiles(SAUnicode4Byte) -@@ -140,6 +144,7 @@ class SAUnicodeLarge(TypeDecorator): - This is double size of SAUnicode defined above. - """ - impl = Unicode -+ cache_ok = False - - - @compiles(SAUnicodeLarge, 'mysql') -@@ -166,6 +171,7 @@ class SAUnicodeXL(TypeDecorator): - See https://docs.sqlalchemy.org/en/latest/dialects/mysql.html#index-length - """ - impl = Unicode -+ cache_ok = False - - - @compiles(SAUnicodeXL, 'mysql') -@@ -187,6 +193,7 @@ class SAText(TypeDecorator): - case of other dialects defaults to the Text type. - """ - impl = Text -+ cache_ok = False - - - @compiles(SAText) diff --git a/python-mailman-test_interact_default_banner.patch b/python-mailman-test_interact_default_banner.patch deleted file mode 100644 index 416f29f..0000000 --- a/python-mailman-test_interact_default_banner.patch +++ /dev/null @@ -1,13 +0,0 @@ -Index: mailman-3.3.0/src/mailman/utilities/tests/test_interact.py -=================================================================== ---- mailman-3.3.0.orig/src/mailman/utilities/tests/test_interact.py 2019-04-25 07:07:47.000000000 +0200 -+++ mailman-3.3.0/src/mailman/utilities/tests/test_interact.py 2019-09-30 16:27:50.460382346 +0200 -@@ -67,7 +67,7 @@ class TestInteract(unittest.TestCase): - self._enter(hackenv('PYTHONSTARTUP', None)) - interact() - stderr = self._stderr.getvalue().splitlines() -- banner = 'Python {} on {} '.format(sys.version, sys.platform) -+ banner = 'Python {} on {}'.format(sys.version, sys.platform) - self.assertEqual(stderr[0], banner.splitlines()[0]) - - def test_interact_custom_banner(self): diff --git a/python-mailman.changes b/python-mailman.changes index 514273d..52f3208 100644 --- a/python-mailman.changes +++ b/python-mailman.changes @@ -1,3 +1,35 @@ +------------------------------------------------------------------- +Mon Feb 6 05:02:02 UTC 2023 - Steve Kowalik + +- Update to 3.3.8: + * The deprecated SQLAlchemy query.values() method is replaced by + query.with_entities(). This fixes an issue with MariaDB that truncated + the generated postfix_lmtp file. (Closes #1044) + * An uncaught passlib.exc.UnknownHashError in utilities/passwords.py is + now caught and handled appropriately. (Closes #1046) + * Rejection notices for a message with an RFC 2047 encoded Subject: now + display the decoded subject. (Closes #672) + * Don't RFC 2047 encode display names in UserNotifications. Allow sending + utf-8 encoded notifications. (Closes #673) + * Don't replace non-ascii in subjects in notifications. (Closes #673) + * The mailman members command no longer RFC 2047 encodes non-ascii display + names. (Closes #1048) + * Improve the performance of Held message handling by reducing the total + number of database calls required. (Fixes #1026 and #1045) + * Add support for Python 3.10. (Closes #936) + * Add support for Python 3.11 (See !1076) + * Add support for SQLAlchemy 1.4+ (Closes #964) + * Drop support for Python 3.6 since SQLAlchemy 2.0 will drop support for + it and it is EOL by now. (See !1035) + * The fix for #994 in 3.3.6 blocked too many subscription attempts. This is + now corrected and another test added. +- Drop patches now included upstream: + * mailman-support-sqlalchemy-1-4.patch + * python-mailman-test_interact_default_banner.patch + * support-alembic-1-8.patch + * support-attrs-22.patch + * support-sqlalchemy-1-4.patch + ------------------------------------------------------------------- Wed Dec 14 22:47:22 UTC 2022 - Luiz Angelo Daros de Luca diff --git a/python-mailman.spec b/python-mailman.spec index 5bfb097..ada6d4a 100644 --- a/python-mailman.spec +++ b/python-mailman.spec @@ -1,7 +1,7 @@ # # spec file # -# Copyright (c) 2022 SUSE LLC +# Copyright (c) 2023 SUSE LLC # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -46,7 +46,7 @@ %define mypython_sitelib %{python3_sitelib} %endif Name: python-mailman%{psuffix} -Version: 3.3.6 +Version: 3.3.8 Release: 0 Summary: A Mailing List Manager Group: Productivity/Networking/Email/Mailinglists @@ -69,16 +69,6 @@ Source31: python-mailman.rpmlintrc # Source100: https://gitlab.com/mailman/mailman/-/raw/master/src/mailman/testing/ssl_test_cert.crt Source101: https://gitlab.com/mailman/mailman/-/raw/master/src/mailman/testing/ssl_test_key.key -# whitespace fix -Patch0: python-mailman-test_interact_default_banner.patch -# Support SQLAlchemy 1.4 ... maybe backward compatible -Patch1: support-sqlalchemy-1-4.patch -# Suppprt Alembic 1.8.x -Patch2: support-alembic-1-8.patch -# Disable cache_ok warnings on console messages: disable caching completely at the moment -Patch3: mailman-support-sqlalchemy-1-4.patch -# Support attrs 22.1 -Patch4: support-attrs-22.patch BuildRequires: %{python_module setuptools} BuildRequires: fdupes BuildRequires: python-rpm-macros @@ -100,12 +90,12 @@ Mailman is a mailing list manager from the GNU project. %package -n mailman3 Summary: A mailing list manager Requires: %{mypython}-SQLAlchemy >= 1.2.3 -Requires: %{mypython}-aiosmtpd >= 1.4.1 +Requires: %{mypython}-aiosmtpd >= 1.4.3 Requires: %{mypython}-alembic Requires: %{mypython}-atpublic Requires: %{mypython}-authheaders >= 0.14.0 Requires: %{mypython}-authres >= 1.0.1 -Requires: %{mypython}-click >= 7.0 +Requires: %{mypython}-click >= 8.0 Requires: %{mypython}-dnspython >= 1.14.0 Requires: %{mypython}-falcon > 3.0.0 Requires: %{mypython}-flufl.bounce >= 4.0 diff --git a/support-alembic-1-8.patch b/support-alembic-1-8.patch deleted file mode 100644 index 5b6c411..0000000 --- a/support-alembic-1-8.patch +++ /dev/null @@ -1,24 +0,0 @@ -Index: mailman-3.3.6/setup.py -=================================================================== ---- mailman-3.3.6.orig/setup.py 2022-10-27 11:00:31.427260047 +0200 -+++ mailman-3.3.6/setup.py 2022-10-27 11:01:57.051868729 +0200 -@@ -111,7 +111,7 @@ case second 'm'. Any other spelling is - }, - install_requires = [ - 'aiosmtpd>=1.4.1', -- 'alembic>=1.6.2,!=1.7.0', -+ 'alembic>=1.6.2,<1.9.0', - 'atpublic', - 'attrs<21.3.0', - 'authheaders>=0.14.0', -Index: mailman-3.3.6/src/mailman.egg-info/requires.txt -=================================================================== ---- mailman-3.3.6.orig/src/mailman.egg-info/requires.txt 2022-10-26 06:26:52.000000000 +0200 -+++ mailman-3.3.6/src/mailman.egg-info/requires.txt 2022-10-27 11:02:22.972052996 +0200 -@@ -1,5 +1,5 @@ - aiosmtpd>=1.4.1 --alembic!=1.7.0,>=1.6.2 -+alembic<1.9.0,>=1.6.2 - atpublic - attrs<21.3.0 - authheaders>=0.14.0 diff --git a/support-attrs-22.patch b/support-attrs-22.patch deleted file mode 100644 index c0f690a..0000000 --- a/support-attrs-22.patch +++ /dev/null @@ -1,26 +0,0 @@ -Index: mailman-3.3.6/setup.py -=================================================================== ---- mailman-3.3.6.orig/setup.py 2022-10-27 11:14:04.065047157 +0200 -+++ mailman-3.3.6/setup.py 2022-10-27 11:15:25.901631179 +0200 -@@ -113,7 +113,7 @@ case second 'm'. Any other spelling is - 'aiosmtpd>=1.4.1', - 'alembic>=1.6.2,<1.9.0', - 'atpublic', -- 'attrs<21.3.0', -+ 'attrs<22.2', - 'authheaders>=0.14.0', - 'authres>=1.0.1', - 'click>=8.0.0', -Index: mailman-3.3.6/src/mailman.egg-info/requires.txt -=================================================================== ---- mailman-3.3.6.orig/src/mailman.egg-info/requires.txt 2022-10-27 11:02:22.972052996 +0200 -+++ mailman-3.3.6/src/mailman.egg-info/requires.txt 2022-10-27 11:15:33.805687581 +0200 -@@ -1,7 +1,7 @@ - aiosmtpd>=1.4.1 - alembic<1.9.0,>=1.6.2 - atpublic --attrs<21.3.0 -+attrs<22.2.0 - authheaders>=0.14.0 - authres>=1.0.1 - click>=8.0.0 diff --git a/support-sqlalchemy-1-4.patch b/support-sqlalchemy-1-4.patch deleted file mode 100644 index 5739254..0000000 --- a/support-sqlalchemy-1-4.patch +++ /dev/null @@ -1,68 +0,0 @@ -Index: mailman-3.3.6/setup.py -=================================================================== ---- mailman-3.3.6.orig/setup.py 2022-09-02 05:49:42.000000000 +0200 -+++ mailman-3.3.6/setup.py 2022-10-27 11:00:31.427260047 +0200 -@@ -128,7 +128,7 @@ case second 'm'. Any other spelling is - 'python-dateutil>=2.0', - 'passlib', - 'requests', -- 'sqlalchemy>=1.2.3,<1.4', -+ 'sqlalchemy>=1.2.3,<1.5', - 'zope.component', - 'zope.configuration', - 'zope.event', -Index: mailman-3.3.6/src/mailman/database/tests/test_factory.py -=================================================================== ---- mailman-3.3.6.orig/src/mailman/database/tests/test_factory.py 2022-09-02 05:49:42.000000000 +0200 -+++ mailman-3.3.6/src/mailman/database/tests/test_factory.py 2022-10-27 11:00:31.427260047 +0200 -@@ -76,10 +76,11 @@ class TestSchemaManager(unittest.TestCas - # In case of MySQL, you cannot create/drop indexes on primary keys - # manually as it is handled automatically by MySQL. - if not is_mysql(config.db.engine): -- Index('ix_user__user_id').drop(bind=config.db.engine) - # Don't pollute our main metadata object, create a new one. - md = MetaData() - user_table = Model.metadata.tables['user'].tometadata(md) -+ Index('ix_user__user_id', user_table.c._user_id).drop( -+ bind=config.db.engine) - Index('ix_user_user_id', user_table.c._user_id).create( - bind=config.db.engine) - config.db.commit() -@@ -98,7 +99,11 @@ class TestSchemaManager(unittest.TestCas - # indexes for primary keys, don't try doing it with that backend. - if not is_mysql(config.db.engine): - with suppress(ProgrammingError, OperationalError): -- Index('ix_user_user_id').drop(bind=config.db.engine) -+ # Don't pollute our main metadata object, create a new one. -+ md = MetaData() -+ user_table = Model.metadata.tables['user'].tometadata(md) -+ Index('ix_user_user_id', user_table.c._user_id).drop( -+ bind=config.db.engine) - config.db.commit() - - def test_current_database(self): -Index: mailman-3.3.6/src/mailman/model/listmanager.py -=================================================================== ---- mailman-3.3.6.orig/src/mailman/model/listmanager.py 2022-09-02 05:49:42.000000000 +0200 -+++ mailman-3.3.6/src/mailman/model/listmanager.py 2022-10-27 11:00:31.427260047 +0200 -@@ -39,6 +39,11 @@ from mailman.model.mime import ContentFi - from mailman.utilities.datetime import now - from mailman.utilities.queries import QuerySequence - from public import public -+try: -+ from sqlalchemy.engine import Row -+except ImportError: -+ from sqlalchemy.engine import RowProxy as Row -+ - from zope.event import notify - from zope.interface import implementer - -@@ -128,7 +133,7 @@ class ListManager: - """See `IListManager`.""" - result_set = store.query(MailingList) - for list_id in result_set.values(MailingList._list_id): -- assert isinstance(list_id, tuple) and len(list_id) == 1 -+ assert isinstance(list_id, (tuple, Row)) and len(list_id) == 1 - yield list_id[0] - - @property