From 2f4c23f7ecb3103f66ec543a52f88cd81b7b1eeb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cristi=20V=C3=AEjdea?= Date: Sat, 2 Dec 2017 22:53:09 +0100 Subject: [PATCH 1/3] Fix .travis.yml #1 --- .travis.yml | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/.travis.yml b/.travis.yml index ac6e1a0..db51748 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,14 +1,12 @@ language: python python: - - '3.5' - '3.6' - - '3.7' env: - TOX_ENV=py35 - TOX_ENV=py36 - TOX_ENV=py37 install: - - pip install requirements_dev.txt + - pip install -r requirements_dev.txt before_script: - coverage erase script: From fed253aeed0ac020033eaa3a7e419a31ad50e88e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cristi=20V=C3=AEjdea?= Date: Sat, 2 Dec 2017 22:57:49 +0100 Subject: [PATCH 2/3] Switch to tox-travis instead of multiple TOX_ENV --- .travis.yml | 8 +++----- requirements_dev.txt | 1 + 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/.travis.yml b/.travis.yml index db51748..97889cc 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,15 +1,13 @@ language: python python: + - '3.5' - '3.6' -env: - - TOX_ENV=py35 - - TOX_ENV=py36 - - TOX_ENV=py37 + - '3.7' install: - pip install -r requirements_dev.txt before_script: - coverage erase script: - - tox -e $TOX_ENV + - tox after_success: - coveralls \ No newline at end of file diff --git a/requirements_dev.txt b/requirements_dev.txt index c1302f5..77209fb 100644 --- a/requirements_dev.txt +++ b/requirements_dev.txt @@ -1,4 +1,5 @@ # Packages required for development and CI tox>=2.9.1 tox-battery>=0.5 +tox-travis>=0.10 python-coveralls>=2.9.1 From 93c51b992de3ebc8e167bdae45e95b95b2aef0c1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cristi=20V=C3=AEjdea?= Date: Sat, 2 Dec 2017 23:48:58 +0100 Subject: [PATCH 3/3] Fix python 3.7 -> 3.7-dev and add flake8 testing Also fixed flake8 errors. --- .travis.yml | 18 ++++++++++++++++-- src/drf_swagger/codecs.py | 2 +- src/drf_swagger/views.py | 5 ++--- testproj/manage.py | 2 +- testproj/snippets/admin.py | 2 -- testproj/snippets/serializers.py | 3 +-- testproj/testproj/runner.py | 3 ++- testproj/testproj/settings.py | 2 -- testproj/testproj/urls.py | 2 +- tests/conftest.py | 3 +-- tests/test_schema_generator.py | 10 ++++------ tox.ini | 14 +++++++++++++- 12 files changed, 42 insertions(+), 24 deletions(-) diff --git a/.travis.yml b/.travis.yml index 97889cc..909e9ed 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,13 +1,27 @@ language: python +cache: pip python: - '3.5' - '3.6' - - '3.7' + - '3.7-dev' + +matrix: + fast_finish: true + include: + - python: "3.5" + env: TOXENV=flake8 + + allow_failures: + - env: TOXENV=flake8 + install: - pip install -r requirements_dev.txt + before_script: - coverage erase + script: - tox + after_success: - - coveralls \ No newline at end of file + - coveralls diff --git a/src/drf_swagger/codecs.py b/src/drf_swagger/codecs.py index 1dedf76..54c8a6e 100644 --- a/src/drf_swagger/codecs.py +++ b/src/drf_swagger/codecs.py @@ -55,7 +55,7 @@ class _OpenAPICodec(BaseCodec): def validators(self): return self._validators - def encode(self, document, **options): + def encode(self, document, **_): if not isinstance(document, openapi.Swagger): raise TypeError('Expected a `openapi.Swagger` instance') diff --git a/src/drf_swagger/views.py b/src/drf_swagger/views.py index 550315a..b30f6da 100644 --- a/src/drf_swagger/views.py +++ b/src/drf_swagger/views.py @@ -5,7 +5,7 @@ from django.utils.cache import add_never_cache_headers from django.utils.decorators import available_attrs from django.views.decorators.cache import cache_page from django.views.decorators.vary import vary_on_headers -from rest_framework import exceptions, renderers +from rest_framework import exceptions from rest_framework.response import Response from rest_framework.settings import api_settings from rest_framework.views import APIView @@ -14,7 +14,6 @@ from .generators import OpenAPISchemaGenerator from .renderers import ( SwaggerJSONRenderer, SwaggerYAMLRenderer, SwaggerUIRenderer, ReDocRenderer, OpenAPIRenderer, ) -from .openapi import Info SPEC_RENDERERS = (SwaggerYAMLRenderer, SwaggerJSONRenderer, OpenAPIRenderer) UI_RENDERERS = { @@ -53,7 +52,7 @@ def get_schema_view(info, url=None, patterns=None, urlconf=None, *, public=False """ Create a SchemaView class with default renderers and generators. - :param Info info: Required. Swagger API Info object + :param drf_swagger.openapi.Info info: Required. Swagger API Info object :param str url: API base url; if left blank will be deduced from the location the view is served at :param str patterns: passed to SchemaGenerator :param str urlconf: passed to SchemaGenerator diff --git a/testproj/manage.py b/testproj/manage.py index 8cf227b..0984df0 100644 --- a/testproj/manage.py +++ b/testproj/manage.py @@ -11,7 +11,7 @@ if __name__ == "__main__": # issue is really that Django is missing to avoid masking other # exceptions on Python 2. try: - import django + import django # noqa: F401 except ImportError: raise ImportError( "Couldn't import Django. Are you sure it's installed and " diff --git a/testproj/snippets/admin.py b/testproj/snippets/admin.py index 8c38f3f..846f6b4 100644 --- a/testproj/snippets/admin.py +++ b/testproj/snippets/admin.py @@ -1,3 +1 @@ -from django.contrib import admin - # Register your models here. diff --git a/testproj/snippets/serializers.py b/testproj/snippets/serializers.py index 49c85d4..40a13c0 100644 --- a/testproj/snippets/serializers.py +++ b/testproj/snippets/serializers.py @@ -1,6 +1,5 @@ -from rest_framework.status import HTTP_400_BAD_REQUEST - from rest_framework import serializers + from snippets.models import Snippet, LANGUAGE_CHOICES, STYLE_CHOICES diff --git a/testproj/testproj/runner.py b/testproj/testproj/runner.py index 9ff39cd..a84ad2f 100644 --- a/testproj/testproj/runner.py +++ b/testproj/testproj/runner.py @@ -1,9 +1,10 @@ import os + class PytestTestRunner(object): """Runs pytest to discover and run tests.""" - def __init__(self, verbosity=1, failfast=False, keepdb=False, **kwargs): + def __init__(self, verbosity=1, failfast=False, keepdb=False, **_): self.verbosity = verbosity self.failfast = failfast self.keepdb = keepdb diff --git a/testproj/testproj/settings.py b/testproj/testproj/settings.py index b9749ca..e3cd48a 100644 --- a/testproj/testproj/settings.py +++ b/testproj/testproj/settings.py @@ -1,7 +1,5 @@ import os -import sys - # Build paths inside the project like this: os.path.join(BASE_DIR, ...) BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) diff --git a/testproj/testproj/urls.py b/testproj/testproj/urls.py index 1593680..79898bd 100644 --- a/testproj/testproj/urls.py +++ b/testproj/testproj/urls.py @@ -25,5 +25,5 @@ urlpatterns = [ url(r'^redoc/$', schema_view.with_ui('redoc', cache_timeout=None), name='schema-redoc'), url(r'^admin/', admin.site.urls), - url(f'^snippets/', include('snippets.urls')), + url(r'^snippets/', include('snippets.urls')), ] diff --git a/tests/conftest.py b/tests/conftest.py index 87fe968..32f9c87 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -1,8 +1,7 @@ import pytest -from ruamel import yaml - from drf_swagger import openapi, codecs from drf_swagger.generators import OpenAPISchemaGenerator +from ruamel import yaml @pytest.fixture diff --git a/tests/test_schema_generator.py b/tests/test_schema_generator.py index 6898631..735c853 100644 --- a/tests/test_schema_generator.py +++ b/tests/test_schema_generator.py @@ -1,11 +1,9 @@ import json -from ruamel import yaml - +import pytest from drf_swagger import openapi, codecs from drf_swagger.generators import OpenAPISchemaGenerator - -import pytest +from ruamel import yaml def validate_schema(swagger): @@ -14,8 +12,8 @@ def validate_schema(swagger): validate_flex(swagger) validate_ssv(swagger) - - + + def test_schema_generates_without_errors(generator): generator.get_schema(None, True) diff --git a/tox.ini b/tox.ini index 9676730..3386303 100644 --- a/tox.ini +++ b/tox.ini @@ -1,5 +1,6 @@ [tox] -envlist = py35,py36,py37 +envlist = py35,py36,py37,flake8 + [testenv] deps= -rrequirements.txt @@ -7,3 +8,14 @@ deps= -rrequirements_test.txt commands= pytest --cov-append --cov=drf_swagger + +[testenv:flake8] +skip_install = true +deps= + flake8 +commands= + flake8 drf_swagger testproj + +[flake8] +max-line-length = 120 +exclude = **/migrations/*