madduck's git repository

Every one of the projects in this repository is available at the canonical URL git://git.madduck.net/madduck/pub/<projectpath> — see each project's metadata for the exact URL.

All patches and comments are welcome. Please squash your changes to logical commits before using git-format-patch and git-send-email to patches@git.madduck.net. If you'd read over the Git project's submission guidelines and adhered to them, I'd be especially grateful.

SSH access, as well as push access can be individually arranged.

If you use my repositories frequently, consider adding the following snippet to ~/.gitconfig and using the third clone URL listed for each project:

[url "git://git.madduck.net/madduck/"]
  insteadOf = madduck:

add check for version in the-basics example (#2459)
authorMarco Edward Gorelli <marcogorelli@protonmail.com>
Sun, 19 Sep 2021 03:24:09 +0000 (04:24 +0100)
committerGitHub <noreply@github.com>
Sun, 19 Sep 2021 03:24:09 +0000 (20:24 -0700)
.pre-commit-config.yaml
scripts/check_version_in_basics_example.py [new file with mode: 0644]

index b3cbe352e38f715a6621445d09094654e0e9f471..a3cd66393848aff55adbe3a67c69b231df9966de 100644 (file)
@@ -18,7 +18,18 @@ repos:
         entry: python -m scripts.check_pre_commit_rev_in_example
         files: '(CHANGES\.md|source_version_control\.md)$'
         additional_dependencies:
-          ["commonmark==0.9.1", "pyyaml==5.4.1", "beautifulsoup4==4.9.3"]
+          &version_check_dependencies [
+            commonmark==0.9.1,
+            pyyaml==5.4.1,
+            beautifulsoup4==4.9.3,
+          ]
+
+      - id: check-version-in-the-basics-example
+        name: Check black version in the basics example
+        language: python
+        entry: python -m scripts.check_version_in_basics_example
+        files: '(CHANGES\.md|the_basics\.md)$'
+        additional_dependencies: *version_check_dependencies
 
   - repo: https://gitlab.com/pycqa/flake8
     rev: 3.9.2
diff --git a/scripts/check_version_in_basics_example.py b/scripts/check_version_in_basics_example.py
new file mode 100644 (file)
index 0000000..c62780d
--- /dev/null
@@ -0,0 +1,47 @@
+"""
+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_example,) = [
+        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:
+        if tag in version_example and tag != latest_tag:
+            print(
+                "Please set the version in the ``black --version`` "
+                "example 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)