Source code for asr.core.metadata
import datetime
import typing
import dataclasses
import pathlib
from asr.core.root import Repository
def construct_metadata(
created: typing.Optional[datetime.datetime] = None,
modified: typing.Optional[datetime.datetime] = None,
directory: typing.Optional[str] = None,
) -> 'Metadata':
if created is None:
created = datetime.datetime.now()
if modified is None:
modified = created
if directory is None:
root = Repository.find_root().root
directory = str(pathlib.Path('.').absolute().relative_to(root))
return Metadata(
created=created,
modified=modified,
directory=directory,
)
def register_metadata():
def wrap(func):
def wrapped(*args, **kwargs):
record = func(*args, **kwargs)
record.metadata = construct_metadata()
return record
return wrapped
return wrap