|
@@ -20,6 +20,13 @@ if not matching_milestones:
|
|
|
sys.exit(1)
|
|
|
milestone_number = matching_milestones[0]['number']
|
|
|
|
|
|
+
|
|
|
+def link(number: int) -> str:
|
|
|
+ # https://stackoverflow.com/a/71309268/3419103
|
|
|
+ escape_mask = '\033]8;{};{}\033\\{}\033]8;;\033\\'
|
|
|
+ return escape_mask.format('', f'https://github.com/zauberzeug/nicegui/issues/{number}', f'#{number}')
|
|
|
+
|
|
|
+
|
|
|
issues = requests.get(f'{BASE_URL}/issues?milestone={milestone_number}&state=all', timeout=5).json()
|
|
|
notes: Dict[str, List[str]] = {
|
|
|
'New features and enhancements': [],
|
|
@@ -34,7 +41,7 @@ for issue in issues:
|
|
|
labels: list[str] = [label['name'] for label in issue['labels']]
|
|
|
number_patterns = [r'#(\d+)', r'https://github.com/zauberzeug/nicegui/(?:issues|discussions|pulls)/(\d+)']
|
|
|
numbers = [issue['number']] + [int(match) for pattern in number_patterns for match in re.findall(pattern, body)]
|
|
|
- numbers_str = ', '.join(f'#{number}' for number in sorted(numbers))
|
|
|
+ numbers_str = ', '.join(link(number) for number in sorted(numbers))
|
|
|
note = f'{title.strip()} ({numbers_str} by @{user})'
|
|
|
if 'bug' in labels:
|
|
|
notes['Bugfixes'].append(note)
|