diff --git a/.travis.yml b/.travis.yml index 386eb7d73..afb2cb82d 100644 --- a/.travis.yml +++ b/.travis.yml @@ -23,6 +23,12 @@ matrix: env: TOXENV=py37-django30 - python: 3.8 env: TOXENV=py38-django30 + - python: 3.6 + env: TOXENV=py36-django31 + - python: 3.7 + env: TOXENV=py37-django31 + - python: 3.8 + env: TOXENV=py38-django31 - python: 3.6 env: TOXENV=py36-djangomaster - python: 3.7 diff --git a/CHANGELOG.rst b/CHANGELOG.rst index 2083384ce..72c25d119 100644 --- a/CHANGELOG.rst +++ b/CHANGELOG.rst @@ -4,6 +4,8 @@ django-storages CHANGELOG UNRELEASED ********** +- Add support for Django 3.1. + **Breaking** - Removed support for end-of-life Python 2.7 and 3.4. diff --git a/docs/conf.py b/docs/conf.py index d5f47e7d1..215eca7cd 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -9,7 +9,8 @@ # All configuration values have a default; values that are commented out # serve to show the default. -import sys, os +import os +import sys # If extensions (or modules to document with autodoc) are in another directory, # add these directories to sys.path here. If the directory is relative to the diff --git a/setup.cfg b/setup.cfg index 97be6e616..0bdc2ea66 100644 --- a/setup.cfg +++ b/setup.cfg @@ -13,6 +13,7 @@ classifiers = Framework :: Django Framework :: Django :: 2.2 Framework :: Django :: 3.0 + Framework :: Django :: 3.1 Intended Audience :: Developers License :: OSI Approved :: BSD License Operating System :: OS Independent @@ -60,4 +61,3 @@ include_trailing_comma = true known_first_party = storages line_length = 79 multi_line_output = 5 -not_skip = __init__.py diff --git a/storages/backends/gcloud.py b/storages/backends/gcloud.py index a0e32b704..f82e35778 100644 --- a/storages/backends/gcloud.py +++ b/storages/backends/gcloud.py @@ -15,9 +15,9 @@ ) try: + from google.cloud.exceptions import NotFound from google.cloud.storage import Blob, Client from google.cloud.storage.blob import _quote - from google.cloud.exceptions import NotFound except ImportError: raise ImproperlyConfigured("Could not load Google Cloud Storage bindings.\n" "See https://github.com/GoogleCloudPlatform/gcloud-python") diff --git a/storages/backends/s3boto3.py b/storages/backends/s3boto3.py index 338052dbe..f3cc17f97 100644 --- a/storages/backends/s3boto3.py +++ b/storages/backends/s3boto3.py @@ -36,7 +36,7 @@ def _use_cryptography_signer(): from cryptography.hazmat.primitives import hashes from cryptography.hazmat.primitives.asymmetric import padding from cryptography.hazmat.primitives.serialization import ( - load_pem_private_key + load_pem_private_key, ) def _cloud_front_signer_from_pem(key_id, pem): diff --git a/tests/integration/test_azure.py b/tests/integration/test_azure.py index 16b23ea0d..cadcac6f2 100644 --- a/tests/integration/test_azure.py +++ b/tests/integration/test_azure.py @@ -6,9 +6,9 @@ from django.template import Context, Template from django.test import TestCase, override_settings from django.utils import timezone -from tests.integration.models import SimpleFileModel from storages.backends import azure_storage +from tests.integration.models import SimpleFileModel class AzureStorageTest(TestCase): diff --git a/tox.ini b/tox.ini index 12b543f6a..8e5c9b138 100644 --- a/tox.ini +++ b/tox.ini @@ -3,6 +3,7 @@ minversion = 1.9 envlist = py{35,36,37,38}-django22 py{36,37,38}-django30 + py{36,37,38}-django31 py{36,37,38}-djangomaster integration flake8 @@ -16,6 +17,7 @@ commands = pytest --cov=storages --ignore=tests/integration/ tests/ {posargs} deps = django22: Django>=2.2,<3.0 django30: Django>=3.0,<3.1 + django31: Django>=3.1,<3.2 djangomaster: https://github.com/django/django/archive/master.tar.gz cryptography pytest @@ -50,8 +52,8 @@ extras = [testenv:flake8] deps = flake8 - isort + isort>=5.0.0 commands = flake8 - isort --recursive --check-only --diff storages/ tests/ + isort --check-only --diff . skip_install = true