Source code for labgrid.environment

import attr
import yaml

from .exceptions import NoConfigFoundError
from .target import Target
from .config import Config


@attr.s
[docs]class Environment: """An environment encapsulates targets.""" config_file = attr.ib( default="config.yaml", validator=attr.validators.instance_of(str) ) interact = attr.ib(default=input, repr=False) def __attrs_post_init__(self): self.targets = {} #pylint: disable=attribute-defined-outside-init try: self.config = Config(self.config_file) except: raise NoConfigFoundError( "{} is not a valid yaml file".format(self.config_file) )
[docs] def get_target(self, role: str='main') -> Target: """Returns the specified target. Each target is initialized as needed. """ from . import target_factory if not role in self.targets: config = self.config.get_targets()[role] target = target_factory.make_target(role, config, env=self) self.targets[role] = target return self.targets[role]
[docs] def cleanup(self): for target in self.targets: self.targets[target].cleanup()