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)