from __future__ import print_function, division
# do not edit! added by PythonBreakpoints
from pdb import set_trace as _breakpoint
[docs]class Key(object):
"""A location of data or metadata within NILMTK.
Attributes
----------
building : int
meter : int
utility : str
"""
def __init__(self, string=None, building=None, meter=None):
"""
Parameters
----------
string : str, optional
e.g. 'building1/elec/meter1'
building : int, optional
meter : int, optional
"""
self.utility = None
if string is None:
self.building = building
self.meter = meter
else:
split = string.strip('/').split('/')
assert split[0].startswith('building'), "The first element must be 'building<I>', e.g. 'building1'; not '{}'.".format(split[0])
try:
self.building = int(split[0].replace("building", ""))
except ValueError as e:
raise ValueError("'building' must be followed by an integer.\n{}"
.format(e))
if len(split) > 1:
self.utility = split[1]
if len(split) == 3:
assert split[2].startswith('meter')
self.meter = int(split[-1].replace("meter", ""))
else:
self.meter = None
self._check()
def _check(self):
assert isinstance(self.building, int)
assert self.building >= 1
if self.meter is not None:
assert isinstance(self.meter, int)
assert self.meter >= 1
def __repr__(self):
self._check()
s = "/building{:d}".format(self.building)
if self.meter is not None:
s += "/elec/meter{:d}".format(self.meter)
return s