diff options
author | Pierre Sassoulas <pierre.sassoulas@gmail.com> | 2022-05-16 10:40:07 +0200 |
---|---|---|
committer | Pierre Sassoulas <pierre.sassoulas@gmail.com> | 2022-05-16 12:21:17 +0200 |
commit | 64989b2601ff19926e43611c987e651e9211fe42 (patch) | |
tree | ff843fc71c043aab9c912e053744d44fc137a364 | |
parent | 252a0e0ab82d344def8f7bfb447a00ff9e423db5 (diff) | |
download | pylint-git-64989b2601ff19926e43611c987e651e9211fe42.tar.gz |
[doc] Lazily write files for repeated doc builds
-rw-r--r-- | doc/exts/pylint_messages.py | 24 |
1 files changed, 23 insertions, 1 deletions
diff --git a/doc/exts/pylint_messages.py b/doc/exts/pylint_messages.py index 99dba0451..4388985d9 100644 --- a/doc/exts/pylint_messages.py +++ b/doc/exts/pylint_messages.py @@ -170,13 +170,35 @@ def _get_all_messages( return messages_dict, old_messages +def _message_needs_update(message_data: MessageData, category: str) -> bool: + """Do we need to regenerate this message .rst ?""" + message_path = _get_message_path(category, message_data) + if not message_path.exists(): + return True + message_path_stats = message_path.stat().st_mtime + checker_path_stats = Path(message_data.checker_module_path).stat().st_mtime + return checker_path_stats > message_path_stats + + +def _get_category_directory(category: str) -> Path: + return PYLINT_MESSAGES_PATH / category + + +def _get_message_path(category: str, message: MessageData) -> Path: + category_dir = _get_category_directory(category) + return category_dir / f"{message.name}.rst" + + def _write_message_page(messages_dict: MessagesDict) -> None: """Create or overwrite the file for each message.""" for category, messages in messages_dict.items(): - category_dir = PYLINT_MESSAGES_PATH / category + category_dir = _get_category_directory(category) if not category_dir.exists(): category_dir.mkdir(parents=True, exist_ok=True) for message in messages: + if not _message_needs_update(message, category): + print(f"{message.name} is up to date.", end="\r") + continue _write_single_message_page(category_dir, message) |