Source code for fury.pkg_info

from __future__ import annotations

from subprocess import run

from packaging.version import Version

from fury.decorators import warn_on_args_to_kwargs

try:
    from ._version import __version__
except ImportError:
    __version__ = "0+unknown"

COMMIT_HASH = "$Format:%h$"


[docs] @warn_on_args_to_kwargs() def pkg_commit_hash(pkg_path: str | None = None) -> tuple[str, str]: """Get short form of commit hash In this file is a variable called COMMIT_HASH. This contains a substitution pattern that may have been filled by the execution of ``git archive``. We get the commit hash from (in order of preference): * A substituted value in ``archive_subst_hash`` * A truncated commit hash value that is part of the local portion of the version * git's output, if we are in a git repository If all these fail, we return a not-found placeholder tuple Parameters ---------- pkg_path : str directory containing package Returns ------- hash_from : str Where we got the hash from - description hash_str : str short form of hash """ if not COMMIT_HASH.startswith("$Format"): # it has been substituted return "archive substitution", COMMIT_HASH ver = Version(__version__) if ver.local is not None and ver.local.startswith("g"): return "installation", ver.local[1:8] # maybe we are in a repository proc = run( ("git", "rev-parse", "--short", "HEAD"), capture_output=True, cwd=pkg_path, ) if proc.stdout: return "repository", proc.stdout.decode().strip() return "(none found)", "<not found>"