"""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")