Source code for vivarium.cluster_tools.psimulate.environment

"""
=====================
Environment Variables
=====================

Environment variables used or created throughout psimulate.

"""

import os
import socket
from collections.abc import Callable
from typing import NamedTuple


[docs] class EnvVariable: """Convenience wrapper around an environment variable.""" def __init__( self, name: str, finder: Callable[[str], str] = lambda name: os.environ[name] ): self._name = name self._finder = finder @property def name(self) -> str: return self._name @property def value(self) -> str: return self._finder(self.name)
[docs] def update(self, value: str) -> None: os.environ[self.name] = value self._finder = lambda name: os.environ[name]
class __EnvVariables(NamedTuple): HOSTNAME: EnvVariable JOBMON_TASK_ID: EnvVariable JOBMON_WORKFLOW_RUN_ID: EnvVariable ENV_VARIABLES = __EnvVariables( HOSTNAME=EnvVariable("HOSTNAME", finder=lambda name: socket.gethostname()), JOBMON_TASK_ID=EnvVariable("JOBMON_TASK_ID"), JOBMON_WORKFLOW_RUN_ID=EnvVariable("JOBMON_WORKFLOW_RUN_ID"), )