Skip to content

Commit 90d9630

Browse files
[deleted messages] Refactor the constant to be able to give a reason
1 parent bdd470d commit 90d9630

File tree

4 files changed

+133
-120
lines changed

4 files changed

+133
-120
lines changed

pylint/constants.py

Lines changed: 0 additions & 113 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@
99
import platform
1010
import sys
1111
from datetime import datetime
12-
from typing import NamedTuple
1312

1413
import astroid
1514
import platformdirs
@@ -82,118 +81,6 @@ class WarningScope:
8281
"typevar": "type variable",
8382
}
8483

85-
86-
class DeletedMessage(NamedTuple):
87-
msgid: str
88-
symbol: str
89-
old_names: list[tuple[str, str]] = []
90-
91-
92-
DELETED_MSGID_PREFIXES: list[int] = []
93-
94-
DELETED_MESSAGES = [
95-
# Everything until the next comment is from the
96-
# PY3K+ checker, see https://github.com/PyCQA/pylint/pull/4942
97-
DeletedMessage("W1601", "apply-builtin"),
98-
DeletedMessage("E1601", "print-statement"),
99-
DeletedMessage("E1602", "parameter-unpacking"),
100-
DeletedMessage(
101-
"E1603", "unpacking-in-except", [("W0712", "old-unpacking-in-except")]
102-
),
103-
DeletedMessage("E1604", "old-raise-syntax", [("W0121", "old-old-raise-syntax")]),
104-
DeletedMessage("E1605", "backtick", [("W0333", "old-backtick")]),
105-
DeletedMessage("E1609", "import-star-module-level"),
106-
DeletedMessage("W1601", "apply-builtin"),
107-
DeletedMessage("W1602", "basestring-builtin"),
108-
DeletedMessage("W1603", "buffer-builtin"),
109-
DeletedMessage("W1604", "cmp-builtin"),
110-
DeletedMessage("W1605", "coerce-builtin"),
111-
DeletedMessage("W1606", "execfile-builtin"),
112-
DeletedMessage("W1607", "file-builtin"),
113-
DeletedMessage("W1608", "long-builtin"),
114-
DeletedMessage("W1609", "raw_input-builtin"),
115-
DeletedMessage("W1610", "reduce-builtin"),
116-
DeletedMessage("W1611", "standarderror-builtin"),
117-
DeletedMessage("W1612", "unicode-builtin"),
118-
DeletedMessage("W1613", "xrange-builtin"),
119-
DeletedMessage("W1614", "coerce-method"),
120-
DeletedMessage("W1615", "delslice-method"),
121-
DeletedMessage("W1616", "getslice-method"),
122-
DeletedMessage("W1617", "setslice-method"),
123-
DeletedMessage("W1618", "no-absolute-import"),
124-
DeletedMessage("W1619", "old-division"),
125-
DeletedMessage("W1620", "dict-iter-method"),
126-
DeletedMessage("W1621", "dict-view-method"),
127-
DeletedMessage("W1622", "next-method-called"),
128-
DeletedMessage("W1623", "metaclass-assignment"),
129-
DeletedMessage(
130-
"W1624", "indexing-exception", [("W0713", "old-indexing-exception")]
131-
),
132-
DeletedMessage("W1625", "raising-string", [("W0701", "old-raising-string")]),
133-
DeletedMessage("W1626", "reload-builtin"),
134-
DeletedMessage("W1627", "oct-method"),
135-
DeletedMessage("W1628", "hex-method"),
136-
DeletedMessage("W1629", "nonzero-method"),
137-
DeletedMessage("W1630", "cmp-method"),
138-
DeletedMessage("W1632", "input-builtin"),
139-
DeletedMessage("W1633", "round-builtin"),
140-
DeletedMessage("W1634", "intern-builtin"),
141-
DeletedMessage("W1635", "unichr-builtin"),
142-
DeletedMessage(
143-
"W1636", "map-builtin-not-iterating", [("W1631", "implicit-map-evaluation")]
144-
),
145-
DeletedMessage("W1637", "zip-builtin-not-iterating"),
146-
DeletedMessage("W1638", "range-builtin-not-iterating"),
147-
DeletedMessage("W1639", "filter-builtin-not-iterating"),
148-
DeletedMessage("W1640", "using-cmp-argument"),
149-
DeletedMessage("W1642", "div-method"),
150-
DeletedMessage("W1643", "idiv-method"),
151-
DeletedMessage("W1644", "rdiv-method"),
152-
DeletedMessage("W1645", "exception-message-attribute"),
153-
DeletedMessage("W1646", "invalid-str-codec"),
154-
DeletedMessage("W1647", "sys-max-int"),
155-
DeletedMessage("W1648", "bad-python3-import"),
156-
DeletedMessage("W1649", "deprecated-string-function"),
157-
DeletedMessage("W1650", "deprecated-str-translate-call"),
158-
DeletedMessage("W1651", "deprecated-itertools-function"),
159-
DeletedMessage("W1652", "deprecated-types-field"),
160-
DeletedMessage("W1653", "next-method-defined"),
161-
DeletedMessage("W1654", "dict-items-not-iterating"),
162-
DeletedMessage("W1655", "dict-keys-not-iterating"),
163-
DeletedMessage("W1656", "dict-values-not-iterating"),
164-
DeletedMessage("W1657", "deprecated-operator-function"),
165-
DeletedMessage("W1658", "deprecated-urllib-function"),
166-
DeletedMessage("W1659", "xreadlines-attribute"),
167-
DeletedMessage("W1660", "deprecated-sys-function"),
168-
DeletedMessage("W1661", "exception-escape"),
169-
DeletedMessage("W1662", "comprehension-escape"),
170-
# https://github.com/PyCQA/pylint/pull/3578
171-
DeletedMessage("W0312", "mixed-indentation"),
172-
# https://github.com/PyCQA/pylint/pull/3577
173-
DeletedMessage(
174-
"C0326",
175-
"bad-whitespace",
176-
[
177-
("C0323", "no-space-after-operator"),
178-
("C0324", "no-space-after-comma"),
179-
("C0322", "no-space-before-operator"),
180-
],
181-
),
182-
# https://github.com/PyCQA/pylint/pull/3571
183-
DeletedMessage("C0330", "bad-continuation"),
184-
# No PR
185-
DeletedMessage("R0921", "abstract-class-not-used"),
186-
# https://github.com/PyCQA/pylint/pull/3577
187-
DeletedMessage("C0326", "bad-whitespace"),
188-
# Pylint 1.4.3
189-
DeletedMessage("W0142", "star-args"),
190-
# https://github.com/PyCQA/pylint/issues/2409
191-
DeletedMessage("W0232", "no-init"),
192-
# https://github.com/PyCQA/pylint/pull/6421
193-
DeletedMessage("W0111", "assign-to-new-keyword"),
194-
]
195-
196-
19784
# ignore some messages when emitting useless-suppression:
19885
# - cyclic-import: can show false positives due to incomplete context
19986
# - deprecated-{module, argument, class, method, decorator}:
Lines changed: 125 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,125 @@
1+
# Licensed under the GPL: https://www.gnu.org/licenses/old-licenses/gpl-2.0.html
2+
# For details: https://github.com/PyCQA/pylint/blob/main/LICENSE
3+
# Copyright (c) https://github.com/PyCQA/pylint/blob/main/CONTRIBUTORS.txt
4+
5+
from __future__ import annotations
6+
7+
from typing import NamedTuple
8+
9+
10+
class DeletedMessage(NamedTuple):
11+
msgid: str
12+
symbol: str
13+
old_names: list[tuple[str, str]] = []
14+
15+
16+
DELETED_MSGID_PREFIXES: list[int] = []
17+
18+
DELETED_MESSAGES_IDS = {
19+
# Everything until the next comment is from the PY3K+ checker
20+
"https://github.com/PyCQA/pylint/pull/4942": [
21+
DeletedMessage("W1601", "apply-builtin"),
22+
DeletedMessage("E1601", "print-statement"),
23+
DeletedMessage("E1602", "parameter-unpacking"),
24+
DeletedMessage(
25+
"E1603", "unpacking-in-except", [("W0712", "old-unpacking-in-except")]
26+
),
27+
DeletedMessage(
28+
"E1604", "old-raise-syntax", [("W0121", "old-old-raise-syntax")]
29+
),
30+
DeletedMessage("E1605", "backtick", [("W0333", "old-backtick")]),
31+
DeletedMessage("E1609", "import-star-module-level"),
32+
DeletedMessage("W1601", "apply-builtin"),
33+
DeletedMessage("W1602", "basestring-builtin"),
34+
DeletedMessage("W1603", "buffer-builtin"),
35+
DeletedMessage("W1604", "cmp-builtin"),
36+
DeletedMessage("W1605", "coerce-builtin"),
37+
DeletedMessage("W1606", "execfile-builtin"),
38+
DeletedMessage("W1607", "file-builtin"),
39+
DeletedMessage("W1608", "long-builtin"),
40+
DeletedMessage("W1609", "raw_input-builtin"),
41+
DeletedMessage("W1610", "reduce-builtin"),
42+
DeletedMessage("W1611", "standarderror-builtin"),
43+
DeletedMessage("W1612", "unicode-builtin"),
44+
DeletedMessage("W1613", "xrange-builtin"),
45+
DeletedMessage("W1614", "coerce-method"),
46+
DeletedMessage("W1615", "delslice-method"),
47+
DeletedMessage("W1616", "getslice-method"),
48+
DeletedMessage("W1617", "setslice-method"),
49+
DeletedMessage("W1618", "no-absolute-import"),
50+
DeletedMessage("W1619", "old-division"),
51+
DeletedMessage("W1620", "dict-iter-method"),
52+
DeletedMessage("W1621", "dict-view-method"),
53+
DeletedMessage("W1622", "next-method-called"),
54+
DeletedMessage("W1623", "metaclass-assignment"),
55+
DeletedMessage(
56+
"W1624", "indexing-exception", [("W0713", "old-indexing-exception")]
57+
),
58+
DeletedMessage("W1625", "raising-string", [("W0701", "old-raising-string")]),
59+
DeletedMessage("W1626", "reload-builtin"),
60+
DeletedMessage("W1627", "oct-method"),
61+
DeletedMessage("W1628", "hex-method"),
62+
DeletedMessage("W1629", "nonzero-method"),
63+
DeletedMessage("W1630", "cmp-method"),
64+
DeletedMessage("W1632", "input-builtin"),
65+
DeletedMessage("W1633", "round-builtin"),
66+
DeletedMessage("W1634", "intern-builtin"),
67+
DeletedMessage("W1635", "unichr-builtin"),
68+
DeletedMessage(
69+
"W1636", "map-builtin-not-iterating", [("W1631", "implicit-map-evaluation")]
70+
),
71+
DeletedMessage("W1637", "zip-builtin-not-iterating"),
72+
DeletedMessage("W1638", "range-builtin-not-iterating"),
73+
DeletedMessage("W1639", "filter-builtin-not-iterating"),
74+
DeletedMessage("W1640", "using-cmp-argument"),
75+
DeletedMessage("W1642", "div-method"),
76+
DeletedMessage("W1643", "idiv-method"),
77+
DeletedMessage("W1644", "rdiv-method"),
78+
DeletedMessage("W1645", "exception-message-attribute"),
79+
DeletedMessage("W1646", "invalid-str-codec"),
80+
DeletedMessage("W1647", "sys-max-int"),
81+
DeletedMessage("W1648", "bad-python3-import"),
82+
DeletedMessage("W1649", "deprecated-string-function"),
83+
DeletedMessage("W1650", "deprecated-str-translate-call"),
84+
DeletedMessage("W1651", "deprecated-itertools-function"),
85+
DeletedMessage("W1652", "deprecated-types-field"),
86+
DeletedMessage("W1653", "next-method-defined"),
87+
DeletedMessage("W1654", "dict-items-not-iterating"),
88+
DeletedMessage("W1655", "dict-keys-not-iterating"),
89+
DeletedMessage("W1656", "dict-values-not-iterating"),
90+
DeletedMessage("W1657", "deprecated-operator-function"),
91+
DeletedMessage("W1658", "deprecated-urllib-function"),
92+
DeletedMessage("W1659", "xreadlines-attribute"),
93+
DeletedMessage("W1660", "deprecated-sys-function"),
94+
DeletedMessage("W1661", "exception-escape"),
95+
DeletedMessage("W1662", "comprehension-escape"),
96+
],
97+
"https://github.com/PyCQA/pylint/pull/3578": [
98+
DeletedMessage("W0312", "mixed-indentation"),
99+
],
100+
"https://github.com/PyCQA/pylint/pull/3577": [
101+
DeletedMessage(
102+
"C0326",
103+
"bad-whitespace",
104+
[
105+
("C0323", "no-space-after-operator"),
106+
("C0324", "no-space-after-comma"),
107+
("C0322", "no-space-before-operator"),
108+
],
109+
),
110+
],
111+
"https://github.com/PyCQA/pylint/pull/3571": [
112+
DeletedMessage("C0330", "bad-continuation")
113+
],
114+
"https://pylint.pycqa.org/en/latest/whatsnew/1/1.4.html#what-s-new-in-pylint-1-4-3": [
115+
DeletedMessage("R0921", "abstract-class-not-used"),
116+
DeletedMessage("R0922", "abstract-class-little-used"),
117+
DeletedMessage("W0142", "star-args"),
118+
],
119+
"https://github.com/PyCQA/pylint/issues/2409": [
120+
DeletedMessage("W0232", "no-init"),
121+
],
122+
"https://github.com/PyCQA/pylint/pull/6421": [
123+
DeletedMessage("W0111", "assign-to-new-keyword"),
124+
],
125+
}

script/get_unused_message_id_category.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,9 @@
66
from __future__ import annotations
77

88
from pylint.checkers import initialize as initialize_checkers
9-
from pylint.constants import DELETED_MSGID_PREFIXES
109
from pylint.extensions import initialize as initialize_extensions
1110
from pylint.lint.pylinter import PyLinter
11+
from pylint.message.deleted_message_ids import _DELETED_MSGID_PREFIXES
1212

1313

1414
def register_all_checkers_and_plugins(linter: PyLinter) -> None:
@@ -21,7 +21,7 @@ def register_all_checkers_and_plugins(linter: PyLinter) -> None:
2121
def get_next_code_category(message_ids: list[str]) -> int:
2222
categories = sorted({int(i[:2]) for i in message_ids})
2323
# We add the prefixes for deleted checkers
24-
categories += DELETED_MSGID_PREFIXES
24+
categories += _DELETED_MSGID_PREFIXES
2525
for i in categories:
2626
if i + 1 not in categories:
2727
return i + 1

tests/message/test_no_removed_msgid_or_symbol_used.py

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,8 @@
22
# For details: https://github.com/PyCQA/pylint/blob/main/LICENSE
33
# Copyright (c) https://github.com/PyCQA/pylint/blob/main/CONTRIBUTORS.txt
44

5-
from pylint.constants import DELETED_MESSAGES
65
from pylint.lint import PyLinter
6+
from pylint.message.deleted_message_ids import _DELETED_MESSAGES_IDS
77

88

99
def test_no_removed_msgid_or_symbol_used(linter: PyLinter) -> None:
@@ -12,7 +12,8 @@ def test_no_removed_msgid_or_symbol_used(linter: PyLinter) -> None:
1212
This could cause occasional bugs, but more importantly confusion and inconsistencies
1313
when searching for old msgids online. See https://github.com/PyCQA/pylint/issues/5729
1414
"""
15-
for msgid, symbol, old_names in DELETED_MESSAGES:
16-
linter.msgs_store.message_id_store.register_message_definition(
17-
msgid, symbol, old_names
18-
)
15+
for deleted_messages in _DELETED_MESSAGES_IDS.values():
16+
for msgid, symbol, old_names in deleted_messages:
17+
linter.msgs_store.message_id_store.register_message_definition(
18+
msgid, symbol, old_names
19+
)

0 commit comments

Comments
 (0)