Преглед изворни кода

pre-commit: Fix various issues of version-check hook

Jan Holthuis пре 4 година
родитељ
комит
fc8791a452
1 измењених фајлова са 40 додато и 30 уклоњено
  1. 40 30
      .pre-commit/version_check.py

+ 40 - 30
.pre-commit/version_check.py

@@ -1,4 +1,4 @@
-#!/usr/bin/env python3
+#!/usr/bin/env python
 import importlib.util
 import os
 import pkgutil
@@ -12,6 +12,8 @@ import docutils.parsers.rst
 import docutils.utils
 import docutils.frontend
 
+CHANGELOG_PATTERN = re.compile(r"^Version (\S+)((?: \(unreleased\)))?$")
+
 
 def parse_rst(text: str) -> docutils.nodes.document:
     parser = docutils.parsers.rst.Parser()
@@ -51,14 +53,12 @@ def get_sphinxchangelog_version(rootdir):
     assert len(visitor.sectiontitles_found) == len(unique_sectiontitles)
     assert visitor.sectiontitles_found[0] == "Changelog"
 
-    changelog_pattern = re.compile(r"^Version (\S+)((?: \(unreleased\)))?$")
-
-    matchobj = changelog_pattern(visitor.sectiontitles_found[1])
+    matchobj = CHANGELOG_PATTERN.match(visitor.sectiontitles_found[1])
     assert matchobj
     version = matchobj.group(1)
     version_unreleased = matchobj.group(2)
 
-    matchobj = changelog_pattern(visitor.sectiontitles_found[2])
+    matchobj = CHANGELOG_PATTERN.match(visitor.sectiontitles_found[2])
     assert matchobj
     release = matchobj.group(1)
     release_unreleased = matchobj.group(2)
@@ -83,7 +83,7 @@ def get_setuppy_version(rootdir):
     """Get version from setup.py."""
     setupfile = os.path.join(rootdir, "setup.py")
     cmd = (sys.executable, setupfile, "--version")
-    release = subprocess.check_output(cmd, text=True).rstrip("\n")
+    release = subprocess.check_output(cmd).decode().rstrip(os.linesep)
     version = release.rpartition(".")[0]
     return version, release
 
@@ -112,43 +112,53 @@ def main():
 
     setuppy_version, setuppy_release = get_setuppy_version(rootdir)
     package_version, package_release = get_package_version(rootdir)
-    confpy_version, confpy_release = get_setuppy_version(rootdir)
-    changelog_version, changelog_release = get_setuppy_version(rootdir)
+    confpy_version, confpy_release = get_sphinxconfpy_version(rootdir)
+    changelog_version, changelog_release = get_sphinxchangelog_version(rootdir)
 
     version_head = "Version"
     version_width = max(
-        [
-            len(version_head),
-            len(setuppy_version),
-            len(package_version),
-            len(confpy_version),
-            len(changelog_version),
-        ]
+        (
+            len(repr(x))
+            for x in (
+                version_head,
+                setuppy_version,
+                package_version,
+                confpy_version,
+                changelog_version,
+            )
+        )
     )
 
     release_head = "Release"
     release_width = max(
-        [
-            len(release_head),
-            len(setuppy_release),
-            len(package_release),
-            len(confpy_release),
-            len(changelog_release),
-        ]
+        (
+            len(repr(x))
+            for x in (
+                release_head,
+                setuppy_release,
+                package_release,
+                confpy_release,
+                changelog_release,
+            )
+        )
     )
 
     print(
         f"File                            {version_head} {release_head}\n"
         f"------------------------------- {'-' * version_width}"
         f" {'-' * release_width}\n"
-        f"setup.py                        {setuppy_version:>{version_width}}"
-        f" {setuppy_release:>{release_width}}\n"
-        f"sphinx_multiversion/__init__.py {package_version:>{version_width}}"
-        f" {package_release:>{release_width}}\n"
-        f"docs/conf.py                    {confpy_version:>{version_width}}"
-        f" {confpy_release:>{release_width}}\n"
-        f"docs/changelog.rst              {changelog_version:>{version_width}}"
-        f" {changelog_release:>{release_width}}\n"
+        f"setup.py                       "
+        f" {setuppy_version!r:>{version_width}}"
+        f" {setuppy_release!r:>{release_width}}\n"
+        f"sphinx_multiversion/__init__.py"
+        f" {package_version!r:>{version_width}}"
+        f" {package_release!r:>{release_width}}\n"
+        f"docs/conf.py                   "
+        f" {confpy_version!r:>{version_width}}"
+        f" {confpy_release!r:>{release_width}}\n"
+        f"docs/changelog.rst             "
+        f" {changelog_version!r:>{version_width}}"
+        f" {changelog_release!r:>{release_width}}\n"
     )
 
     assert setuppy_version == confpy_version