Source code for fury.pkg_info

from __future__ import annotations

from subprocess import run

from packaging.version import Version

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

COMMIT_HASH = '$Format:%h$'


[docs] 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>'