From 33ac570cb4e132fe7ef2b9aafe80f400f2f11edc Mon Sep 17 00:00:00 2001
From: Matthias Kestenholz
Date: Thu, 16 Dec 2021 11:17:06 +0100
Subject: [PATCH 1/2] Add pyupgrade and django-upgrade pre-commit hooks
---
.pre-commit-config.yaml | 10 ++++++++++
1 file changed, 10 insertions(+)
diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml
index bb1cd93f0..3d76ba424 100644
--- a/.pre-commit-config.yaml
+++ b/.pre-commit-config.yaml
@@ -14,6 +14,16 @@ repos:
rev: 0.10.1
hooks:
- id: doc8
+- repo: https://github.com/asottile/pyupgrade
+ rev: v2.29.1
+ hooks:
+ - id: pyupgrade
+ args: [--py36-plus]
+- repo: https://github.com/adamchainz/django-upgrade
+ rev: 1.4.0
+ hooks:
+ - id: django-upgrade
+ args: [--target-version, "3.2"]
- repo: https://github.com/pycqa/isort
rev: 5.10.1
hooks:
From 3eff33da2e7dd102faa0930dfbf3a29a7a955e0d Mon Sep 17 00:00:00 2001
From: "pre-commit-ci[bot]"
<66853113+pre-commit-ci[bot]@users.noreply.github.com>
Date: Thu, 16 Dec 2021 11:15:45 +0000
Subject: [PATCH 2/2] [pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
---
debug_toolbar/management/commands/debugsqlshell.py | 2 +-
debug_toolbar/panels/cache.py | 2 +-
debug_toolbar/panels/profiling.py | 2 +-
debug_toolbar/panels/signals.py | 2 +-
debug_toolbar/panels/sql/utils.py | 4 ++--
debug_toolbar/panels/sql/views.py | 6 +++---
debug_toolbar/panels/templates/panel.py | 2 +-
debug_toolbar/panels/templates/views.py | 2 +-
debug_toolbar/utils.py | 4 ++--
tests/panels/test_sql.py | 12 ++++++------
10 files changed, 19 insertions(+), 19 deletions(-)
diff --git a/debug_toolbar/management/commands/debugsqlshell.py b/debug_toolbar/management/commands/debugsqlshell.py
index 577126ecd..93514d121 100644
--- a/debug_toolbar/management/commands/debugsqlshell.py
+++ b/debug_toolbar/management/commands/debugsqlshell.py
@@ -27,7 +27,7 @@ def execute(self, sql, params=()):
end_time = time()
duration = (end_time - start_time) * 1000
formatted_sql = sqlparse.format(raw_sql, reindent=True)
- print("{} [{:.2f}ms]".format(formatted_sql, duration))
+ print(f"{formatted_sql} [{duration:.2f}ms]")
base_module.CursorDebugWrapper = PrintQueryWrapper
diff --git a/debug_toolbar/panels/cache.py b/debug_toolbar/panels/cache.py
index 19ec7b583..617c6e1ef 100644
--- a/debug_toolbar/panels/cache.py
+++ b/debug_toolbar/panels/cache.py
@@ -63,7 +63,7 @@ def __init__(self, cache):
self.cache = cache
def __repr__(self):
- return str("") % repr(self.cache)
+ return "" % repr(self.cache)
def _get_func_info(self):
frame = sys._getframe(3)
diff --git a/debug_toolbar/panels/profiling.py b/debug_toolbar/panels/profiling.py
index 3acd5fabe..5fd5b3c84 100644
--- a/debug_toolbar/panels/profiling.py
+++ b/debug_toolbar/panels/profiling.py
@@ -30,7 +30,7 @@ def parent_classes(self):
def background(self):
r, g, b = hsv_to_rgb(*self.hsv)
- return "rgb({:f}%,{:f}%,{:f}%)".format(r * 100, g * 100, b * 100)
+ return f"rgb({r * 100:f}%,{g * 100:f}%,{b * 100:f}%)"
def func_std_string(self): # match what old profile produced
func_name = self.func
diff --git a/debug_toolbar/panels/signals.py b/debug_toolbar/panels/signals.py
index 3535bd143..5e81fa497 100644
--- a/debug_toolbar/panels/signals.py
+++ b/debug_toolbar/panels/signals.py
@@ -97,7 +97,7 @@ def generate_stats(self, request, response):
receiver_class_name = getattr(
receiver.__self__, "__class__", type
).__name__
- text = "{}.{}".format(receiver_class_name, receiver_name)
+ text = f"{receiver_class_name}.{receiver_name}"
else:
text = receiver_name
receivers.append(text)
diff --git a/debug_toolbar/panels/sql/utils.py b/debug_toolbar/panels/sql/utils.py
index 16b7a3ea4..7b04f0346 100644
--- a/debug_toolbar/panels/sql/utils.py
+++ b/debug_toolbar/panels/sql/utils.py
@@ -26,8 +26,8 @@ def reformat_sql(sql, with_toggle=False):
if not with_toggle:
return formatted
simple = simplify(parse_sql(sql, aligned_indent=False))
- uncollapsed = '{}'.format(simple)
- collapsed = '{}'.format(formatted)
+ uncollapsed = f'{simple}'
+ collapsed = f'{formatted}'
return collapsed + uncollapsed
diff --git a/debug_toolbar/panels/sql/views.py b/debug_toolbar/panels/sql/views.py
index 3b6516b49..49ffee515 100644
--- a/debug_toolbar/panels/sql/views.py
+++ b/debug_toolbar/panels/sql/views.py
@@ -49,11 +49,11 @@ def sql_explain(request, verified_data):
# SQLite's EXPLAIN dumps the low-level opcodes generated for a query;
# EXPLAIN QUERY PLAN dumps a more human-readable summary
# See https://www.sqlite.org/lang_explain.html for details
- cursor.execute("EXPLAIN QUERY PLAN {}".format(sql), params)
+ cursor.execute(f"EXPLAIN QUERY PLAN {sql}", params)
elif vendor == "postgresql":
- cursor.execute("EXPLAIN ANALYZE {}".format(sql), params)
+ cursor.execute(f"EXPLAIN ANALYZE {sql}", params)
else:
- cursor.execute("EXPLAIN {}".format(sql), params)
+ cursor.execute(f"EXPLAIN {sql}", params)
headers = [d[0] for d in cursor.description]
result = cursor.fetchall()
diff --git a/debug_toolbar/panels/templates/panel.py b/debug_toolbar/panels/templates/panel.py
index 8ff06e27d..66f6c60fb 100644
--- a/debug_toolbar/panels/templates/panel.py
+++ b/debug_toolbar/panels/templates/panel.py
@@ -42,7 +42,7 @@ def _request_context_bind_template(self, template):
self.context_processors = OrderedDict()
updates = {}
for processor in processors:
- name = "{}.{}".format(processor.__module__, processor.__name__)
+ name = f"{processor.__module__}.{processor.__name__}"
context = processor(self.request)
self.context_processors[name] = context
updates.update(context)
diff --git a/debug_toolbar/panels/templates/views.py b/debug_toolbar/panels/templates/views.py
index 9e74ec6d5..8d6d634d3 100644
--- a/debug_toolbar/panels/templates/views.py
+++ b/debug_toolbar/panels/templates/views.py
@@ -44,7 +44,7 @@ def template_source(request):
except TemplateDoesNotExist:
pass
else:
- source = "Template Does Not Exist: {}".format(template_origin_name)
+ source = f"Template Does Not Exist: {template_origin_name}"
try:
from pygments import highlight
diff --git a/debug_toolbar/utils.py b/debug_toolbar/utils.py
index f8fb68538..c662ab113 100644
--- a/debug_toolbar/utils.py
+++ b/debug_toolbar/utils.py
@@ -27,7 +27,7 @@ def get_module_path(module_name):
try:
module = import_module(module_name)
except ImportError as e:
- raise ImproperlyConfigured("Error importing HIDE_IN_STACKTRACES: {}".format(e))
+ raise ImproperlyConfigured(f"Error importing HIDE_IN_STACKTRACES: {e}")
else:
source_path = inspect.getsourcefile(module)
if source_path.endswith("__init__.py"):
@@ -157,7 +157,7 @@ def get_name_from_obj(obj):
if hasattr(obj, "__module__"):
module = obj.__module__
- name = "{}.{}".format(module, name)
+ name = f"{module}.{name}"
return name
diff --git a/tests/panels/test_sql.py b/tests/panels/test_sql.py
index d7e9759af..19ba63919 100644
--- a/tests/panels/test_sql.py
+++ b/tests/panels/test_sql.py
@@ -133,12 +133,12 @@ def test_param_conversion(self):
# comparisons in MySQL.
if not (django.VERSION >= (4, 1) and connection.vendor == "mysql"):
self.assertEqual(
- tuple([q[1]["params"] for q in self.panel._queries]),
+ tuple(q[1]["params"] for q in self.panel._queries),
('["Foo"]', "[10, 1]", '["2017-12-22 16:07:01"]'),
)
else:
self.assertEqual(
- tuple([q[1]["params"] for q in self.panel._queries]),
+ tuple(q[1]["params"] for q in self.panel._queries),
('["Foo", true, false]', "[10, 1]", '["2017-12-22 16:07:01"]'),
)
@@ -227,7 +227,7 @@ def test_raw_query_param_conversion(self):
self.assertEqual(len(self.panel._queries), 2)
self.assertEqual(
- tuple([q[1]["params"] for q in self.panel._queries]),
+ tuple(q[1]["params"] for q in self.panel._queries),
(
'["Foo", true, false, "2017-12-22 16:07:01"]',
" ".join(
@@ -246,7 +246,7 @@ def test_insert_content(self):
Test that the panel only inserts content after generate_stats and
not the process_request.
"""
- list(User.objects.filter(username="café".encode("utf-8")))
+ list(User.objects.filter(username="café".encode()))
response = self.panel.process_request(self.request)
# ensure the panel does not have content yet.
self.assertNotIn("café", self.panel.content)
@@ -262,7 +262,7 @@ def test_insert_locals(self):
Test that the panel inserts locals() content.
"""
local_var = "" # noqa: F841
- list(User.objects.filter(username="café".encode("utf-8")))
+ list(User.objects.filter(username="café".encode()))
response = self.panel.process_request(self.request)
self.panel.generate_stats(self.request, response)
self.assertIn("local_var", self.panel.content)
@@ -276,7 +276,7 @@ def test_not_insert_locals(self):
"""
Test that the panel does not insert locals() content.
"""
- list(User.objects.filter(username="café".encode("utf-8")))
+ list(User.objects.filter(username="café".encode()))
response = self.panel.process_request(self.request)
self.panel.generate_stats(self.request, response)
self.assertNotIn("djdt-locals", self.panel.content)