""" Check that the rev value in the example from ``the_basics.md`` matches the latest version of Black. This saves us from forgetting to update that during the release process. """ import os import sys import commonmark from bs4 import BeautifulSoup def main(changes: str, the_basics: str) -> None: changes_html = commonmark.commonmark(changes) changes_soup = BeautifulSoup(changes_html, "html.parser") headers = changes_soup.find_all("h2") tags = [header.string for header in headers if header.string != "Unreleased"] latest_tag = tags[0] the_basics_html = commonmark.commonmark(the_basics) the_basics_soup = BeautifulSoup(the_basics_html, "html.parser") version_examples = [ code_block.string for code_block in the_basics_soup.find_all(class_="language-console") if "$ black --version" in code_block.string ] for tag in tags: for version_example in version_examples: if tag in version_example and tag != latest_tag: print( "Please set the version in the ``black --version`` " "examples from ``the_basics.md`` to be the latest one.\n" f"Expected {latest_tag}, got {tag}.\n" ) sys.exit(1) if __name__ == "__main__": with open("CHANGES.md", encoding="utf-8") as fd: changes = fd.read() with open( os.path.join("docs", "usage_and_configuration", "the_basics.md"), encoding="utf-8", ) as fd: the_basics = fd.read() main(changes, the_basics)