diff options
45 files changed, 87 insertions, 111 deletions
@@ -103,7 +103,6 @@ case second `m'. Any other spelling is incorrect.""", 'mock', 'nose2', 'passlib', - 'six', 'sqlalchemy', 'zope.component', 'zope.configuration', diff --git a/src/mailman/app/notifications.py b/src/mailman/app/notifications.py index 1e8f1b820..fc8a0549e 100644 --- a/src/mailman/app/notifications.py +++ b/src/mailman/app/notifications.py @@ -35,7 +35,7 @@ from mailman.interfaces.member import DeliveryMode from mailman.interfaces.templates import ITemplateLoader from mailman.utilities.i18n import make from mailman.utilities.string import expand, wrap -from six.moves.urllib_error import URLError +from urllib.error import URLError from zope.component import getUtility diff --git a/src/mailman/app/templates.py b/src/mailman/app/templates.py index 4c4684523..86c61d046 100644 --- a/src/mailman/app/templates.py +++ b/src/mailman/app/templates.py @@ -27,11 +27,10 @@ from mailman.interfaces.languages import ILanguageManager from mailman.interfaces.listmanager import IListManager from mailman.interfaces.templates import ITemplateLoader from mailman.utilities.i18n import TemplateNotFoundError, find -from six.moves.urllib_error import URLError -from six.moves.urllib_parse import urlparse -from six.moves.urllib_request import ( - BaseHandler, build_opener, install_opener, urlopen) -from six.moves.urllib_response import addinfourl +from urllib.error import URLError +from urllib.parse import urlparse +from urllib.request import BaseHandler, build_opener, install_opener, urlopen +from urllib.response import addinfourl from zope.component import getUtility from zope.interface import implementer diff --git a/src/mailman/app/tests/test_templates.py b/src/mailman/app/tests/test_templates.py index 880e3da90..7aab8f1f9 100644 --- a/src/mailman/app/tests/test_templates.py +++ b/src/mailman/app/tests/test_templates.py @@ -23,7 +23,6 @@ __all__ = [ import os -import six import shutil import tempfile import unittest @@ -33,7 +32,7 @@ from mailman.config import config from mailman.interfaces.languages import ILanguageManager from mailman.interfaces.templates import ITemplateLoader from mailman.testing.layers import ConfigLayer -from six.moves.urllib_error import URLError +from urllib.error import URLError from zope.component import getUtility @@ -132,5 +131,5 @@ class TestTemplateLoader(unittest.TestCase): with open(os.path.join(path, 'demo.txt'), 'wb') as fp: fp.write(test_text) content = self._loader.get('mailman:///it/demo.txt') - self.assertIsInstance(content, six.text_type) + self.assertIsInstance(content, str) self.assertEqual(content, test_text.decode('utf-8')) diff --git a/src/mailman/archiving/mailarchive.py b/src/mailman/archiving/mailarchive.py index 4ede57856..b7f3847f0 100644 --- a/src/mailman/archiving/mailarchive.py +++ b/src/mailman/archiving/mailarchive.py @@ -25,7 +25,7 @@ __all__ = [ from mailman.config import config from mailman.config.config import external_configuration from mailman.interfaces.archiver import ArchivePolicy, IArchiver -from six.moves.urllib_parse import quote, urljoin +from urllib.parse import quote, urljoin from zope.interface import implementer diff --git a/src/mailman/archiving/mhonarc.py b/src/mailman/archiving/mhonarc.py index bdba612f3..ff8baf079 100644 --- a/src/mailman/archiving/mhonarc.py +++ b/src/mailman/archiving/mhonarc.py @@ -29,7 +29,7 @@ from mailman.config import config from mailman.config.config import external_configuration from mailman.interfaces.archiver import IArchiver from mailman.utilities.string import expand -from six.moves.urllib_parse import urljoin +from urllib.parse import urljoin from zope.interface import implementer diff --git a/src/mailman/archiving/prototype.py b/src/mailman/archiving/prototype.py index 41b413105..b0328211e 100644 --- a/src/mailman/archiving/prototype.py +++ b/src/mailman/archiving/prototype.py @@ -31,7 +31,7 @@ from flufl.lock import Lock, TimeOutError from mailbox import Maildir from mailman.config import config from mailman.interfaces.archiver import IArchiver -from six.moves.urllib_parse import urljoin +from urllib.parse import urljoin from zope.interface import implementer diff --git a/src/mailman/commands/cli_import.py b/src/mailman/commands/cli_import.py index b91a288ea..30aeb7894 100644 --- a/src/mailman/commands/cli_import.py +++ b/src/mailman/commands/cli_import.py @@ -23,13 +23,13 @@ __all__ = [ import sys +import pickle from mailman.core.i18n import _ from mailman.database.transaction import transactional from mailman.interfaces.command import ICLISubCommand from mailman.interfaces.listmanager import IListManager from mailman.utilities.importer import import_config_pck, Import21Error -from six.moves import cPickle from zope.component import getUtility from zope.interface import implementer @@ -77,10 +77,10 @@ class Import21: with open(filename, 'rb') as fp: while True: try: - config_dict = cPickle.load(fp) + config_dict = pickle.load(fp) except EOFError: break - except cPickle.UnpicklingError: + except pickle.UnpicklingError: self.parser.error( _('Not a Mailman 2.1 configuration file: $filename')) return diff --git a/src/mailman/commands/cli_qfile.py b/src/mailman/commands/cli_qfile.py index 3ce007dad..55669e981 100644 --- a/src/mailman/commands/cli_qfile.py +++ b/src/mailman/commands/cli_qfile.py @@ -22,13 +22,12 @@ __all__ = [ ] -import six +import pickle from mailman.core.i18n import _ from mailman.interfaces.command import ICLISubCommand from mailman.utilities.interact import interact from pprint import PrettyPrinter -from six.moves import cPickle from zope.interface import implementer @@ -72,7 +71,7 @@ class QFile: with open(args.qfile[0], 'rb') as fp: while True: try: - m.append(cPickle.load(fp)) + m.append(pickle.load(fp)) except EOFError: break if args.doprint: @@ -80,7 +79,7 @@ class QFile: for i, obj in enumerate(m): count = i + 1 print(_('<----- start object $count ----->')) - if isinstance(obj, six.string_types): + if isinstance(obj, (bytes, str)): print(obj) else: printer.pprint(obj) diff --git a/src/mailman/commands/docs/inject.rst b/src/mailman/commands/docs/inject.rst index de295b8f6..68a5d534d 100644 --- a/src/mailman/commands/docs/inject.rst +++ b/src/mailman/commands/docs/inject.rst @@ -133,9 +133,8 @@ Standard input The message text can also be provided on standard input. :: - >>> from six import StringIO + >>> from io import StringIO - # Remember: we've got unicode literals turned on. >>> standard_in = StringIO(str("""\ ... From: bperson@example.com ... To: test@example.com diff --git a/src/mailman/commands/docs/members.rst b/src/mailman/commands/docs/members.rst index 28f238f31..490287235 100644 --- a/src/mailman/commands/docs/members.rst +++ b/src/mailman/commands/docs/members.rst @@ -229,7 +229,7 @@ You can also specify ``-`` as the filename, in which case the addresses are taken from standard input. :: - >>> from six import StringIO + >>> from io import StringIO >>> fp = StringIO() >>> for address in ('dperson@example.com', ... 'Elly Person <eperson@example.com>', diff --git a/src/mailman/commands/tests/test_conf.py b/src/mailman/commands/tests/test_conf.py index 972148cc2..5ff93895d 100644 --- a/src/mailman/commands/tests/test_conf.py +++ b/src/mailman/commands/tests/test_conf.py @@ -28,9 +28,9 @@ import mock import tempfile import unittest +from io import StringIO from mailman.commands.cli_conf import Conf from mailman.testing.layers import ConfigLayer -from six import StringIO diff --git a/src/mailman/config/config.py b/src/mailman/config/config.py index 6e518dea0..ada4c6bac 100644 --- a/src/mailman/config/config.py +++ b/src/mailman/config/config.py @@ -28,6 +28,7 @@ import os import sys import mailman.templates +from configparser import ConfigParser, RawConfigParser from flufl.lock import Lock from lazr.config import ConfigSchema, as_boolean from mailman import version @@ -37,7 +38,6 @@ from mailman.interfaces.languages import ILanguageManager from mailman.utilities.filesystem import makedirs from mailman.utilities.modules import call_name, expand_path from pkg_resources import resource_filename, resource_string as resource_bytes -from six.moves.configparser import ConfigParser, RawConfigParser from string import Template from unittest.mock import patch from zope.component import getUtility diff --git a/src/mailman/core/runner.py b/src/mailman/core/runner.py index f198a4641..75dc644b3 100644 --- a/src/mailman/core/runner.py +++ b/src/mailman/core/runner.py @@ -27,6 +27,7 @@ import signal import logging import traceback +from io import StringIO from lazr.config import as_boolean, as_timedelta from mailman.config import config from mailman.core.i18n import _ @@ -36,7 +37,6 @@ from mailman.interfaces.languages import ILanguageManager from mailman.interfaces.listmanager import IListManager from mailman.interfaces.runner import IRunner, RunnerCrashEvent from mailman.utilities.string import expand -from six.moves import cStringIO as StringIO from zope.component import getUtility from zope.event import notify from zope.interface import implementer diff --git a/src/mailman/core/switchboard.py b/src/mailman/core/switchboard.py index 15ad06416..402770cd9 100644 --- a/src/mailman/core/switchboard.py +++ b/src/mailman/core/switchboard.py @@ -43,7 +43,6 @@ from mailman.interfaces.configuration import ConfigurationUpdatedEvent from mailman.interfaces.switchboard import ISwitchboard from mailman.utilities.filesystem import makedirs from mailman.utilities.string import expand -from six.moves import cPickle from zope.interface import implementer @@ -114,10 +113,10 @@ class Switchboard: now = repr(time.time()) if data.get('_plaintext'): protocol = 0 - msgsave = cPickle.dumps(str(_msg), protocol) + msgsave = pickle.dumps(str(_msg), protocol) else: protocol = pickle.HIGHEST_PROTOCOL - msgsave = cPickle.dumps(_msg, protocol) + msgsave = pickle.dumps(_msg, protocol) # The list-id field is a string but the input to the hash function must # be bytes. hashfood = msgsave + list_id.encode('utf-8') + now.encode('utf-8') @@ -141,7 +140,7 @@ class Switchboard: # Write to the pickle file the message object and metadata. with open(tmpfile, 'wb') as fp: fp.write(msgsave) - cPickle.dump(data, fp, protocol) + pickle.dump(data, fp, protocol) fp.flush() os.fsync(fp.fileno()) os.rename(tmpfile, filename) @@ -158,8 +157,8 @@ class Switchboard: # process crashes uncleanly the .bak file will be used to # re-instate the .pck file in order to try again. os.rename(filename, backfile) - msg = cPickle.load(fp) - data = cPickle.load(fp) + msg = pickle.load(fp) + data = pickle.load(fp) if data.get('_parsemsg'): # Calculate the original size of the text now so that we won't # have to generate the message later when we do size restriction @@ -226,9 +225,9 @@ class Switchboard: with open(src, 'rb+') as fp: try: # Throw away the message object. - cPickle.load(fp) + pickle.load(fp) data_pos = fp.tell() - data = cPickle.load(fp) + data = pickle.load(fp) except Exception as error: # If unpickling throws any exception, just log and # preserve this entry @@ -242,7 +241,7 @@ class Switchboard: protocol = 0 else: protocol = 1 - cPickle.dump(data, fp, protocol) + pickle.dump(data, fp, protocol) fp.truncate() fp.flush() os.fsync(fp.fileno()) diff --git a/src/mailman/database/sqlite.py b/src/mailman/database/sqlite.py index e6c9857b2..e1c3bf095 100644 --- a/src/mailman/database/sqlite.py +++ b/src/mailman/database/sqlite.py @@ -25,7 +25,7 @@ __all__ = [ import os from mailman.database.base import SABaseDatabase -from six.moves.urllib_parse import urlparse +from urllib.parse import urlparse diff --git a/src/mailman/handlers/decorate.py b/src/mailman/handlers/decorate.py index be6620019..7f09c74e4 100644 --- a/src/mailman/handlers/decorate.py +++ b/src/mailman/handlers/decorate.py @@ -33,7 +33,7 @@ from mailman.email.message import Message from mailman.interfaces.handler import IHandler from mailman.interfaces.templates import ITemplateLoader from mailman.utilities.string import expand -from six.moves.urllib_error import URLError +from urllib.error import URLError from zope.component import getUtility from zope.interface import implementer diff --git a/src/mailman/model/domain.py b/src/mailman/model/domain.py index 768075c30..9e627c119 100644 --- a/src/mailman/model/domain.py +++ b/src/mailman/model/domain.py @@ -29,7 +29,7 @@ from mailman.interfaces.domain import ( BadDomainSpecificationError, DomainCreatedEvent, DomainCreatingEvent, DomainDeletedEvent, DomainDeletingEvent, IDomain, IDomainManager) from mailman.model.mailinglist import MailingList -from six.moves.urllib_parse import urljoin, urlparse +from urllib.parse import urljoin, urlparse from sqlalchemy import Column, Integer, Unicode from zope.event import notify from zope.interface import implementer diff --git a/src/mailman/model/mailinglist.py b/src/mailman/model/mailinglist.py index 738ce6fbd..a204d54cd 100644 --- a/src/mailman/model/mailinglist.py +++ b/src/mailman/model/mailinglist.py @@ -52,12 +52,12 @@ from mailman.model.mime import ContentFilter from mailman.model.preferences import Preferences from mailman.utilities.filesystem import makedirs from mailman.utilities.string import expand -from six.moves.urllib_parse import urljoin from sqlalchemy import ( Boolean, Column, DateTime, Float, ForeignKey, Integer, Interval, LargeBinary, PickleType, Unicode) from sqlalchemy.event import listen from sqlalchemy.orm import relationship +from urllib.parse import urljoin from zope.component import getUtility from zope.event import notify from zope.interface import implementer diff --git a/src/mailman/model/requests.py b/src/mailman/model/requests.py index de0c51d99..e984d0aea 100644 --- a/src/mailman/model/requests.py +++ b/src/mailman/model/requests.py @@ -23,15 +23,13 @@ __all__ = [ ] -import six - from datetime import timedelta from mailman.database.model import Model from mailman.database.transaction import dbconnection from mailman.database.types import Enum from mailman.interfaces.pending import IPendable, IPendings from mailman.interfaces.requests import IListRequests, RequestType -from six.moves.cPickle import dumps, loads +from pickle import dumps, loads from sqlalchemy import Column, ForeignKey, Integer, Unicode from sqlalchemy.orm import relationship from zope.component import getUtility @@ -50,8 +48,8 @@ class DataPendable(dict): # such a way that it will be properly reconstituted when unpended. clean_mapping = {} for key, value in mapping.items(): - assert isinstance(key, six.string_types) - if not isinstance(value, six.text_type): + assert isinstance(key, (bytes, str)) + if not isinstance(value, str): key = '_pck_' + key value = dumps(value).decode('raw-unicode-escape') clean_mapping[key] = value diff --git a/src/mailman/rest/addresses.py b/src/mailman/rest/addresses.py index 0d06391ea..2ce456b98 100644 --- a/src/mailman/rest/addresses.py +++ b/src/mailman/rest/addresses.py @@ -24,8 +24,6 @@ __all__ = [ ] -import six - from mailman.interfaces.address import ( ExistingAddressError, InvalidEmailAddressError) from mailman.interfaces.usermanager import IUserManager @@ -196,8 +194,8 @@ class UserAddresses(_AddressBase): not_found(response) return user_manager = getUtility(IUserManager) - validator = Validator(email=six.text_type, - display_name=six.text_type, + validator = Validator(email=str, + display_name=str, _optional=('display_name',)) try: address = user_manager.create_address(**validator(request)) diff --git a/src/mailman/rest/docs/helpers.rst b/src/mailman/rest/docs/helpers.rst index 5614e6544..c40619c01 100644 --- a/src/mailman/rest/docs/helpers.rst +++ b/src/mailman/rest/docs/helpers.rst @@ -69,9 +69,8 @@ Another helper unpacks ``POST`` and ``PUT`` request variables, validating and converting their values. :: - >>> import six >>> from mailman.rest.validator import Validator - >>> validator = Validator(one=int, two=six.text_type, three=bool) + >>> validator = Validator(one=int, two=str, three=bool) >>> class FakeRequest: ... params = None @@ -120,7 +119,7 @@ Extra keys are also not allowed. However, if optional keys are missing, it's okay. :: - >>> validator = Validator(one=int, two=six.text_type, three=bool, + >>> validator = Validator(one=int, two=str, three=bool, ... four=int, five=int, ... _optional=('four', 'five')) diff --git a/src/mailman/rest/domains.py b/src/mailman/rest/domains.py index 02b46494b..345e8327d 100644 --- a/src/mailman/rest/domains.py +++ b/src/mailman/rest/domains.py @@ -23,8 +23,6 @@ __all__ = [ ] -import six - from mailman.interfaces.domain import ( BadDomainSpecificationError, IDomainManager) from mailman.rest.helpers import ( @@ -98,10 +96,10 @@ class AllDomains(_DomainBase): """Create a new domain.""" domain_manager = getUtility(IDomainManager) try: - validator = Validator(mail_host=six.text_type, - description=six.text_type, - base_url=six.text_type, - contact_address=six.text_type, + validator = Validator(mail_host=str, + description=str, + base_url=str, + contact_address=str, _optional=('description', 'base_url', 'contact_address')) domain = domain_manager.add(**validator(request)) diff --git a/src/mailman/rest/listconf.py b/src/mailman/rest/listconf.py index 831d6fefe..e83f52833 100644 --- a/src/mailman/rest/listconf.py +++ b/src/mailman/rest/listconf.py @@ -22,8 +22,6 @@ __all__ = [ ] -import six - from lazr.config import as_boolean, as_timedelta from mailman.config import config from mailman.core.errors import ( @@ -108,9 +106,9 @@ ATTRIBUTES = dict( autorespond_postings=GetterSetter(enum_validator(ResponseAction)), autorespond_requests=GetterSetter(enum_validator(ResponseAction)), autoresponse_grace_period=GetterSetter(as_timedelta), - autoresponse_owner_text=GetterSetter(six.text_type), - autoresponse_postings_text=GetterSetter(six.text_type), - autoresponse_request_text=GetterSetter(six.text_type), + autoresponse_owner_text=GetterSetter(str), + autoresponse_postings_text=GetterSetter(str), + autoresponse_request_text=GetterSetter(str), archive_policy=GetterSetter(enum_validator(ArchivePolicy)), bounces_address=GetterSetter(None), collapse_alternatives=GetterSetter(as_boolean), @@ -118,7 +116,7 @@ ATTRIBUTES = dict( created_at=GetterSetter(None), default_member_action=GetterSetter(enum_validator(Action)), default_nonmember_action=GetterSetter(enum_validator(Action)), - description=GetterSetter(six.text_type), + description=GetterSetter(str), digest_last_sent_at=GetterSetter(None), digest_size_threshold=GetterSetter(float), filter_content=GetterSetter(as_boolean), @@ -137,16 +135,16 @@ ATTRIBUTES = dict( post_id=GetterSetter(None), posting_address=GetterSetter(None), posting_pipeline=GetterSetter(pipeline_validator), - display_name=GetterSetter(six.text_type), + display_name=GetterSetter(str), reply_goes_to_list=GetterSetter(enum_validator(ReplyToMunging)), - reply_to_address=GetterSetter(six.text_type), + reply_to_address=GetterSetter(str), request_address=GetterSetter(None), scheme=GetterSetter(None), send_welcome_message=GetterSetter(as_boolean), - subject_prefix=GetterSetter(six.text_type), + subject_prefix=GetterSetter(str), volume=GetterSetter(None), web_host=GetterSetter(None), - welcome_message_uri=GetterSetter(six.text_type), + welcome_message_uri=GetterSetter(str), ) diff --git a/src/mailman/rest/lists.py b/src/mailman/rest/lists.py index c6233796b..f6bc27917 100644 --- a/src/mailman/rest/lists.py +++ b/src/mailman/rest/lists.py @@ -27,8 +27,6 @@ __all__ = [ ] -import six - from lazr.config import as_boolean from mailman.app.lifecycle import create_list, remove_list from mailman.config import config @@ -202,8 +200,8 @@ class AllLists(_ListBase): def on_post(self, request, response): """Create a new mailing list.""" try: - validator = Validator(fqdn_listname=six.text_type, - style_name=six.text_type, + validator = Validator(fqdn_listname=str, + style_name=str, _optional=('style_name',)) mlist = create_list(**validator(request)) except ListAlreadyExistsError: diff --git a/src/mailman/rest/members.py b/src/mailman/rest/members.py index 5451f7f76..925cd6718 100644 --- a/src/mailman/rest/members.py +++ b/src/mailman/rest/members.py @@ -25,8 +25,6 @@ __all__ = [ ] -import six - from mailman.app.membership import delete_member from mailman.interfaces.address import InvalidEmailAddressError from mailman.interfaces.listmanager import IListManager, NoSuchListError @@ -174,7 +172,7 @@ class AMember(_MemberBase): return try: values = Validator( - address=six.text_type, + address=str, delivery_mode=enum_validator(DeliveryMode), _optional=('address', 'delivery_mode'))(request) except ValueError as error: @@ -205,9 +203,9 @@ class AllMembers(_MemberBase): service = getUtility(ISubscriptionService) try: validator = Validator( - list_id=six.text_type, + list_id=str, subscriber=subscriber_validator, - display_name=six.text_type, + display_name=str, delivery_mode=enum_validator(DeliveryMode), role=enum_validator(MemberRole), _optional=('delivery_mode', 'display_name', 'role')) @@ -254,8 +252,8 @@ class FindMembers(_MemberBase): """Find a member""" service = getUtility(ISubscriptionService) validator = Validator( - list_id=six.text_type, - subscriber=six.text_type, + list_id=str, + subscriber=str, role=enum_validator(MemberRole), _optional=('list_id', 'subscriber', 'role')) try: diff --git a/src/mailman/rest/queues.py b/src/mailman/rest/queues.py index f1007052e..190f9091e 100644 --- a/src/mailman/rest/queues.py +++ b/src/mailman/rest/queues.py @@ -24,8 +24,6 @@ __all__ = [ ] -import six - from mailman.config import config from mailman.app.inject import inject_text from mailman.interfaces.listmanager import IListManager @@ -75,8 +73,8 @@ class AQueue(_QueuesBase): def on_post(self, request, response): """Inject a message into the queue.""" try: - validator = Validator(list_id=six.text_type, - text=six.text_type) + validator = Validator(list_id=str, + text=str) values = validator(request) except ValueError as error: bad_request(response, str(error)) diff --git a/src/mailman/rest/tests/test_addresses.py b/src/mailman/rest/tests/test_addresses.py index d08152333..584b81695 100644 --- a/src/mailman/rest/tests/test_addresses.py +++ b/src/mailman/rest/tests/test_addresses.py @@ -30,7 +30,7 @@ from mailman.interfaces.usermanager import IUserManager from mailman.testing.helpers import call_api from mailman.testing.layers import RESTLayer from mailman.utilities.datetime import now -from six.moves.urllib_error import HTTPError +from urllib.error import HTTPError from zope.component import getUtility diff --git a/src/mailman/rest/tests/test_domains.py b/src/mailman/rest/tests/test_domains.py index d10af30ef..bf53c8e70 100644 --- a/src/mailman/rest/tests/test_domains.py +++ b/src/mailman/rest/tests/test_domains.py @@ -29,7 +29,7 @@ from mailman.database.transaction import transaction from mailman.interfaces.listmanager import IListManager from mailman.testing.helpers import call_api from mailman.testing.layers import RESTLayer -from six.moves.urllib_error import HTTPError +from urllib.error import HTTPError from zope.component import getUtility diff --git a/src/mailman/rest/tests/test_lists.py b/src/mailman/rest/tests/test_lists.py index fed9865c4..a365db969 100644 --- a/src/mailman/rest/tests/test_lists.py +++ b/src/mailman/rest/tests/test_lists.py @@ -32,7 +32,7 @@ from mailman.database.transaction import transaction from mailman.interfaces.usermanager import IUserManager from mailman.testing.helpers import call_api from mailman.testing.layers import RESTLayer -from six.moves.urllib_error import HTTPError +from urllib.error import HTTPError from zope.component import getUtility diff --git a/src/mailman/rest/tests/test_membership.py b/src/mailman/rest/tests/test_membership.py index 2841f6634..e1bff833b 100644 --- a/src/mailman/rest/tests/test_membership.py +++ b/src/mailman/rest/tests/test_membership.py @@ -35,7 +35,7 @@ from mailman.testing.helpers import ( from mailman.runners.incoming import IncomingRunner from mailman.testing.layers import ConfigLayer, RESTLayer from mailman.utilities.datetime import now -from six.moves.urllib_error import HTTPError +from urllib.error import HTTPError from zope.component import getUtility diff --git a/src/mailman/rest/tests/test_moderation.py b/src/mailman/rest/tests/test_moderation.py index 83261e8e4..262a7ec60 100644 --- a/src/mailman/rest/tests/test_moderation.py +++ b/src/mailman/rest/tests/test_moderation.py @@ -32,7 +32,7 @@ from mailman.interfaces.member import DeliveryMode from mailman.testing.helpers import ( call_api, specialized_message_from_string as mfs) from mailman.testing.layers import RESTLayer -from six.moves.urllib_error import HTTPError +from urllib.error import HTTPError diff --git a/src/mailman/rest/tests/test_preferences.py b/src/mailman/rest/tests/test_preferences.py index 1caf61d61..909b1e0e3 100644 --- a/src/mailman/rest/tests/test_preferences.py +++ b/src/mailman/rest/tests/test_preferences.py @@ -29,7 +29,7 @@ from mailman.database.transaction import transaction from mailman.interfaces.usermanager import IUserManager from mailman.testing.helpers import call_api from mailman.testing.layers import RESTLayer -from six.moves.urllib_error import HTTPError +from urllib.error import HTTPError from zope.component import getUtility diff --git a/src/mailman/rest/tests/test_queues.py b/src/mailman/rest/tests/test_queues.py index 43659a2e4..cc860112b 100644 --- a/src/mailman/rest/tests/test_queues.py +++ b/src/mailman/rest/tests/test_queues.py @@ -29,7 +29,7 @@ from mailman.config import config from mailman.database.transaction import transaction from mailman.testing.helpers import call_api, get_queue_messages from mailman.testing.layers import RESTLayer -from six.moves.urllib_error import HTTPError +from urllib.error import HTTPError TEXT = """\ diff --git a/src/mailman/rest/tests/test_root.py b/src/mailman/rest/tests/test_root.py index 75e53dd8c..6d10fc635 100644 --- a/src/mailman/rest/tests/test_root.py +++ b/src/mailman/rest/tests/test_root.py @@ -32,7 +32,7 @@ from mailman.config import config from mailman.core.system import system from mailman.testing.helpers import call_api from mailman.testing.layers import RESTLayer -from six.moves.urllib_error import HTTPError +from urllib.error import HTTPError diff --git a/src/mailman/rest/tests/test_systemconf.py b/src/mailman/rest/tests/test_systemconf.py index 0360baace..d7d0fe9a2 100644 --- a/src/mailman/rest/tests/test_systemconf.py +++ b/src/mailman/rest/tests/test_systemconf.py @@ -26,7 +26,7 @@ import unittest from mailman.testing.helpers import call_api from mailman.testing.layers import RESTLayer -from six.moves.urllib_error import HTTPError +from urllib.error import HTTPError diff --git a/src/mailman/rest/tests/test_users.py b/src/mailman/rest/tests/test_users.py index 2d85b3452..e009f63c1 100644 --- a/src/mailman/rest/tests/test_users.py +++ b/src/mailman/rest/tests/test_users.py @@ -33,7 +33,7 @@ from mailman.database.transaction import transaction from mailman.interfaces.usermanager import IUserManager from mailman.testing.helpers import call_api, configuration from mailman.testing.layers import RESTLayer -from six.moves.urllib_error import HTTPError +from urllib.error import HTTPError from zope.component import getUtility diff --git a/src/mailman/runners/command.py b/src/mailman/runners/command.py index b19d1aede..e7c732b09 100644 --- a/src/mailman/runners/command.py +++ b/src/mailman/runners/command.py @@ -28,12 +28,12 @@ __all__ = [ # -owner. import re -import six import logging from email.errors import HeaderParseError from email.header import decode_header, make_header from email.iterators import typed_subpart_iterator +from io import StringIO from mailman.config import config from mailman.core.i18n import _ from mailman.core.runner import Runner @@ -80,7 +80,7 @@ class CommandFinder: # subject is a unicode object, convert it to ASCII ignoring all # bogus characters. Otherwise, there's nothing in the subject # that we can use. - if isinstance(raw_subject, six.text_type): + if isinstance(raw_subject, str): safe_subject = raw_subject.encode('us-ascii', 'ignore') self.command_lines.append(safe_subject) # Find the first text/plain part of the message. @@ -96,7 +96,7 @@ class CommandFinder: return body = part.get_payload() # text/plain parts better have string payloads. - assert isinstance(body, six.string_types), 'Non-string decoded payload' + assert isinstance(body, (bytes, str)), 'Non-string decoded payload' lines = body.splitlines() # Use no more lines than specified max_lines = int(config.mailman.email_commands_max_lines) @@ -114,7 +114,7 @@ class CommandFinder: # Ensure that all the parts are unicodes. Since we only accept # ASCII commands and arguments, ignore anything else. parts = [(part - if isinstance(part, six.text_type) + if isinstance(part, str) else part.decode('ascii', 'ignore')) for part in parts] yield parts @@ -126,7 +126,7 @@ class Results: """The email command results.""" def __init__(self, charset='us-ascii'): - self._output = six.StringIO() + self._output = StringIO() self.charset = charset print(_("""\ The results of your email command are provided below. @@ -139,7 +139,7 @@ The results of your email command are provided below. def __str__(self): value = self._output.getvalue() - assert isinstance(value, six.text_type), 'Not a unicode: %r' % value + assert isinstance(value, str), 'Not a string: %r' % value return value diff --git a/src/mailman/runners/digest.py b/src/mailman/runners/digest.py index c7882af02..ad6e0b1c5 100644 --- a/src/mailman/runners/digest.py +++ b/src/mailman/runners/digest.py @@ -30,6 +30,7 @@ from email.header import Header from email.mime.message import MIMEMessage from email.mime.text import MIMEText from email.utils import formatdate, getaddresses, make_msgid +from io import StringIO from mailman.config import config from mailman.core.i18n import _ from mailman.core.runner import Runner @@ -39,8 +40,7 @@ from mailman.interfaces.member import DeliveryMode, DeliveryStatus from mailman.utilities.i18n import make from mailman.utilities.mailbox import Mailbox from mailman.utilities.string import oneline, wrap -from six.moves import cStringIO as StringIO -from six.moves.urllib_error import URLError +from urllib.error import URLError log = logging.getLogger('mailman.error') diff --git a/src/mailman/runners/nntp.py b/src/mailman/runners/nntp.py index c19f06417..ac77b014c 100644 --- a/src/mailman/runners/nntp.py +++ b/src/mailman/runners/nntp.py @@ -28,10 +28,10 @@ import socket import logging import nntplib +from io import StringIO from mailman.config import config from mailman.core.runner import Runner from mailman.interfaces.nntp import NewsgroupModeration -from six.moves import cStringIO as StringIO COMMA = ',' diff --git a/src/mailman/testing/helpers.py b/src/mailman/testing/helpers.py index f38641cf3..a869c8d55 100644 --- a/src/mailman/testing/helpers.py +++ b/src/mailman/testing/helpers.py @@ -67,8 +67,8 @@ from mailman.interfaces.styles import IStyleManager from mailman.interfaces.usermanager import IUserManager from mailman.runners.digest import DigestRunner from mailman.utilities.mailbox import Mailbox -from six.moves.urllib_error import HTTPError -from six.moves.urllib_parse import urlencode +from urllib.error import HTTPError +from urllib.parse import urlencode from zope import event from zope.component import getUtility diff --git a/src/mailman/testing/mta.py b/src/mailman/testing/mta.py index 98f1ffa8c..351ef631a 100644 --- a/src/mailman/testing/mta.py +++ b/src/mailman/testing/mta.py @@ -27,7 +27,7 @@ import logging from lazr.smtptest.controller import QueueController from lazr.smtptest.server import Channel, QueueServer from mailman.interfaces.mta import IMailTransportAgentLifecycle -from six.moves.queue import Empty, Queue +from queue import Empty, Queue from zope.interface import implementer diff --git a/src/mailman/utilities/i18n.py b/src/mailman/utilities/i18n.py index 8f6f27af4..1d3fbca6f 100644 --- a/src/mailman/utilities/i18n.py +++ b/src/mailman/utilities/i18n.py @@ -26,7 +26,6 @@ __all__ = [ import os -import six import sys import errno @@ -200,8 +199,7 @@ def make(template_file, mlist=None, language=None, wrap=True, template = _(fp.read()[:-1]) finally: fp.close() - assert isinstance(template, six.text_type), ( - 'Translated template is not unicode') + assert isinstance(template, str), 'Translated template is not a string' text = expand(template, kw) if wrap: return wrap_text(text) diff --git a/src/mailman/utilities/importer.py b/src/mailman/utilities/importer.py index 46140f282..8590d9b1b 100644 --- a/src/mailman/utilities/importer.py +++ b/src/mailman/utilities/importer.py @@ -45,7 +45,7 @@ from mailman.interfaces.nntp import NewsgroupModeration from mailman.interfaces.usermanager import IUserManager from mailman.utilities.filesystem import makedirs from mailman.utilities.i18n import search -from six.moves.urllib_error import URLError +from urllib.error import URLError from zope.component import getUtility diff --git a/src/mailman/utilities/tests/test_import.py b/src/mailman/utilities/tests/test_import.py index 68a02c720..b0ab9938d 100644 --- a/src/mailman/utilities/tests/test_import.py +++ b/src/mailman/utilities/tests/test_import.py @@ -29,7 +29,6 @@ __all__ = [ import os -import six import mock import unittest @@ -53,8 +52,8 @@ from mailman.testing.layers import ConfigLayer from mailman.utilities.filesystem import makedirs from mailman.utilities.importer import import_config_pck, Import21Error from mailman.utilities.string import expand +from pickle import load from pkg_resources import resource_filename -from six.moves.cPickle import load from zope.component import getUtility @@ -189,7 +188,7 @@ class TestBasicImport(unittest.TestCase): # moderator_password must not be unicode self._pckdict['mod_password'] = b'TESTVALUE' self._import() - self.assertNotIsInstance(self._mlist.moderator_password, six.text_type) + self.assertNotIsInstance(self._mlist.moderator_password, str) self.assertEqual(self._mlist.moderator_password, b'TESTVALUE') def test_newsgroup_moderation(self): |
