@@ -19,7 +19,10 @@ def __init__(self):
1919 self .DAYS_BEFORE_STALE_WARNING = 7
2020 self .DAYS_BEFORE_UNASSIGN = 14
2121 self .DAYS_BEFORE_FINAL_FOLLOWUP = 60
22- self .bot_login = os .environ .get ("BOT_USERNAME" , "openwisp-companion" ) + "[bot]"
22+ bot_username = os .environ .get ("BOT_USERNAME" , "openwisp-companion" )
23+ self .bot_login = (
24+ bot_username if bot_username .endswith ("[bot]" ) else f"{ bot_username } [bot]"
25+ )
2326
2427 @staticmethod
2528 def _commit_activity_date_for_author (commit , pr_author ):
@@ -164,34 +167,33 @@ def is_waiting_for_maintainer(
164167 def get_last_changes_requested (self , pr , all_reviews = None ):
165168 """Timestamp of the latest CHANGES_REQUESTED that still represents
166169 a human reviewer's current stance, or ``None``.
170+
171+ Errors propagate so the caller can distinguish "no active block"
172+ from "couldn't determine" and skip the PR.
167173 """
168- try :
169- if all_reviews is None :
170- all_reviews = list (pr .get_reviews ())
171- # Bot reviews are advisory; COMMENTED does not change stance.
172- latest_per_reviewer = {}
173- for review in all_reviews :
174- if (
175- not review .user
176- or not review .submitted_at
177- or review .user .type == "Bot"
178- or review .state == "COMMENTED"
179- ):
180- continue
181- current = latest_per_reviewer .get (review .user .login )
182- if current is None or review .submitted_at > current .submitted_at :
183- latest_per_reviewer [review .user .login ] = review
184- return max (
185- (
186- review .submitted_at
187- for review in latest_per_reviewer .values ()
188- if review .state == "CHANGES_REQUESTED"
189- ),
190- default = None ,
191- )
192- except Exception as e :
193- print (f"Error getting reviews for PR #{ pr .number } : { e } " )
194- return None
174+ if all_reviews is None :
175+ all_reviews = list (pr .get_reviews ())
176+ # Bot reviews are advisory; COMMENTED does not change stance.
177+ latest_per_reviewer = {}
178+ for review in all_reviews :
179+ if (
180+ not review .user
181+ or not review .submitted_at
182+ or review .user .type == "Bot"
183+ or review .state == "COMMENTED"
184+ ):
185+ continue
186+ current = latest_per_reviewer .get (review .user .login )
187+ if current is None or review .submitted_at > current .submitted_at :
188+ latest_per_reviewer [review .user .login ] = review
189+ return max (
190+ (
191+ review .submitted_at
192+ for review in latest_per_reviewer .values ()
193+ if review .state == "CHANGES_REQUESTED"
194+ ),
195+ default = None ,
196+ )
195197
196198 def has_bot_comment (self , pr , comment_type , after_date = None , issue_comments = None ):
197199 """Check if this bot has already posted a comment with the given
0 commit comments