Эх сурвалжийг харах

package: Add __version__ variable to package's __init__.py

Jan Holthuis 4 жил өмнө
parent
commit
b5ebc85921

+ 1 - 1
.pre-commit-config.yaml

@@ -23,6 +23,6 @@ repos:
     - commit
     - manual
     language: python
-    files: ^(\.pre-commit/version_check\.py|setup\.py|docs/conf\.py|docs/changelog\.rst)$
+    files: ^(\.pre-commit/version_check\.py|setup\.py|sphinx_multiversion/__init__\.py|docs/conf\.py|docs/changelog\.rst)$
     additional_dependencies:
     - sphinx

+ 29 - 0
.pre-commit/version_check.py

@@ -1,4 +1,7 @@
+#!/usr/bin/env python3
+import importlib.util
 import os
+import pkgutil
 import re
 import runpy
 import subprocess
@@ -85,10 +88,30 @@ def get_setuppy_version(rootdir):
     return version, release
 
 
+def get_package_version(rootdir):
+    """Get version from package __init__.py."""
+    sys.path.insert(0, os.path.join(rootdir))
+    for modinfo in pkgutil.walk_packages(path=[rootdir]):
+        if modinfo.ispkg and modinfo.name == "sphinx_multiversion":
+            break
+    else:
+        raise FileNotFoundError("package not found")
+
+    spec = modinfo.module_finder.find_spec(modinfo.name)
+    mod = importlib.util.module_from_spec(spec)
+    spec.loader.exec_module(mod)
+
+    release = mod.__version__
+    version = release.rpartition(".")[0]
+
+    return version, release
+
+
 def main():
     rootdir = os.path.join(os.path.dirname(__file__), "..")
 
     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)
 
@@ -97,6 +120,7 @@ def main():
         [
             len(version_head),
             len(setuppy_version),
+            len(package_version),
             len(confpy_version),
             len(changelog_version),
         ]
@@ -107,6 +131,7 @@ def main():
         [
             len(release_head),
             len(setuppy_release),
+            len(package_release),
             len(confpy_release),
             len(changelog_release),
         ]
@@ -118,6 +143,8 @@ def main():
         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}}"
@@ -125,9 +152,11 @@ def main():
     )
 
     assert setuppy_version == confpy_version
+    assert setuppy_version == package_version
     assert setuppy_version == changelog_version
 
     assert setuppy_release == confpy_release
+    assert setuppy_release == package_release
     assert setuppy_release == changelog_release
 
 

+ 2 - 0
sphinx_multiversion/__init__.py

@@ -2,6 +2,8 @@
 from .sphinx import setup
 from .main import main
 
+__version__ = "0.2.4"
+
 __all__ = [
     "setup",
     "main",