From 68f90d921ce268ebe95d81b8ec74d320625373da Mon Sep 17 00:00:00 2001 From: Vasilis Tsiligiannis Date: Mon, 23 Sep 2019 14:08:11 +0300 Subject: [PATCH] tox: Check imports with 'isort' and apply changes Signed-off-by: Vasilis Tsiligiannis --- auth0login/urls.py | 3 +- manage.py | 1 - network/__init__.py | 3 +- network/api/filters.py | 2 +- network/api/serializers.py | 18 ++++--- network/api/tests.py | 11 ++--- network/api/urls.py | 2 +- network/api/views.py | 11 ++--- network/base/admin.py | 4 +- network/base/db_api.py | 1 - network/base/forms.py | 15 +++--- .../base/management/commands/fetch_data.py | 3 +- network/base/management/commands/fetch_tle.py | 2 +- .../base/management/commands/initialize.py | 6 +-- network/base/models.py | 18 +++---- network/base/scheduling.py | 14 +++--- network/base/stats.py | 2 +- network/base/tasks.py | 15 +++--- network/base/templatetags/paginator.py | 1 - network/base/templatetags/url_replace.py | 1 - network/base/tests.py | 17 +++---- network/base/utils.py | 14 +++--- network/base/views.py | 49 ++++++++++--------- network/celery.py | 3 +- network/settings.py | 7 ++- network/urls.py | 7 ++- network/users/admin.py | 2 +- network/users/models.py | 3 +- network/users/tests.py | 6 +-- network/users/views.py | 17 +++---- network/wsgi.py | 2 +- setup.cfg | 8 +++ setup.py | 1 + tox.ini | 11 +++++ 34 files changed, 144 insertions(+), 136 deletions(-) diff --git a/auth0login/urls.py b/auth0login/urls.py index 2272e71..6f9e6ff 100644 --- a/auth0login/urls.py +++ b/auth0login/urls.py @@ -1,4 +1,5 @@ -from django.conf.urls import url, include +from django.conf.urls import include, url + from . import views urlpatterns = [ diff --git a/manage.py b/manage.py index d6d1ad7..545c749 100755 --- a/manage.py +++ b/manage.py @@ -2,7 +2,6 @@ import os import sys - if __name__ == "__main__": os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'network.settings') from django.core.management import execute_from_command_line diff --git a/network/__init__.py b/network/__init__.py index 325e20f..5f9be8b 100644 --- a/network/__init__.py +++ b/network/__init__.py @@ -1,10 +1,9 @@ from __future__ import absolute_import +from ._version import get_versions from .celery import app as celery_app # noqa - __all__ = ['celery_app'] -from ._version import get_versions __version__ = get_versions()['version'] del get_versions diff --git a/network/api/filters.py b/network/api/filters.py index 3145614..336864d 100644 --- a/network/api/filters.py +++ b/network/api/filters.py @@ -1,5 +1,5 @@ -from django_filters.rest_framework import FilterSet import django_filters +from django_filters.rest_framework import FilterSet from network.base.models import Observation, Station, Transmitter diff --git a/network/api/serializers.py b/network/api/serializers.py index 86e071b..99e0d01 100644 --- a/network/api/serializers.py +++ b/network/api/serializers.py @@ -1,14 +1,16 @@ from rest_framework import serializers -from network.base.models import Observation, Station, DemodData, Antenna, Transmitter -from network.base.stats import transmitter_stats_by_uuid -from network.base.db_api import get_transmitters_by_uuid_list, DBConnectionError -from network.base.perms import check_schedule_perms_per_station, UserNoPermissionError +from network.base.db_api import DBConnectionError, \ + get_transmitters_by_uuid_list +from network.base.models import Antenna, DemodData, Observation, Station, \ + Transmitter +from network.base.perms import UserNoPermissionError, \ + check_schedule_perms_per_station from network.base.scheduling import create_new_observation -from network.base.validators import (ObservationOverlapError, OutOfRangeError, - check_transmitter_station_pairs, check_start_datetime, - check_end_datetime, check_start_end_datetimes, - check_overlaps) +from network.base.stats import transmitter_stats_by_uuid +from network.base.validators import ObservationOverlapError, OutOfRangeError, \ + check_end_datetime, check_overlaps, check_start_datetime, \ + check_start_end_datetimes, check_transmitter_station_pairs class DemodDataSerializer(serializers.ModelSerializer): diff --git a/network/api/tests.py b/network/api/tests.py index 26bc9dc..d2ea542 100644 --- a/network/api/tests.py +++ b/network/api/tests.py @@ -1,16 +1,11 @@ import json -import pytest from django.test import TestCase - from rest_framework.utils.encoders import JSONEncoder -from network.base.tests import ( - ObservationFactory, - SatelliteFactory, - StationFactory, - AntennaFactory -) +import pytest +from network.base.tests import AntennaFactory, ObservationFactory, \ + SatelliteFactory, StationFactory @pytest.mark.django_db(transaction=True) diff --git a/network/api/urls.py b/network/api/urls.py index 4968cc1..f39687d 100644 --- a/network/api/urls.py +++ b/network/api/urls.py @@ -1,6 +1,6 @@ from rest_framework import routers -from network.api import views +from network.api import views router = routers.DefaultRouter() diff --git a/network/api/views.py b/network/api/views.py index 4a0b0c8..ff3ffae 100644 --- a/network/api/views.py +++ b/network/api/views.py @@ -1,16 +1,15 @@ from django.core.exceptions import ObjectDoesNotExist from django.shortcuts import get_object_or_404 from django.utils.timezone import now - -from rest_framework import viewsets, mixins, status +from rest_framework import mixins, status, viewsets from rest_framework.response import Response from rest_framework.serializers import ValidationError +from network.api import filters, pagination, serializers from network.api.perms import StationOwnerPermission -from network.api import serializers, filters, pagination -from network.base.validators import (ObservationOverlapError, NegativeElevationError, - SinglePassError) -from network.base.models import Observation, Station, Transmitter, LatestTle +from network.base.models import LatestTle, Observation, Station, Transmitter +from network.base.validators import NegativeElevationError, \ + ObservationOverlapError, SinglePassError class ObservationView(mixins.ListModelMixin, mixins.RetrieveModelMixin, diff --git a/network/base/admin.py b/network/base/admin.py index 82cb086..381fa7a 100644 --- a/network/base/admin.py +++ b/network/base/admin.py @@ -1,7 +1,7 @@ from django.contrib import admin -from network.base.models import (Antenna, Satellite, Station, Transmitter, - Observation, Tle, DemodData) +from network.base.models import Antenna, DemodData, Observation, Satellite, \ + Station, Tle, Transmitter from network.base.utils import export_as_csv, export_station_status diff --git a/network/base/db_api.py b/network/base/db_api.py index 989c77a..ba49ea1 100644 --- a/network/base/db_api.py +++ b/network/base/db_api.py @@ -1,5 +1,4 @@ import requests - from django.conf import settings db_api_url = settings.DB_API_ENDPOINT diff --git a/network/base/forms.py b/network/base/forms.py index ffece18..94a291e 100644 --- a/network/base/forms.py +++ b/network/base/forms.py @@ -1,12 +1,13 @@ from django import forms -from network.base.models import Station, Observation -from network.base.db_api import get_transmitters_by_uuid_list, DBConnectionError -from network.base.perms import check_schedule_perms_per_station, UserNoPermissionError -from network.base.validators import (ObservationOverlapError, OutOfRangeError, - check_transmitter_station_pairs, check_start_datetime, - check_end_datetime, check_start_end_datetimes, - check_overlaps) +from network.base.db_api import DBConnectionError, \ + get_transmitters_by_uuid_list +from network.base.models import Observation, Station +from network.base.perms import UserNoPermissionError, \ + check_schedule_perms_per_station +from network.base.validators import ObservationOverlapError, OutOfRangeError, \ + check_end_datetime, check_overlaps, check_start_datetime, \ + check_start_end_datetimes, check_transmitter_station_pairs class ObservationForm(forms.ModelForm): diff --git a/network/base/management/commands/fetch_data.py b/network/base/management/commands/fetch_data.py index 097f9b2..34ea5b0 100644 --- a/network/base/management/commands/fetch_data.py +++ b/network/base/management/commands/fetch_data.py @@ -1,7 +1,6 @@ import requests - -from django.core.management.base import BaseCommand, CommandError from django.conf import settings +from django.core.management.base import BaseCommand, CommandError from network.base.models import Satellite, Transmitter diff --git a/network/base/management/commands/fetch_tle.py b/network/base/management/commands/fetch_tle.py index d76a758..f24b3b0 100644 --- a/network/base/management/commands/fetch_tle.py +++ b/network/base/management/commands/fetch_tle.py @@ -1,7 +1,7 @@ from optparse import make_option -from satellite_tle import fetch_tle_from_celestrak from django.core.management.base import BaseCommand, CommandError +from satellite_tle import fetch_tle_from_celestrak from network.base.models import Satellite diff --git a/network/base/management/commands/initialize.py b/network/base/management/commands/initialize.py index 0c96978..8367c3a 100644 --- a/network/base/management/commands/initialize.py +++ b/network/base/management/commands/initialize.py @@ -1,9 +1,9 @@ -from django.core.management.base import BaseCommand from django.core.management import call_command +from django.core.management.base import BaseCommand from network.base.models import Antenna -from network.base.tests import (generate_payload, generate_payload_name, - DemodDataFactory, StationFactory, ObservationFactory) +from network.base.tests import DemodDataFactory, ObservationFactory, \ + StationFactory, generate_payload, generate_payload_name class Command(BaseCommand): diff --git a/network/base/models.py b/network/base/models.py index 7fcca52..eb21457 100644 --- a/network/base/models.py +++ b/network/base/models.py @@ -1,25 +1,25 @@ +import logging import os from datetime import timedelta -from PIL import Image -import requests -from shortuuidfield import ShortUUIDField -import logging +import requests from django.conf import settings from django.core.cache import cache -from django.core.validators import MaxValueValidator, MinValueValidator from django.core.exceptions import ValidationError -from django.dispatch import receiver +from django.core.validators import MaxValueValidator, MinValueValidator from django.db import models from django.db.models import OuterRef, Subquery from django.db.models.signals import post_save +from django.dispatch import receiver from django.urls import reverse from django.utils.html import format_html from django.utils.timezone import now - -from network.users.models import User -from network.base.managers import ObservationManager +from PIL import Image from rest_framework.authtoken.models import Token +from shortuuidfield import ShortUUIDField + +from network.base.managers import ObservationManager +from network.users.models import User ANTENNA_BANDS = ['HF', 'VHF', 'UHF', 'L', 'S', 'C', 'X', 'KU'] ANTENNA_TYPES = ( diff --git a/network/base/scheduling.py b/network/base/scheduling.py index 837b07f..6eb6524 100644 --- a/network/base/scheduling.py +++ b/network/base/scheduling.py @@ -1,14 +1,14 @@ import math from datetime import timedelta -from django.conf import settings -from django.utils.timezone import now, make_aware, utc -from network.base.models import Satellite, LatestTle, Observation -from network.base.perms import schedule_station_perms -from network.base.validators import (ObservationOverlapError, NegativeElevationError, - SinglePassError) - import ephem +from django.conf import settings +from django.utils.timezone import make_aware, now, utc + +from network.base.models import LatestTle, Observation, Satellite +from network.base.perms import schedule_station_perms +from network.base.validators import NegativeElevationError, \ + ObservationOverlapError, SinglePassError def get_altitude(observer, satellite, date): diff --git a/network/base/stats.py b/network/base/stats.py index 05b2edd..a8f88ab 100644 --- a/network/base/stats.py +++ b/network/base/stats.py @@ -1,7 +1,7 @@ import math from django.core.cache import cache -from django.db.models import IntegerField, Sum, Case, When +from django.db.models import Case, IntegerField, Sum, When from django.utils.timezone import now from network.base.models import Observation diff --git a/network/base/tasks.py b/network/base/tasks.py index 657f320..9b8773e 100644 --- a/network/base/tasks.py +++ b/network/base/tasks.py @@ -1,11 +1,7 @@ -from datetime import timedelta import json import os -from requests.exceptions import ReadTimeout, HTTPError import urllib2 - -from internetarchive import upload -from satellite_tle import fetch_tle_from_celestrak +from datetime import timedelta from django.conf import settings from django.contrib.sites.models import Site @@ -13,11 +9,14 @@ from django.core.cache import cache from django.core.mail import send_mail from django.db.models import Prefetch from django.utils.timezone import now +from internetarchive import upload +from requests.exceptions import HTTPError, ReadTimeout +from satellite_tle import fetch_tle_from_celestrak -from network.base.models import (Satellite, Tle, LatestTle, Transmitter, Observation, Station, - DemodData) -from network.celery import app +from network.base.models import DemodData, LatestTle, Observation, Satellite, \ + Station, Tle, Transmitter from network.base.utils import demod_to_db +from network.celery import app @app.task(ignore_result=True) diff --git a/network/base/templatetags/paginator.py b/network/base/templatetags/paginator.py index 4b1656d..12bbf47 100644 --- a/network/base/templatetags/paginator.py +++ b/network/base/templatetags/paginator.py @@ -4,7 +4,6 @@ ellipses to truncate pages outside an adjacency """ from django import template - register = template.Library() diff --git a/network/base/templatetags/url_replace.py b/network/base/templatetags/url_replace.py index 4c067ef..644ae10 100644 --- a/network/base/templatetags/url_replace.py +++ b/network/base/templatetags/url_replace.py @@ -1,6 +1,5 @@ from django import template - register = template.Library() diff --git a/network/base/tests.py b/network/base/tests.py index 0e202dc..a43cef2 100644 --- a/network/base/tests.py +++ b/network/base/tests.py @@ -1,20 +1,19 @@ import random from datetime import datetime, timedelta -import pytest import factory +from django.contrib.auth.models import Group +from django.db import transaction +from django.test import Client, TestCase +from django.utils.timezone import now from factory import fuzzy -from django.db import transaction -from django.contrib.auth.models import Group -from django.test import TestCase, Client -from django.utils.timezone import now - -from network.base.models import (ANTENNA_BANDS, ANTENNA_TYPES, OBSERVATION_STATUSES, - Antenna, Satellite, Tle, Station, Observation, DemodData) +import pytest +from network.base.models import ANTENNA_BANDS, ANTENNA_TYPES, \ + OBSERVATION_STATUSES, Antenna, DemodData, Observation, Satellite, \ + Station, Tle from network.users.tests import UserFactory - ANTENNA_BAND_IDS = [c[0] for c in ANTENNA_BANDS] ANTENNA_TYPE_IDS = [c[0] for c in ANTENNA_TYPES] OBSERVATION_STATUS_IDS = [c[0] for c in OBSERVATION_STATUSES] diff --git a/network/base/utils.py b/network/base/utils.py index 5ac7b9a..1caee84 100644 --- a/network/base/utils.py +++ b/network/base/utils.py @@ -1,14 +1,16 @@ import csv import urllib import urllib2 -from django.http import HttpResponse -from django.core.exceptions import PermissionDenied -from django.contrib.admin.helpers import label_for_field -from django.conf import settings -from requests.exceptions import ReadTimeout, HTTPError -from network.base.models import DemodData from datetime import datetime +from django.conf import settings +from django.contrib.admin.helpers import label_for_field +from django.core.exceptions import PermissionDenied +from django.http import HttpResponse +from requests.exceptions import HTTPError, ReadTimeout + +from network.base.models import DemodData + def export_as_csv(modeladmin, request, queryset): if not request.user.is_staff: diff --git a/network/base/views.py b/network/base/views.py index 44106fb..cae1fc8 100644 --- a/network/base/views.py +++ b/network/base/views.py @@ -1,37 +1,40 @@ import urllib2 -import ephem -from operator import itemgetter -from datetime import datetime, timedelta from collections import defaultdict +from datetime import datetime, timedelta +from operator import itemgetter -from django.db.models import Count +import ephem from django.conf import settings from django.contrib import messages from django.contrib.auth.decorators import login_required from django.core.urlresolvers import reverse -from django.db.models import Prefetch -from django.http import JsonResponse, HttpResponseNotFound, HttpResponseServerError, HttpResponse -from django.shortcuts import get_object_or_404, render, redirect -from django.utils.timezone import now, make_aware, utc +from django.db.models import Count, Prefetch +from django.forms import ValidationError, formset_factory +from django.http import HttpResponse, HttpResponseNotFound, \ + HttpResponseServerError, JsonResponse +from django.shortcuts import get_object_or_404, redirect, render from django.utils.text import slugify +from django.utils.timezone import make_aware, now, utc from django.views.generic import ListView -from django.forms import formset_factory, ValidationError - from rest_framework import serializers, viewsets + +from network.base.db_api import DBConnectionError, get_transmitter_by_uuid, \ + get_transmitters_by_norad_id, get_transmitters_by_status from network.base.decorators import admin_required, ajax_required -from network.base.db_api import (get_transmitter_by_uuid, get_transmitters_by_norad_id, - get_transmitters_by_status, DBConnectionError) -from network.base.forms import (ObservationForm, BaseObservationFormSet, StationForm, - SatelliteFilterForm) -from network.base.validators import (is_transmitter_in_station_range, ObservationOverlapError, - NegativeElevationError, SinglePassError) -from network.base.models import (Station, Observation, Satellite, Antenna, StationStatusLog, - LatestTle) -from network.base.scheduling import (create_new_observation, predict_available_observation_windows, - get_available_stations) -from network.base.perms import schedule_perms, schedule_station_perms, delete_perms, vet_perms -from network.base.tasks import update_all_tle, fetch_data -from network.base.stats import transmitter_stats_by_uuid, satellite_stats_by_transmitter_list +from network.base.forms import BaseObservationFormSet, ObservationForm, \ + SatelliteFilterForm, StationForm +from network.base.models import Antenna, LatestTle, Observation, Satellite, \ + Station, StationStatusLog +from network.base.perms import delete_perms, schedule_perms, \ + schedule_station_perms, vet_perms +from network.base.scheduling import create_new_observation, \ + get_available_stations, predict_available_observation_windows +from network.base.stats import satellite_stats_by_transmitter_list, \ + transmitter_stats_by_uuid +from network.base.tasks import fetch_data, update_all_tle +from network.base.validators import NegativeElevationError, \ + ObservationOverlapError, SinglePassError, \ + is_transmitter_in_station_range from network.users.models import User diff --git a/network/celery.py b/network/celery.py index 8db85e3..ab45ef3 100644 --- a/network/celery.py +++ b/network/celery.py @@ -3,11 +3,10 @@ from __future__ import absolute_import import os from celery import Celery - +from django.conf import settings # noqa os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'network.settings') -from django.conf import settings # noqa RUN_DAILY = 60 * 60 * 24 RUN_EVERY_TWO_HOURS = 2 * 60 * 60 diff --git a/network/settings.py b/network/settings.py index 0578f5a..3e5233f 100644 --- a/network/settings.py +++ b/network/settings.py @@ -1,9 +1,8 @@ -from decouple import config, Csv -from dj_database_url import parse as db_url -from unipath import Path import sentry_sdk +from decouple import Csv, config +from dj_database_url import parse as db_url from sentry_sdk.integrations.django import DjangoIntegration - +from unipath import Path ROOT = Path(__file__).parent diff --git a/network/urls.py b/network/urls.py index 04e9ea7..703b833 100644 --- a/network/urls.py +++ b/network/urls.py @@ -1,14 +1,13 @@ +from allauth import urls as allauth_urls +from avatar import urls as avatar_urls from django.conf import settings from django.conf.urls import include, url from django.contrib import admin from django.views.static import serve -from avatar import urls as avatar_urls -from allauth import urls as allauth_urls - +from network.api.urls import api_urlpatterns from network.base.urls import base_urlpatterns from network.users.urls import users_urlpatterns -from network.api.urls import api_urlpatterns handler404 = 'network.base.views.custom_404' handler500 = 'network.base.views.custom_500' diff --git a/network/users/admin.py b/network/users/admin.py index 3edbb4c..7df1d5b 100644 --- a/network/users/admin.py +++ b/network/users/admin.py @@ -1,6 +1,6 @@ from django.contrib import admin -from django.contrib.auth.forms import UserCreationForm, UserChangeForm from django.contrib.auth.admin import UserAdmin as AuthUserAdmin +from django.contrib.auth.forms import UserChangeForm, UserCreationForm from django.db.models import Count from network.users.models import User diff --git a/network/users/models.py b/network/users/models.py index 600d23c..d5bcccc 100644 --- a/network/users/models.py +++ b/network/users/models.py @@ -1,9 +1,8 @@ -from rest_framework.authtoken.models import Token - from django.contrib.auth.models import AbstractUser from django.core.validators import MaxLengthValidator from django.db import models from django.db.models.signals import post_save +from rest_framework.authtoken.models import Token def gen_token(sender, instance, created, **kwargs): diff --git a/network/users/tests.py b/network/users/tests.py index b396010..e363542 100644 --- a/network/users/tests.py +++ b/network/users/tests.py @@ -1,11 +1,11 @@ import datetime -import pytest import factory -from factory import fuzzy +from django.test import Client, TestCase from django.utils.timezone import utc -from django.test import TestCase, Client +from factory import fuzzy +import pytest from network.users.models import User diff --git a/network/users/views.py b/network/users/views.py index 4c850d2..c529080 100644 --- a/network/users/views.py +++ b/network/users/views.py @@ -1,18 +1,15 @@ -from django.core.urlresolvers import reverse -from django.shortcuts import get_object_or_404, render -from django.views.generic import RedirectView -from django.views.generic import UpdateView -from django.db.models import Count - from braces.views import LoginRequiredMixin - +from django.core.urlresolvers import reverse +from django.db.models import Count +from django.shortcuts import get_object_or_404, render +from django.views.generic import RedirectView, UpdateView from rest_framework.authtoken.models import Token +from network.base.forms import StationForm +from network.base.models import Antenna, Observation, Station +from network.base.perms import schedule_perms from network.users.forms import UserForm from network.users.models import User -from network.base.forms import StationForm -from network.base.models import Station, Observation, Antenna -from network.base.perms import schedule_perms class UserRedirectView(LoginRequiredMixin, RedirectView): diff --git a/network/wsgi.py b/network/wsgi.py index 86e9c5d..ba55df8 100644 --- a/network/wsgi.py +++ b/network/wsgi.py @@ -1,7 +1,7 @@ #!/usr/bin/env python import os -from django.core.wsgi import get_wsgi_application +from django.core.wsgi import get_wsgi_application os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'network.settings') diff --git a/setup.cfg b/setup.cfg index 001067a..61cf8c1 100644 --- a/setup.cfg +++ b/setup.cfg @@ -80,6 +80,14 @@ max-line-length = 99 ignore = F403,W504 exclude = network/_version.py,versioneer.py,*/migrations,docs +[tool:isort] +use_parentheses = True +skip_glob = migrations,docs,build,.tox +skip = _version.py,versioneer.py +known_third_party = factory +line_width = 99 +multi_line_output = 2 + [tool:pytest] addopts = -v --cov --cov-report=term-missing python_files = tests.py diff --git a/setup.py b/setup.py index 43693f0..74348e5 100644 --- a/setup.py +++ b/setup.py @@ -1,6 +1,7 @@ from __future__ import absolute_import, division, print_function from setuptools import setup + import versioneer setup( diff --git a/tox.ini b/tox.ini index 59b153f..3c6ca8f 100644 --- a/tox.ini +++ b/tox.ini @@ -3,6 +3,7 @@ envlist = py2-flake8,{py2,py3}-build,py2-pytest,docs [depversions] flake8 = 3.7.7 +isort = 4.3.18 sphinx_rtd_theme = 0.4.3 [testenv:py2-flake8] @@ -14,6 +15,16 @@ commands = flake8 \ network \ auth0login +[testenv:isort] +deps = + isort=={[depversions]isort} +commands = isort -rc -c -df + +[testenv:isort-apply] +deps = + isort=={[depversions]isort} +commands = isort -rc -y + [testenv:py2-build] skip_install = True commands =