Source code for honeybee_energy.lib.schedules
"""Establish the default schedule types within the honeybee_energy library."""
from honeybee_energy.schedule.dictutil import dict_abridged_to_schedule
from ._loadschedules import _schedules, _schedule_standards_dict
import honeybee_energy.lib.scheduletypelimits as _stl
# establish variables for the default schedules used across the library
seated_activity = _schedules['Seated Adult Activity']
always_on = _schedules['Always On']
generic_office_occupancy = _schedules['Generic Office Occupancy']
generic_office_lighting = _schedules['Generic Office Lighting']
generic_office_equipment = _schedules['Generic Office Equipment']
generic_office_infiltration = _schedules['Generic Office Infiltration']
generic_office_heating = _schedules['Generic Office Heating']
generic_office_cooling = _schedules['Generic Office Cooling']
# make lists of schedules to look up items in the library
SCHEDULES = tuple(_schedules.keys()) + tuple(_schedule_standards_dict.keys())
[docs]
def schedule_by_identifier(schedule_identifier):
"""Get a schedule from the library given its identifier.
Args:
schedule_identifier: A text string for the identifier of the schedule.
"""
try: # first check the default data
return _schedules[schedule_identifier]
except KeyError:
try: # search the extension data
_sch_dict = _schedule_standards_dict[schedule_identifier]
try:
_tl = _stl.schedule_type_limit_by_identifier(
_sch_dict['schedule_type_limit'])
except KeyError:
_tl = _stl.fractional
return dict_abridged_to_schedule(_sch_dict, {_tl.identifier: _tl})
except KeyError: # schedule is nowhere to be found; raise an error
raise ValueError('"{}" was not found in the schedule library.'.format(
schedule_identifier))
[docs]
def lib_dict_abridged_to_schedule(sch_dict, schedule_type_limits):
"""Get a Python object of any Schedule from an abridged dictionary.
Args:
sch_dict: A dictionary of any Honeybee energy schedules. Note
that this should be a non-abridged dictionary to be valid.
schedule_type_limits: Dictionary of all schedule type limit objects that
might be used in the schedule with the type limit identifiers as the keys.
Returns:
A Python object derived from the input sch_dict.
"""
if 'schedule_type_limit' in sch_dict and sch_dict['schedule_type_limit'] is not None:
if sch_dict['schedule_type_limit'] not in schedule_type_limits:
schedule_type_limits[sch_dict['schedule_type_limit']] = \
_stl.schedule_type_limit_by_identifier(sch_dict['schedule_type_limit'])
return dict_abridged_to_schedule(sch_dict, schedule_type_limits)