Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package python-mailman-hyperkitty for
openSUSE:Factory checked in at 2023-06-27 23:16:47
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-mailman-hyperkitty (Old)
and /work/SRC/openSUSE:Factory/.python-mailman-hyperkitty.new.15902 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-mailman-hyperkitty"
Tue Jun 27 23:16:47 2023 rev:7 rq:1095548 version:1.2.1
Changes:
--------
---
/work/SRC/openSUSE:Factory/python-mailman-hyperkitty/python-mailman-hyperkitty.changes
2022-07-28 20:57:43.971415205 +0200
+++
/work/SRC/openSUSE:Factory/.python-mailman-hyperkitty.new.15902/python-mailman-hyperkitty.changes
2023-06-27 23:17:04.451535508 +0200
@@ -1,0 +2,7 @@
+Mon Jun 26 20:31:18 UTC 2023 - Andreas Schneider <[email protected]>
+
+- Update to version 1.2.1
+- Use sle15_python_module_pythons
+- Removed python-mailman-hyperkitty-no-mock.patch
+
+-------------------------------------------------------------------
Old:
----
mailman-hyperkitty-1.2.0.tar.gz
python-mailman-hyperkitty-no-mock.patch
New:
----
mailman-hyperkitty-1.2.1.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-mailman-hyperkitty.spec ++++++
--- /var/tmp/diff_new_pack.Gxemc5/_old 2023-06-27 23:17:05.171539745 +0200
+++ /var/tmp/diff_new_pack.Gxemc5/_new 2023-06-27 23:17:05.175539768 +0200
@@ -1,7 +1,7 @@
#
# spec file for package python-mailman-hyperkitty
#
-# 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
@@ -18,21 +18,20 @@
%if 0%{?suse_version} >= 1550
# Newest python supported by mailman is Python 3.9 --
https://gitlab.com/mailman/mailman/-/issues/936
-%define pythons python39
+%define pythons python311
%else
-%{?!python_module:%define python_module() python3-%{**}}
-%define pythons python3
+%{?sle15_python_module_pythons}
+%define pythons python311
%endif
Name: python-mailman-hyperkitty
-Version: 1.2.0
+Version: 1.2.1
Release: 0
Summary: Mailman archiver plugin for HyperKitty
License: GPL-3.0-only
URL: https://gitlab.com/mailman/mailman-hyperkitty/
Source:
https://files.pythonhosted.org/packages/source/m/mailman-hyperkitty/mailman-hyperkitty-%{version}.tar.gz
# https://gitlab.com/mailman/mailman-hyperkitty/-/issues/28
-Patch0: python-mailman-hyperkitty-no-mock.patch
-Patch1: python-mailman-hyperkitty-fix-archiver-test.patch
+Patch0: python-mailman-hyperkitty-fix-archiver-test.patch
BuildRequires: %{python_module setuptools}
BuildRequires: fdupes
BuildRequires: python-rpm-macros
++++++ mailman-hyperkitty-1.2.0.tar.gz -> mailman-hyperkitty-1.2.1.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/mailman-hyperkitty-1.2.0/PKG-INFO
new/mailman-hyperkitty-1.2.1/PKG-INFO
--- old/mailman-hyperkitty-1.2.0/PKG-INFO 2021-10-13 06:42:27.616553500
+0200
+++ new/mailman-hyperkitty-1.2.1/PKG-INFO 2023-01-04 10:13:27.263221300
+0100
@@ -1,56 +1,68 @@
-Metadata-Version: 1.1
+Metadata-Version: 2.1
Name: mailman-hyperkitty
-Version: 1.2.0
+Version: 1.2.1
Summary: Mailman archiver plugin for HyperKitty
Home-page: https://gitlab.com/mailman/mailman-hyperkitty/
Author: HyperKitty Developers
-Author-email: [email protected]
+Author-email: [email protected]
License: GPLv3
-Description: ======================================
- Mailman archiver plugin for HyperKitty
- ======================================
-
-
- This module contains a `Mailman`_ archiver plugin which sends emails to
- `HyperKitty`_, the web archiver.
-
- .. _Mailman: http://www.list.org
- .. _HyperKitty: http://hyperkitty.rtfd.org
-
- All documentation on installing HyperKitty can be found in the
documentation
- provided by the ``HyperKitty`` python package. It is also available
online at
- the following URL: http://hyperkitty.readthedocs.org.
-
- All documentation on installing HyperKitty Plugin can be found in the
- documentation provided by the following URL:
-
http://hyperkitty.readthedocs.io/en/latest/install.html#connecting-to-mailman.
-
- The source code is available on GitLab
- https://gitlab.com/mailman/mailman-hyperkitty.
- It is developed by the same people who develop HyperKitty, so you can
use the
- same communication channels to reach them.
-
- Changelog
- =========
-
- 1.2.0
- -----
-
- - Update the authentication to call Hyperkitty using the API key as a
part of
- Authorization HTTP header instead of url parameter.
-
-
- Copyright & Licensing
- =====================
-
- This module is licensed under the
- `GPL v3.0 <http://www.gnu.org/licenses/gpl-3.0.html>`_
-
- Copyright (C) 2014-2021 by the Free Software Foundation, Inc.
-
Keywords: email
Platform: UNKNOWN
Classifier: Development Status :: 4 - Beta
Classifier: License :: OSI Approved :: GNU General Public License v3 (GPLv3)
Classifier: Topic :: Communications :: Email :: Mailing List Servers
Classifier: Programming Language :: Python :: 3
+License-File: LICENSE.txt
+
+======================================
+Mailman archiver plugin for HyperKitty
+======================================
+
+
+This module contains a `Mailman`_ archiver plugin which sends emails to
+`HyperKitty`_, the web archiver.
+
+.. _Mailman: http://www.list.org
+.. _HyperKitty: http://hyperkitty.rtfd.org
+
+All documentation on installing HyperKitty can be found in the documentation
+provided by the ``HyperKitty`` python package. It is also available online at
+the following URL: http://hyperkitty.readthedocs.org.
+
+All documentation on installing HyperKitty Plugin can be found in the
+documentation provided by the following URL:
+http://hyperkitty.readthedocs.io/en/latest/install.html#connecting-to-mailman.
+
+The source code is available on GitLab
+https://gitlab.com/mailman/mailman-hyperkitty.
+It is developed by the same people who develop HyperKitty, so you can use the
+same communication channels to reach them.
+
+Changelog
+=========
+
+1.2.1
+-----
+
+- Deliver messages to HyperKitty as bytes rather than as string since
+ HyperKitty parses them as bytes.
+- Handle unhandled exceptions trying to get Mailinglist urls. (Fixes #4, #20)
+- Add support for Python 3.10.
+- Drop support for Python 3.6 and add support for Python 3.11.
+
+1.2.0
+-----
+
+- Update the authentication to call Hyperkitty using the API key as a part of
+ Authorization HTTP header instead of url parameter.
+
+
+Copyright & Licensing
+=====================
+
+This module is licensed under the
+`GPL v3.0 <http://www.gnu.org/licenses/gpl-3.0.html>`_
+
+Copyright (C) 2014-2021 by the Free Software Foundation, Inc.
+
+
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/mailman-hyperkitty-1.2.0/README.rst
new/mailman-hyperkitty-1.2.1/README.rst
--- old/mailman-hyperkitty-1.2.0/README.rst 2021-10-13 06:42:16.000000000
+0200
+++ new/mailman-hyperkitty-1.2.1/README.rst 2023-01-04 10:11:45.000000000
+0100
@@ -25,6 +25,15 @@
Changelog
=========
+1.2.1
+-----
+
+- Deliver messages to HyperKitty as bytes rather than as string since
+ HyperKitty parses them as bytes.
+- Handle unhandled exceptions trying to get Mailinglist urls. (Fixes #4, #20)
+- Add support for Python 3.10.
+- Drop support for Python 3.6 and add support for Python 3.11.
+
1.2.0
-----
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/mailman-hyperkitty-1.2.0/mailman-hyperkitty.cfg
new/mailman-hyperkitty-1.2.1/mailman-hyperkitty.cfg
--- old/mailman-hyperkitty-1.2.0/mailman-hyperkitty.cfg 2021-10-13
06:41:42.000000000 +0200
+++ new/mailman-hyperkitty-1.2.1/mailman-hyperkitty.cfg 2022-04-10
02:38:25.000000000 +0200
@@ -17,6 +17,6 @@
# to match your SSL certificate (e.g. https://lists.example.com/hyperkitty).
base_url: http://localhost/hyperkitty/
-# Shared API key, must be the identical to the value in HyperKitty's
-# settings.
+# The shared api_key, must be identical except for quoting to the value of
+# MAILMAN_ARCHIVER_KEY in HyperKitty's settings.
api_key: SecretArchiverAPIKey
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/mailman-hyperkitty-1.2.0/mailman_hyperkitty/__init__.py
new/mailman-hyperkitty-1.2.1/mailman_hyperkitty/__init__.py
--- old/mailman-hyperkitty-1.2.0/mailman_hyperkitty/__init__.py 2021-10-13
06:42:16.000000000 +0200
+++ new/mailman-hyperkitty-1.2.1/mailman_hyperkitty/__init__.py 2023-01-04
10:11:45.000000000 +0100
@@ -1,5 +1,5 @@
# -*- coding: utf-8 -*-
-# Copyright (C) 2012-2019 by the Free Software Foundation, Inc.
+# Copyright (C) 2012-2022 by the Free Software Foundation, Inc.
#
# This file is part of HyperKitty.
#
@@ -25,6 +25,7 @@
"""
import os
+import logging
import requests
import traceback
@@ -34,10 +35,11 @@
from mailman.config import config
from mailman.config.config import external_configuration
from mailman.core.switchboard import Switchboard
+from requests.exceptions import RequestException
from urllib.parse import urljoin
from zope.interface import implementer
-import logging
+
logger = logging.getLogger("mailman.archiver")
@@ -86,7 +88,12 @@
def _get_url(self, mlist, params):
url = urljoin(self.base_url, "api/mailman/urls")
- result = requests.get(url, params=params, headers=self.headers)
+ try:
+ result = requests.get(url, params=params, headers=self.headers)
+ except RequestException as error:
+ logger.error(
+ 'Connection to HyperKitty failed: %s', error)
+ return ""
if result.status_code != 200:
logger.error("HyperKitty failure on %s: %s (%s)",
url, result.text, result.status_code)
@@ -154,6 +161,9 @@
return url
except Exception as error:
# Archiving failed, send the message to the queue.
+ logger.error(
+ 'archiving failed, re-queuing (mailing-list %s, message %s)',
+ mlist.list_id, msg['Message-Id'].strip())
_log_error(error)
# Enqueuing can throw an exception, e.g. a permissions problem
# or a MemoryError due to a really large message. Try to be
@@ -185,31 +195,45 @@
self.name, msg['Message-Id'].strip())
url = urljoin(self.base_url, "api/mailman/archive")
try:
- message_text = msg.as_string()
- except (MessageError, KeyError) as error:
+ message_text = msg.as_bytes()
+ except (MessageError, KeyError, UnicodeEncodeError) as error:
logger.error(
'Could not render the message with id %s to text: %s',
msg['Message-Id'].strip(), error)
return # permanent error, don't raise
+ except Exception as error:
+ logger.error(
+ 'Could not render the message with id %s to text: %s',
+ msg['Message-Id'].strip(), error)
+ raise
try:
result = requests.post(
url, headers=self.headers,
data={"mlist": mlist.fqdn_listname},
files={"message": ("message.txt", message_text)})
- except requests.exceptions.RequestException as error:
+ except RequestException as error:
logger.error(
'Connection to HyperKitty failed: %s',
error)
+ logger.error(
+ 'Could not archive the message with id %s',
+ msg['Message-Id'].strip())
raise
if result.status_code != 200:
logger.error("HyperKitty failure on %s: %s (%s)",
url, result.text, result.status_code)
+ logger.error(
+ 'Could not archive the message with id %s',
+ msg['Message-Id'].strip())
raise ValueError(result.text)
try:
result = result.json()
except ValueError as e:
logger.exception(
"Invalid response from HyperKitty on %s: %s", url, e)
+ logger.error(
+ 'Could not archive the message with id %s',
+ msg['Message-Id'].strip())
raise
archived_url = result["url"]
logger.info("HyperKitty archived message %s to %s",
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/mailman-hyperkitty-1.2.0/mailman_hyperkitty/tests/test_archiver.py
new/mailman-hyperkitty-1.2.1/mailman_hyperkitty/tests/test_archiver.py
--- old/mailman-hyperkitty-1.2.0/mailman_hyperkitty/tests/test_archiver.py
2021-10-13 06:42:16.000000000 +0200
+++ new/mailman-hyperkitty-1.2.1/mailman_hyperkitty/tests/test_archiver.py
2023-01-04 10:11:45.000000000 +0100
@@ -1,5 +1,5 @@
# -*- coding: utf-8 -*-
-# Copyright (C) 2012-2019 by the Free Software Foundation, Inc.
+# Copyright (C) 2012-2022 by the Free Software Foundation, Inc.
#
# This file is part of HyperKitty.
#
@@ -32,7 +32,7 @@
from unittest import TestCase
import requests
-from mock import Mock, patch
+from unittest.mock import Mock, patch
from mailman.config import config
from mailman.email.message import Message
from mailman.testing.layers import ConfigLayer
@@ -161,6 +161,13 @@
headers={'Authorization': 'Token DummyKey'},
)
+ def test_list_url_raises_exception(self):
+ # Test that any exceptions raised by requests is caught.
+ old = self.requests.get.side_effect
+ self.requests.get.side_effect = requests.exceptions.SSLError()
+ self.assertEqual(self.archiver.list_url(self.mlist), "")
+ self.requests.get.side_effect = old
+
def test_permalink(self):
msg = self._get_msg()
url = ("http://example.com/list/[email protected]/"
@@ -188,7 +195,7 @@
"http://localhost/api/mailman/archive",
headers={'Authorization': 'Token DummyKey'},
data={'mlist': '[email protected]'},
- files={'message': ('message.txt', msg.as_string())},
+ files={'message': ('message.txt', msg.as_bytes())},
)
# Check that the archive directory was created.
self.assertTrue(os.path.exists(
@@ -212,7 +219,8 @@
"http://localhost/api/mailman/archive",
headers={'Authorization': 'Token DummyKey'},
data={'mlist': '[email protected]'},
- files={'message': ('message.txt', _sanitize(msg.as_string()))},
+ files={'message': ('message.txt',
+ _sanitize(msg.as_string()).encode('utf-8'))},
)
# Check that the archive directory was created.
self.assertTrue(os.path.exists(
@@ -253,9 +261,9 @@
with patch("mailman_hyperkitty.logger") as logger:
self.archiver.archive_message(self.mlist, self._get_msg())
# Check error log
- self.assertEqual(logger.error.call_count, 3)
+ self.assertEqual(logger.error.call_count, 5)
self.assertTrue(isinstance(
- logger.error.call_args_list[1][0][1], ValueError))
+ logger.error.call_args_list[3][0][1], ValueError))
# Check that the message is stored in the spool.
self.assertEqual(len(os.listdir(
self.archiver._switchboard.queue_directory)), 1)
@@ -318,12 +326,12 @@
(("http://localhost/api/mailman/archive",), dict(
headers={'Authorization': 'Token DummyKey'},
data={'mlist': '[email protected]'},
- files={'message': ('message.txt', msg_1.as_string())},
+ files={'message': ('message.txt', msg_1.as_bytes())},
)),
(("http://localhost/api/mailman/archive",), dict(
headers={'Authorization': 'Token DummyKey'},
data={'mlist': '[email protected]'},
- files={'message': ('message.txt', msg_2.as_string())},
+ files={'message': ('message.txt', msg_2.as_bytes())},
)),
])
# Make sure the spool directory is empty now.
@@ -339,10 +347,10 @@
with patch("mailman_hyperkitty.logger") as logger:
self.archiver.process_queue()
# Check error log
- self.assertEqual(logger.error.call_count, 3)
+ self.assertEqual(logger.error.call_count, 5)
self.assertEqual(logger.error.call_args_list[0][0][3], 500)
self.assertTrue(isinstance(
- logger.error.call_args_list[1][0][1], ValueError))
+ logger.error.call_args_list[3][0][1], ValueError))
# Check that the message is still stored in the spool.
self.assertEqual(len(os.listdir(
self.archiver._switchboard.queue_directory)), 1)
@@ -373,13 +381,13 @@
self.archiver._switchboard.enqueue.side_effect = OSError('Oops!')
with patch("mailman_hyperkitty.logger") as logger:
self.archiver.process_queue()
- self.assertEqual(logger.error.call_count, 6)
+ self.assertEqual(logger.error.call_count, 8)
# Check error log
self.assertEqual(logger.error.call_args_list[0][0][3], 500)
self.assertTrue(isinstance(
- logger.error.call_args_list[1][0][1], ValueError))
+ logger.error.call_args_list[3][0][1], ValueError))
self.assertTrue(isinstance(
- logger.error.call_args_list[3][0][1], OSError))
+ logger.error.call_args_list[5][0][1], OSError))
# Check that the message has been preserved for analysis
self.assertEqual(len(glob.glob(os.path.join(
config.switchboards["bad"].queue_directory, "*.psv")
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/mailman-hyperkitty-1.2.0/mailman_hyperkitty.egg-info/PKG-INFO
new/mailman-hyperkitty-1.2.1/mailman_hyperkitty.egg-info/PKG-INFO
--- old/mailman-hyperkitty-1.2.0/mailman_hyperkitty.egg-info/PKG-INFO
2021-10-13 06:42:27.000000000 +0200
+++ new/mailman-hyperkitty-1.2.1/mailman_hyperkitty.egg-info/PKG-INFO
2023-01-04 10:13:27.000000000 +0100
@@ -1,56 +1,68 @@
-Metadata-Version: 1.1
+Metadata-Version: 2.1
Name: mailman-hyperkitty
-Version: 1.2.0
+Version: 1.2.1
Summary: Mailman archiver plugin for HyperKitty
Home-page: https://gitlab.com/mailman/mailman-hyperkitty/
Author: HyperKitty Developers
-Author-email: [email protected]
+Author-email: [email protected]
License: GPLv3
-Description: ======================================
- Mailman archiver plugin for HyperKitty
- ======================================
-
-
- This module contains a `Mailman`_ archiver plugin which sends emails to
- `HyperKitty`_, the web archiver.
-
- .. _Mailman: http://www.list.org
- .. _HyperKitty: http://hyperkitty.rtfd.org
-
- All documentation on installing HyperKitty can be found in the
documentation
- provided by the ``HyperKitty`` python package. It is also available
online at
- the following URL: http://hyperkitty.readthedocs.org.
-
- All documentation on installing HyperKitty Plugin can be found in the
- documentation provided by the following URL:
-
http://hyperkitty.readthedocs.io/en/latest/install.html#connecting-to-mailman.
-
- The source code is available on GitLab
- https://gitlab.com/mailman/mailman-hyperkitty.
- It is developed by the same people who develop HyperKitty, so you can
use the
- same communication channels to reach them.
-
- Changelog
- =========
-
- 1.2.0
- -----
-
- - Update the authentication to call Hyperkitty using the API key as a
part of
- Authorization HTTP header instead of url parameter.
-
-
- Copyright & Licensing
- =====================
-
- This module is licensed under the
- `GPL v3.0 <http://www.gnu.org/licenses/gpl-3.0.html>`_
-
- Copyright (C) 2014-2021 by the Free Software Foundation, Inc.
-
Keywords: email
Platform: UNKNOWN
Classifier: Development Status :: 4 - Beta
Classifier: License :: OSI Approved :: GNU General Public License v3 (GPLv3)
Classifier: Topic :: Communications :: Email :: Mailing List Servers
Classifier: Programming Language :: Python :: 3
+License-File: LICENSE.txt
+
+======================================
+Mailman archiver plugin for HyperKitty
+======================================
+
+
+This module contains a `Mailman`_ archiver plugin which sends emails to
+`HyperKitty`_, the web archiver.
+
+.. _Mailman: http://www.list.org
+.. _HyperKitty: http://hyperkitty.rtfd.org
+
+All documentation on installing HyperKitty can be found in the documentation
+provided by the ``HyperKitty`` python package. It is also available online at
+the following URL: http://hyperkitty.readthedocs.org.
+
+All documentation on installing HyperKitty Plugin can be found in the
+documentation provided by the following URL:
+http://hyperkitty.readthedocs.io/en/latest/install.html#connecting-to-mailman.
+
+The source code is available on GitLab
+https://gitlab.com/mailman/mailman-hyperkitty.
+It is developed by the same people who develop HyperKitty, so you can use the
+same communication channels to reach them.
+
+Changelog
+=========
+
+1.2.1
+-----
+
+- Deliver messages to HyperKitty as bytes rather than as string since
+ HyperKitty parses them as bytes.
+- Handle unhandled exceptions trying to get Mailinglist urls. (Fixes #4, #20)
+- Add support for Python 3.10.
+- Drop support for Python 3.6 and add support for Python 3.11.
+
+1.2.0
+-----
+
+- Update the authentication to call Hyperkitty using the API key as a part of
+ Authorization HTTP header instead of url parameter.
+
+
+Copyright & Licensing
+=====================
+
+This module is licensed under the
+`GPL v3.0 <http://www.gnu.org/licenses/gpl-3.0.html>`_
+
+Copyright (C) 2014-2021 by the Free Software Foundation, Inc.
+
+
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/mailman-hyperkitty-1.2.0/mailman_hyperkitty.egg-info/requires.txt
new/mailman-hyperkitty-1.2.1/mailman_hyperkitty.egg-info/requires.txt
--- old/mailman-hyperkitty-1.2.0/mailman_hyperkitty.egg-info/requires.txt
2021-10-13 06:42:27.000000000 +0200
+++ new/mailman-hyperkitty-1.2.1/mailman_hyperkitty.egg-info/requires.txt
2023-01-04 10:13:27.000000000 +0100
@@ -1,4 +1,3 @@
-setuptools
mailman
requests
zope.interface
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/mailman-hyperkitty-1.2.0/setup.py
new/mailman-hyperkitty-1.2.1/setup.py
--- old/mailman-hyperkitty-1.2.0/setup.py 2021-10-13 06:41:42.000000000
+0200
+++ new/mailman-hyperkitty-1.2.1/setup.py 2023-01-04 10:11:45.000000000
+0100
@@ -1,4 +1,4 @@
-# Copyright (C) 2014-2019 by the Free Software Foundation, Inc.
+# Copyright (C) 2014-2022 by the Free Software Foundation, Inc.
#
# This file is part of HyperKitty.
#
@@ -18,21 +18,20 @@
# Author: Aurelien Bompard <[email protected]>
#
-import sys
from setuptools import setup, find_packages
setup(
name = 'mailman-hyperkitty',
- version = '1.2.0',
+ version = '1.2.1',
description = 'Mailman archiver plugin for HyperKitty',
long_description= open("README.rst").read(),
- author='HyperKitty Developers',
- author_email='[email protected]',
- url="https://gitlab.com/mailman/mailman-hyperkitty/",
+ author ='HyperKitty Developers',
+ author_email ='[email protected]',
+ url ="https://gitlab.com/mailman/mailman-hyperkitty/",
license = 'GPLv3',
keywords = 'email',
- classifiers=[
+ classifiers =[
"Development Status :: 4 - Beta",
"License :: OSI Approved :: GNU General Public License v3 (GPLv3)",
"Topic :: Communications :: Email :: Mailing List Servers",
@@ -41,10 +40,9 @@
packages = find_packages(),
include_package_data = True,
install_requires = [
- 'setuptools',
'mailman',
'requests',
'zope.interface',
],
- test_suite = 'nose2.collector.collector',
+ test_suite = 'nose2.collector.collector',
)