Source code for pyrokinetics.metadata
import uuid
from datetime import datetime
from typing import Dict
try:
from importlib.metadata import PackageNotFoundError, version
except ModuleNotFoundError:
from importlib_metadata import PackageNotFoundError, version
try:
__version__ = version("pyrokinetics")
except PackageNotFoundError:
try:
from setuptools_scm import get_version
__version__ = get_version(root="../..", relative_to=__file__)
except ImportError:
__version__ = "0.0.1"
try:
from ._version import __commit__
except ImportError:
__commit__ = "COMMIT_UNKNOWN"
# Define UUID and session start as module-level variables.
# Determined at the first import, and should be fixed during each session.
__session_uuid = uuid.uuid4()
__session_start = datetime.now()
[docs]
def metadata(title: str, obj: str, **kwargs: str) -> Dict[str, str]:
"""
Return a dict of metadata which can be used to uniquely identify Pyrokinetics
objects. Should be written to Pyrokinetics output files to establish their
provenance.
Parameters
----------
title: str
A title to be assigned to the object. Recommended to use the object name if
no other obvious title can be determined.
obj: str
The type of Pyrokinetics object, expressed as a string. It is recommended to
use ``self.__class__.__name__`` in external classes.
**kwargs: str
Extra keywords to add to the returned dict.
"""
return {
"title": str(title),
"software_name": "Pyrokinetics",
"software_version": __version__,
"object_type": str(obj),
"object_uuid": str(uuid.uuid4()),
"object_created": str(datetime.now()),
"session_uuid": str(__session_uuid),
"session_started": str(__session_start),
**kwargs,
}