Fixes #21407: Enable I (isort) and stabilize import ordering (#21458)

- Adopt Ruff `I` (isort) rules for consistent import sorting
- Add two `# isort: split` boundaries to keep required imports pinned
  in `__init__.py` modules
This commit is contained in:
Martin Hauser
2026-02-18 17:41:51 +01:00
committed by GitHub
parent 7300104cea
commit 945e7ade0a
438 changed files with 1067 additions and 527 deletions

View File

@@ -1,6 +1,7 @@
from dcim.constants import LOCATION_SCOPE_TYPES
from django.contrib.contenttypes.models import ContentType
from rest_framework import serializers
from dcim.constants import LOCATION_SCOPE_TYPES
from netbox.api.fields import ChoiceField, ContentTypeField, RelatedObjectCountField
from netbox.api.gfk_fields import GFKSerializerField
from netbox.api.serializers import OrganizationalModelSerializer, PrimaryModelSerializer

View File

@@ -1,8 +1,8 @@
from drf_spectacular.utils import extend_schema_field
from rest_framework import serializers
from dcim.api.serializers_.devices import DeviceSerializer
from dcim.api.serializers_.device_components import MACAddressSerializer
from dcim.api.serializers_.devices import DeviceSerializer
from dcim.api.serializers_.platforms import PlatformSerializer
from dcim.api.serializers_.roles import DeviceRoleSerializer
from dcim.api.serializers_.sites import SiteSerializer
@@ -19,6 +19,7 @@ from users.api.serializers_.mixins import OwnerMixin
from virtualization.choices import *
from virtualization.models import VirtualDisk, VirtualMachine, VMInterface
from vpn.api.serializers_.l2vpn import L2VPNTerminationSerializer
from .clusters import ClusterSerializer
from .nested import NestedVMInterfaceSerializer

View File

@@ -1,6 +1,6 @@
from netbox.api.routers import NetBoxRouter
from . import views
from . import views
router = NetBoxRouter()
router.APIRootView = views.VirtualizationRootView

View File

@@ -6,6 +6,7 @@ from netbox.api.viewsets import NetBoxModelViewSet
from utilities.query_functions import CollateAsChar
from virtualization import filtersets
from virtualization.models import *
from . import serializers

View File

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

View File

@@ -2,11 +2,11 @@ from django.utils.translation import gettext_lazy as _
from utilities.choices import ChoiceSet
#
# Clusters
#
class ClusterStatusChoices(ChoiceSet):
key = 'Cluster.status'

View File

@@ -6,16 +6,16 @@ from netaddr.core import AddrFormatError
from dcim.base_filtersets import ScopedFilterSet
from dcim.filtersets import CommonInterfaceFilterSet
from dcim.models import Device, DeviceRole, Platform, Region, Site, SiteGroup
from dcim.models import MACAddress
from dcim.models import Device, DeviceRole, MACAddress, Platform, Region, Site, SiteGroup
from extras.filtersets import LocalConfigContextFilterSet
from extras.models import ConfigTemplate
from ipam.filtersets import PrimaryIPFilterSet
from netbox.filtersets import NetBoxModelFilterSet, OrganizationalModelFilterSet, PrimaryModelFilterSet
from tenancy.filtersets import TenancyFilterSet, ContactModelFilterSet
from tenancy.filtersets import ContactModelFilterSet, TenancyFilterSet
from users.filterset_mixins import OwnerFilterMixin
from utilities.filters import MultiValueCharFilter, MultiValueMACAddressFilter, TreeNodeMultipleChoiceFilter
from utilities.filtersets import register_filterset
from .choices import *
from .models import *

View File

@@ -1,6 +1,6 @@
from .model_forms import *
from .filtersets import *
from .object_create import *
from .bulk_create import *
from .bulk_edit import *
from .bulk_import import *
from .filtersets import *
from .model_forms import *
from .object_create import *

View File

@@ -3,7 +3,7 @@ from django.utils.translation import gettext_lazy as _
from utilities.forms import form_from_model
from utilities.forms.fields import ExpandableNameField
from virtualization.models import VirtualDisk, VMInterface, VirtualMachine
from virtualization.models import VirtualDisk, VirtualMachine, VMInterface
__all__ = (
'VirtualDiskBulkCreateForm',

View File

@@ -6,7 +6,7 @@ from dcim.constants import INTERFACE_MTU_MAX, INTERFACE_MTU_MIN
from dcim.forms.mixins import ScopedBulkEditForm
from dcim.models import Device, DeviceRole, Platform, Site
from extras.models import ConfigTemplate
from ipam.models import VLAN, VLANGroup, VLANTranslationPolicy, VRF
from ipam.models import VLAN, VRF, VLANGroup, VLANTranslationPolicy
from netbox.forms import NetBoxModelBulkEditForm, OrganizationalModelBulkEditForm, PrimaryModelBulkEditForm
from netbox.forms.mixins import OwnerMixin
from tenancy.models import Tenant

View File

@@ -7,8 +7,7 @@ from dcim.models import Device, DeviceRole, Platform, Site
from extras.models import ConfigTemplate
from ipam.choices import VLANQinQRoleChoices
from ipam.models import VLAN, VRF, VLANGroup
from netbox.forms import NetBoxModelImportForm
from netbox.forms import OrganizationalModelImportForm, OwnerCSVMixin, PrimaryModelImportForm
from netbox.forms import NetBoxModelImportForm, OrganizationalModelImportForm, OwnerCSVMixin, PrimaryModelImportForm
from tenancy.models import Tenant
from utilities.forms.fields import CSVChoiceField, CSVModelChoiceField, CSVModelMultipleChoiceField
from virtualization.choices import *

View File

@@ -9,7 +9,7 @@ from dcim.forms.mixins import ScopedForm
from dcim.models import Device, DeviceRole, MACAddress, Platform, Rack, Region, Site, SiteGroup
from extras.models import ConfigTemplate
from ipam.choices import VLANQinQRoleChoices
from ipam.models import IPAddress, VLAN, VLANGroup, VLANTranslationPolicy, VRF
from ipam.models import VLAN, VRF, IPAddress, VLANGroup, VLANTranslationPolicy
from netbox.forms import NetBoxModelForm, OrganizationalModelForm, PrimaryModelForm
from netbox.forms.mixins import OwnerMixin
from tenancy.forms import TenancyForm

View File

@@ -1,5 +1,7 @@
from django.utils.translation import gettext_lazy as _
from utilities.forms.fields import ExpandableNameField
from .model_forms import VirtualDiskForm, VMInterfaceForm
__all__ = (

View File

@@ -1,5 +1,5 @@
from dataclasses import dataclass
from typing import Annotated, TYPE_CHECKING
from typing import TYPE_CHECKING, Annotated
import strawberry
import strawberry_django

View File

@@ -1,4 +1,4 @@
from typing import Annotated, TYPE_CHECKING
from typing import TYPE_CHECKING, Annotated
import strawberry
import strawberry_django
@@ -14,8 +14,6 @@ from virtualization import models
from virtualization.graphql.filter_mixins import VMComponentFilterMixin
if TYPE_CHECKING:
from .enums import *
from netbox.graphql.filter_lookups import FloatLookup, IntegerLookup
from dcim.graphql.filters import DeviceFilter, DeviceRoleFilter, MACAddressFilter, PlatformFilter, SiteFilter
from ipam.graphql.filters import (
FHRPGroupAssignmentFilter,
@@ -24,8 +22,11 @@ if TYPE_CHECKING:
VLANGroupFilter,
VRFFilter,
)
from netbox.graphql.filter_lookups import FloatLookup, IntegerLookup
from vpn.graphql.filters import L2VPNFilter, TunnelTerminationFilter
from .enums import *
__all__ = (
'ClusterFilter',
'ClusterGroupFilter',

View File

@@ -1,4 +1,4 @@
from typing import Annotated, List, TYPE_CHECKING, Union
from typing import TYPE_CHECKING, Annotated, List, Union
import strawberry
import strawberry_django
@@ -6,9 +6,10 @@ import strawberry_django
from extras.graphql.mixins import ConfigContextMixin, ContactsMixin
from ipam.graphql.mixins import IPAddressesMixin, VLANGroupsMixin
from netbox.graphql.scalars import BigInt
from netbox.graphql.types import OrganizationalObjectType, PrimaryObjectType, NetBoxObjectType
from netbox.graphql.types import NetBoxObjectType, OrganizationalObjectType, PrimaryObjectType
from users.graphql.mixins import OwnerMixin
from virtualization import models
from .filters import *
if TYPE_CHECKING:

View File

@@ -1,12 +1,13 @@
import dcim.fields
from utilities.json import CustomFieldJSONEncoder
import django.core.validators
from django.db import migrations, models
import django.db.models.deletion
import taggit.managers
from django.db import migrations, models
import dcim.fields
import utilities.fields
import utilities.ordering
import utilities.query_functions
from utilities.json import CustomFieldJSONEncoder
class Migration(migrations.Migration):

View File

@@ -1,7 +1,7 @@
# Generated by Django 4.2.6 on 2023-10-20 11:48
from django.db import migrations, models
import django.db.models.deletion
from django.db import migrations, models
class Migration(migrations.Migration):

View File

@@ -1,6 +1,7 @@
from django.db import migrations, models
import django.db.models.deletion
import taggit.managers
from django.db import migrations, models
import utilities.fields
import utilities.json
import utilities.ordering

View File

@@ -1,5 +1,6 @@
from django.db import migrations
from django.db.models import F, Sum
from netbox.settings import DISK_BASE_UNIT

View File

@@ -1,4 +1,5 @@
from netbox.search import SearchIndex, register_search
from . import models

View File

@@ -6,6 +6,7 @@ from netbox.tables import NetBoxTable, PrimaryModelTable, columns
from tenancy.tables import ContactsColumnMixin, TenancyColumnsMixin
from utilities.templatetags.helpers import humanize_disk_megabytes
from virtualization.models import VirtualDisk, VirtualMachine, VMInterface
from .template_code import *
__all__ = (

View File

@@ -11,11 +11,15 @@ from dcim.models import Site
from extras.choices import CustomFieldTypeChoices
from extras.models import ConfigTemplate, CustomField
from ipam.choices import VLANQinQRoleChoices
from ipam.models import Prefix, VLAN, VRF
from ipam.models import VLAN, VRF, Prefix
from users.constants import TOKEN_PREFIX
from users.models import Token
from utilities.testing import (
APITestCase, APIViewTestCases, create_test_device, create_test_virtualmachine, disable_logging,
APITestCase,
APIViewTestCases,
create_test_device,
create_test_virtualmachine,
disable_logging,
)
from virtualization.choices import *
from virtualization.models import *

View File

@@ -3,7 +3,7 @@ from django.test import TestCase
from dcim.choices import InterfaceModeChoices
from dcim.models import Device, DeviceRole, MACAddress, Platform, Region, Site, SiteGroup
from ipam.choices import VLANQinQRoleChoices
from ipam.models import IPAddress, VLAN, VLANTranslationPolicy, VRF
from ipam.models import VLAN, VRF, IPAddress, VLANTranslationPolicy
from tenancy.models import Tenant, TenantGroup
from utilities.testing import ChangeLoggedFilterSetTests, create_test_device
from virtualization.choices import *

View File

@@ -2,8 +2,8 @@ from django.core.exceptions import ValidationError
from django.test import TestCase
from dcim.models import Site
from virtualization.models import *
from tenancy.models import Tenant
from virtualization.models import *
class VirtualMachineTestCase(TestCase):

View File

@@ -1,6 +1,7 @@
from django.urls import include, path
from utilities.urls import get_model_urls
from . import views
app_name = 'virtualization'

View File

@@ -15,7 +15,14 @@ from extras.views import ObjectConfigContextView, ObjectRenderConfigView
from ipam.models import IPAddress, VLANGroup
from ipam.tables import InterfaceVLANTable, VLANTranslationRuleTable
from netbox.object_actions import (
AddObject, BulkDelete, BulkEdit, BulkExport, BulkImport, BulkRename, DeleteObject, EditObject,
AddObject,
BulkDelete,
BulkEdit,
BulkExport,
BulkImport,
BulkRename,
DeleteObject,
EditObject,
)
from netbox.ui import actions, layout
from netbox.ui.panels import CommentsPanel, ObjectsTablePanel, TemplatePanel
@@ -23,16 +30,17 @@ from netbox.views import generic
from utilities.query import count_related
from utilities.query_functions import CollateAsChar
from utilities.views import GetRelatedModelsMixin, ViewTab, register_model_view
from . import filtersets, forms, tables
from .models import *
from .object_actions import BulkAddComponents
from .ui import panels
#
# Cluster types
#
@register_model_view(ClusterType, 'list', path='', detail=False)
class ClusterTypeListView(generic.ObjectListView):
queryset = ClusterType.objects.annotate(