From cf2de79d64745f9328225fa7e3666b2d5f4a4dd4 Mon Sep 17 00:00:00 2001 From: ekmartin Date: Sat, 7 Nov 2015 21:03:31 +0100 Subject: [PATCH] Add isort and fix errors --- channels/__init__.py | 8 +++++--- channels/auth.py | 1 + channels/backends/__init__.py | 9 +++++---- channels/backends/base.py | 1 + channels/backends/database.py | 4 ++-- channels/backends/memory.py | 3 ++- channels/backends/redis_py.py | 6 +++--- channels/channel.py | 2 +- channels/consumer_registry.py | 4 +++- channels/decorators.py | 16 ++++++++++------ channels/hacks.py | 7 ++++--- channels/interfaces/websocket_asyncio.py | 8 +++++--- channels/interfaces/websocket_autobahn.py | 2 +- channels/interfaces/websocket_twisted.py | 6 ++++-- channels/interfaces/wsgi.py | 1 + channels/management/commands/runserver.py | 6 ++++-- channels/management/commands/runworker.py | 6 +++--- channels/management/commands/runwsserver.py | 2 +- channels/request.py | 2 +- channels/tests/test_backends.py | 3 ++- setup.cfg | 12 ++++++++++++ tox.ini | 8 +++----- 22 files changed, 74 insertions(+), 43 deletions(-) create mode 100644 setup.cfg diff --git a/channels/__init__.py b/channels/__init__.py index 185fbc0..dde140b 100644 --- a/channels/__init__.py +++ b/channels/__init__.py @@ -2,8 +2,10 @@ __version__ = "0.8" # Load backends, using settings if available (else falling back to a default) DEFAULT_CHANNEL_BACKEND = "default" -from .backends import BackendManager -from django.conf import settings + +from .backends import BackendManager # isort:skip +from django.conf import settings # isort:skip + channel_backends = BackendManager( getattr(settings, "CHANNEL_BACKENDS", { DEFAULT_CHANNEL_BACKEND: { @@ -16,4 +18,4 @@ channel_backends = BackendManager( default_app_config = 'channels.apps.ChannelsConfig' # Promote channel to top-level (down here to avoid circular import errs) -from .channel import Channel, Group # NOQA +from .channel import Channel, Group # NOQA isort:skip diff --git a/channels/auth.py b/channels/auth.py index 261010c..d0c786a 100644 --- a/channels/auth.py +++ b/channels/auth.py @@ -1,6 +1,7 @@ import functools from django.contrib import auth + from .decorators import channel_session, http_session diff --git a/channels/backends/__init__.py b/channels/backends/__init__.py index 71efe76..e52d24f 100644 --- a/channels/backends/__init__.py +++ b/channels/backends/__init__.py @@ -21,11 +21,12 @@ class BackendManager(object): except KeyError: raise InvalidChannelBackendError("No BACKEND specified for %s" % name) except ImportError: - raise InvalidChannelBackendError("Cannot import BACKEND %r specified for %s" % - (self.configs[name]['BACKEND'], name)) + raise InvalidChannelBackendError( + "Cannot import BACKEND %r specified for %s" % (self.configs[name]['BACKEND'], name) + ) + # Initialise and pass config - instance = backend_class( - **{k.lower(): v for k, v in self.configs[name].items() if k != "BACKEND"}) + instance = backend_class(**{k.lower(): v for k, v in self.configs[name].items() if k != "BACKEND"}) instance.alias = name return instance diff --git a/channels/backends/base.py b/channels/backends/base.py index 9baaf6c..fbf9c5f 100644 --- a/channels/backends/base.py +++ b/channels/backends/base.py @@ -1,4 +1,5 @@ import time + from channels.consumer_registry import ConsumerRegistry diff --git a/channels/backends/database.py b/channels/backends/database.py index d6966e9..d0b7f69 100644 --- a/channels/backends/database.py +++ b/channels/backends/database.py @@ -1,8 +1,8 @@ -import json import datetime +import json from django.apps.registry import Apps -from django.db import models, connections, DEFAULT_DB_ALIAS, IntegrityError +from django.db import DEFAULT_DB_ALIAS, IntegrityError, connections, models from django.utils.functional import cached_property from django.utils.timezone import now diff --git a/channels/backends/memory.py b/channels/backends/memory.py index 6f4ca4b..0cb28ba 100644 --- a/channels/backends/memory.py +++ b/channels/backends/memory.py @@ -1,6 +1,7 @@ -import time import json +import time from collections import deque + from .base import BaseChannelBackend queues = {} diff --git a/channels/backends/redis_py.py b/channels/backends/redis_py.py index b0071f6..0cfbea9 100644 --- a/channels/backends/redis_py.py +++ b/channels/backends/redis_py.py @@ -1,11 +1,11 @@ -import time +import binascii import json import math -import redis import random -import binascii +import time import uuid +import redis from django.utils import six from .base import BaseChannelBackend diff --git a/channels/channel.py b/channels/channel.py index 5a0160e..33112d8 100644 --- a/channels/channel.py +++ b/channels/channel.py @@ -1,7 +1,7 @@ import random import string -from channels import channel_backends, DEFAULT_CHANNEL_BACKEND +from channels import DEFAULT_CHANNEL_BACKEND, channel_backends class Channel(object): diff --git a/channels/consumer_registry.py b/channels/consumer_registry.py index 359fcd7..5102e7a 100644 --- a/channels/consumer_registry.py +++ b/channels/consumer_registry.py @@ -1,6 +1,8 @@ import importlib -from django.utils import six + from django.core.exceptions import ImproperlyConfigured +from django.utils import six + from .utils import name_that_thing diff --git a/channels/decorators.py b/channels/decorators.py index 6b0ca7e..6f78c49 100644 --- a/channels/decorators.py +++ b/channels/decorators.py @@ -18,8 +18,10 @@ def linearize(func): def inner(message, *args, **kwargs): # Make sure there's a reply channel if not message.reply_channel: - raise ValueError("No reply_channel sent to consumer; " - "@no_overlap can only be used on messages containing it.") + raise ValueError( + "No reply_channel sent to consumer; @no_overlap can only be used on messages containing it." + ) + # Get the lock, or re-queue locked = message.channel_backend.lock_channel(message.reply_channel) if not locked: @@ -44,12 +46,14 @@ def channel_session(func): def inner(message, *args, **kwargs): # Make sure there's a reply_channel if not message.reply_channel: - raise ValueError("No reply_channel sent to consumer; " - "@channel_session can only be used on messages containing it.") + raise ValueError( + "No reply_channel sent to consumer; @no_overlap can only be used on messages containing it." + ) + # Make sure there's NOT a channel_session already if hasattr(message, "channel_session"): - raise ValueError("channel_session decorator wrapped " - "inside another channel_session decorator") + raise ValueError("channel_session decorator wrapped inside another channel_session decorator") + # Turn the reply_channel into a valid session key length thing. # We take the last 24 bytes verbatim, as these are the random section, # and then hash the remaining ones onto the start, and add a prefix diff --git a/channels/hacks.py b/channels/hacks.py index e782eb6..b8050cb 100644 --- a/channels/hacks.py +++ b/channels/hacks.py @@ -1,8 +1,9 @@ +from django.core.handlers.base import BaseHandler from django.http.request import HttpRequest from django.http.response import HttpResponseBase -from django.core.handlers.base import BaseHandler -from .request import encode_request, decode_request -from .response import encode_response, decode_response, ResponseLater + +from .request import decode_request, encode_request +from .response import ResponseLater, decode_response, encode_response def monkeypatch_django(): diff --git a/channels/interfaces/websocket_asyncio.py b/channels/interfaces/websocket_asyncio.py index b0d852a..899bfcf 100644 --- a/channels/interfaces/websocket_asyncio.py +++ b/channels/interfaces/websocket_asyncio.py @@ -1,9 +1,11 @@ -import asyncio import time -from autobahn.asyncio.websocket import WebSocketServerProtocol, WebSocketServerFactory +import asyncio +from autobahn.asyncio.websocket import ( + WebSocketServerFactory, WebSocketServerProtocol, +) -from .websocket_autobahn import get_protocol, get_factory +from .websocket_autobahn import get_factory, get_protocol class WebsocketAsyncioInterface(object): diff --git a/channels/interfaces/websocket_autobahn.py b/channels/interfaces/websocket_autobahn.py index 7517b8c..1445ad1 100644 --- a/channels/interfaces/websocket_autobahn.py +++ b/channels/interfaces/websocket_autobahn.py @@ -1,6 +1,6 @@ import time -from channels import Channel, channel_backends, DEFAULT_CHANNEL_BACKEND +from channels import DEFAULT_CHANNEL_BACKEND, Channel, channel_backends def get_protocol(base): diff --git a/channels/interfaces/websocket_twisted.py b/channels/interfaces/websocket_twisted.py index e6055f1..e8122a7 100644 --- a/channels/interfaces/websocket_twisted.py +++ b/channels/interfaces/websocket_twisted.py @@ -1,9 +1,11 @@ import time -from autobahn.twisted.websocket import WebSocketServerProtocol, WebSocketServerFactory +from autobahn.twisted.websocket import ( + WebSocketServerFactory, WebSocketServerProtocol, +) from twisted.internet import reactor -from .websocket_autobahn import get_protocol, get_factory +from .websocket_autobahn import get_factory, get_protocol class WebsocketTwistedInterface(object): diff --git a/channels/interfaces/wsgi.py b/channels/interfaces/wsgi.py index b856b93..004e6ea 100644 --- a/channels/interfaces/wsgi.py +++ b/channels/interfaces/wsgi.py @@ -1,6 +1,7 @@ import django from django.core.handlers.wsgi import WSGIHandler from django.http import HttpResponse + from channels import Channel diff --git a/channels/management/commands/runserver.py b/channels/management/commands/runserver.py index d9e91ea..6fa54d6 100644 --- a/channels/management/commands/runserver.py +++ b/channels/management/commands/runserver.py @@ -1,7 +1,9 @@ import threading -from django.core.management.commands.runserver import Command as RunserverCommand -from channels import channel_backends, DEFAULT_CHANNEL_BACKEND +from django.core.management.commands.runserver import \ + Command as RunserverCommand + +from channels import DEFAULT_CHANNEL_BACKEND, channel_backends from channels.adapters import UrlConsumer from channels.interfaces.wsgi import WSGIInterface from channels.log import setup_logger diff --git a/channels/management/commands/runworker.py b/channels/management/commands/runworker.py index 1c7df73..2c157bc 100644 --- a/channels/management/commands/runworker.py +++ b/channels/management/commands/runworker.py @@ -1,6 +1,7 @@ + from django.core.management import BaseCommand, CommandError -from channels import channel_backends, DEFAULT_CHANNEL_BACKEND +from channels import DEFAULT_CHANNEL_BACKEND, channel_backends from channels.log import setup_logger from channels.worker import Worker @@ -14,8 +15,7 @@ class Command(BaseCommand): channel_backend = channel_backends[DEFAULT_CHANNEL_BACKEND] if channel_backend.local_only: raise CommandError( - "You have a process-local channel backend configured, " - "and so cannot run separate workers.\n" + "You have a process-local channel backend configured, and so cannot run separate workers.\n" "Configure a network-based backend in CHANNEL_BACKENDS to use this command." ) # Launch a worker diff --git a/channels/management/commands/runwsserver.py b/channels/management/commands/runwsserver.py index fae1e2c..54f2f0c 100644 --- a/channels/management/commands/runwsserver.py +++ b/channels/management/commands/runwsserver.py @@ -1,6 +1,6 @@ from django.core.management import BaseCommand, CommandError -from channels import channel_backends, DEFAULT_CHANNEL_BACKEND +from channels import DEFAULT_CHANNEL_BACKEND, channel_backends from channels.log import setup_logger diff --git a/channels/request.py b/channels/request.py index e29d711..4060335 100644 --- a/channels/request.py +++ b/channels/request.py @@ -1,6 +1,6 @@ from django.http import HttpRequest -from django.utils.datastructures import MultiValueDict from django.http.request import QueryDict +from django.utils.datastructures import MultiValueDict def encode_request(request): diff --git a/channels/tests/test_backends.py b/channels/tests/test_backends.py index f4bc461..b25750f 100644 --- a/channels/tests/test_backends.py +++ b/channels/tests/test_backends.py @@ -2,9 +2,10 @@ from __future__ import unicode_literals from django.test import TestCase + from ..backends.database import DatabaseChannelBackend -from ..backends.redis_py import RedisChannelBackend from ..backends.memory import InMemoryChannelBackend +from ..backends.redis_py import RedisChannelBackend class MemoryBackendTests(TestCase): diff --git a/setup.cfg b/setup.cfg new file mode 100644 index 0000000..445b946 --- /dev/null +++ b/setup.cfg @@ -0,0 +1,12 @@ +[flake8] +exclude = venv/*,tox/*,docs/*,testproject/* +ignore = E123,E128,E402,W503,E731,W601 +max-line-length = 119 + +[isort] +combine_as_imports = true +default_section = THIRDPARTY +include_trailing_comma = true +known_first_party = channels +multi_line_output = 5 +not_skip = __init__.py diff --git a/tox.ini b/tox.ini index cff47ce..f42ff19 100644 --- a/tox.ini +++ b/tox.ini @@ -4,11 +4,7 @@ envlist = {py27}-django-{17,18,19} {py35}-django-{18,19} {py27,py35}-flake8 - -[flake8] -exclude = venv/*,tox/*,docs/*,testproject/* -ignore = E123,E128,E402,W503,E731,W601 -max-line-length = 119 + isort [testenv] setenv = @@ -17,10 +13,12 @@ deps = six redis==2.10.5 flake8: flake8 + isort: isort django-16: Django>=1.6,<1.7 django-17: Django>=1.7,<1.8 django-18: Django>=1.8,<1.9 django-19: Django==1.9b1 commands = flake8: flake8 + isort: isort -c -rc channels django: python {toxinidir}/runtests.py