blob: 0e0e67d685dfb8d57b180e0ffed17abc7879938f [file] [log] [blame]
"""Small script to get a new unused message id category."""
# Licensed under the GPL: https://www.gnu.org/licenses/old-licenses/gpl-2.0.html
# For details: https://github.com/pylint-dev/pylint/blob/main/LICENSE
# Copyright (c) https://github.com/pylint-dev/pylint/blob/main/CONTRIBUTORS.txt
from __future__ import annotations
from pylint.checkers import initialize as initialize_checkers
from pylint.extensions import initialize as initialize_extensions
from pylint.lint.pylinter import PyLinter
from pylint.message._deleted_message_ids import DELETED_MSGID_PREFIXES
def register_all_checkers_and_plugins(linter: PyLinter) -> None:
"""Registers all checkers and plugins."""
initialize_checkers(linter)
initialize_extensions(linter)
def get_next_code_category(message_ids: list[str]) -> int:
categories = sorted({int(i[:2]) for i in message_ids})
# We add the prefixes for deleted checkers
categories += DELETED_MSGID_PREFIXES
for i in categories:
if i + 1 not in categories:
return i + 1
return categories[-1] + 1
if __name__ == "__main__":
pylinter = PyLinter()
register_all_checkers_and_plugins(pylinter)
messages = sorted(i.msgid[1:] for i in pylinter.msgs_store.messages)
next_category = get_next_code_category(messages)
print(f"Next free message id category is {next_category:02}")
print(f"Please use {next_category:02}01 for the first message of the new checker")