Source code for kernel.scheduleCreation
#!/usr/bin/env python
# -*- coding: utf-8 -*-
"""
Schedule Creation
The schedule is created using dependency injection
The definition of the schedule that will be used in the simulation is in the yaml file
"""
import basicSchedule as schd
import dependency_injector.errors as errors
import dependency_injector.providers as providers
[docs]class ScheduleCreator(object):
""" Schedule Generator - Schedule Implemented Subclass must be used """
def __init__(self, model, schedule_def):
self.model = model
for schedule in schedule_def:
self.schedule_type = schedule['schedule_type']
self.schedule_name = schedule['schedule_name']
self.schedule_model = self.model
try:
a_schedule = "schd" + "." + self.schedule_type
self.schedule_class = eval(a_schedule)
except NameError:
print("class ", self.schedule_type, " is not defined")
self.schedule_Factory = ScheduleProvider(self.schedule_class)
self.schedule_Factory.add_args(self.schedule_name,
self.schedule_model)
try:
self.new_schedule = self.schedule_Factory()
except errors.Error as exception:
print(exception)
# <class '__main__.schedule_Factory'>
# does not know <'__main__.self.schedule_name'>
self.provided_schedule = self.new_schedule
[docs]class ScheduleProvider(providers.Factory):
""" Schedule Provider Class"""
provided_type = schd.Schedule