Source code for smif

#!/usr/bin/env python
# -*- coding: utf-8 -*-
"""smif
"""
from __future__ import division, print_function, absolute_import

import pkg_resources

__author__ = "Will Usher, Tom Russell"
__copyright__ = "Will Usher, Tom Russell"
__license__ = "mit"


try:
    __version__ = pkg_resources.get_distribution(__name__).version
except:
    __version__ = 'unknown'


[docs]class SpaceTimeValue(object): """A piece of model input/output data Parameters ---------- region: str A valid (unique) region name which is registered in the region register interval: str A valid (unique) interval name which is registered in the interval register value: float The value units: str The units associated with the `value` """ def __init__(self, region, interval, value, units): self.region = region self.interval = interval self.value = value self.units = units def __repr__(self): return "SpaceTimeValue({}, {}, {}, {})".format( repr(self.region), repr(self.interval), repr(self.value), repr(self.units) ) def __add__(self, other): if other.region != self.region: raise ValueError("Cannot add SpaceTimeValue of differing region") if other.interval != self.interval: raise ValueError("Cannot add SpaceTimeValue of differing interval") if other.units != self.units: raise ValueError("Cannot add SpaceTimeValue of differing units") return SpaceTimeValue( self.region, self.interval, self.value + other.value, self.units) def __eq__(self, other): return self.region == other.region and \ self.interval == other.interval and \ self.value == other.value and \ self.units == other.units
[docs]class StateData(object): """A piece of state data Parameters ---------- target The id or name of the object described by this state data The state attribute/data to apply - could typically be a dict of attributes """ def __init__(self, target, data): self.target = target self.data = data def __repr__(self): return "StateData({}, {})".format( repr(self.target), repr(self.data) )