From 833ba48d65e4bc07fff4dd313c0bbd00b4d6ca33 Mon Sep 17 00:00:00 2001 From: briquet Date: Mon, 12 Oct 2026 17:32:05 +0200 Subject: [PATCH] =?UTF-8?q?=E2=AC=86=EF=B8=8F(backend)=20upgrade=20pylint?= =?UTF-8?q?=20to=204.1.3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit pylint was pinned below 4.0 because pylint-django used to require it. pylint-django 2.8.0 accepts pylint 4. pylint 3.x kept too-many-lines pragma line numbers across modules: a C0302 disable in one file could make the check report on the wrong line in another and fail depending on how files were spread across jobs. pylint 4.1 resets them per module. cf https://github.com/pylint-dev/pylint/pull/11191 --- CHANGELOG.md | 1 + renovate.json | 6 ------ src/backend/.pylintrc | 4 ---- src/backend/core/fields.py | 2 +- src/backend/core/utils.py | 3 ++- src/backend/pyproject.toml | 2 +- src/backend/uv.lock | 14 +++++++------- 7 files changed, 12 insertions(+), 20 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index be3df557b..16628dad3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -22,6 +22,7 @@ and this project adheres to - ♻️️️(backend) use a dedicated auth scheme for LiveKit token auth - ♻️(all) stop relying on cookies for the lobby flow - ♿️(frontend) show a visible focus outline on menu items #1797 +- ⬆️(backend) upgrade pylint to 4.1.3 ### Fixed diff --git a/renovate.json b/renovate.json index b23cc2e6f..90201c66e 100644 --- a/renovate.json +++ b/renovate.json @@ -24,12 +24,6 @@ "matchManagers": ["pep621"], "matchPackageNames": ["redis"] }, - { - "groupName": "allowed pylint versions", - "matchManagers": ["pep621"], - "matchPackageNames": ["pylint"], - "allowedVersions": "<4.0.0" - }, { "groupName": "allowed django versions", "matchManagers": ["pep621"], diff --git a/src/backend/.pylintrc b/src/backend/.pylintrc index 9807de7de..4e8d35a58 100644 --- a/src/backend/.pylintrc +++ b/src/backend/.pylintrc @@ -31,10 +31,6 @@ persistent=yes # Specify a configuration file. #rcfile= -# When enabled, pylint would attempt to guess common misconfiguration and emit -# user-friendly hints instead of false-positive error messages -suggestion-mode=yes - # Allow loading of arbitrary C extensions. Extensions are imported into the # active Python interpreter and may run arbitrary code. unsafe-load-any-extension=no diff --git a/src/backend/core/fields.py b/src/backend/core/fields.py index 4c165397f..91088f4fa 100644 --- a/src/backend/core/fields.py +++ b/src/backend/core/fields.py @@ -50,4 +50,4 @@ class SecretField(models.CharField): setattr(model_instance, self.attname, hashed_secret) return hashed_secret - return super().pre_save(model_instance, add) + return super().pre_save(model_instance, add) # pylint: disable=no-member diff --git a/src/backend/core/utils.py b/src/backend/core/utils.py index 8e2b2bef1..434328e8e 100644 --- a/src/backend/core/utils.py +++ b/src/backend/core/utils.py @@ -333,7 +333,8 @@ def detect_mimetype(file_buffer: bytes, filename: str | None = None) -> str: str: The detected MIME type Notes: - Originally from https://github.com/suitenumerique/drive/blob/564822d31f071c6dfacd112ef4b7146c73077cd9/src/backend/core/api/utils.py#L166 # pylint:disable=line-too-long + Originally from + https://github.com/suitenumerique/drive/blob/564822d31f071c6dfacd112ef4b7146c73077cd9/src/backend/core/api/utils.py#L166 """ # Initialize magic detector mime_detector = magic.Magic(mime=True) diff --git a/src/backend/pyproject.toml b/src/backend/pyproject.toml index 37534e4e7..478c85e43 100644 --- a/src/backend/pyproject.toml +++ b/src/backend/pyproject.toml @@ -82,7 +82,7 @@ dev = [ "ipython==9.16.1", "pyfakefs==6.2.0", "pylint-django==2.8.0", - "pylint<4.0.0", + "pylint==4.1.3", "pytest-cov==7.1.0", "pytest-django==4.14.0", "pytest==9.1.1", diff --git a/src/backend/uv.lock b/src/backend/uv.lock index 7bf20717f..0dcde88a3 100644 --- a/src/backend/uv.lock +++ b/src/backend/uv.lock @@ -136,11 +136,11 @@ wheels = [ [[package]] name = "astroid" -version = "3.3.11" +version = "4.3.4" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/18/74/dfb75f9ccd592bbedb175d4a32fc643cf569d7c218508bfbd6ea7ef9c091/astroid-3.3.11.tar.gz", hash = "sha256:1e5a5011af2920c7c67a53f65d536d65bfa7116feeaf2354d8b94f29573bb0ce", size = 400439, upload-time = "2025-07-13T18:04:23.177Z" } +sdist = { url = "https://files.pythonhosted.org/packages/2d/87/5732fa68bf100a095cfcbd108f919220d995db99e1a7502b8119a869fd62/astroid-4.3.4.tar.gz", hash = "sha256:d515a105722b72098bbe82d430d65e635f742b6cbac3bdfaf8b7c188b87c5e39", size = 444627, upload-time = "2026-10-08T09:36:44.122Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/af/0f/3b8fdc946b4d9cc8cc1e8af42c4e409468c84441b933d037e101b3d72d86/astroid-3.3.11-py3-none-any.whl", hash = "sha256:54c760ae8322ece1abd213057c4b5bba7c49818853fc901ef09719a60dbf9dec", size = 275612, upload-time = "2025-07-13T18:04:21.07Z" }, + { url = "https://files.pythonhosted.org/packages/16/d4/f23c0ac6e6de33ba5686cb21c672c95e0c2d3d4c9351f16d3b5fed818652/astroid-4.3.4-py3-none-any.whl", hash = "sha256:2bcd0d02648a443a4b818c952c3550091989daefac3c12d3b83b2289482e0818", size = 288310, upload-time = "2026-10-08T09:36:42.284Z" }, ] [[package]] @@ -1416,7 +1416,7 @@ dev = [ { name = "ipdb", specifier = "==0.13.13" }, { name = "ipython", specifier = "==9.16.1" }, { name = "pyfakefs", specifier = "==6.2.0" }, - { name = "pylint", specifier = "<4.0.0" }, + { name = "pylint", specifier = "==4.1.3" }, { name = "pylint-django", specifier = "==2.8.0" }, { name = "pytest", specifier = "==9.1.1" }, { name = "pytest-cov", specifier = "==7.1.0" }, @@ -2032,7 +2032,7 @@ wheels = [ [[package]] name = "pylint" -version = "3.3.9" +version = "4.1.3" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "astroid" }, @@ -2043,9 +2043,9 @@ dependencies = [ { name = "platformdirs" }, { name = "tomlkit" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/04/9d/81c84a312d1fa8133b0db0c76148542a98349298a01747ab122f9314b04e/pylint-3.3.9.tar.gz", hash = "sha256:d312737d7b25ccf6b01cc4ac629b5dcd14a0fcf3ec392735ac70f137a9d5f83a", size = 1525946, upload-time = "2025-10-05T18:41:43.786Z" } +sdist = { url = "https://files.pythonhosted.org/packages/38/c9/0bde4152a05a7686b431ce216fe3f3698b0c0d94c20bfa256dd935b608f6/pylint-4.1.3.tar.gz", hash = "sha256:9928603068edfa0d1a3c167f174b099d4b97c3db75d32d0fcdd029770b4713a9", size = 1756180, upload-time = "2026-10-11T07:49:10.69Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/1a/a7/69460c4a6af7575449e615144aa2205b89408dc2969b87bc3df2f262ad0b/pylint-3.3.9-py3-none-any.whl", hash = "sha256:01f9b0462c7730f94786c283f3e52a1fbdf0494bbe0971a78d7277ef46a751e7", size = 523465, upload-time = "2025-10-05T18:41:41.766Z" }, + { url = "https://files.pythonhosted.org/packages/3f/ba/62b18e2e157d05f976bd490b349b55d8850c2a454a5c313c91af9d2e0baf/pylint-4.1.3-py3-none-any.whl", hash = "sha256:a85357cae24f33ad8d86c8f3daaa92c600ae4012b54a57299cee76000e9364cf", size = 588959, upload-time = "2026-10-11T07:49:08.272Z" }, ] [[package]]