-
-def update_release_notes(previous_version: str) -> None:
- p = pathlib.Path(__file__).parent.parent / 'docs' / 'relnotes.html'
- with p.open('rt') as f:
- tree = html.parse(f)
-
- li = etree.Element('li')
- a = etree.SubElement(li, 'a', href=f'relnotes/{previous_version}.html')
- a.text = f'{previous_version} release notes'
-
- ul = tree.xpath('.//ul')[0]
- ul.insert(0, li)
-
- tree.write(p.as_posix(), method='html', pretty_print=True)
-
-
-def update_calendar(previous_version: str) -> None:
- p = pathlib.Path(__file__).parent.parent / 'docs' / 'release-calendar.html'
- with p.open('rt') as f:
- tree = html.parse(f)
-
- base_version = previous_version[:-2]
-
- old = None
- new = None
-
- for tr in tree.xpath('.//tr'):
- if old is not None:
- new = tr
- break
-
- for td in tr.xpath('./td'):
- if td.text == base_version:
- old = tr
- break
-
- assert old is not None
- assert new is not None
- old.getparent().remove(old)
-
- # rowspan is 1 based in html, but 0 based in lxml
- rowspan = int(td.get("rowspan")) - 1
- if rowspan:
- td.set("rowspan", str(rowspan))
- new.insert(0, td)
-
- tree.write(p.as_posix(), method='html', pretty_print=True)