From 12b4106ac42546be062e7bfa3d4522ced126be2e Mon Sep 17 00:00:00 2001 From: h7x4 Date: Thu, 30 Jul 2026 13:50:58 +0900 Subject: [PATCH] newModuleTagger: custom handling for prometheus exporters --- newModuleTagger/find_prs.py | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/newModuleTagger/find_prs.py b/newModuleTagger/find_prs.py index fa80362..a2fec7b 100755 --- a/newModuleTagger/find_prs.py +++ b/newModuleTagger/find_prs.py @@ -5,10 +5,13 @@ from tqdm import tqdm from pathlib import Path import subprocess import json +import time PAGINATION_STEP=3 PAGES=800 +MAX_RETRIES=8 +RETRY_BACKOFF_SECONDS=3 GRAPHQL_QUERY = """ @@ -136,6 +139,9 @@ def color_backport_label(title: str) -> str: else: return title +PROMETHEUS_EXPORTERS_DIR = 'nixos/modules/services/monitoring/prometheus/exporters/' +PROMETHEUS_EXPORTERS_FILE = 'nixos/modules/services/monitoring/prometheus/exporters.nix' + def warnings_for_pr(pr: dict[str, any]) -> list[str]: warnings = [] @@ -143,8 +149,14 @@ def warnings_for_pr(pr: dict[str, any]) -> list[str]: file['changeType'] == 'ADDED' and file['path'].startswith('nixos/modules/') and file['path'].endswith('.nix') for file in pr['files'] ) + + is_prometheus_exporter = ( + any(file['path'].startswith(PROMETHEUS_EXPORTERS_DIR) for file in pr['files']) + or any(file['path'] == PROMETHEUS_EXPORTERS_FILE for file in pr['files']) + ) + module_list_touched = any(file['path'] == 'nixos/modules/module-list.nix' for file in pr['files']) - if has_new_module and not module_list_touched: + if has_new_module and not module_list_touched and not is_prometheus_exporter: warnings.append('New module added, but nixos/modules/module-list.nix was not changed') has_new_test = any( @@ -152,7 +164,7 @@ def warnings_for_pr(pr: dict[str, any]) -> list[str]: for file in pr['files'] ) all_tests_touched = any(file['path'] == 'nixos/tests/all-tests.nix' for file in pr['files']) - if has_new_test and not all_tests_touched: + if has_new_test and not all_tests_touched and not is_prometheus_exporter: warnings.append('New test added, but nixos/tests/all-tests.nix was not changed') release_notes_touched = any(file['path'].startswith('nixos/doc/manual/release-notes') for file in pr['files']) @@ -162,7 +174,7 @@ def warnings_for_pr(pr: dict[str, any]) -> list[str]: return warnings def print_pr(pr: dict[str, any]): - tqdm.write(f'[{STATUS_COLORS.get(pr["state"], pr["state"])}|\033[1m{pr["number"]}\033[0m] {pr["author"]} - {color_backport_label(pr["title"])}') + tqdm.write(f'[{STATUS_COLORS.get(pr["state"], pr["state"])}|\033[1m{pr["number"]}\033[0m] {pr["author"]} - {pr["createdAt"][:10]} - {color_backport_label(pr["title"])}') tqdm.write("\033[1;34m" + pr["url"] + "\033[0m") tqdm.write("") tqdm.write('Files:') @@ -187,4 +199,3 @@ def print_pr(pr: dict[str, any]): if __name__ == "__main__": find_prs_without_new_module_tag() -