aio-libs / aio-libs/aiosmtpd

Conflicting import order tool configurations

Abierto
#604 1 comentario 0 reacciones 2 asignados Reclamado por @loqs Ver en GitHub
Lenguaje dominante
Python
Estrellas
373
Forks
105
Merge medio
4 min
PR fusionados (30 d)
2

Descripción

isort configured in pyproject.toml:
```
[tool.isort]
profile = "black"
multi_line_output = 3
known_local_folder = [
"aiosmtpd"
]
combine_as_imports = true
```
Added in commits 779717df1aaa43c73061735393b00335f69d24b1 and 3075e23751c14bc1603780f48f02fc66f6cf6561 by @pepoluan. isort is not listed in requirements-dev.txt
```
$ isort aiosmtpd
Fixing /var/cache/github/aio-libs/aiosmtpd/aiosmtpd/smtp.py
Fixing /var/cache/github/aio-libs/aiosmtpd/aiosmtpd/__init__.py
Fixing /var/cache/github/aio-libs/aiosmtpd/aiosmtpd/controller.py
Fixing /var/cache/github/aio-libs/aiosmtpd/aiosmtpd/handlers.py
Fixing /var/cache/github/aio-libs/aiosmtpd/aiosmtpd/qa/test_1testsuite.py
Fixing /var/cache/github/aio-libs/aiosmtpd/aiosmtpd/docs/conf.py
Fixing /var/cache/github/aio-libs/aiosmtpd/aiosmtpd/docs/_exts/autoprogramm.py
Fixing /var/cache/github/aio-libs/aiosmtpd/aiosmtpd/tests/test_main.py
Fixing /var/cache/github/aio-libs/aiosmtpd/aiosmtpd/tests/test_starttls.py
Fixing /var/cache/github/aio-libs/aiosmtpd/aiosmtpd/tests/conftest.py
Fixing /var/cache/github/aio-libs/aiosmtpd/aiosmtpd/tests/test_smtp.py
Fixing /var/cache/github/aio-libs/aiosmtpd/aiosmtpd/tests/test_proxyprotocol.py
Fixing /var/cache/github/aio-libs/aiosmtpd/aiosmtpd/tests/test_handlers.py
Fixing /var/cache/github/aio-libs/aiosmtpd/aiosmtpd/tests/test_smtps.py
Fixing /var/cache/github/aio-libs/aiosmtpd/aiosmtpd/tests/test_server.py
Fixing /var/cache/github/aio-libs/aiosmtpd/aiosmtpd/tests/test_smtpsmuggling.py
Fixing /var/cache/github/aio-libs/aiosmtpd/aiosmtpd/tests/test_lmtp.py
Fixing /var/cache/github/aio-libs/aiosmtpd/aiosmtpd/testing/helpers.py
$ git diff
diff --git a/aiosmtpd/__init__.py b/aiosmtpd/__init__.py
index e6e714a..b52f290 100644
--- a/aiosmtpd/__init__.py
+++ b/aiosmtpd/__init__.py
@@ -3,7 +3,6 @@
import asyncio
import warnings

-
__version__ = "1.4.6"


diff --git a/aiosmtpd/controller.py b/aiosmtpd/controller.py
index 8efa33e..78dd29c 100644
--- a/aiosmtpd/controller.py
+++ b/aiosmtpd/controller.py
@@ -10,9 +10,14 @@ import time
from abc import ABCMeta, abstractmethod
from contextlib import ExitStack
from pathlib import Path
-from socket import AF_INET6, SOCK_STREAM, create_connection, has_ipv6
-from socket import socket as makesock
-from socket import timeout as socket_timeout
+from socket import (
+ AF_INET6,
+ SOCK_STREAM,
+ create_connection,
+ has_ipv6,
+ socket as makesock,
+ timeout as socket_timeout,
+)

try:
from socket import AF_UNIX
diff --git a/aiosmtpd/docs/_exts/autoprogramm.py b/aiosmtpd/docs/_exts/autoprogramm.py
index ea4a5cf..eb13174 100644
--- a/aiosmtpd/docs/_exts/autoprogramm.py
+++ b/aiosmtpd/docs/_exts/autoprogramm.py
@@ -41,7 +41,6 @@ from docutils.parsers.rst.directives import unchanged # pytype: disable=pyi-err
from docutils.statemachine import StringList
from sphinx.util.nodes import nested_parse_with_titles

-
__all__ = ("AutoprogrammDirective", "import_object", "scan_programs", "setup")


diff --git a/aiosmtpd/docs/conf.py b/aiosmtpd/docs/conf.py
index 44a6422..230895f 100644
--- a/aiosmtpd/docs/conf.py
+++ b/aiosmtpd/docs/conf.py
@@ -92,6 +92,7 @@ copyright = f"2015-{datetime.datetime.now().year}, {author}"
#

from aiosmtpd import __version__ # noqa: E402
+
# "noqa: E402" used to silence flake8 protest

release = __version__
diff --git a/aiosmtpd/handlers.py b/aiosmtpd/handlers.py
index 94a2fc8..086ba5f 100644
--- a/aiosmtpd/handlers.py
+++ b/aiosmtpd/handlers.py
@@ -20,14 +20,16 @@ from abc import ABCMeta, abstractmethod
from argparse import ArgumentParser
from email.message import Message as Em_Message
from email.parser import BytesParser, Parser
-from typing import Any, List, TextIO, Type, TypeVar, Optional, Union
+from typing import Any, List, Optional, TextIO, Type, TypeVar, Union

from public import public

from aiosmtpd import _get_or_new_eventloop
-from aiosmtpd.smtp import SMTP as SMTPServer
-from aiosmtpd.smtp import Envelope as SMTPEnvelope
-from aiosmtpd.smtp import Session as SMTPSession
+from aiosmtpd.smtp import (
+ SMTP as SMTPServer,
+ Envelope as SMTPEnvelope,
+ Session as SMTPSession,
+)

T = TypeVar("T")

diff --git a/aiosmtpd/qa/test_1testsuite.py b/aiosmtpd/qa/test_1testsuite.py
index db20c61..2d83a5f 100644
--- a/aiosmtpd/qa/test_1testsuite.py
+++ b/aiosmtpd/qa/test_1testsuite.py
@@ -4,12 +4,12 @@
"""Test the sanity of the test suite itself"""

import re
-import pytest
import socket
-
-from aiosmtpd.testing import statuscodes
from itertools import combinations

+import pytest
+
+from aiosmtpd.testing import statuscodes

ENFORCE_ENHANCED_STATUS_CODES = False
"""Whether to do strict compliance checking against RFC 2034 § 4"""
diff --git a/aiosmtpd/smtp.py b/aiosmtpd/smtp.py
index fd1fb5a..dde8919 100644
--- a/aiosmtpd/smtp.py
+++ b/aiosmtpd/smtp.py
@@ -39,7 +39,6 @@ from public import public
from aiosmtpd import __version__, _get_or_new_eventloop
from aiosmtpd.proxy_protocol import ProxyData, get_proxy

-
# region #### Custom Data Types #######################################################

class _Missing(enum.Enum):
diff --git a/aiosmtpd/testing/helpers.py b/aiosmtpd/testing/helpers.py
index 8ee630a..179033b 100644
--- a/aiosmtpd/testing/helpers.py
+++ b/aiosmtpd/testing/helpers.py
@@ -12,7 +12,7 @@ import time
from smtplib import SMTP as SMTP_Client
from typing import List

-from aiosmtpd.smtp import Envelope, Session, SMTP
+from aiosmtpd.smtp import SMTP, Envelope, Session

ASYNCIO_CATCHUP_DELAY = float(os.environ.get("ASYNCIO_CATCHUP_DELAY", 0.1))
"""
diff --git a/aiosmtpd/tests/conftest.py b/aiosmtpd/tests/conftest.py
index 66c4bfd..6c8519b 100644
--- a/aiosmtpd/tests/conftest.py
+++ b/aiosmtpd/tests/conftest.py
@@ -6,10 +6,10 @@ import inspect
import socket
import ssl
import warnings
+from collections.abc import Iterator
from contextlib import suppress
from functools import wraps
from smtplib import SMTP as SMTPClient
-from collections.abc import Iterator
from typing import Any, Callable, Generator, NamedTuple, Optional, Type, TypeVar

import pytest
diff --git a/aiosmtpd/tests/test_handlers.py b/aiosmtpd/tests/test_handlers.py
index 392689d..5c55e29 100644
--- a/aiosmtpd/tests/test_handlers.py
+++ b/aiosmtpd/tests/test_handlers.py
@@ -15,16 +15,18 @@ from typing import AnyStr, Callable, Generator, Type, TypeVar, Union

import pytest

-from aiosmtpd.controller import Controller
-from aiosmtpd.handlers import AsyncMessage, Debugging, Mailbox, Proxy, Sink
-from aiosmtpd.handlers import Message as AbstractMessageHandler
-from aiosmtpd.smtp import SMTP as Server
-from aiosmtpd.smtp import Session as ServerSession
-from aiosmtpd.smtp import Envelope
-from aiosmtpd.testing.statuscodes import SMTP_STATUS_CODES as S
-from aiosmtpd.testing.statuscodes import StatusCode
-
from .conftest import Global, controller_data, handler_data
+from aiosmtpd.controller import Controller
+from aiosmtpd.handlers import (
+ AsyncMessage,
+ Debugging,
+ Mailbox,
+ Message as AbstractMessageHandler,
+ Proxy,
+ Sink,
+)
+from aiosmtpd.smtp import SMTP as Server, Envelope, Session as ServerSession
+from aiosmtpd.testing.statuscodes import SMTP_STATUS_CODES as S, StatusCode

try:
from typing_extensions import Protocol
diff --git a/aiosmtpd/tests/test_lmtp.py b/aiosmtpd/tests/test_lmtp.py
index c1d43d4..b1fc17e 100644
--- a/aiosmtpd/tests/test_lmtp.py
+++ b/aiosmtpd/tests/test_lmtp.py
@@ -8,13 +8,12 @@ from typing import Generator

import pytest

+from .conftest import Global
from aiosmtpd.controller import Controller
from aiosmtpd.handlers import Sink
from aiosmtpd.lmtp import LMTP
from aiosmtpd.testing.statuscodes import SMTP_STATUS_CODES as S

-from .conftest import Global
-

class LMTPController(Controller):
def factory(self):
diff --git a/aiosmtpd/tests/test_main.py b/aiosmtpd/tests/test_main.py
index 3f47bbf..98eaaf1 100644
--- a/aiosmtpd/tests/test_main.py
+++ b/aiosmtpd/tests/test_main.py
@@ -9,8 +9,7 @@ import sys
import time
from contextlib import contextmanager
from multiprocessing.synchronize import Event as MP_Event
-from smtplib import SMTP as SMTPClient
-from smtplib import SMTP_SSL
+from smtplib import SMTP as SMTPClient, SMTP_SSL
from typing import Generator

import pytest
diff --git a/aiosmtpd/tests/test_proxyprotocol.py b/aiosmtpd/tests/test_proxyprotocol.py
index 02ec5f3..cacccec 100644
--- a/aiosmtpd/tests/test_proxyprotocol.py
+++ b/aiosmtpd/tests/test_proxyprotocol.py
@@ -13,8 +13,7 @@ from base64 import b64decode
from contextlib import contextmanager, suppress
from functools import partial
from ipaddress import IPv4Address, IPv6Address
-from smtplib import SMTP as SMTPClient
-from smtplib import SMTPServerDisconnected
+from smtplib import SMTP as SMTPClient, SMTPServerDisconnected
from typing import Any, Callable, Dict, List, Optional

import pytest
@@ -22,9 +21,9 @@ from pytest_mock import MockFixture

from aiosmtpd.handlers import Sink
from aiosmtpd.proxy_protocol import (
- V2_CMD,
AF,
PROTO,
+ V2_CMD,
V2_SIGNATURE,
AsyncReader,
MalformedTLV,
@@ -33,9 +32,11 @@ from aiosmtpd.proxy_protocol import (
UnknownTypeTLV,
get_proxy,
)
-from aiosmtpd.smtp import SMTP as SMTPServer
-from aiosmtpd.smtp import Session as SMTPSession
-from aiosmtpd.smtp import Envelope as SMTPEnvelope
+from aiosmtpd.smtp import (
+ SMTP as SMTPServer,
+ Envelope as SMTPEnvelope,
+ Session as SMTPSession,
+)
from aiosmtpd.tests.conftest import Global, controller_data, handler_data

DEFAULT_AUTOCANCEL = 0.1
diff --git a/aiosmtpd/tests/test_server.py b/aiosmtpd/tests/test_server.py
index 829361a..ee47d9c 100644
--- a/aiosmtpd/tests/test_server.py
+++ b/aiosmtpd/tests/test_server.py
@@ -11,32 +11,30 @@ import sys
import time
from contextlib import ExitStack
from functools import partial
-from threading import Event
from pathlib import Path
from smtplib import SMTP as SMTPClient, SMTPServerDisconnected
from tempfile import mkdtemp
-from threading import Thread
+from threading import Event, Thread
from typing import Generator, Optional

import pytest
from pytest_mock import MockFixture

+from .conftest import AUTOSTOP_DELAY, Global
from aiosmtpd.controller import (
Controller,
UnixSocketController,
- UnthreadedController,
UnixSocketMixin,
UnixSocketUnthreadedController,
+ UnthreadedController,
_FakeServer,
- get_localhost,
_server_to_client_ssl_ctx,
+ get_localhost,
)
from aiosmtpd.handlers import Sink
from aiosmtpd.smtp import SMTP as Server
from aiosmtpd.testing.helpers import catchup_delay

-from .conftest import Global, AUTOSTOP_DELAY
-

class SlowStartController(Controller):
def __init__(self, *args, **kwargs):
diff --git a/aiosmtpd/tests/test_smtp.py b/aiosmtpd/tests/test_smtp.py
index 008ba8c..b683cb2 100644
--- a/aiosmtpd/tests/test_smtp.py
+++ b/aiosmtpd/tests/test_smtp.py
@@ -21,7 +21,7 @@ from smtplib import (
SMTPServerDisconnected,
)
from textwrap import dedent
-from typing import cast, Any, Callable, Generator, List, Tuple, Union
+from typing import Any, Callable, Generator, List, Tuple, Union, cast

import pytest
from pytest_mock import MockFixture
diff --git a/aiosmtpd/tests/test_smtps.py b/aiosmtpd/tests/test_smtps.py
index 22d33cc..4e33f34 100644
--- a/aiosmtpd/tests/test_smtps.py
+++ b/aiosmtpd/tests/test_smtps.py
@@ -9,12 +9,11 @@ from typing import Generator, Union

import pytest

+from .conftest import Global
from aiosmtpd.controller import Controller
from aiosmtpd.testing.helpers import ReceivingHandler
from aiosmtpd.testing.statuscodes import SMTP_STATUS_CODES as S

-from .conftest import Global
-

@pytest.fixture
def ssl_controller(
diff --git a/aiosmtpd/tests/test_smtpsmuggling.py b/aiosmtpd/tests/test_smtpsmuggling.py
index 32ce4d2..d13ceb1 100644
--- a/aiosmtpd/tests/test_smtpsmuggling.py
+++ b/aiosmtpd/tests/test_smtpsmuggling.py
@@ -3,14 +3,13 @@

"""Test SMTP smuggling."""

-import smtplib
import re
+import smtplib

+from .conftest import handler_data
from aiosmtpd.testing.helpers import ReceivingHandler
from aiosmtpd.testing.statuscodes import SMTP_STATUS_CODES as S

-from .conftest import handler_data
-

def new_data(self, msg):
self.putcmd("data")
diff --git a/aiosmtpd/tests/test_starttls.py b/aiosmtpd/tests/test_starttls.py
index 5e0a180..b57812b 100644
--- a/aiosmtpd/tests/test_starttls.py
+++ b/aiosmtpd/tests/test_starttls.py
@@ -9,17 +9,13 @@ from typing import Generator

import pytest

+from .conftest import Global, handler_data
from aiosmtpd.controller import Controller
from aiosmtpd.handlers import Sink
-from aiosmtpd.smtp import SMTP as Server
-from aiosmtpd.smtp import Envelope
-from aiosmtpd.smtp import Session as Sess_
-from aiosmtpd.smtp import TLSSetupException
+from aiosmtpd.smtp import SMTP as Server, Envelope, Session as Sess_, TLSSetupException
from aiosmtpd.testing.helpers import ReceivingHandler, catchup_delay
from aiosmtpd.testing.statuscodes import SMTP_STATUS_CODES as S

-from .conftest import Global, handler_data
-
# region #### Harness Classes & Functions #############################################
```
flake8-import-order configured in setup.cfg:
```
[flake8]
....
# flake8-import-order
application-import-names = aiosmtpd
import-order-style = pycharm
```
Added in 8d81f96f3d91de995ecbcae01805f21a71410790 by @Dreamsorcerer. I was not added to the select option of flake8's config so flake8-import-order rules are not run by flake8 as part of CI. flake8-import-order is not listed in tox.ini's deps.
```
flake8 --select "I1 I2" aiosmtpd
aiosmtpd/controller.py:21:1: I202 Additional newline in a group of imports. 'from typing import Any, Awaitable, Dict, Literal, Optional, Union' is identified as Stdlib and 'from socket import timeout' is identified as Stdlib.
aiosmtpd/handlers.py:23:1: I101 Imported names are in the wrong order. Should be Any, List, Optional, TextIO, Type, TypeVar, Union
aiosmtpd/handlers.py:29:1: I100 Import statements are in the wrong order. 'from aiosmtpd.smtp import Envelope' should be before 'from aiosmtpd.smtp import SMTP'
aiosmtpd/qa/test_0packaging.py:15:1: I202 Additional newline in a group of imports. 'from packaging import version' is identified as Third Party and 'import pytest' is identified as Third Party.
aiosmtpd/qa/test_1testsuite.py:7:1: I201 Missing newline between import groups. 'import pytest' is identified as Third Party and 'import re' is identified as Stdlib.
aiosmtpd/qa/test_1testsuite.py:8:1: I100 Import statements are in the wrong order. 'import socket' should be before 'import pytest' and in a different group.
aiosmtpd/qa/test_1testsuite.py:8:1: I201 Missing newline between import groups. 'import socket' is identified as Stdlib and 'import pytest' is identified as Third Party.
aiosmtpd/qa/test_1testsuite.py:11:1: I100 Import statements are in the wrong order. 'from itertools import combinations' should be before 'from aiosmtpd.testing import statuscodes' and in a different group.
aiosmtpd/qa/test_1testsuite.py:11:1: I201 Missing newline between import groups. 'from itertools import combinations' is identified as Stdlib and 'from aiosmtpd.testing import statuscodes' is identified as Application.
aiosmtpd/testing/helpers.py:15:1: I101 Imported names are in the wrong order. Should be Envelope, SMTP, Session
aiosmtpd/tests/conftest.py:12:1: I100 Import statements are in the wrong order. 'from collections.abc import Iterator' should be before 'from smtplib import SMTP'
aiosmtpd/tests/test_handlers.py:23:1: I100 Import statements are in the wrong order. 'from aiosmtpd.smtp import Envelope' should be before 'from aiosmtpd.smtp import Session'
aiosmtpd/tests/test_handlers.py:27:1: I202 Additional newline in a group of imports. 'from .conftest import Global, controller_data, handler_data' is identified as Application Relative and 'from aiosmtpd.testing.statuscodes import StatusCode' is identified as Application.
aiosmtpd/tests/test_lmtp.py:16:1: I202 Additional newline in a group of imports. 'from .conftest import Global' is identified as Application Relative and 'from aiosmtpd.testing.statuscodes import SMTP_STATUS_CODES' is identified as Application.
aiosmtpd/tests/test_proxyprotocol.py:24:1: I101 Imported names are in the wrong order. Should be AF, AsyncReader, MalformedTLV, PROTO, ProxyData, ProxyTLV, UnknownTypeTLV, V2_CMD, V2_SIGNATURE, get_proxy
aiosmtpd/tests/test_proxyprotocol.py:38:1: I100 Import statements are in the wrong order. 'from aiosmtpd.smtp import Envelope' should be before 'from aiosmtpd.smtp import Session'
aiosmtpd/tests/test_server.py:15:1: I100 Import statements are in the wrong order. 'from pathlib import Path' should be before 'from threading import Event'
aiosmtpd/tests/test_server.py:24:1: I101 Imported names are in the wrong order. Should be Controller, UnixSocketController, UnixSocketMixin, UnixSocketUnthreadedController, UnthreadedController, _FakeServer, _server_to_client_ssl_ctx, get_localhost
aiosmtpd/tests/test_server.py:38:1: I101 Imported names are in the wrong order. Should be AUTOSTOP_DELAY, Global
aiosmtpd/tests/test_server.py:38:1: I202 Additional newline in a group of imports. 'from .conftest import Global, AUTOSTOP_DELAY' is identified as Application Relative and 'from aiosmtpd.testing.helpers import catchup_delay' is identified as Application.
aiosmtpd/tests/test_smtp.py:24:1: I101 Imported names are in the wrong order. Should be Any, Callable, Generator, List, Tuple, Union, cast
aiosmtpd/tests/test_smtp.py:30:1: I100 Import statements are in the wrong order. 'from aiosmtpd.controller import Controller' should be before 'from .conftest import Global, controller_data, handler_data'
aiosmtpd/tests/test_smtp.py:32:1: I101 Imported names are in the wrong order. Should be AuthResult, BOGUS_LIMIT, CALL_LIMIT_DEFAULT, Envelope, LoginPassword, MISSING, SMTP, Session, __ident__, auth_mechanism
aiosmtpd/tests/test_smtps.py:16:1: I202 Additional newline in a group of imports. 'from .conftest import Global' is identified as Application Relative and 'from aiosmtpd.testing.statuscodes import SMTP_STATUS_CODES' is identified as Application.
aiosmtpd/tests/test_smtpsmuggling.py:7:1: I100 Import statements are in the wrong order. 'import re' should be before 'import smtplib'
aiosmtpd/tests/test_smtpsmuggling.py:12:1: I202 Additional newline in a group of imports. 'from .conftest import handler_data' is identified as Application Relative and 'from aiosmtpd.testing.statuscodes import SMTP_STATUS_CODES' is identified as Application.
aiosmtpd/tests/test_starttls.py:15:1: I100 Import statements are in the wrong order. 'from aiosmtpd.smtp import Envelope' should be before 'from aiosmtpd.smtp import SMTP'
aiosmtpd/tests/test_starttls.py:21:1: I202 Additional newline in a group of imports. 'from .conftest import Global, handler_data' is identified as Application Relative and 'from aiosmtpd.testing.statuscodes import SMTP_STATUS_CODES' is identified as Application.
```

Which isort order should the project be using? Related to https://github.com/aio-libs/aiosmtpd/issues/385.

Guía de contribución

Abrir la guía de contribución

Evaluación

Este issue todavía no se ha evaluado.

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.