72 lines
1.6 KiB
Python
72 lines
1.6 KiB
Python
#!/usr/bin/env python
|
|
#
|
|
# Copyright 2021, Heidelberg University Clinic
|
|
#
|
|
# File author(s): Sebastian Lobentanzer
|
|
# ...
|
|
#
|
|
# Distributed under MIT licence, see the file `LICENSE`.
|
|
#
|
|
"""
|
|
Package metadata (version, authors, etc).
|
|
"""
|
|
|
|
__all__ = ["get_metadata"]
|
|
|
|
import os
|
|
import pathlib
|
|
import importlib.metadata
|
|
|
|
import toml
|
|
|
|
_VERSION = "0.6.0"
|
|
|
|
|
|
def get_metadata():
|
|
"""
|
|
Basic package metadata.
|
|
|
|
Retrieves package metadata from the current project directory or from
|
|
the installed package.
|
|
"""
|
|
|
|
here = pathlib.Path(__file__).parent
|
|
pyproj_toml = "pyproject.toml"
|
|
meta = {}
|
|
|
|
for project_dir in (here, here.parent):
|
|
toml_path = str(project_dir.joinpath(pyproj_toml).absolute())
|
|
|
|
if os.path.exists(toml_path):
|
|
pyproject = toml.load(toml_path)
|
|
|
|
meta = {
|
|
"name": pyproject["tool"]["poetry"]["name"],
|
|
"version": pyproject["tool"]["poetry"]["version"],
|
|
"author": pyproject["tool"]["poetry"]["authors"],
|
|
"license": pyproject["tool"]["poetry"]["license"],
|
|
"full_metadata": pyproject,
|
|
}
|
|
|
|
break
|
|
|
|
if not meta:
|
|
try:
|
|
meta = {
|
|
k.lower(): v
|
|
for k, v in importlib.metadata.metadata(here.name).items()
|
|
}
|
|
|
|
except importlib.metadata.PackageNotFoundError:
|
|
pass
|
|
|
|
meta["version"] = meta.get("version", None) or _VERSION
|
|
|
|
return meta
|
|
|
|
|
|
metadata = get_metadata()
|
|
__version__ = metadata.get("version", None)
|
|
__author__ = metadata.get("author", None)
|
|
__license__ = metadata.get("license", None)
|