diff --git a/scripts/release_issue_status/main.py b/scripts/release_issue_status/main.py index 6cd8fc252a43..ef8f6b640988 100644 --- a/scripts/release_issue_status/main.py +++ b/scripts/release_issue_status/main.py @@ -34,11 +34,11 @@ def print_check(cmd): def output_python_md(issue_status_python): with open(_FILE_OUT_PYTHON, 'w') as file_out: - file_out.write('| issue | author | package | assignee | bot advice | created date of issue | delay from created date |\n') - file_out.write('| ------ | ------ | ------ | ------ | ------ | ------ | :-----: |\n') + file_out.write( + '| issue | author | package | assignee | bot advice | created date of issue | target release date | date from target |\n') + file_out.write('| ------ | ------ | ------ | ------ | ------ | ------ | ------ | :-----: |\n') file_out.writelines([item.output_python() for item in sorted(issue_status_python, key=_key_select)]) - def output_csv(issue_status): with open(_FILE_OUT, 'w') as file_out: file_out.write('language,issue,author,package,created date,delay from created date,latest update time,' @@ -63,6 +63,8 @@ class IssueStatus: issue_object = _NULL labels = _NULL assignee = _NULL + target_date = _NULL + days_from_target = _NULL def output(self): return '{},{},{},{},{},{},{},{},{},{}\n'.format(self.language, self.link, self.author, @@ -75,10 +77,20 @@ def output(self): def output_python(self): - return '| [#{}]({}) | {} | {} | {} | {} | {} | {} |\n'.format(self.link.split('/')[-1], self.link, self.author, - self.package, self.assignee, self.bot_advice, - str(date.fromtimestamp(self.create_date)), - self.delay_from_create_date) + package = self.package.split('-')[-1] + create_date = str(date.fromtimestamp(self.create_date).strftime('%m-%d')) + target_date = str(datetime.strptime(self.target_date, "%Y-%m-%d").strftime('%m-%d')) + if abs(self.days_from_target) < 3: + days_from_target = str(self.days_from_target) + else: + days_from_target = ' ' + + return '| [#{}]({}) | {} | {} | {} | {} | {} | {} | {} |\n'.format(self.link.split('/')[-1], self.link, self.author, + package, self.assignee, self.bot_advice, + create_date, + target_date, + days_from_target + ) def _extract(str_list, key_word): @@ -195,6 +207,8 @@ def main(): issue.link = f'https://github.com/Azure/sdk-release-request/issues/{item.number}' issue.author = item.user.login issue.package = _extract(item.body.split('\n'), 'azure-.*') + issue.target_date = [x.split(':')[-1].strip() for x in item.body.split('\n') if 'Target release date' in x][0] + issue.days_from_target = int((time.mktime(time.strptime(issue.target_date, '%Y-%m-%d')) - time.time())/3600/24) issue.create_date = item.created_at.timestamp() issue.delay_from_create_date = int((time.time() - item.created_at.timestamp()) / 3600 / 24) issue.latest_update = item.updated_at.timestamp() @@ -244,7 +258,7 @@ def main(): elif not item.author_latest_comment in _PYTHON_SDK_ADMINISTRATORS: item.bot_advice = 'new comment for author.' elif item.delay_from_latest_update >= 7: - item.bot_advice = 'delay for a long time and better to handle now.' + item.bot_advice = 'delay for a long time ' if item.comment_num > 1 and item.language == 'Python': try: auto_close_issue(request_repo, item) @@ -254,6 +268,9 @@ def main(): if 'base-branch-attention' in item.labels: item.bot_advice = 'new version is 0.0.0, please check base branch! ' + item.bot_advice + + if abs(item.days_from_target) < 3: + item.bot_advice += ' release date < 2 !
' if item.days_from_latest_commit >= 30 and item.language == 'Python' and '30days attention' not in item.labels: item.issue_object.add_to_labels('30days attention') @@ -266,7 +283,7 @@ def main(): # judge whether there is duplicated issue for same package if item.package != _NULL and duplicated_issue.get((item.language, item.package)) > 1: - item.bot_advice = f'Warning:There is duplicated issue for {item.package}. ' + item.bot_advice + item.bot_advice = f'duplicated issue for {item.package}. ' + item.bot_advice # output result output_python_md(issue_status_python)