summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/mailman/core/chains.py2
-rw-r--r--src/mailman/model/address.py2
-rw-r--r--src/mailman/model/digests.py2
-rw-r--r--src/mailman/model/domain.py2
-rw-r--r--src/mailman/model/mime.py2
-rw-r--r--src/mailman/model/user.py2
-rw-r--r--src/mailman/runners/archive.py2
-rw-r--r--src/mailman/testing/flake8.py17
8 files changed, 23 insertions, 8 deletions
diff --git a/src/mailman/core/chains.py b/src/mailman/core/chains.py
index 3a503f193..ec84db2c4 100644
--- a/src/mailman/core/chains.py
+++ b/src/mailman/core/chains.py
@@ -20,7 +20,7 @@
from mailman import public
from mailman.chains.base import Chain, TerminalChainBase
from mailman.config import config
-from mailman.interfaces.chain import LinkAction, IChain
+from mailman.interfaces.chain import IChain, LinkAction
from mailman.utilities.modules import find_components
from zope.interface.verify import verifyObject
diff --git a/src/mailman/model/address.py b/src/mailman/model/address.py
index ce32704bb..7a3485378 100644
--- a/src/mailman/model/address.py
+++ b/src/mailman/model/address.py
@@ -24,7 +24,7 @@ from mailman.interfaces.address import (
AddressVerificationEvent, IAddress, IEmailValidator)
from mailman.utilities.datetime import now
from sqlalchemy import Column, DateTime, ForeignKey, Integer, Unicode
-from sqlalchemy.orm import relationship, backref
+from sqlalchemy.orm import backref, relationship
from zope.component import getUtility
from zope.event import notify
from zope.interface import implementer
diff --git a/src/mailman/model/digests.py b/src/mailman/model/digests.py
index fa1e7c417..ac49249cc 100644
--- a/src/mailman/model/digests.py
+++ b/src/mailman/model/digests.py
@@ -22,7 +22,7 @@ from mailman.database.model import Model
from mailman.database.types import Enum
from mailman.interfaces.digests import IOneLastDigest
from mailman.interfaces.member import DeliveryMode
-from sqlalchemy import Column, Integer, ForeignKey
+from sqlalchemy import Column, ForeignKey, Integer
from sqlalchemy.orm import relationship
from zope.interface import implementer
diff --git a/src/mailman/model/domain.py b/src/mailman/model/domain.py
index e137da310..5eb67fa95 100644
--- a/src/mailman/model/domain.py
+++ b/src/mailman/model/domain.py
@@ -29,9 +29,9 @@ from mailman.model.mailinglist import MailingList
from sqlalchemy import Column, Integer, Unicode
from sqlalchemy.orm import relationship
from urllib.parse import urljoin, urlparse
+from zope.component import getUtility
from zope.event import notify
from zope.interface import implementer
-from zope.component import getUtility
@public
diff --git a/src/mailman/model/mime.py b/src/mailman/model/mime.py
index 3bc09a411..849eac385 100644
--- a/src/mailman/model/mime.py
+++ b/src/mailman/model/mime.py
@@ -20,7 +20,7 @@
from mailman import public
from mailman.database.model import Model
from mailman.database.types import Enum
-from mailman.interfaces.mime import IContentFilter, FilterType
+from mailman.interfaces.mime import FilterType, IContentFilter
from sqlalchemy import Column, ForeignKey, Integer, Unicode
from sqlalchemy.orm import relationship
from zope.interface import implementer
diff --git a/src/mailman/model/user.py b/src/mailman/model/user.py
index a1a61b38b..767600bdc 100644
--- a/src/mailman/model/user.py
+++ b/src/mailman/model/user.py
@@ -31,7 +31,7 @@ from mailman.model.roster import Memberships
from mailman.utilities.datetime import factory as date_factory
from mailman.utilities.uid import UIDFactory
from sqlalchemy import Boolean, Column, DateTime, ForeignKey, Integer, Unicode
-from sqlalchemy.orm import relationship, backref
+from sqlalchemy.orm import backref, relationship
from zope.event import notify
from zope.interface import implementer
diff --git a/src/mailman/runners/archive.py b/src/mailman/runners/archive.py
index 7bf655a24..23b7b164d 100644
--- a/src/mailman/runners/archive.py
+++ b/src/mailman/runners/archive.py
@@ -21,7 +21,7 @@ import copy
import logging
from datetime import datetime
-from email.utils import parsedate_tz, mktime_tz
+from email.utils import mktime_tz, parsedate_tz
from lazr.config import as_timedelta
from mailman import public
from mailman.config import config
diff --git a/src/mailman/testing/flake8.py b/src/mailman/testing/flake8.py
index df4e39c90..18193d1e1 100644
--- a/src/mailman/testing/flake8.py
+++ b/src/mailman/testing/flake8.py
@@ -81,7 +81,22 @@ class ImportOrder:
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]):
+ # Shorter imports should always precede longer import *except*
+ # when they are dotted imports and everything but the last
+ # path component are the same. In that case, they should be
+ # sorted alphabetically.
+ last_name = last_import.names[0]
+ this_name = record.names[0]
+ if '.' in last_name and '.' in this_name:
+ last_parts = last_name.split('.')
+ this_parts = this_name.split('.')
+ if (last_parts[:-1] == this_parts[:-1] and
+ last_parts[-1] > this_parts[-1]):
+ yield self._error(
+ record, 'B410',
+ 'Dotted non-from import not sorted '
+ 'alphabetically')
+ elif len(last_name) > len(this_name):
yield self._error(
record, 'B403',
'Shorter non-from import follows longer')