diff --git a/.git-blame-ignore-revs b/.git-blame-ignore-revs
index cd2be9d0e2..1103ada44f 100644
--- a/.git-blame-ignore-revs
+++ b/.git-blame-ignore-revs
@@ -6,3 +6,5 @@ e6634e512c8ecf283c85a701366620e724806ab7
5d49efe59059c19da2d09d0ae695d498872cdb72
# Re-ran black on everything due to apparent disagreements on config? @lunkwill42 22/02/2022
e0496b75789656f5abca770e928988fd09bf7803
+# Re-ran black due to new version 24.4.2
+18245ec1a042aac23c4c85637d3454e8d1b5a1bb
diff --git a/python/nav/bin/pping.py b/python/nav/bin/pping.py
index 274cc413ab..eca60c6f6b 100755
--- a/python/nav/bin/pping.py
+++ b/python/nav/bin/pping.py
@@ -140,7 +140,7 @@ def generate_events(self):
down_now = []
# Find out which netboxes to consider down
- for (netboxid, replies) in self.replies.items():
+ for netboxid, replies in self.replies.items():
if replies[: self._nrping] == [-1] * self._nrping:
down_now.append(netboxid)
diff --git a/python/nav/buildconf.py b/python/nav/buildconf.py
index c39aed4088..b8c628a644 100644
--- a/python/nav/buildconf.py
+++ b/python/nav/buildconf.py
@@ -1,4 +1,5 @@
"""NAV build configuration variables."""
+
# pylint: disable=invalid-name
import os
import sysconfig
diff --git a/python/nav/daemon.py b/python/nav/daemon.py
index 547124ba21..13c59d0ae5 100644
--- a/python/nav/daemon.py
+++ b/python/nav/daemon.py
@@ -170,7 +170,7 @@ def switchuser(username):
# Set non-primary groups
gids = []
- for (_name, _passwd, gid, members) in grp.getgrall():
+ for _name, _passwd, gid, members in grp.getgrall():
if username in members:
gids.append(gid)
if gids:
diff --git a/python/nav/debug.py b/python/nav/debug.py
index 81a5849696..2802d000f4 100644
--- a/python/nav/debug.py
+++ b/python/nav/debug.py
@@ -64,7 +64,7 @@ def log_stacktrace(logger, stacktrace):
return
dump = []
- for (frame, filename, line_no, func, source, _) in stacktrace:
+ for frame, filename, line_no, func, source, _ in stacktrace:
dump.append(" File %r, line %s, in %s" % (filename, line_no, func))
for line in source:
dump.append(" %s" % line.rstrip())
diff --git a/python/nav/django/templatetags/report.py b/python/nav/django/templatetags/report.py
index b9d23d9dbe..2f3d7c0bce 100644
--- a/python/nav/django/templatetags/report.py
+++ b/python/nav/django/templatetags/report.py
@@ -1,4 +1,5 @@
"""Template tags used in report subsystem"""
+
from django import template
from django.template.defaultfilters import stringfilter
from django.urls import reverse
diff --git a/python/nav/django/templatetags/string_manipulation.py b/python/nav/django/templatetags/string_manipulation.py
index 8e5befd41f..5fbfc8d2e0 100644
--- a/python/nav/django/templatetags/string_manipulation.py
+++ b/python/nav/django/templatetags/string_manipulation.py
@@ -1,4 +1,5 @@
"""Template filters for string manipulation"""
+
import re
from django import template
diff --git a/python/nav/errors.py b/python/nav/errors.py
index 9a3c21dd71..1748b7e4de 100644
--- a/python/nav/errors.py
+++ b/python/nav/errors.py
@@ -18,6 +18,7 @@
class GeneralException(Exception):
"General exception"
+
# Just subclass this with a new doc-string
def __str__(self):
# Returns a nice version of the docstring
diff --git a/python/nav/eventengine/topology.py b/python/nav/eventengine/topology.py
index 7286e616e4..7c2297d55e 100644
--- a/python/nav/eventengine/topology.py
+++ b/python/nav/eventengine/topology.py
@@ -280,8 +280,6 @@ def _get_target_dgram_addr(target):
a SOCK_DGRAM socket type.
"""
- for (family, socktype, _proto, _canonname, sockaddr) in socket.getaddrinfo(
- target, 1
- ):
+ for family, socktype, _proto, _canonname, sockaddr in socket.getaddrinfo(target, 1):
if socktype == socket.SOCK_DGRAM:
return family, sockaddr
diff --git a/python/nav/ipdevpoll/__init__.py b/python/nav/ipdevpoll/__init__.py
index fcbfad51bd..d726076dc5 100644
--- a/python/nav/ipdevpoll/__init__.py
+++ b/python/nav/ipdevpoll/__init__.py
@@ -26,7 +26,6 @@
class Plugin(object):
-
"""Abstract class providing common functionality for all polling plugins.
Do *NOT* create instances of the base class.
diff --git a/python/nav/ipdevpoll/jobs.py b/python/nav/ipdevpoll/jobs.py
index 4de0afb035..be73be8be5 100644
--- a/python/nav/ipdevpoll/jobs.py
+++ b/python/nav/ipdevpoll/jobs.py
@@ -67,7 +67,6 @@ def __init__(self, msg=None, cause=None, delay=60):
class JobHandler(object):
-
"""Handles a single polling job against a single netbox.
An instance of this class performs a polling job, as described by
@@ -191,7 +190,7 @@ def _get_willing_plugins(self, plugin_classes):
else:
unwilling_plugins.append(cls)
- for (willingness, plugins) in [
+ for willingness, plugins in [
('unwilling', unwilling_plugins),
('willing', willing_plugins),
]:
diff --git a/python/nav/ipdevpoll/plugins/arp.py b/python/nav/ipdevpoll/plugins/arp.py
index 6a0565e109..37baab8249 100644
--- a/python/nav/ipdevpoll/plugins/arp.py
+++ b/python/nav/ipdevpoll/plugins/arp.py
@@ -206,7 +206,7 @@ def _make_new_mappings(self, mappings):
timestamp = datetime.now()
infinity = datetime.max
- for (ip, mac) in mappings:
+ for ip, mac in mappings:
if not ip or not mac:
continue # Some devices seem to return empty results!
arp = self.containers.factory((ip, mac), shadows.Arp)
diff --git a/python/nav/mibs/cpqpower_mib.py b/python/nav/mibs/cpqpower_mib.py
index 899fc347d3..f06f50fcea 100644
--- a/python/nav/mibs/cpqpower_mib.py
+++ b/python/nav/mibs/cpqpower_mib.py
@@ -43,9 +43,11 @@
'precision': 2,
'name': 'Group {pdu3GroupName} Current',
'minimum': 0,
- 'maximum': lambda x: x.get('pdu3groupCurrentRating') / 100
- if x.get('pdu3groupCurrentRating') > 0
- else None,
+ 'maximum': lambda x: (
+ x.get('pdu3groupCurrentRating') / 100
+ if x.get('pdu3groupCurrentRating') > 0
+ else None
+ ),
},
'pdu3GroupPowerVA': {
'unit_of_measurement': Sensor.UNIT_VOLTAMPERES,
@@ -88,9 +90,11 @@
'precision': 2,
'name': 'Input {pdu3InputPhaseCurrentMeasType} Current',
'minimum': 0,
- 'maximum': lambda x: x.get('pdu3InputPhaseCurrentRating') / 100
- if x.get('pdu3InputPhaseCurrentRating') > 0
- else None,
+ 'maximum': lambda x: (
+ x.get('pdu3InputPhaseCurrentRating') / 100
+ if x.get('pdu3InputPhaseCurrentRating') > 0
+ else None
+ ),
},
'pdu3InputPhasePowerVA': {
'unit_of_measurement': Sensor.UNIT_VOLTAMPERES,
diff --git a/python/nav/mibs/juniper_mib.py b/python/nav/mibs/juniper_mib.py
index 97d345bae5..700159d96a 100644
--- a/python/nav/mibs/juniper_mib.py
+++ b/python/nav/mibs/juniper_mib.py
@@ -253,9 +253,9 @@ def _fru_row_to_powersupply_or_fan(fru_row):
model = fru_row.get("jnxContentsModel")
psu_or_fan = PowerSupplyOrFan(
name=fru_row.get("jnxFruName"),
- physical_class="powerSupply"
- if fru_row.get("jnxFruType") == "powerEntryModule"
- else "fan",
+ physical_class=(
+ "powerSupply" if fru_row.get("jnxFruType") == "powerEntryModule" else "fan"
+ ),
descr=model,
internal_id=fru_row.get(0),
)
diff --git a/python/nav/models/images.py b/python/nav/models/images.py
index 5b9a62febf..05c144dfd8 100644
--- a/python/nav/models/images.py
+++ b/python/nav/models/images.py
@@ -1,4 +1,5 @@
"""Models for uploaded image information"""
+
import os
from os.path import exists, join
diff --git a/python/nav/portadmin/snmp/base.py b/python/nav/portadmin/snmp/base.py
index c101bd662e..296e07dc93 100644
--- a/python/nav/portadmin/snmp/base.py
+++ b/python/nav/portadmin/snmp/base.py
@@ -372,7 +372,7 @@ def _get_if_stats(self, stats):
"""Make a list with tuples. Each tuple contain
interface-index and corresponding status-value"""
available_stats = []
- for (if_index, stat) in stats:
+ for if_index, stat in stats:
if_index = OID(if_index)[-1]
if isinstance(if_index, int):
available_stats.append((if_index, stat))
diff --git a/python/nav/smsd/navdbqueue.py b/python/nav/smsd/navdbqueue.py
index 52e4e92848..7c34c21aed 100644
--- a/python/nav/smsd/navdbqueue.py
+++ b/python/nav/smsd/navdbqueue.py
@@ -158,7 +158,7 @@ def getmsgs(self, sent='N'):
db.execute(sql, data)
result = []
- for (smsqid, name, msg, time) in db.fetchall():
+ for smsqid, name, msg, time in db.fetchall():
result.append(
dict(
id=smsqid, name=name, msg=msg, time=time.strftime("%Y-%m-%d %H:%M")
diff --git a/python/nav/statemon/checker/PostgresqlChecker.py b/python/nav/statemon/checker/PostgresqlChecker.py
index 7c0dac61db..d4daebbcbd 100644
--- a/python/nav/statemon/checker/PostgresqlChecker.py
+++ b/python/nav/statemon/checker/PostgresqlChecker.py
@@ -43,7 +43,7 @@ def execute(self):
kwargs = {}
# Build keywords from arguments
- for (name, value) in self.args.items():
+ for name, value in self.args.items():
if name in ('user', 'password', 'database'):
# Must convert to str here because psycopg2 complains
# if keywords are unicode. ("Keywords must be strings")
diff --git a/python/nav/web/networkexplorer/mixins.py b/python/nav/web/networkexplorer/mixins.py
index a820755246..fb1771916d 100644
--- a/python/nav/web/networkexplorer/mixins.py
+++ b/python/nav/web/networkexplorer/mixins.py
@@ -181,9 +181,9 @@ def get_context_data(self, **kwargs):
'type': 'swport',
'interface': model_to_dict(interface),
'netbox_sysname': interface.netbox.sysname,
- 'module_netbox_sysname': interface.module.netbox.sysname
- if interface.module
- else '',
+ 'module_netbox_sysname': (
+ interface.module.netbox.sysname if interface.module else ''
+ ),
'subheader_vlan': str(vlan.vlan.vlan),
'subheader_netbox': str(interface.netbox),
}
diff --git a/python/nav/web/radius/db.py b/python/nav/web/radius/db.py
index 455b5aec59..617330c6fd 100644
--- a/python/nav/web/radius/db.py
+++ b/python/nav/web/radius/db.py
@@ -98,9 +98,9 @@ def _format(self, row):
try:
message = row[LOG_DETAILFIELDS.index('message')]
return map(
- lambda x: x
- if x != message
- else x.replace('[', '[').replace(']', ']'),
+ lambda x: (
+ x if x != message else x.replace('[', '[').replace(']', ']')
+ ),
row,
)
except ValueError:
@@ -218,9 +218,9 @@ def _format(self, row):
try:
message = row[LOG_SEARCHRESULTFIELDS.index('message')]
return map(
- lambda x: x
- if x != message
- else x.replace('[', '[').replace(']', ']'),
+ lambda x: (
+ x if x != message else x.replace('[', '[').replace(']', ']')
+ ),
row,
)
except ValueError:
diff --git a/python/nav/web/seeddb/page/service/edit.py b/python/nav/web/seeddb/page/service/edit.py
index 784c64b5ac..7266aca056 100644
--- a/python/nav/web/seeddb/page/service/edit.py
+++ b/python/nav/web/seeddb/page/service/edit.py
@@ -1,4 +1,5 @@
"""Forms and view functions for editing services in SeedDB"""
+
#
# Copyright (C) 2011, 2013-2015 Uninett AS
#
@@ -212,7 +213,7 @@ def service_save(request, service_form, property_form):
service = Service.objects.create(
netbox=netbox, handler=service_form.cleaned_data['handler']
)
- for (prop, value) in property_form.cleaned_data.items():
+ for prop, value in property_form.cleaned_data.items():
if value:
ServiceProperty.objects.create(service=service, property=prop, value=value)
new_message(
diff --git a/python/nav/web/webfront/__init__.py b/python/nav/web/webfront/__init__.py
index 4fc2d23524..cc76f9239c 100644
--- a/python/nav/web/webfront/__init__.py
+++ b/python/nav/web/webfront/__init__.py
@@ -1,4 +1,5 @@
"""NAV web common package."""
+
import os
from django.db.models import Count
diff --git a/python/nav/web/webfront/utils.py b/python/nav/web/webfront/utils.py
index d1115b5cb5..6ec10f2bb0 100644
--- a/python/nav/web/webfront/utils.py
+++ b/python/nav/web/webfront/utils.py
@@ -1,4 +1,5 @@
"""Utility functions for various parts of the frontpage, navbar etc."""
+
#
# Copyright (C) 2009, 2012 Uninett AS
#