Skip to content

Commit e80c05d

Browse files
authored
Raise the minimum Django version to 4.2 (#1880)
1 parent 7d77a34 commit e80c05d

File tree

6 files changed

+35
-28
lines changed

6 files changed

+35
-28
lines changed

.pre-commit-config.yaml

+1-1
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ repos:
1717
rev: 1.16.0
1818
hooks:
1919
- id: django-upgrade
20-
args: [--target-version, "3.2"]
20+
args: [--target-version, "4.2"]
2121
- repo: https://github.com/pre-commit/pygrep-hooks
2222
rev: v1.10.0
2323
hooks:

README.rst

+2-2
Original file line numberDiff line numberDiff line change
@@ -44,8 +44,8 @@ Here's a screenshot of the toolbar in action:
4444
In addition to the built-in panels, a number of third-party panels are
4545
contributed by the community.
4646

47-
The current stable version of the Debug Toolbar is 4.1.0. It works on
48-
Django ≥ 3.2.4.
47+
The current stable version of the Debug Toolbar is 4.3.0. It works on
48+
Django ≥ 4.2.0.
4949

5050
The Debug Toolbar does not currently support `Django's asynchronous views
5151
<https://docs.djangoproject.com/en/dev/topics/async/>`_.

docs/changes.rst

+1
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ Change log
44
Pending
55
-------
66

7+
* Raised the minimum Django version to 4.2.
78
* Automatically support Docker rather than having the developer write a
89
workaround for ``INTERNAL_IPS``.
910

pyproject.toml

+1-3
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,6 @@ classifiers = [
1717
"Development Status :: 5 - Production/Stable",
1818
"Environment :: Web Environment",
1919
"Framework :: Django",
20-
"Framework :: Django :: 3.2",
21-
"Framework :: Django :: 4.1",
2220
"Framework :: Django :: 4.2",
2321
"Framework :: Django :: 5.0",
2422
"Intended Audience :: Developers",
@@ -37,7 +35,7 @@ dynamic = [
3735
"version",
3836
]
3937
dependencies = [
40-
"Django>=3.2.4",
38+
"Django>=4.2.9",
4139
"sqlparse>=0.2",
4240
]
4341
[project.urls]

tests/test_integration.py

+24-12
Original file line numberDiff line numberDiff line change
@@ -266,13 +266,15 @@ def test_render_panel_checks_show_toolbar(self):
266266

267267
response = self.client.get(url, data)
268268
self.assertEqual(response.status_code, 200)
269-
response = self.client.get(url, data, HTTP_X_REQUESTED_WITH="XMLHttpRequest")
269+
response = self.client.get(
270+
url, data, headers={"x-requested-with": "XMLHttpRequest"}
271+
)
270272
self.assertEqual(response.status_code, 200)
271273
with self.settings(INTERNAL_IPS=[]):
272274
response = self.client.get(url, data)
273275
self.assertEqual(response.status_code, 404)
274276
response = self.client.get(
275-
url, data, HTTP_X_REQUESTED_WITH="XMLHttpRequest"
277+
url, data, headers={"x-requested-with": "XMLHttpRequest"}
276278
)
277279
self.assertEqual(response.status_code, 404)
278280

@@ -302,13 +304,15 @@ def test_template_source_checks_show_toolbar(self):
302304

303305
response = self.client.get(url, data)
304306
self.assertEqual(response.status_code, 200)
305-
response = self.client.get(url, data, HTTP_X_REQUESTED_WITH="XMLHttpRequest")
307+
response = self.client.get(
308+
url, data, headers={"x-requested-with": "XMLHttpRequest"}
309+
)
306310
self.assertEqual(response.status_code, 200)
307311
with self.settings(INTERNAL_IPS=[]):
308312
response = self.client.get(url, data)
309313
self.assertEqual(response.status_code, 404)
310314
response = self.client.get(
311-
url, data, HTTP_X_REQUESTED_WITH="XMLHttpRequest"
315+
url, data, headers={"x-requested-with": "XMLHttpRequest"}
312316
)
313317
self.assertEqual(response.status_code, 404)
314318

@@ -348,13 +352,15 @@ def test_sql_select_checks_show_toolbar(self):
348352

349353
response = self.client.post(url, data)
350354
self.assertEqual(response.status_code, 200)
351-
response = self.client.post(url, data, HTTP_X_REQUESTED_WITH="XMLHttpRequest")
355+
response = self.client.post(
356+
url, data, headers={"x-requested-with": "XMLHttpRequest"}
357+
)
352358
self.assertEqual(response.status_code, 200)
353359
with self.settings(INTERNAL_IPS=[]):
354360
response = self.client.post(url, data)
355361
self.assertEqual(response.status_code, 404)
356362
response = self.client.post(
357-
url, data, HTTP_X_REQUESTED_WITH="XMLHttpRequest"
363+
url, data, headers={"x-requested-with": "XMLHttpRequest"}
358364
)
359365
self.assertEqual(response.status_code, 404)
360366

@@ -374,13 +380,15 @@ def test_sql_explain_checks_show_toolbar(self):
374380

375381
response = self.client.post(url, data)
376382
self.assertEqual(response.status_code, 200)
377-
response = self.client.post(url, data, HTTP_X_REQUESTED_WITH="XMLHttpRequest")
383+
response = self.client.post(
384+
url, data, headers={"x-requested-with": "XMLHttpRequest"}
385+
)
378386
self.assertEqual(response.status_code, 200)
379387
with self.settings(INTERNAL_IPS=[]):
380388
response = self.client.post(url, data)
381389
self.assertEqual(response.status_code, 404)
382390
response = self.client.post(
383-
url, data, HTTP_X_REQUESTED_WITH="XMLHttpRequest"
391+
url, data, headers={"x-requested-with": "XMLHttpRequest"}
384392
)
385393
self.assertEqual(response.status_code, 404)
386394

@@ -406,13 +414,15 @@ def test_sql_explain_postgres_json_field(self):
406414
}
407415
response = self.client.post(url, data)
408416
self.assertEqual(response.status_code, 200)
409-
response = self.client.post(url, data, HTTP_X_REQUESTED_WITH="XMLHttpRequest")
417+
response = self.client.post(
418+
url, data, headers={"x-requested-with": "XMLHttpRequest"}
419+
)
410420
self.assertEqual(response.status_code, 200)
411421
with self.settings(INTERNAL_IPS=[]):
412422
response = self.client.post(url, data)
413423
self.assertEqual(response.status_code, 404)
414424
response = self.client.post(
415-
url, data, HTTP_X_REQUESTED_WITH="XMLHttpRequest"
425+
url, data, headers={"x-requested-with": "XMLHttpRequest"}
416426
)
417427
self.assertEqual(response.status_code, 404)
418428

@@ -432,13 +442,15 @@ def test_sql_profile_checks_show_toolbar(self):
432442

433443
response = self.client.post(url, data)
434444
self.assertEqual(response.status_code, 200)
435-
response = self.client.post(url, data, HTTP_X_REQUESTED_WITH="XMLHttpRequest")
445+
response = self.client.post(
446+
url, data, headers={"x-requested-with": "XMLHttpRequest"}
447+
)
436448
self.assertEqual(response.status_code, 200)
437449
with self.settings(INTERNAL_IPS=[]):
438450
response = self.client.post(url, data)
439451
self.assertEqual(response.status_code, 404)
440452
response = self.client.post(
441-
url, data, HTTP_X_REQUESTED_WITH="XMLHttpRequest"
453+
url, data, headers={"x-requested-with": "XMLHttpRequest"}
442454
)
443455
self.assertEqual(response.status_code, 404)
444456

tox.ini

+6-10
Original file line numberDiff line numberDiff line change
@@ -3,16 +3,13 @@ isolated_build = true
33
envlist =
44
docs
55
packaging
6-
py{38,39,310}-dj32-{sqlite,postgresql,postgis,mysql}
7-
py{310,311}-dj41-{sqlite,postgresql,postgis,mysql}
6+
py{38,39,310,311,312}-dj{42}-{sqlite,postgresql,postgis,mysql}
87
py{310,311,312}-dj{42,50,main}-{sqlite,postgresql,psycopg3,postgis,mysql}
98

109
[testenv]
1110
deps =
12-
dj32: django~=3.2.9
13-
dj41: django~=4.1.3
1411
dj42: django~=4.2.1
15-
dj50: django~=5.0a1
12+
dj50: django~=5.0.2
1613
djmain: https://github.com/django/django/archive/main.tar.gz
1714
postgresql: psycopg2-binary
1815
psycopg3: psycopg[binary]
@@ -37,7 +34,6 @@ passenv=
3734
setenv =
3835
PYTHONPATH = {toxinidir}
3936
PYTHONWARNINGS = d
40-
py39-dj32-postgresql: DJANGO_SELENIUM_TESTS = true
4137
py311-dj42-postgresql: DJANGO_SELENIUM_TESTS = true
4238
DB_NAME = {env:DB_NAME:debug_toolbar}
4339
DB_USER = {env:DB_USER:debug_toolbar}
@@ -49,28 +45,28 @@ pip_pre = True
4945
commands = python -b -W always -m coverage run -m django test -v2 {posargs:tests}
5046

5147

52-
[testenv:py{38,39,310,311,312}-dj{32,41,42,50,main}-{postgresql,psycopg3}]
48+
[testenv:py{38,39,310,311,312}-dj{42,50,main}-{postgresql,psycopg3}]
5349
setenv =
5450
{[testenv]setenv}
5551
DB_BACKEND = postgresql
5652
DB_PORT = {env:DB_PORT:5432}
5753

5854

59-
[testenv:py{38,39,310,311,312}-dj{32,41,42,50,main}-postgis]
55+
[testenv:py{38,39,310,311,312}-dj{42,50,main}-postgis]
6056
setenv =
6157
{[testenv]setenv}
6258
DB_BACKEND = postgis
6359
DB_PORT = {env:DB_PORT:5432}
6460

6561

66-
[testenv:py{38,39,310,311,312}-dj{32,41,42,50,main}-mysql]
62+
[testenv:py{38,39,310,311,312}-dj{42,50,main}-mysql]
6763
setenv =
6864
{[testenv]setenv}
6965
DB_BACKEND = mysql
7066
DB_PORT = {env:DB_PORT:3306}
7167

7268

73-
[testenv:py{38,39,310,311,312}-dj{32,41,42,50,main}-sqlite]
69+
[testenv:py{38,39,310,311,312}-dj{42,50,main}-sqlite]
7470
setenv =
7571
{[testenv]setenv}
7672
DB_BACKEND = sqlite3

0 commit comments

Comments
 (0)