- 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

OBS-URL: https://build.opensuse.org/package/show/devel:languages:python:mailman/python-mailman?expand=0&rev=76
This commit is contained in:
Steve Kowalik 2023-02-06 05:02:31 +00:00 committed by Git OBS Bridge
parent 89b49bca00
commit a9fb9ccfa3
9 changed files with 39 additions and 219 deletions

View File

@ -1,3 +0,0 @@
version https://git-lfs.github.com/spec/v1
oid sha256:0d2ece475c020ad9d063d70f3637c86a31df0d48a0148f8ed6c8b9481e8e5d63
size 1628026

3
mailman-3.3.8.tar.gz Normal file
View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:83ac07ee55ea2b4c89f00c4ed4717132f06270127d3465a53de3c5cb197d41ce
size 1676901

View File

@ -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)

View File

@ -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):

View File

@ -1,3 +1,35 @@
-------------------------------------------------------------------
Mon Feb 6 05:02:02 UTC 2023 - Steve Kowalik <steven.kowalik@suse.com>
- 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 <luizluca@tre-sc.jus.br>

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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