diff --git a/.isort.cfg b/.isort.cfg new file mode 100644 index 0000000..eb3d723 --- /dev/null +++ b/.isort.cfg @@ -0,0 +1,16 @@ +[settings] +# # Needed for black compatibility +multi_line_output=3 +include_trailing_comma=True +force_grid_wrap=0 +line_length=88 +combine_as_imports=True + +# List sections with django and +known_django=django +known_downloadview=django_downloadview + +sections=FUTURE,STDLIB,DJANGO,DOWNLOADVIEW,THIRDPARTY,FIRSTPARTY,LOCALFOLDER + +# If set, imports will be sorted within their section independent to the import_type. +force_sort_within_sections=True diff --git a/Makefile b/Makefile index 4256491..35d1647 100644 --- a/Makefile +++ b/Makefile @@ -104,4 +104,4 @@ black: .PHONY: isort isort: - $(ISORT) -m 3 --line-width=99 --use-parentheses --trailing-comma --recursive django_downloadview tests demo + $(ISORT) --recursive django_downloadview tests demo diff --git a/demo/demoproject/apache/tests.py b/demo/demoproject/apache/tests.py index 759ced3..3726db2 100644 --- a/demo/demoproject/apache/tests.py +++ b/demo/demoproject/apache/tests.py @@ -1,7 +1,7 @@ import os -import django.test from django.core.files.base import ContentFile +import django.test from django_downloadview.apache import assert_x_sendfile diff --git a/demo/demoproject/http/tests.py b/demo/demoproject/http/tests.py index 8feab26..dcb0f4e 100644 --- a/demo/demoproject/http/tests.py +++ b/demo/demoproject/http/tests.py @@ -1,8 +1,9 @@ import django.test -from demoproject.compat import reverse from django_downloadview import assert_download_response +from demoproject.compat import reverse + class SimpleURLTestCase(django.test.TestCase): def test_download_response(self): diff --git a/demo/demoproject/lighttpd/tests.py b/demo/demoproject/lighttpd/tests.py index 7a5a656..82f4f43 100644 --- a/demo/demoproject/lighttpd/tests.py +++ b/demo/demoproject/lighttpd/tests.py @@ -1,7 +1,7 @@ import os -import django.test from django.core.files.base import ContentFile +import django.test from django_downloadview.lighttpd import assert_x_sendfile diff --git a/demo/demoproject/nginx/tests.py b/demo/demoproject/nginx/tests.py index 54d9247..3196f2b 100644 --- a/demo/demoproject/nginx/tests.py +++ b/demo/demoproject/nginx/tests.py @@ -1,7 +1,7 @@ import os -import django.test from django.core.files.base import ContentFile +import django.test from django_downloadview.nginx import assert_x_accel_redirect diff --git a/demo/demoproject/object/tests.py b/demo/demoproject/object/tests.py index b964c92..7446299 100644 --- a/demo/demoproject/object/tests.py +++ b/demo/demoproject/object/tests.py @@ -1,9 +1,10 @@ -import django.test from django.core.files.base import ContentFile +import django.test + +from django_downloadview import assert_download_response, temporary_media_root from demoproject.compat import reverse from demoproject.object.models import Document -from django_downloadview import assert_download_response, temporary_media_root # Fixtures. slug = "hello-world" diff --git a/demo/demoproject/object/views.py b/demo/demoproject/object/views.py index 5488122..7b354c1 100644 --- a/demo/demoproject/object/views.py +++ b/demo/demoproject/object/views.py @@ -1,6 +1,7 @@ -from demoproject.object.models import Document from django_downloadview import ObjectDownloadView +from demoproject.object.models import Document + #: Serve ``file`` attribute of ``Document`` model. default_file_view = ObjectDownloadView.as_view(model=Document) diff --git a/demo/demoproject/path/tests.py b/demo/demoproject/path/tests.py index 039828d..cf51231 100644 --- a/demo/demoproject/path/tests.py +++ b/demo/demoproject/path/tests.py @@ -1,8 +1,9 @@ import django.test -from demoproject.compat import reverse from django_downloadview import assert_download_response +from demoproject.compat import reverse + class StaticPathTestCase(django.test.TestCase): def test_download_response(self): diff --git a/demo/demoproject/settings.py b/demo/demoproject/settings.py index b0f88a3..45f93b1 100755 --- a/demo/demoproject/settings.py +++ b/demo/demoproject/settings.py @@ -1,10 +1,9 @@ """Django settings for django-downloadview demo project.""" -import os from distutils.version import StrictVersion +import os from django.utils.version import get_version - # Configure some relative directories. demoproject_dir = os.path.dirname(os.path.abspath(__file__)) demo_dir = os.path.dirname(demoproject_dir) diff --git a/demo/demoproject/storage/tests.py b/demo/demoproject/storage/tests.py index 998e04f..4eb3086 100644 --- a/demo/demoproject/storage/tests.py +++ b/demo/demoproject/storage/tests.py @@ -1,18 +1,19 @@ import datetime import unittest -import django.test from django.core.files.base import ContentFile from django.http.response import HttpResponseNotModified +import django.test -from demoproject.compat import reverse -from demoproject.storage import views from django_downloadview import ( assert_download_response, setup_view, temporary_media_root, ) +from demoproject.compat import reverse +from demoproject.storage import views + # Fixtures. file_content = "Hello world!\n" diff --git a/demo/demoproject/virtual/tests.py b/demo/demoproject/virtual/tests.py index 4a877cc..fb3b164 100644 --- a/demo/demoproject/virtual/tests.py +++ b/demo/demoproject/virtual/tests.py @@ -1,8 +1,9 @@ import django.test -from demoproject.compat import reverse from django_downloadview import assert_download_response +from demoproject.compat import reverse + class TextTestCase(django.test.TestCase): def test_download_response(self): diff --git a/demo/demoproject/virtual/views.py b/demo/demoproject/virtual/views.py index 0165615..4ed2055 100644 --- a/demo/demoproject/virtual/views.py +++ b/demo/demoproject/virtual/views.py @@ -1,7 +1,8 @@ +from io import StringIO + from django.core.files.base import ContentFile from django_downloadview import TextIteratorIO, VirtualDownloadView, VirtualFile -from io import StringIO class TextDownloadView(VirtualDownloadView): diff --git a/demo/setup.py b/demo/setup.py index 1253c15..99593b5 100644 --- a/demo/setup.py +++ b/demo/setup.py @@ -1,5 +1,6 @@ """Python packaging.""" import os + from setuptools import setup here = os.path.abspath(os.path.dirname(__file__)) diff --git a/django_downloadview/__init__.py b/django_downloadview/__init__.py index 239b866..b0a9d8d 100644 --- a/django_downloadview/__init__.py +++ b/django_downloadview/__init__.py @@ -1,7 +1,7 @@ """Serve files with Django and reverse proxies.""" -import pkg_resources - from django_downloadview.api import * # NoQA +import pkg_resources + #: Module version, as defined in PEP-0396. __version__ = pkg_resources.get_distribution(__package__.replace("-", "_")).version diff --git a/django_downloadview/api.py b/django_downloadview/api.py index 1399aea..bc0d3c7 100644 --- a/django_downloadview/api.py +++ b/django_downloadview/api.py @@ -2,22 +2,24 @@ """Declaration of API shortcuts.""" from django_downloadview.files import HTTPFile, StorageFile, VirtualFile from django_downloadview.io import BytesIteratorIO, TextIteratorIO -from django_downloadview.middlewares import BaseDownloadMiddleware from django_downloadview.middlewares import ( + BaseDownloadMiddleware, DownloadDispatcherMiddleware, SmartDownloadMiddleware, ) -from django_downloadview.response import DownloadResponse -from django_downloadview.response import ProxiedDownloadResponse +from django_downloadview.response import DownloadResponse, ProxiedDownloadResponse from django_downloadview.shortcuts import sendfile -from django_downloadview.test import assert_download_response -from django_downloadview.test import setup_view, temporary_media_root -from django_downloadview.views import PathDownloadView +from django_downloadview.test import ( + assert_download_response, + setup_view, + temporary_media_root, +) from django_downloadview.views import ( BaseDownloadView, DownloadMixin, HTTPDownloadView, ObjectDownloadView, + PathDownloadView, StorageDownloadView, VirtualDownloadView, ) diff --git a/django_downloadview/files.py b/django_downloadview/files.py index cb1e8a2..96fdceb 100644 --- a/django_downloadview/files.py +++ b/django_downloadview/files.py @@ -1,12 +1,13 @@ """File wrappers for use as exchange data between views and responses.""" +from io import BytesIO from urllib.parse import urlparse -import requests from django.core.files.base import File from django.utils.encoding import force_bytes from django_downloadview.io import BytesIteratorIO -from io import BytesIO + +import requests class StorageFile(File): diff --git a/django_downloadview/io.py b/django_downloadview/io.py index 7713e99..f619813 100644 --- a/django_downloadview/io.py +++ b/django_downloadview/io.py @@ -1,8 +1,8 @@ """Low-level IO operations, for use with file wrappers.""" -from django.utils.encoding import force_bytes, force_text - import io +from django.utils.encoding import force_bytes, force_text + class TextIteratorIO(io.TextIOBase): """A dynamically generated TextIO-like object. diff --git a/django_downloadview/views/http.py b/django_downloadview/views/http.py index cff7392..e8ed199 100644 --- a/django_downloadview/views/http.py +++ b/django_downloadview/views/http.py @@ -1,9 +1,9 @@ """Stream files given an URL, i.e. files you want to proxy.""" -import requests - from django_downloadview.files import HTTPFile from django_downloadview.views.base import BaseDownloadView +import requests + class HTTPDownloadView(BaseDownloadView): """Proxy files that live on remote servers.""" diff --git a/tests/api.py b/tests/api.py index 1fadaea..252b56d 100644 --- a/tests/api.py +++ b/tests/api.py @@ -1,10 +1,10 @@ """Test suite around :mod:`django_downloadview.api` and deprecation plan.""" +from importlib import import_module, reload import unittest import warnings -from importlib import import_module, reload -import django.test from django.core.exceptions import ImproperlyConfigured +import django.test from django.test.utils import override_settings diff --git a/tests/sendfile.py b/tests/sendfile.py index 1a4f16e..21ee719 100644 --- a/tests/sendfile.py +++ b/tests/sendfile.py @@ -1,6 +1,6 @@ """Tests around :py:mod:`django_downloadview.sendfile`.""" -import django.test from django.http import Http404 +import django.test from django_downloadview.response import DownloadResponse from django_downloadview.shortcuts import sendfile diff --git a/tests/views.py b/tests/views.py index acd96f5..e511c48 100644 --- a/tests/views.py +++ b/tests/views.py @@ -1,14 +1,14 @@ """Tests around :mod:`django_downloadview.views`.""" import calendar +from datetime import datetime import os import unittest -from datetime import datetime from unittest import mock -import django.test from django.core.files import File from django.http import Http404 from django.http.response import HttpResponseNotModified +import django.test from django_downloadview import exceptions, views from django_downloadview.test import setup_view diff --git a/tox.ini b/tox.ini index 6035e0b..6865033 100644 --- a/tox.ini +++ b/tox.ini @@ -55,5 +55,5 @@ commands = fullrelease [flake8] -max-line-length = 99 +max-line-length = 88 ignore = E203, W503