Skip to content

Commit 25cfa6b

Browse files
camdclaude
andauthored
Upgrade Django 5.2.12 to 6.0.3 (#9322)
Upgrades Django and related packages for Django 6.0 compatibility: - Django 5.2.12 → 6.0.3 - djangorestframework 3.16.1 → 3.17.0 (Django 6.0 support) - django-filter 25.1 → 25.2 (Django 6.0 support) - django-debug-toolbar 5.2.0 → 6.2.0 (Django 6.0 support) - dockerflow 2024.4.2 → 2026.3.4 (Django 6.0 support) - asgiref 3.8.1 → 3.11.1 (required by Django 6.0) - typing-extensions 4.12.0 → 4.15.0 (align dev/common) Code changes: - Use MozlogFormatter instead of deprecated JsonLogFormatter - Add django.contrib.postgres to INSTALLED_APPS (required by Django 6.0 for SearchVectorField) - Silence debug_toolbar.E001 check (triggered when tests toggle DEBUG) - Align dev.txt package versions with common.txt to prevent conflicts Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
1 parent c661d06 commit 25cfa6b

5 files changed

Lines changed: 61 additions & 57 deletions

File tree

requirements/common.in

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
# Packages that are shared between deployment and dev environments.
22
gunicorn==26.0.0
33
whitenoise[brotli]==6.11.0 # Used by Whitenoise to provide Brotli-compressed versions of static files.
4-
Django==5.2.12
4+
Django==6.0.3
55
celery==5.6.2 # celery needed for data ingestion
66
simplejson==3.20.2 # import simplejson
77
newrelic==11.2.0
@@ -10,7 +10,7 @@ certifi==2026.1.4
1010
psycopg2-binary==2.9.12
1111

1212
jsonschema==4.26.0 # import jsonschema
13-
djangorestframework==3.16.1 # Imported as rest_framework
13+
djangorestframework==3.17.0 # Imported as rest_framework
1414
django-cors-headers==4.9.0 # Listed as 3rd party app on settings.py
1515
drf-spectacular==0.29.0 # Used for REST API Schema Generation
1616
mozlog==8.0.0
@@ -38,7 +38,7 @@ django-cache-memoize==0.2.1 # Imported as cache_memoize
3838
mozci[cache]==2.4.3
3939

4040
# Dockerflow/CloudOps APIs
41-
dockerflow==2024.4.2
41+
dockerflow==2026.3.4
4242

4343
# Measuring noise of perf data
4444
moz-measure-noise==2.70.0

requirements/common.txt

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -112,9 +112,9 @@ arrow==1.3.0 \
112112
--hash=sha256:c728b120ebc00eb84e01882a6f5e7927a53960aa990ce7dd2b10f39005a67f80 \
113113
--hash=sha256:d4540617648cb5f895730f1ad8c82a65f2dad0166f57b75f3ca54759c4d67a85
114114
# via mozci
115-
asgiref==3.8.1 \
116-
--hash=sha256:3e1e3ecc849832fe52ccf2cb6686b7a55f82bb1d6aee72a58826471390335e47 \
117-
--hash=sha256:c343bd80a0bec947a9860adb4c432ffa7db769836c64238fc34bdc3fec84d590
115+
asgiref==3.11.1 \
116+
--hash=sha256:e8667a091e69529631969fd45dc268fa79b99c92c5fcdda727757e52146ec133 \
117+
--hash=sha256:5f184dc43b7e763efe848065441eac62229c9f7b0475f41f80e207a114eda4ce
118118
# via
119119
# django
120120
# django-cors-headers
@@ -605,9 +605,9 @@ distlib==0.3.9 \
605605
--hash=sha256:47f8c22fd27c27e25a65601af709b38e4f0a45ea4fc2e710f65755fa8caaaf87 \
606606
--hash=sha256:a60f20dea646b8a33f3e7772f74dc0b2d0772d2837ee1342a00645c81edf9403
607607
# via virtualenv
608-
django==5.2.12 \
609-
--hash=sha256:4853482f395c3a151937f6991272540fcbf531464f254a347bf7c89f53c8cff7 \
610-
--hash=sha256:6b809af7165c73eff5ce1c87fdae75d4da6520d6667f86401ecf55b681eb1eeb
608+
django==6.0.3 \
609+
--hash=sha256:2e5974441491ddb34c3f13d5e7a9f97b07ba03bf70234c0a9c68b79bbb235bc3 \
610+
--hash=sha256:90be765ee756af8a6cbd6693e56452404b5ad15294f4d5e40c0a55a0f4870fe1
611611
# via
612612
# -r requirements/common.in
613613
# django-cors-headers
@@ -635,15 +635,15 @@ django-redis==6.0.0 \
635635
--hash=sha256:20bf0063a8abee567eb5f77f375143c32810c8700c0674ced34737f8de4e36c0 \
636636
--hash=sha256:2d9cb12a20424a4c4dde082c6122f486628bae2d9c2bee4c0126a4de7fda00dd
637637
# via -r requirements/common.in
638-
djangorestframework==3.16.1 \
639-
--hash=sha256:166809528b1aced0a17dc66c24492af18049f2c9420dbd0be29422029cfc3ff7 \
640-
--hash=sha256:33a59f47fb9c85ede792cbf88bde71893bcda0667bc573f784649521f1102cec
638+
djangorestframework==3.17.0 \
639+
--hash=sha256:d84fe85f30b7ac6e8c0076ce9ff635e4eaedca5912f8d7d2926ce448c08533ba \
640+
--hash=sha256:456fd992a33f9e64c9d0f47e85d9787db0efb44f894c1e513315b5e74765bd4c
641641
# via
642642
# -r requirements/common.in
643643
# drf-spectacular
644-
dockerflow==2024.4.2 \
645-
--hash=sha256:b9f92455449ba46555f57db34cccefc4c49d3533c67793624ab7e80a1625caa7 \
646-
--hash=sha256:f4216a3a809093860d7b2db84ba0a25c894cb8eb98b74f4f6a04badbc4f6b0a4
644+
dockerflow==2026.3.4 \
645+
--hash=sha256:38fe0ad30a4aedf68e589919695d502fc6f584a761b56a91f56e80cbadfbf61a \
646+
--hash=sha256:6cc7fcab2a078d06aeca8b02e22fd7f6766dca322fb30aed6910684dbc08690c
647647
# via -r requirements/common.in
648648
drf-spectacular==0.29.0 \
649649
--hash=sha256:0a069339ea390ce7f14a75e8b5af4a0860a46e833fd4af027411a3e94fc1a0cc \
@@ -2649,9 +2649,9 @@ types-python-dateutil==2.9.0.20240316 \
26492649
--hash=sha256:5d2f2e240b86905e40944dd787db6da9263f0deabef1076ddaed797351ec0202 \
26502650
--hash=sha256:6b8cb66d960771ce5ff974e9dd45e38facb81718cc1e208b10b1baccbfdbee3b
26512651
# via arrow
2652-
typing-extensions==4.12.0 \
2653-
--hash=sha256:8cbcdc8606ebcb0d95453ad7dc5065e6237b6aa230a31e81d0f440c30fed5fd8 \
2654-
--hash=sha256:b349c66bea9016ac22978d800cfff206d5f9816951f12a7d0ec5578b0a819594
2652+
typing-extensions==4.15.0 \
2653+
--hash=sha256:0cea48d173cc12fa28ecabc3b837ea3cf6f38c6d1136f85cbaaf598984861466 \
2654+
--hash=sha256:f0fa19c6845758ab08074a0cfa8b7aecb71c999ca73d62883bc25cc018c4e548
26552655
# via
26562656
# aiosignal
26572657
# pygithub

requirements/dev.in

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# Dependencies needed only for development/testing.
22
pytest-cov==7.0.0
3-
django-debug-toolbar==5.2.0
3+
django-debug-toolbar==6.2.0
44
mock==5.2.0
55
responses==0.25.8
66
django-extensions==4.1

requirements/dev.txt

Lines changed: 36 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,9 @@
44
#
55
# pip-compile --generate-hashes --output-file=requirements/dev.txt requirements/dev.in
66
#
7-
asgiref==3.8.1 \
8-
--hash=sha256:3e1e3ecc849832fe52ccf2cb6686b7a55f82bb1d6aee72a58826471390335e47 \
9-
--hash=sha256:c343bd80a0bec947a9860adb4c432ffa7db769836c64238fc34bdc3fec84d590
7+
asgiref==3.11.1 \
8+
--hash=sha256:e8667a091e69529631969fd45dc268fa79b99c92c5fcdda727757e52146ec133 \
9+
--hash=sha256:5f184dc43b7e763efe848065441eac62229c9f7b0475f41f80e207a114eda4ce
1010
# via django
1111
attrs==23.2.0 \
1212
--hash=sha256:935dc3b529c262f6cf76e50877d35a4bd3c1de194fd41f47a2b7ae8f19971f30 \
@@ -246,19 +246,19 @@ coverage[toml]==7.10.6 \
246246
# via
247247
# pytest-cov
248248
# pytest-testmon
249-
distlib==0.3.8 \
250-
--hash=sha256:034db59a0b96f8ca18035f36290806a9a6e6bd9d1ff91e45a7f172eb17e51784 \
251-
--hash=sha256:1530ea13e350031b6312d8580ddb6b27a104275a31106523b8f123787f494f64
249+
distlib==0.3.9 \
250+
--hash=sha256:47f8c22fd27c27e25a65601af709b38e4f0a45ea4fc2e710f65755fa8caaaf87 \
251+
--hash=sha256:a60f20dea646b8a33f3e7772f74dc0b2d0772d2837ee1342a00645c81edf9403
252252
# via virtualenv
253-
django==5.1.6 \
254-
--hash=sha256:1e39eafdd1b185e761d9fab7a9f0b9fa00af1b37b25ad980a8aa0dac13535690 \
255-
--hash=sha256:8d203400bc2952fbfb287c2bbda630297d654920c72a73cc82a9ad7926feaad5
253+
django==6.0.3 \
254+
--hash=sha256:2e5974441491ddb34c3f13d5e7a9f97b07ba03bf70234c0a9c68b79bbb235bc3 \
255+
--hash=sha256:90be765ee756af8a6cbd6693e56452404b5ad15294f4d5e40c0a55a0f4870fe1
256256
# via
257257
# django-debug-toolbar
258258
# django-extensions
259-
django-debug-toolbar==5.2.0 \
260-
--hash=sha256:15627f4c2836a9099d795e271e38e8cf5204ccd79d5dbcd748f8a6c284dcd195 \
261-
--hash=sha256:9e7f0145e1a1b7d78fcc3b53798686170a5b472d9cf085d88121ff823e900821
259+
django-debug-toolbar==6.2.0 \
260+
--hash=sha256:1575461954e6befa720e999dec13fe4f1cc8baf40b6c3ac2aec5f340c0f9c85f \
261+
--hash=sha256:dc1c174d8fb0ea01435e02d9ceef735cf62daf37c1a6a5692d33b4127327679b
262262
# via -r requirements/dev.in
263263
django-extensions==4.1 \
264264
--hash=sha256:0699a7af28f2523bf8db309a80278519362cd4b6e1fd0a8cd4bf063e1e023336 \
@@ -267,9 +267,9 @@ django-extensions==4.1 \
267267
docopt==0.6.2 \
268268
--hash=sha256:49b3a825280bd66b3aa83585ef59c4a8c82f2c8a522dbe754a8bc8d08c85c491
269269
# via pytest-watch
270-
filelock==3.13.1 \
271-
--hash=sha256:521f5f56c50f8426f5e03ad3b281b490a87ef15bc6c526f168290f0c7148d44e \
272-
--hash=sha256:57dbda9b35157b05fb3e58ee91448612eb674172fab98ee235ccb0b5bee19a1c
270+
filelock==3.17.0 \
271+
--hash=sha256:533dc2f7ba78dc2f0f531fc6c4940addf7b70a481e269a5a3b93be94ffbe8338 \
272+
--hash=sha256:ee4e77401ef576ebb38cd7f13b9b28893194acc20a8e68e18730ba9c0e54660e
273273
# via virtualenv
274274
freezegun==1.5.5 \
275275
--hash=sha256:ac7742a6cc6c25a2c35e9292dfd554b897b517d2dec26891a2e8debf205cb94a \
@@ -279,13 +279,13 @@ h11==0.14.0 \
279279
--hash=sha256:8f19fbbe99e72420ff35c00b27a34cb9937e902a8b810e2c88300c6f0a3b699d \
280280
--hash=sha256:e3fe4ac4b851c468cc8363d500db52c2ead036020723024a109d37346efaa761
281281
# via wsproto
282-
identify==2.5.33 \
283-
--hash=sha256:161558f9fe4559e1557e1bff323e8631f6a0e4837f7497767c1782832f16b62d \
284-
--hash=sha256:d40ce5fcd762817627670da8a7d8d8e65f24342d14539c59488dc603bf662e34
282+
identify==2.6.7 \
283+
--hash=sha256:155931cb617a401807b09ecec6635d6c692d180090a1cedca8ef7d58ba5b6aa0 \
284+
--hash=sha256:3fa266b42eba321ee0b2bb0936a6a6b9e36a1351cbb69055b3082f4193035684
285285
# via pre-commit
286-
idna==3.6 \
287-
--hash=sha256:9ecdbbd083b06798ae1e86adcbfe8ab1479cf864e4ee30fe4e46a003d12491ca \
288-
--hash=sha256:c05567e9c24a6b9faaa835c4821bad0590fbb9d5779e7caa6e1cc4978e7eb24f
286+
idna==3.7 \
287+
--hash=sha256:028ff3aadf0609c1fd278d8ea3089299412a7a8b9bd005dd08b9f8285bcb5cfc \
288+
--hash=sha256:82fee1fc78add43492d3a1898bfa6d8a904cc97d8427f683ed8e798d07761aa0
289289
# via
290290
# requests
291291
# trio
@@ -301,17 +301,17 @@ mypy-extensions==1.0.0 \
301301
--hash=sha256:4392f6c0eb8a5668a69e23d168ffa70f0be9ccfd32b5cc2d26a34ae5b844552d \
302302
--hash=sha256:75dbf8955dc00442a438fc4d0666508a9a97b6bd41aa2f0ffe9d2f2725af0782
303303
# via black
304-
nodeenv==1.8.0 \
305-
--hash=sha256:d51e0c37e64fbf47d017feac3145cdbb58836d7eee8c6f6d3b6880c5456227d2 \
306-
--hash=sha256:df865724bb3c3adc86b3876fa209771517b0cfe596beff01a92700e0e8be4cec
304+
nodeenv==1.9.1 \
305+
--hash=sha256:6ec12890a2dab7946721edbfbcd91f3319c6ccc9aec47be7c7e6b7011ee6645f \
306+
--hash=sha256:ba11c9782d29c27c70ffbdda2d7415098754709be8a7056d79a737cd901155c9
307307
# via pre-commit
308308
outcome==1.3.0.post0 \
309309
--hash=sha256:9dcf02e65f2971b80047b377468e72a268e15c0af3cf1238e6ff14f7f91143b8 \
310310
--hash=sha256:e771c5ce06d1415e356078d3bdd68523f284b4ce5419828922b6871e65eda82b
311311
# via trio
312-
packaging==23.2 \
313-
--hash=sha256:048fb0e9405036518eaaf48a55953c750c11e1a1b68e0dd1a9d62ed0c092cfc5 \
314-
--hash=sha256:8c491190033a9af7e1d931d0b5dacc2ef47509b34dd0de67ed209b5203fc88c7
312+
packaging==24.0 \
313+
--hash=sha256:2ddfb553fdf02fb784c234c7ba6ccc288296ceabec964ad2eae3777778130bc5 \
314+
--hash=sha256:eb82c5e3e56209074766e6885bb04b8c38a0c015d0a30036ebe7ece34c9989e9
315315
# via
316316
# black
317317
# build
@@ -324,9 +324,9 @@ pip-tools==7.5.3 \
324324
--hash=sha256:3aac0c473240ae90db7213c033401f345b05197293ccbdd2704e52e7a783785e \
325325
--hash=sha256:8fa364779ebc010cbfe17cb9de404457ac733e100840423f28f6955de7742d41
326326
# via -r requirements/dev.in
327-
platformdirs==4.2.0 \
328-
--hash=sha256:0614df2a2f37e1a662acbd8e2b25b92ccf8632929bc6d43467e17fe89c75e068 \
329-
--hash=sha256:ef0cc731df711022c174543cb70a9b5bd22e5a9337c8624ef2c2ceb8ddad8768
327+
platformdirs==4.3.6 \
328+
--hash=sha256:357fb2acbc885b0419afd3ce3ed34564c13c9b95c89360cd9563f73aa5e2b907 \
329+
--hash=sha256:73e575e1408ab8103900836b97580d5307456908a03e92031bab39e4554cc3fb
330330
# via
331331
# black
332332
# virtualenv
@@ -522,9 +522,9 @@ sortedcontainers==2.4.0 \
522522
--hash=sha256:25caa5a06cc30b6b83d11423433f65d1f9d76c4c6a0c90e3379eaa43b9bfdb88 \
523523
--hash=sha256:a163dcaede0f1c021485e957a39245190e74249897e2ae4b2aa38595db237ee0
524524
# via trio
525-
sqlparse==0.4.4 \
526-
--hash=sha256:5430a4fe2ac7d0f93e66f1efc6e1338a41884b7ddf2a350cedd20ccc4d9d28f3 \
527-
--hash=sha256:d446183e84b8349fa3061f0fe7f06ca94ba65b426946ffebe6e3e8295332420c
525+
sqlparse==0.5.0 \
526+
--hash=sha256:714d0a4932c059d16189f58ef5411ec2287a4360f17cdd0edd2d09d4c5087c93 \
527+
--hash=sha256:c204494cd97479d0e39f28c93d46c0b2d5959c7b9ab904762ea6c7af211c8663
528528
# via
529529
# django
530530
# django-debug-toolbar
@@ -554,9 +554,9 @@ vcrpy==8.1.1 \
554554
--hash=sha256:2d16f31ad56493efb6165182dd99767207031b0da3f68b18f975545ede8ac4b9 \
555555
--hash=sha256:58e3053e33b423f3594031cb758c3f4d1df931307f1e67928e30cf352df7709f
556556
# via -r requirements/dev.in
557-
virtualenv==20.25.0 \
558-
--hash=sha256:4238949c5ffe6876362d9c0180fc6c3a824a7b12b80604eeb8085f2ed7460de3 \
559-
--hash=sha256:bf51c0d9c7dd63ea8e44086fa1e4fb1093a31e963b86959257378aef020e1f1b
557+
virtualenv==20.29.2 \
558+
--hash=sha256:fdaabebf6d03b5ba83ae0a02cfe96f48a716f4fae556461d180825866f75b728 \
559+
--hash=sha256:febddfc3d1ea571bdb1dc0f98d7b45d24def7428214d4fb73cc486c9568cce6a
560560
# via pre-commit
561561
watchdog==3.0.0 \
562562
--hash=sha256:0e06ab8858a76e1219e68c7573dfeba9dd1c0219476c5a44d5333b01d7e1743a \

treeherder/config/settings.py

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@
6363
INSTALLED_APPS = [
6464
"django.contrib.auth",
6565
"django.contrib.contenttypes",
66-
"django.contrib.postgres.search",
66+
"django.contrib.postgres",
6767
# Disable Django's own staticfiles handling in favour of WhiteNoise, for
6868
# greater consistency between gunicorn and `./manage.py runserver`.
6969
"whitenoise.runserver_nostatic",
@@ -217,7 +217,7 @@
217217
"standard": {
218218
"format": "[%(asctime)s] %(levelname)s [%(name)s:%(lineno)s] %(message)s",
219219
},
220-
"json": {"()": "dockerflow.logging.JsonLogFormatter", "logger_name": "treeherder"},
220+
"json": {"()": "dockerflow.logging.MozlogFormatter", "logger_name": "treeherder"},
221221
},
222222
"handlers": {
223223
"console": {"class": "logging.StreamHandler", "formatter": "standard"},
@@ -275,6 +275,10 @@
275275
# made using Angular's `httpProvider` require access to the cookie.
276276
"security.W017",
277277
"security.W019",
278+
# django-debug-toolbar 6.x raises E001 when DEBUG=False but toolbar is in
279+
# INSTALLED_APPS. The toolbar is only added conditionally (when DEBUG=True at
280+
# startup), but tests may toggle DEBUG at runtime, triggering this check.
281+
"debug_toolbar.E001",
278282
]
279283

280284
# User Agents

0 commit comments

Comments
 (0)