diff options
| author | Barry Warsaw | 2016-03-27 22:14:47 -0400 |
|---|---|---|
| committer | Barry Warsaw | 2016-03-27 22:14:47 -0400 |
| commit | 532045c68c6325fa90d74572b6c035c666470849 (patch) | |
| tree | e5acc8183a22cb03ac30d155675904fb23ca05fb /src | |
| parent | d13e7ece87ceefadcb5273e93e5b0caeade0e600 (diff) | |
| download | mailman-532045c68c6325fa90d74572b6c035c666470849.tar.gz mailman-532045c68c6325fa90d74572b6c035c666470849.tar.zst mailman-532045c68c6325fa90d74572b6c035c666470849.zip | |
Diffstat (limited to 'src')
55 files changed, 147 insertions, 67 deletions
diff --git a/src/mailman/app/tests/test_lifecycle.py b/src/mailman/app/tests/test_lifecycle.py index d4ad067d2..a3a186f6f 100644 --- a/src/mailman/app/tests/test_lifecycle.py +++ b/src/mailman/app/tests/test_lifecycle.py @@ -21,10 +21,10 @@ import os import shutil import unittest +from mailman.app.lifecycle import create_list, remove_list from mailman.interfaces.address import InvalidEmailAddressError from mailman.interfaces.domain import BadDomainSpecificationError from mailman.interfaces.listmanager import IListManager -from mailman.app.lifecycle import create_list, remove_list from mailman.testing.layers import ConfigLayer from zope.component import getUtility diff --git a/src/mailman/app/tests/test_subscriptions.py b/src/mailman/app/tests/test_subscriptions.py index 02b5fe6da..1139591de 100644 --- a/src/mailman/app/tests/test_subscriptions.py +++ b/src/mailman/app/tests/test_subscriptions.py @@ -22,14 +22,14 @@ import unittest from mailman.app.lifecycle import create_list from mailman.app.subscriptions import SubscriptionWorkflow from mailman.interfaces.bans import IBanManager +from mailman.interfaces.mailinglist import SubscriptionPolicy from mailman.interfaces.member import MembershipIsBannedError from mailman.interfaces.pending import IPendings from mailman.interfaces.subscriptions import TokenOwner +from mailman.interfaces.usermanager import IUserManager from mailman.testing.helpers import ( LogFileMark, get_queue_messages, set_preferred) from mailman.testing.layers import ConfigLayer -from mailman.interfaces.mailinglist import SubscriptionPolicy -from mailman.interfaces.usermanager import IUserManager from mailman.utilities.datetime import now from unittest.mock import patch from zope.component import getUtility diff --git a/src/mailman/archiving/tests/test_mhonarc.py b/src/mailman/archiving/tests/test_mhonarc.py index 803875bd4..993a14c1c 100644 --- a/src/mailman/archiving/tests/test_mhonarc.py +++ b/src/mailman/archiving/tests/test_mhonarc.py @@ -23,8 +23,8 @@ import shutil import tempfile import unittest -from mailman.archiving.mhonarc import MHonArc from mailman.app.lifecycle import create_list +from mailman.archiving.mhonarc import MHonArc from mailman.database.transaction import transaction from mailman.testing.helpers import ( configuration, specialized_message_from_string as mfs) diff --git a/src/mailman/archiving/tests/test_prototype.py b/src/mailman/archiving/tests/test_prototype.py index 54fbc06af..32dec0729 100644 --- a/src/mailman/archiving/tests/test_prototype.py +++ b/src/mailman/archiving/tests/test_prototype.py @@ -29,9 +29,8 @@ from mailman.app.lifecycle import create_list from mailman.archiving.prototype import Prototype from mailman.config import config from mailman.database.transaction import transaction -from mailman.testing.helpers import LogFileMark from mailman.testing.helpers import ( - specialized_message_from_string as mfs) + LogFileMark, specialized_message_from_string as mfs) from mailman.testing.layers import ConfigLayer from mailman.utilities.email import add_message_hash diff --git a/src/mailman/commands/cli_import.py b/src/mailman/commands/cli_import.py index ecb879a5a..126c026d0 100644 --- a/src/mailman/commands/cli_import.py +++ b/src/mailman/commands/cli_import.py @@ -26,7 +26,7 @@ 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 mailman.utilities.importer import Import21Error, import_config_pck from zope.component import getUtility from zope.interface import implementer diff --git a/src/mailman/commands/tests/test_control.py b/src/mailman/commands/tests/test_control.py index b25c63185..26d921cd7 100644 --- a/src/mailman/commands/tests/test_control.py +++ b/src/mailman/commands/tests/test_control.py @@ -21,13 +21,13 @@ import os import sys import time import errno -import signal import shutil +import signal import socket import unittest from contextlib import ExitStack, suppress -from datetime import timedelta, datetime +from datetime import datetime, timedelta from mailman.commands.cli_control import Start, kill_watcher from mailman.config import Configuration, config from mailman.testing.helpers import configuration diff --git a/src/mailman/database/alembic/env.py b/src/mailman/database/alembic/env.py index 7cda59e82..e97b05d5c 100644 --- a/src/mailman/database/alembic/env.py +++ b/src/mailman/database/alembic/env.py @@ -20,8 +20,8 @@ from alembic import context from contextlib import closing from mailman import public -from mailman.core.initialize import initialize_1 from mailman.config import config +from mailman.core.initialize import initialize_1 from mailman.database.model import Model from mailman.utilities.string import expand from sqlalchemy import create_engine diff --git a/src/mailman/database/alembic/versions/16c2b25c7b_list_subscription_policy.py b/src/mailman/database/alembic/versions/16c2b25c7b_list_subscription_policy.py index 1358b99aa..fef188bd0 100644 --- a/src/mailman/database/alembic/versions/16c2b25c7b_list_subscription_policy.py +++ b/src/mailman/database/alembic/versions/16c2b25c7b_list_subscription_policy.py @@ -6,11 +6,11 @@ Create Date: 2015-03-21 11:00:44.634883 """ -from alembic import op import sqlalchemy as sa +from alembic import op +from mailman.database.helpers import exists_in_db, is_sqlite from mailman.database.types import Enum -from mailman.database.helpers import is_sqlite, exists_in_db from mailman.interfaces.mailinglist import SubscriptionPolicy diff --git a/src/mailman/database/alembic/versions/42756496720_header_matches.py b/src/mailman/database/alembic/versions/42756496720_header_matches.py index d197d5959..4514fb398 100644 --- a/src/mailman/database/alembic/versions/42756496720_header_matches.py +++ b/src/mailman/database/alembic/versions/42756496720_header_matches.py @@ -9,7 +9,7 @@ Create Date: 2015-09-11 10:11:38.310315 import sqlalchemy as sa from alembic import op -from mailman.database.helpers import is_sqlite, exists_in_db +from mailman.database.helpers import exists_in_db, is_sqlite # Revision identifiers, used by Alembic. diff --git a/src/mailman/database/alembic/versions/46e92facee7_add_serverowner_domainowner.py b/src/mailman/database/alembic/versions/46e92facee7_add_serverowner_domainowner.py index 01a08d7d2..1c689670a 100644 --- a/src/mailman/database/alembic/versions/46e92facee7_add_serverowner_domainowner.py +++ b/src/mailman/database/alembic/versions/46e92facee7_add_serverowner_domainowner.py @@ -26,7 +26,7 @@ Create Date: 2015-03-20 16:01:25.007242 import sqlalchemy as sa from alembic import op -from mailman.database.helpers import is_sqlite, exists_in_db +from mailman.database.helpers import exists_in_db, is_sqlite # Revision identifiers, used by Alembic. diff --git a/src/mailman/database/alembic/versions/51b7f92bd06c_initial.py b/src/mailman/database/alembic/versions/51b7f92bd06c_initial.py index 6252e1f23..aa7ea765d 100644 --- a/src/mailman/database/alembic/versions/51b7f92bd06c_initial.py +++ b/src/mailman/database/alembic/versions/51b7f92bd06c_initial.py @@ -32,7 +32,7 @@ Create Date: 2014-10-10 09:53:35.624472 import sqlalchemy as sa from alembic import op -from mailman.database.helpers import is_sqlite, exists_in_db +from mailman.database.helpers import exists_in_db, is_sqlite # Revision identifiers, used by Alembic. diff --git a/src/mailman/database/tests/test_factory.py b/src/mailman/database/tests/test_factory.py index 0c2e595c9..d8593cc76 100644 --- a/src/mailman/database/tests/test_factory.py +++ b/src/mailman/database/tests/test_factory.py @@ -26,8 +26,8 @@ from mailman.database.factory import LAST_STORM_SCHEMA_VERSION, SchemaManager from mailman.database.model import Model from mailman.interfaces.database import DatabaseError from mailman.testing.layers import ConfigLayer -from sqlalchemy import MetaData, Table, Column, Integer, Unicode -from sqlalchemy.exc import ProgrammingError, OperationalError +from sqlalchemy import Column, Integer, MetaData, Table, Unicode +from sqlalchemy.exc import OperationalError, ProgrammingError from sqlalchemy.schema import Index from unittest.mock import patch diff --git a/src/mailman/database/types.py b/src/mailman/database/types.py index 343ee0461..28b261514 100644 --- a/src/mailman/database/types.py +++ b/src/mailman/database/types.py @@ -22,7 +22,7 @@ import uuid from mailman import public from sqlalchemy import Integer from sqlalchemy.dialects import postgresql -from sqlalchemy.types import TypeDecorator, CHAR +from sqlalchemy.types import CHAR, TypeDecorator @public diff --git a/src/mailman/handlers/rfc_2369.py b/src/mailman/handlers/rfc_2369.py index 3daf6414d..59c618da8 100644 --- a/src/mailman/handlers/rfc_2369.py +++ b/src/mailman/handlers/rfc_2369.py @@ -24,8 +24,8 @@ from mailman import public from mailman.core.i18n import _ from mailman.handlers.cook_headers import uheader from mailman.interfaces.archiver import ArchivePolicy -from mailman.interfaces.mailinglist import IListArchiverSet from mailman.interfaces.handler import IHandler +from mailman.interfaces.mailinglist import IListArchiverSet from zope.interface import implementer diff --git a/src/mailman/interfaces/address.py b/src/mailman/interfaces/address.py index 19a9d930c..8a1ac81d5 100644 --- a/src/mailman/interfaces/address.py +++ b/src/mailman/interfaces/address.py @@ -19,7 +19,7 @@ from mailman import public from mailman.interfaces.errors import MailmanError -from zope.interface import Interface, Attribute +from zope.interface import Attribute, Interface @public diff --git a/src/mailman/interfaces/archiver.py b/src/mailman/interfaces/archiver.py index 9a210d74e..cd10b22e3 100644 --- a/src/mailman/interfaces/archiver.py +++ b/src/mailman/interfaces/archiver.py @@ -19,7 +19,7 @@ from enum import Enum from mailman import public -from zope.interface import Interface, Attribute +from zope.interface import Attribute, Interface @public diff --git a/src/mailman/interfaces/autorespond.py b/src/mailman/interfaces/autorespond.py index 7f6d44711..a67cf6aaf 100644 --- a/src/mailman/interfaces/autorespond.py +++ b/src/mailman/interfaces/autorespond.py @@ -20,7 +20,7 @@ from datetime import timedelta from enum import Enum from mailman import public -from zope.interface import Interface, Attribute +from zope.interface import Attribute, Interface ALWAYS_REPLY = timedelta() diff --git a/src/mailman/interfaces/chain.py b/src/mailman/interfaces/chain.py index 3fccb4090..0af9bf8e5 100644 --- a/src/mailman/interfaces/chain.py +++ b/src/mailman/interfaces/chain.py @@ -19,7 +19,7 @@ from enum import Enum from mailman import public -from zope.interface import Interface, Attribute +from zope.interface import Attribute, Interface @public diff --git a/src/mailman/interfaces/command.py b/src/mailman/interfaces/command.py index 76bf8aa1c..95719b504 100644 --- a/src/mailman/interfaces/command.py +++ b/src/mailman/interfaces/command.py @@ -19,7 +19,7 @@ from enum import Enum from mailman import public -from zope.interface import Interface, Attribute +from zope.interface import Attribute, Interface @public diff --git a/src/mailman/interfaces/digests.py b/src/mailman/interfaces/digests.py index 0bff36ec4..cff838284 100644 --- a/src/mailman/interfaces/digests.py +++ b/src/mailman/interfaces/digests.py @@ -19,7 +19,7 @@ from enum import Enum from mailman import public -from zope.interface import Interface, Attribute +from zope.interface import Attribute, Interface @public diff --git a/src/mailman/interfaces/domain.py b/src/mailman/interfaces/domain.py index eef391071..7be5909a9 100644 --- a/src/mailman/interfaces/domain.py +++ b/src/mailman/interfaces/domain.py @@ -19,7 +19,7 @@ from mailman import public from mailman.interfaces.errors import MailmanError -from zope.interface import Interface, Attribute +from zope.interface import Attribute, Interface @public diff --git a/src/mailman/interfaces/languages.py b/src/mailman/interfaces/languages.py index 129b5e1df..b45083575 100644 --- a/src/mailman/interfaces/languages.py +++ b/src/mailman/interfaces/languages.py @@ -18,7 +18,7 @@ """Interfaces for managing languages.""" from mailman import public -from zope.interface import Interface, Attribute +from zope.interface import Attribute, Interface @public diff --git a/src/mailman/interfaces/listmanager.py b/src/mailman/interfaces/listmanager.py index 0887248b2..fddec06c8 100644 --- a/src/mailman/interfaces/listmanager.py +++ b/src/mailman/interfaces/listmanager.py @@ -19,7 +19,7 @@ from mailman import public from mailman.interfaces.errors import MailmanError -from zope.interface import Interface, Attribute +from zope.interface import Attribute, Interface @public diff --git a/src/mailman/interfaces/mailinglist.py b/src/mailman/interfaces/mailinglist.py index 4ccf97a6d..911d958f5 100644 --- a/src/mailman/interfaces/mailinglist.py +++ b/src/mailman/interfaces/mailinglist.py @@ -20,7 +20,7 @@ from enum import Enum from mailman import public from mailman.interfaces.member import MemberRole -from zope.interface import Interface, Attribute +from zope.interface import Attribute, Interface @public diff --git a/src/mailman/interfaces/member.py b/src/mailman/interfaces/member.py index dd8d3f383..367838e21 100644 --- a/src/mailman/interfaces/member.py +++ b/src/mailman/interfaces/member.py @@ -20,7 +20,7 @@ from enum import Enum from mailman import public from mailman.interfaces.errors import MailmanError -from zope.interface import Interface, Attribute +from zope.interface import Attribute, Interface @public diff --git a/src/mailman/interfaces/messages.py b/src/mailman/interfaces/messages.py index cd05722c9..2ea2aa312 100644 --- a/src/mailman/interfaces/messages.py +++ b/src/mailman/interfaces/messages.py @@ -18,7 +18,7 @@ """The message storage service.""" from mailman import public -from zope.interface import Interface, Attribute +from zope.interface import Attribute, Interface @public diff --git a/src/mailman/interfaces/mime.py b/src/mailman/interfaces/mime.py index e30354cd9..c1a6e050f 100644 --- a/src/mailman/interfaces/mime.py +++ b/src/mailman/interfaces/mime.py @@ -19,7 +19,7 @@ from enum import Enum from mailman import public -from zope.interface import Interface, Attribute +from zope.interface import Attribute, Interface @public diff --git a/src/mailman/interfaces/mlistrequest.py b/src/mailman/interfaces/mlistrequest.py index 731caf147..45712ed86 100644 --- a/src/mailman/interfaces/mlistrequest.py +++ b/src/mailman/interfaces/mlistrequest.py @@ -18,7 +18,7 @@ """Interface for a web request accessing a mailing list.""" from mailman import public -from zope.interface import Interface, Attribute +from zope.interface import Attribute, Interface @public diff --git a/src/mailman/interfaces/pending.py b/src/mailman/interfaces/pending.py index b7621cbe2..cf92fed9e 100644 --- a/src/mailman/interfaces/pending.py +++ b/src/mailman/interfaces/pending.py @@ -23,7 +23,7 @@ confirmation. """ from mailman import public -from zope.interface import Interface, Attribute +from zope.interface import Attribute, Interface @public diff --git a/src/mailman/interfaces/pipeline.py b/src/mailman/interfaces/pipeline.py index 5e39c2a3e..cdef6a768 100644 --- a/src/mailman/interfaces/pipeline.py +++ b/src/mailman/interfaces/pipeline.py @@ -18,7 +18,7 @@ """Interface for describing pipelines.""" from mailman import public -from zope.interface import Interface, Attribute +from zope.interface import Attribute, Interface # For i18n extraction. diff --git a/src/mailman/interfaces/preferences.py b/src/mailman/interfaces/preferences.py index b3690ac35..4b5b490cb 100644 --- a/src/mailman/interfaces/preferences.py +++ b/src/mailman/interfaces/preferences.py @@ -18,7 +18,7 @@ """Interface for preferences.""" from mailman import public -from zope.interface import Interface, Attribute +from zope.interface import Attribute, Interface @public diff --git a/src/mailman/interfaces/requests.py b/src/mailman/interfaces/requests.py index be164183e..3098772a9 100644 --- a/src/mailman/interfaces/requests.py +++ b/src/mailman/interfaces/requests.py @@ -23,7 +23,7 @@ moderators, such as subscription requests and held messages. from enum import Enum from mailman import public -from zope.interface import Interface, Attribute +from zope.interface import Attribute, Interface @public diff --git a/src/mailman/interfaces/roster.py b/src/mailman/interfaces/roster.py index 5ad36847b..2993e4fc4 100644 --- a/src/mailman/interfaces/roster.py +++ b/src/mailman/interfaces/roster.py @@ -18,7 +18,7 @@ """Interface for a roster of members.""" from mailman import public -from zope.interface import Interface, Attribute +from zope.interface import Attribute, Interface @public diff --git a/src/mailman/interfaces/rules.py b/src/mailman/interfaces/rules.py index 7093da5a7..9f5f1365e 100644 --- a/src/mailman/interfaces/rules.py +++ b/src/mailman/interfaces/rules.py @@ -18,7 +18,7 @@ """Interface describing the basics of rules.""" from mailman import public -from zope.interface import Interface, Attribute +from zope.interface import Attribute, Interface @public diff --git a/src/mailman/interfaces/runner.py b/src/mailman/interfaces/runner.py index aed8edddf..e39efb097 100644 --- a/src/mailman/interfaces/runner.py +++ b/src/mailman/interfaces/runner.py @@ -18,7 +18,7 @@ """Interface for runners.""" from mailman import public -from zope.interface import Interface, Attribute +from zope.interface import Attribute, Interface @public diff --git a/src/mailman/interfaces/styles.py b/src/mailman/interfaces/styles.py index 5629af5d4..a183933f7 100644 --- a/src/mailman/interfaces/styles.py +++ b/src/mailman/interfaces/styles.py @@ -19,7 +19,7 @@ from mailman import public from mailman.interfaces.errors import MailmanError -from zope.interface import Interface, Attribute +from zope.interface import Attribute, Interface @public diff --git a/src/mailman/interfaces/switchboard.py b/src/mailman/interfaces/switchboard.py index 30dd62843..4428f4b12 100644 --- a/src/mailman/interfaces/switchboard.py +++ b/src/mailman/interfaces/switchboard.py @@ -18,7 +18,7 @@ """Interface for switchboards.""" from mailman import public -from zope.interface import Interface, Attribute +from zope.interface import Attribute, Interface @public diff --git a/src/mailman/interfaces/system.py b/src/mailman/interfaces/system.py index 95e92b20c..1b0a9a2de 100644 --- a/src/mailman/interfaces/system.py +++ b/src/mailman/interfaces/system.py @@ -18,7 +18,7 @@ """System information.""" from mailman import public -from zope.interface import Interface, Attribute +from zope.interface import Attribute, Interface @public diff --git a/src/mailman/interfaces/user.py b/src/mailman/interfaces/user.py index f80b51583..f1932fd7f 100644 --- a/src/mailman/interfaces/user.py +++ b/src/mailman/interfaces/user.py @@ -19,7 +19,7 @@ from mailman import public from mailman.interfaces.address import AddressError -from zope.interface import Interface, Attribute +from zope.interface import Attribute, Interface @public diff --git a/src/mailman/interfaces/usermanager.py b/src/mailman/interfaces/usermanager.py index 3cd18bd20..87d4bf6e2 100644 --- a/src/mailman/interfaces/usermanager.py +++ b/src/mailman/interfaces/usermanager.py @@ -18,7 +18,7 @@ """Interface describing the user management service.""" from mailman import public -from zope.interface import Interface, Attribute +from zope.interface import Attribute, Interface @public diff --git a/src/mailman/model/domain.py b/src/mailman/model/domain.py index 8607f0d94..e137da310 100644 --- a/src/mailman/model/domain.py +++ b/src/mailman/model/domain.py @@ -26,9 +26,9 @@ from mailman.interfaces.domain import ( from mailman.interfaces.user import IUser from mailman.interfaces.usermanager import IUserManager from mailman.model.mailinglist import MailingList -from urllib.parse import urljoin, urlparse from sqlalchemy import Column, Integer, Unicode from sqlalchemy.orm import relationship +from urllib.parse import urljoin, urlparse from zope.event import notify from zope.interface import implementer from zope.component import getUtility diff --git a/src/mailman/model/subscriptions.py b/src/mailman/model/subscriptions.py index 1591a3adf..3d2bcbeb0 100644 --- a/src/mailman/model/subscriptions.py +++ b/src/mailman/model/subscriptions.py @@ -29,7 +29,7 @@ from mailman.model.member import Member from mailman.model.user import User from mailman.utilities.queries import QuerySequence from operator import attrgetter -from sqlalchemy.orm.exc import NoResultFound, MultipleResultsFound +from sqlalchemy.orm.exc import MultipleResultsFound, NoResultFound from zope.component import getUtility from zope.interface import implementer diff --git a/src/mailman/model/tests/test_listmanager.py b/src/mailman/model/tests/test_listmanager.py index 464ebfc52..a8ac68c92 100644 --- a/src/mailman/model/tests/test_listmanager.py +++ b/src/mailman/model/tests/test_listmanager.py @@ -22,8 +22,8 @@ import unittest from mailman.app.lifecycle import create_list from mailman.app.moderator import hold_message from mailman.config import config -from mailman.interfaces.autorespond import IAutoResponseSet, Response from mailman.interfaces.address import InvalidEmailAddressError +from mailman.interfaces.autorespond import IAutoResponseSet, Response from mailman.interfaces.listmanager import ( IListManager, ListAlreadyExistsError, ListCreatedEvent, ListCreatingEvent, ListDeletedEvent, ListDeletingEvent) diff --git a/src/mailman/rest/lists.py b/src/mailman/rest/lists.py index 2d669a267..7315d805a 100644 --- a/src/mailman/rest/lists.py +++ b/src/mailman/rest/lists.py @@ -31,11 +31,11 @@ from mailman.interfaces.member import MemberRole from mailman.interfaces.styles import IStyleManager from mailman.interfaces.subscriptions import ISubscriptionService from mailman.rest.bans import BannedEmails -from mailman.rest.listconf import ListConfiguration from mailman.rest.header_matches import HeaderMatches from mailman.rest.helpers import ( CollectionMixin, GetterSetter, NotFound, accepted, bad_request, child, created, etag, no_content, not_found, okay) +from mailman.rest.listconf import ListConfiguration from mailman.rest.members import AMember, MemberCollection from mailman.rest.post_moderation import HeldMessages from mailman.rest.sub_moderation import SubscriptionRequests diff --git a/src/mailman/rest/queues.py b/src/mailman/rest/queues.py index 69f6df973..9fa5b9dc6 100644 --- a/src/mailman/rest/queues.py +++ b/src/mailman/rest/queues.py @@ -18,8 +18,8 @@ """<api>/queues.""" from mailman import public -from mailman.config import config from mailman.app.inject import inject_text +from mailman.config import config from mailman.interfaces.listmanager import IListManager from mailman.rest.helpers import ( CollectionMixin, bad_request, created, etag, no_content, not_found, okay) diff --git a/src/mailman/rest/tests/test_bans.py b/src/mailman/rest/tests/test_bans.py index e6159d9a4..fc096fa1b 100644 --- a/src/mailman/rest/tests/test_bans.py +++ b/src/mailman/rest/tests/test_bans.py @@ -22,8 +22,8 @@ import unittest from mailman.app.lifecycle import create_list from mailman.database.transaction import transaction from mailman.interfaces.bans import IBanManager -from mailman.testing.layers import RESTLayer from mailman.testing.helpers import call_api +from mailman.testing.layers import RESTLayer from urllib.error import HTTPError diff --git a/src/mailman/rest/tests/test_membership.py b/src/mailman/rest/tests/test_membership.py index 3d47b13a7..1ea70e90b 100644 --- a/src/mailman/rest/tests/test_membership.py +++ b/src/mailman/rest/tests/test_membership.py @@ -28,10 +28,10 @@ from mailman.interfaces.member import DeliveryMode, MemberRole from mailman.interfaces.registrar import IRegistrar from mailman.interfaces.subscriptions import TokenOwner from mailman.interfaces.usermanager import IUserManager +from mailman.runners.incoming import IncomingRunner from mailman.testing.helpers import ( TestableMaster, call_api, get_lmtp_client, make_testable_runner, set_preferred, subscribe, wait_for_webservice) -from mailman.runners.incoming import IncomingRunner from mailman.testing.layers import ConfigLayer, RESTLayer from mailman.utilities.datetime import now from urllib.error import HTTPError diff --git a/src/mailman/rest/tests/test_users.py b/src/mailman/rest/tests/test_users.py index e42bdf623..890f1df3f 100644 --- a/src/mailman/rest/tests/test_users.py +++ b/src/mailman/rest/tests/test_users.py @@ -25,11 +25,11 @@ from mailman.config import config from mailman.database.transaction import transaction from mailman.interfaces.member import DeliveryMode from mailman.interfaces.usermanager import IUserManager +from mailman.model.preferences import Preferences from mailman.testing.helpers import call_api, configuration from mailman.testing.layers import RESTLayer from urllib.error import HTTPError from zope.component import getUtility -from mailman.model.preferences import Preferences class TestUsers(unittest.TestCase): diff --git a/src/mailman/rest/tests/test_validator.py b/src/mailman/rest/tests/test_validator.py index de2207108..5da4349d2 100644 --- a/src/mailman/rest/tests/test_validator.py +++ b/src/mailman/rest/tests/test_validator.py @@ -19,8 +19,8 @@ import unittest -from mailman.interfaces.usermanager import IUserManager from mailman.core.api import API30, API31 +from mailman.interfaces.usermanager import IUserManager from mailman.rest.validator import ( list_of_strings_validator, subscriber_validator) from mailman.testing.layers import RESTLayer diff --git a/src/mailman/rest/wsgiapp.py b/src/mailman/rest/wsgiapp.py index 6184da4ee..2c22948bb 100644 --- a/src/mailman/rest/wsgiapp.py +++ b/src/mailman/rest/wsgiapp.py @@ -27,8 +27,8 @@ from mailman import public from mailman.config import config from mailman.database.transaction import transactional from mailman.rest.root import Root -from wsgiref.simple_server import WSGIRequestHandler, WSGIServer -from wsgiref.simple_server import make_server as wsgi_server +from wsgiref.simple_server import ( + WSGIRequestHandler, WSGIServer, make_server as wsgi_server) log = logging.getLogger('mailman.http') diff --git a/src/mailman/runners/archive.py b/src/mailman/runners/archive.py index cfa0b1a12..7bf655a24 100644 --- a/src/mailman/runners/archive.py +++ b/src/mailman/runners/archive.py @@ -20,15 +20,15 @@ import copy import logging -from email.utils import parsedate_tz, mktime_tz from datetime import datetime +from email.utils import parsedate_tz, mktime_tz from lazr.config import as_timedelta from mailman import public from mailman.config import config from mailman.core.runner import Runner from mailman.interfaces.archiver import ClobberDate -from mailman.utilities.datetime import RFC822_DATE_FMT, now from mailman.interfaces.mailinglist import IListArchiverSet +from mailman.utilities.datetime import RFC822_DATE_FMT, now log = logging.getLogger('mailman.archiver') diff --git a/src/mailman/runners/tests/test_lmtp.py b/src/mailman/runners/tests/test_lmtp.py index 9d86af2dc..b4f810947 100644 --- a/src/mailman/runners/tests/test_lmtp.py +++ b/src/mailman/runners/tests/test_lmtp.py @@ -22,8 +22,8 @@ import smtplib import unittest from datetime import datetime -from mailman.config import config from mailman.app.lifecycle import create_list +from mailman.config import config from mailman.database.transaction import transaction from mailman.testing.helpers import get_lmtp_client, get_queue_messages from mailman.testing.layers import LMTPLayer diff --git a/src/mailman/runners/tests/test_owner.py b/src/mailman/runners/tests/test_owner.py index 48ccaaba0..1aa430b28 100644 --- a/src/mailman/runners/tests/test_owner.py +++ b/src/mailman/runners/tests/test_owner.py @@ -29,11 +29,11 @@ from mailman.config import config from mailman.database.transaction import transaction from mailman.interfaces.member import MemberRole from mailman.interfaces.usermanager import IUserManager -from mailman.testing.helpers import ( - TestableMaster, get_lmtp_client, make_testable_runner) from mailman.runners.incoming import IncomingRunner from mailman.runners.outgoing import OutgoingRunner from mailman.runners.pipeline import PipelineRunner +from mailman.testing.helpers import ( + TestableMaster, get_lmtp_client, make_testable_runner) from mailman.testing.layers import SMTPLayer from operator import itemgetter from zope.component import getUtility diff --git a/src/mailman/testing/flake8.py b/src/mailman/testing/flake8.py index d002e8b6c..df4e39c90 100644 --- a/src/mailman/testing/flake8.py +++ b/src/mailman/testing/flake8.py @@ -19,17 +19,39 @@ from ast import NodeVisitor +from collections import namedtuple +from enum import Enum + + +class ImportType(Enum): + non_from = 0 + from_import = 1 + + +ImportRecord = namedtuple('ImportRecord', 'itype lineno colno, module, names') class ImportVisitor(NodeVisitor): def __init__(self): - self.last_import = None + self.imports = [] def visit_Import(self, node): if node.col_offset != 0: # Ignore nested imports. return - + names = [alias.name for alias in node.names] + self.imports.append( + ImportRecord(ImportType.non_from, node.lineno, node.col_offset, + None, names)) + + def visit_ImportFrom(self, node): + if node.col_offset != 0: + # Ignore nested imports. + return + names = [alias.name for alias in node.names] + self.imports.append( + ImportRecord(ImportType.from_import, node.lineno, node.col_offset, + node.module, names)) class ImportOrder: @@ -40,5 +62,65 @@ class ImportOrder: self.tree = tree self.filename = filename + def _error(self, record, code, text): + return (record.lineno, record.colno, + '{} {}'.format(code, text), ImportOrder) + def run(self): - print('Running', self.name, self.version) + visitor = ImportVisitor() + visitor.visit(self.tree) + last_import = None + for record in visitor.imports: + if last_import is None: + last_import = record + continue + if record.itype is ImportType.non_from: + if len(record.names) != 1: + yield self._error(record, 'B402', + 'Multiple names on non-from import') + if last_import.itype is ImportType.from_import: + yield self._error(record, 'B401', + 'Non-from import follows from-import') + if len(last_import.names[0]) > len(record.names[0]): + yield self._error( + record, 'B403', + 'Shorter non-from import follows longer') + # It's also possible that the imports are the same length, in + # which case they must be sorted alphabetically. + if (len(last_import.names[0]) == len(record.names[0]) and + last_import.names[0] > record.names[0]): + yield self._error( + record, 'B404', + 'Non-from imports not alphabetically sorted') + if last_import.lineno + 1 != record.lineno: + yield self._error( + record, 'B405', + 'Unexpected blank line since last non-from import') + else: + assert record.itype is ImportType.from_import + if (last_import.itype is ImportType.non_from and + record.lineno != last_import.lineno + 2): + yield self._error( + record, 'B406', + 'Expected one blank line since last non-from import') + if last_import.itype is ImportType.non_from: + last_import = record + continue + if last_import.module > record.module: + yield self._error( + record, 'B407', + 'From-imports not sorted alphabetically') + # All imports from the same module should show up in the same + # multiline import. + if last_import.module == record.module: + yield self._error( + record, 'B408', + 'Importing from same module on different lines') + # Check the sort order of the imported names. + if sorted(record.names) != record.names: + yield self._error( + record, 'B409', + 'Imported names are not sorted alphabetically') + # How to check for no blank lines between from imports? + # Update the last import. + last_import = record diff --git a/src/mailman/utilities/importer.py b/src/mailman/utilities/importer.py index acd673c7d..9a5684d9c 100644 --- a/src/mailman/utilities/importer.py +++ b/src/mailman/utilities/importer.py @@ -37,9 +37,8 @@ from mailman.interfaces.digests import DigestFrequency from mailman.interfaces.errors import MailmanError from mailman.interfaces.languages import ILanguageManager from mailman.interfaces.mailinglist import ( - IAcceptableAliasSet, IHeaderMatchList) -from mailman.interfaces.mailinglist import Personalization, ReplyToMunging -from mailman.interfaces.mailinglist import SubscriptionPolicy + IAcceptableAliasSet, IHeaderMatchList, Personalization, ReplyToMunging, + SubscriptionPolicy) from mailman.interfaces.member import DeliveryMode, DeliveryStatus, MemberRole from mailman.interfaces.nntp import NewsgroupModeration from mailman.interfaces.usermanager import IUserManager |
