Pārlūkot izejas kodu

Closes #17725: Clean up `import` statements (#17728)

* #17725: Resolve all F401 errors

* Tweak noqa designation
Jeremy Stretch 1 gadu atpakaļ
vecāks
revīzija
e59f776e02
54 mainītis faili ar 29 papildinājumiem un 90 dzēšanām
  1. 1 1
      netbox/circuits/apps.py
  2. 0 1
      netbox/circuits/forms/bulk_import.py
  3. 1 2
      netbox/circuits/graphql/filters.py
  4. 1 3
      netbox/core/api/schema.py
  5. 0 2
      netbox/core/api/serializers_/jobs.py
  6. 2 2
      netbox/core/apps.py
  7. 0 2
      netbox/dcim/api/serializers_/manufacturers.py
  8. 0 2
      netbox/dcim/api/serializers_/platforms.py
  9. 0 2
      netbox/dcim/api/serializers_/power.py
  10. 0 2
      netbox/dcim/api/serializers_/roles.py
  11. 1 1
      netbox/dcim/apps.py
  12. 1 1
      netbox/dcim/forms/connections.py
  13. 0 1
      netbox/dcim/graphql/mixins.py
  14. 1 2
      netbox/dcim/models/device_components.py
  15. 0 2
      netbox/dcim/utils.py
  16. 0 2
      netbox/extras/api/serializers_/configtemplates.py
  17. 0 2
      netbox/extras/api/serializers_/customlinks.py
  18. 0 2
      netbox/extras/api/serializers_/exporttemplates.py
  19. 0 2
      netbox/extras/api/serializers_/savedfilters.py
  20. 0 2
      netbox/extras/api/serializers_/tags.py
  21. 1 2
      netbox/extras/api/views.py
  22. 1 1
      netbox/extras/apps.py
  23. 0 1
      netbox/extras/dashboard/widgets.py
  24. 2 1
      netbox/extras/lookups.py
  25. 0 2
      netbox/extras/tests/test_api.py
  26. 0 1
      netbox/extras/validators.py
  27. 1 2
      netbox/extras/views.py
  28. 0 2
      netbox/ipam/api/serializers_/roles.py
  29. 0 2
      netbox/ipam/api/serializers_/services.py
  30. 0 2
      netbox/ipam/api/serializers_/vrfs.py
  31. 1 1
      netbox/ipam/apps.py
  32. 0 1
      netbox/ipam/graphql/mixins.py
  33. 0 2
      netbox/netbox/api/serializers/nested.py
  34. 0 1
      netbox/netbox/plugins/urls.py
  35. 0 2
      netbox/netbox/plugins/views.py
  36. 2 4
      netbox/netbox/settings.py
  37. 1 1
      netbox/netbox/tests/dummy_plugin/views.py
  38. 1 1
      netbox/tenancy/apps.py
  39. 0 1
      netbox/tenancy/filtersets.py
  40. 0 2
      netbox/tenancy/graphql/mixins.py
  41. 1 1
      netbox/users/apps.py
  42. 1 3
      netbox/users/tests/test_views.py
  43. 0 1
      netbox/utilities/management/commands/calculate_cached_counts.py
  44. 1 1
      netbox/utilities/markdown.py
  45. 2 2
      netbox/utilities/release.py
  46. 1 1
      netbox/utilities/serializers/json.py
  47. 1 3
      netbox/utilities/templatetags/form_helpers.py
  48. 0 2
      netbox/virtualization/api/serializers_/clusters.py
  49. 1 1
      netbox/virtualization/apps.py
  50. 0 2
      netbox/vpn/api/serializers_/crypto.py
  51. 1 1
      netbox/vpn/apps.py
  52. 0 2
      netbox/wireless/api/serializers_/wirelesslinks.py
  53. 1 1
      netbox/wireless/apps.py
  54. 1 1
      netbox/wireless/filtersets.py

+ 1 - 1
netbox/circuits/apps.py

@@ -7,7 +7,7 @@ class CircuitsConfig(AppConfig):
 
     def ready(self):
         from netbox.models.features import register_models
-        from . import signals, search
+        from . import signals, search  # noqa: F401
 
         # Register models
         register_models(*self.get_models())

+ 0 - 1
netbox/circuits/forms/bulk_import.py

@@ -1,5 +1,4 @@
 from django import forms
-from django.utils.safestring import mark_safe
 from django.utils.translation import gettext_lazy as _
 
 from circuits.choices import *

+ 1 - 2
netbox/circuits/graphql/filters.py

@@ -1,7 +1,6 @@
-import strawberry
 import strawberry_django
-from circuits import filtersets, models
 
+from circuits import filtersets, models
 from netbox.graphql.filter_mixins import autotype_decorator, BaseFilterMixin
 
 __all__ = (

+ 1 - 3
netbox/core/api/schema.py

@@ -8,10 +8,8 @@ from drf_spectacular.plumbing import (
     build_basic_type, build_choice_field, build_media_type_object, build_object_type, get_doc,
 )
 from drf_spectacular.types import OpenApiTypes
-from rest_framework import serializers
-from rest_framework.relations import ManyRelatedField
 
-from netbox.api.fields import ChoiceField, SerializedPKRelatedField
+from netbox.api.fields import ChoiceField
 from netbox.api.serializers import WritableNestedSerializer
 
 # see netbox.api.routers.NetBoxRouter

+ 0 - 2
netbox/core/api/serializers_/jobs.py

@@ -1,5 +1,3 @@
-from rest_framework import serializers
-
 from core.choices import *
 from core.models import Job
 from netbox.api.fields import ChoiceField, ContentTypeField

+ 2 - 2
netbox/core/apps.py

@@ -16,9 +16,9 @@ class CoreConfig(AppConfig):
     name = "core"
 
     def ready(self):
-        from core.api import schema  # noqa
+        from core.api import schema  # noqa: F401
         from netbox.models.features import register_models
-        from . import data_backends, events, search
+        from . import data_backends, events, search  # noqa: F401
 
         # Register models
         register_models(*self.get_models())

+ 0 - 2
netbox/dcim/api/serializers_/manufacturers.py

@@ -1,5 +1,3 @@
-from rest_framework import serializers
-
 from dcim.models import Manufacturer
 from netbox.api.fields import RelatedObjectCountField
 from netbox.api.serializers import NetBoxModelSerializer

+ 0 - 2
netbox/dcim/api/serializers_/platforms.py

@@ -1,5 +1,3 @@
-from rest_framework import serializers
-
 from dcim.models import Platform
 from extras.api.serializers_.configtemplates import ConfigTemplateSerializer
 from netbox.api.fields import RelatedObjectCountField

+ 0 - 2
netbox/dcim/api/serializers_/power.py

@@ -1,5 +1,3 @@
-from rest_framework import serializers
-
 from dcim.choices import *
 from dcim.models import PowerFeed, PowerPanel
 from netbox.api.fields import ChoiceField, RelatedObjectCountField

+ 0 - 2
netbox/dcim/api/serializers_/roles.py

@@ -1,5 +1,3 @@
-from rest_framework import serializers
-
 from dcim.models import DeviceRole, InventoryItemRole
 from extras.api.serializers_.configtemplates import ConfigTemplateSerializer
 from netbox.api.fields import RelatedObjectCountField

+ 1 - 1
netbox/dcim/apps.py

@@ -10,7 +10,7 @@ class DCIMConfig(AppConfig):
     def ready(self):
         from netbox.models.features import register_models
         from utilities.counters import connect_counters
-        from . import signals, search
+        from . import signals, search  # noqa: F401
         from .models import CableTermination, Device, DeviceType, VirtualChassis
 
         # Register models

+ 1 - 1
netbox/dcim/forms/connections.py

@@ -4,7 +4,7 @@ from django.utils.translation import gettext_lazy as _
 
 from circuits.models import Circuit, CircuitTermination
 from dcim.models import *
-from utilities.forms.fields import DynamicModelChoiceField, DynamicModelMultipleChoiceField
+from utilities.forms.fields import DynamicModelMultipleChoiceField
 from .model_forms import CableForm
 
 

+ 0 - 1
netbox/dcim/graphql/mixins.py

@@ -1,7 +1,6 @@
 from typing import Annotated, List, Union
 
 import strawberry
-import strawberry_django
 
 __all__ = (
     'CabledObjectMixin',

+ 1 - 2
netbox/dcim/models/device_components.py

@@ -4,7 +4,7 @@ from django.contrib.contenttypes.fields import GenericForeignKey, GenericRelatio
 from django.core.exceptions import ValidationError
 from django.core.validators import MaxValueValidator, MinValueValidator
 from django.db import models
-from django.db.models import F, Sum
+from django.db.models import Sum
 from django.urls import reverse
 from django.utils.translation import gettext_lazy as _
 from mptt.models import MPTTModel, TreeForeignKey
@@ -22,7 +22,6 @@ from utilities.tracking import TrackingModelMixin
 from wireless.choices import *
 from wireless.utils import get_channel_attr
 
-
 __all__ = (
     'BaseInterface',
     'CabledObjectModel',

+ 0 - 2
netbox/dcim/utils.py

@@ -1,5 +1,3 @@
-import itertools
-
 from django.contrib.contenttypes.models import ContentType
 from django.db import transaction
 

+ 0 - 2
netbox/extras/api/serializers_/configtemplates.py

@@ -1,5 +1,3 @@
-from rest_framework import serializers
-
 from core.api.serializers_.data import DataFileSerializer, DataSourceSerializer
 from extras.models import ConfigTemplate
 from netbox.api.serializers import ValidatedModelSerializer

+ 0 - 2
netbox/extras/api/serializers_/customlinks.py

@@ -1,5 +1,3 @@
-from rest_framework import serializers
-
 from core.models import ObjectType
 from extras.models import CustomLink
 from netbox.api.fields import ContentTypeField

+ 0 - 2
netbox/extras/api/serializers_/exporttemplates.py

@@ -1,5 +1,3 @@
-from rest_framework import serializers
-
 from core.api.serializers_.data import DataFileSerializer, DataSourceSerializer
 from core.models import ObjectType
 from extras.models import ExportTemplate

+ 0 - 2
netbox/extras/api/serializers_/savedfilters.py

@@ -1,5 +1,3 @@
-from rest_framework import serializers
-
 from core.models import ObjectType
 from extras.models import SavedFilter
 from netbox.api.fields import ContentTypeField

+ 0 - 2
netbox/extras/api/serializers_/tags.py

@@ -1,5 +1,3 @@
-from rest_framework import serializers
-
 from core.models import ObjectType
 from extras.models import Tag
 from netbox.api.fields import ContentTypeField, RelatedObjectCountField

+ 1 - 2
netbox/extras/api/views.py

@@ -1,6 +1,5 @@
 from django.http import Http404
 from django.shortcuts import get_object_or_404
-from django.utils.module_loading import import_string
 from django_rq.queues import get_connection
 from drf_spectacular.utils import extend_schema, extend_schema_view
 from rest_framework import status
@@ -15,8 +14,8 @@ from rq import Worker
 
 from core.models import ObjectType
 from extras import filtersets
-from extras.models import *
 from extras.jobs import ScriptJob
+from extras.models import *
 from netbox.api.authentication import IsAuthenticatedOrLoginNotRequired
 from netbox.api.features import SyncedDataMixin
 from netbox.api.metadata import ContentTypeMetadata

+ 1 - 1
netbox/extras/apps.py

@@ -6,7 +6,7 @@ class ExtrasConfig(AppConfig):
 
     def ready(self):
         from netbox.models.features import register_models
-        from . import dashboard, lookups, search, signals
+        from . import dashboard, lookups, search, signals  # noqa: F401
 
         # Register models
         register_models(*self.get_models())

+ 0 - 1
netbox/extras/dashboard/widgets.py

@@ -15,7 +15,6 @@ from django.utils.translation import gettext as _
 
 from core.models import ObjectType
 from extras.choices import BookmarkOrderingChoices
-from netbox.choices import ButtonColorChoices
 from utilities.object_types import object_type_identifier, object_type_name
 from utilities.permissions import get_permission_for_model
 from utilities.querydict import dict_to_querydict

+ 2 - 1
netbox/extras/lookups.py

@@ -1,4 +1,5 @@
-from django.db.models import CharField, TextField, Lookup
+from django.db.models import CharField, Lookup
+
 from .fields import CachedValueField
 
 

+ 0 - 2
netbox/extras/tests/test_api.py

@@ -12,7 +12,6 @@ from dcim.models import Device, DeviceRole, DeviceType, Manufacturer, Rack, Loca
 from extras.choices import *
 from extras.models import *
 from extras.scripts import BooleanVar, IntegerVar, Script as PythonClass, StringVar
-from netbox.events import *
 from users.models import Group, User
 from utilities.testing import APITestCase, APIViewTestCases
 
@@ -793,7 +792,6 @@ class ScriptTest(APITestCase):
         super().setUp()
 
         # Monkey-patch the Script model to return our TestScriptClass above
-        from extras.api.views import ScriptViewSet
         Script.python_class = self.python_class
 
     def test_get_script(self):

+ 0 - 1
netbox/extras/validators.py

@@ -1,4 +1,3 @@
-import inspect
 import operator
 
 from django.core import validators

+ 1 - 2
netbox/extras/views.py

@@ -6,8 +6,8 @@ from django.db.models import Count, Q
 from django.http import HttpResponseBadRequest, HttpResponseForbidden, HttpResponse
 from django.shortcuts import get_object_or_404, redirect, render
 from django.urls import reverse
-from django.utils.module_loading import import_string
 from django.utils import timezone
+from django.utils.module_loading import import_string
 from django.utils.translation import gettext as _
 from django.views.generic import View
 
@@ -20,7 +20,6 @@ from extras.choices import LogLevelChoices
 from extras.dashboard.forms import DashboardWidgetAddForm, DashboardWidgetForm
 from extras.dashboard.utils import get_widget_class
 from netbox.constants import DEFAULT_ACTION_PERMISSIONS
-from netbox.registry import registry
 from netbox.views import generic
 from netbox.views.generic.mixins import TableMixin
 from utilities.forms import ConfirmationForm, get_field_value

+ 0 - 2
netbox/ipam/api/serializers_/roles.py

@@ -1,5 +1,3 @@
-from rest_framework import serializers
-
 from ipam.models import Role
 from netbox.api.fields import RelatedObjectCountField
 from netbox.api.serializers import NetBoxModelSerializer

+ 0 - 2
netbox/ipam/api/serializers_/services.py

@@ -1,5 +1,3 @@
-from rest_framework import serializers
-
 from dcim.api.serializers_.devices import DeviceSerializer
 from ipam.choices import *
 from ipam.models import IPAddress, Service, ServiceTemplate

+ 0 - 2
netbox/ipam/api/serializers_/vrfs.py

@@ -1,5 +1,3 @@
-from rest_framework import serializers
-
 from ipam.models import RouteTarget, VRF
 from netbox.api.fields import RelatedObjectCountField, SerializedPKRelatedField
 from netbox.api.serializers import NetBoxModelSerializer

+ 1 - 1
netbox/ipam/apps.py

@@ -7,7 +7,7 @@ class IPAMConfig(AppConfig):
 
     def ready(self):
         from netbox.models.features import register_models
-        from . import signals, search
+        from . import signals, search  # noqa: F401
 
         # Register models
         register_models(*self.get_models())

+ 0 - 1
netbox/ipam/graphql/mixins.py

@@ -1,7 +1,6 @@
 from typing import Annotated, List
 
 import strawberry
-import strawberry_django
 
 __all__ = (
     'IPAddressesMixin',

+ 0 - 2
netbox/netbox/api/serializers/nested.py

@@ -1,5 +1,3 @@
-from rest_framework import serializers
-
 from extras.models import Tag
 from utilities.api import get_related_object_by_attrs
 from .base import BaseModelSerializer

+ 0 - 1
netbox/netbox/plugins/urls.py

@@ -3,7 +3,6 @@ from importlib import import_module
 from django.apps import apps
 from django.conf import settings
 from django.conf.urls import include
-from django.contrib.admin.views.decorators import staff_member_required
 from django.urls import path
 from django.utils.module_loading import import_string, module_has_submodule
 

+ 0 - 2
netbox/netbox/plugins/views.py

@@ -2,9 +2,7 @@ from collections import OrderedDict
 
 from django.apps import apps
 from django.conf import settings
-from django.shortcuts import render
 from django.urls.exceptions import NoReverseMatch
-from django.views.generic import View
 from drf_spectacular.utils import extend_schema
 from rest_framework import permissions
 from rest_framework.response import Response

+ 2 - 4
netbox/netbox/settings.py

@@ -5,14 +5,12 @@ import os
 import platform
 import sys
 import warnings
-from urllib.parse import urlencode, urlsplit
+from urllib.parse import urlencode
 
-import django
 import requests
 from django.contrib.messages import constants as messages
 from django.core.exceptions import ImproperlyConfigured, ValidationError
 from django.core.validators import URLValidator
-from django.utils.encoding import force_str
 from django.utils.translation import gettext_lazy as _
 
 from netbox.config import PARAMS as CONFIG_PARAMS
@@ -252,7 +250,7 @@ if STORAGE_BACKEND is not None:
     # django-storage-swift
     elif STORAGE_BACKEND == 'swift.storage.SwiftStorage':
         try:
-            import swift.utils  # type: ignore
+            import swift.utils  # noqa: F401
         except ModuleNotFoundError as e:
             if getattr(e, 'name') == 'swift':
                 raise ImproperlyConfigured(

+ 1 - 1
netbox/netbox/tests/dummy_plugin/views.py

@@ -8,7 +8,7 @@ from dcim.models import Site
 from utilities.views import register_model_view
 from .models import DummyModel
 # Trigger registration of custom column
-from .tables import mycol
+from .tables import mycol  # noqa: F401
 
 
 class DummyModelsView(View):

+ 1 - 1
netbox/tenancy/apps.py

@@ -6,7 +6,7 @@ class TenancyConfig(AppConfig):
 
     def ready(self):
         from netbox.models.features import register_models
-        from . import search
+        from . import search  # noqa: F401
 
         # Register models
         register_models(*self.get_models())

+ 0 - 1
netbox/tenancy/filtersets.py

@@ -2,7 +2,6 @@ import django_filters
 from django.db.models import Q
 from django.utils.translation import gettext as _
 
-from extras.filters import TagFilter
 from netbox.filtersets import NetBoxModelFilterSet, OrganizationalModelFilterSet
 from utilities.filters import ContentTypeFilter, TreeNodeMultipleChoiceFilter
 from .models import *

+ 0 - 2
netbox/tenancy/graphql/mixins.py

@@ -1,8 +1,6 @@
 from typing import Annotated, List
 
 import strawberry
-import strawberry_django
-
 
 __all__ = (
     'ContactAssignmentsMixin',

+ 1 - 1
netbox/users/apps.py

@@ -6,7 +6,7 @@ class UsersConfig(AppConfig):
 
     def ready(self):
         from netbox.models.features import register_models
-        from . import signals
+        from . import signals  # noqa: F401
 
         # Register models
         register_models(*self.get_models())

+ 1 - 3
netbox/users/tests/test_views.py

@@ -1,8 +1,6 @@
-from django.test import override_settings
-
 from core.models import ObjectType
 from users.models import *
-from utilities.testing import ViewTestCases, create_test_user, extract_form_failures
+from utilities.testing import ViewTestCases, create_test_user
 
 
 class UserTestCase(

+ 0 - 1
netbox/utilities/management/commands/calculate_cached_counts.py

@@ -1,7 +1,6 @@
 from collections import defaultdict
 
 from django.core.management.base import BaseCommand
-from django.db.models import Count, OuterRef, Subquery
 
 from netbox.registry import registry
 from utilities.counters import update_counts

+ 1 - 1
netbox/utilities/markdown.py

@@ -14,7 +14,7 @@ class StrikethroughExtension(markdown.Extension):
     """
     def extendMarkdown(self, md):
         md.inlinePatterns.register(
-            markdown.inlinepatterns.SimpleTagPattern(STRIKE_RE, 'del'),
+            SimpleTagPattern(STRIKE_RE, 'del'),
             'strikethrough',
             200
         )

+ 2 - 2
netbox/utilities/release.py

@@ -1,9 +1,9 @@
 import datetime
 import os
-import yaml
 from dataclasses import asdict, dataclass, field
-from typing import List, Union
+from typing import Union
 
+import yaml
 from django.core.exceptions import ImproperlyConfigured
 
 from utilities.datetime import datetime_from_timestamp

+ 1 - 1
netbox/utilities/serializers/json.py

@@ -1,5 +1,5 @@
 from django.contrib.postgres.fields import ArrayField
-from django.core.serializers.json import Deserializer, Serializer as Serializer_  # noqa
+from django.core.serializers.json import Deserializer, Serializer as Serializer_  # noqa: F401
 from django.utils.encoding import is_protected_type
 
 # NOTE: Module must contain both Serializer and Deserializer

+ 1 - 3
netbox/utilities/templatetags/form_helpers.py

@@ -1,8 +1,6 @@
-import warnings
-
 from django import template
 
-from utilities.forms.rendering import FieldSet, InlineFields, ObjectAttribute, TabbedGroups
+from utilities.forms.rendering import InlineFields, ObjectAttribute, TabbedGroups
 
 __all__ = (
     'getfield',

+ 0 - 2
netbox/virtualization/api/serializers_/clusters.py

@@ -1,5 +1,3 @@
-from rest_framework import serializers
-
 from dcim.api.serializers_.sites import SiteSerializer
 from netbox.api.fields import ChoiceField, RelatedObjectCountField
 from netbox.api.serializers import NetBoxModelSerializer

+ 1 - 1
netbox/virtualization/apps.py

@@ -9,7 +9,7 @@ class VirtualizationConfig(AppConfig):
     def ready(self):
         from netbox.models.features import register_models
         from utilities.counters import connect_counters
-        from . import search, signals
+        from . import search, signals  # noqa: F401
         from .models import VirtualMachine
 
         # Register models

+ 0 - 2
netbox/vpn/api/serializers_/crypto.py

@@ -1,5 +1,3 @@
-from rest_framework import serializers
-
 from netbox.api.fields import ChoiceField, SerializedPKRelatedField
 from netbox.api.serializers import NetBoxModelSerializer
 from vpn.choices import *

+ 1 - 1
netbox/vpn/apps.py

@@ -7,7 +7,7 @@ class VPNConfig(AppConfig):
 
     def ready(self):
         from netbox.models.features import register_models
-        from . import search
+        from . import search  # noqa: F401
 
         # Register models
         register_models(*self.get_models())

+ 0 - 2
netbox/wireless/api/serializers_/wirelesslinks.py

@@ -1,5 +1,3 @@
-from rest_framework import serializers
-
 from dcim.api.serializers_.device_components import InterfaceSerializer
 from dcim.choices import LinkStatusChoices
 from netbox.api.fields import ChoiceField

+ 1 - 1
netbox/wireless/apps.py

@@ -6,7 +6,7 @@ class WirelessConfig(AppConfig):
 
     def ready(self):
         from netbox.models.features import register_models
-        from . import signals, search
+        from . import signals, search  # noqa: F401
 
         # Register models
         register_models(*self.get_models())

+ 1 - 1
netbox/wireless/filtersets.py

@@ -6,7 +6,7 @@ from dcim.models import Interface
 from ipam.models import VLAN
 from netbox.filtersets import OrganizationalModelFilterSet, NetBoxModelFilterSet
 from tenancy.filtersets import TenancyFilterSet
-from utilities.filters import MultiValueNumberFilter, TreeNodeMultipleChoiceFilter
+from utilities.filters import TreeNodeMultipleChoiceFilter
 from .choices import *
 from .models import *