def gather_metadata()

in minihack/agent/polybeast/core/file_writer.py [0:0]


def gather_metadata():
    metadata = dict(
        date_start=datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S.%f"),
        env=os.environ.copy(),
        successful=False,
    )

    # Git metadata.
    try:
        import git
    except ImportError:
        logging.warning(
            "Couldn't import gitpython module; install it with `pip install gitpython`."
        )
    else:
        try:
            repo = git.Repo(search_parent_directories=True)
            metadata["git"] = {
                "commit": repo.commit().hexsha,
                "is_dirty": repo.is_dirty(),
                "path": repo.git_dir,
            }
            if not repo.head.is_detached:
                metadata["git"]["branch"] = repo.active_branch.name
        except git.InvalidGitRepositoryError:
            pass

    if "git" not in metadata:
        logging.warning("Couldn't determine git data.")

    # Slurm metadata.
    if "SLURM_JOB_ID" in os.environ:
        slurm_env_keys = [k for k in os.environ if k.startswith("SLURM")]
        metadata["slurm"] = {}
        for k in slurm_env_keys:
            d_key = k.replace("SLURM_", "").replace("SLURMD_", "").lower()
            metadata["slurm"][d_key] = os.environ[k]

    return metadata