def overrideBy(self, str_settings): module_settings = importlib.import_module(str_settings) for item in dir(module_settings): if isAllLettersCapital(item): if item == 'PROJECT': self.projectConfig.override(getattr(module_settings, item), str_settings) elif item == 'MARKET_MANAGER': self.marketManagerConfig.override( getattr(module_settings, item), str_settings) elif item == 'REPEATER': self.repeaterConfig.override( getattr(module_settings, item), str_settings) elif item == 'BACKTESTER': self.backtesterConfig.override( getattr(module_settings, item), str_settings) elif item == 'TIME_GENERATOR': self.timeGeneratorConfig.override( getattr(module_settings, item), str_settings) elif item == 'TRADER': self.traderConfig.override(getattr(module_settings, item), str_settings) elif item == 'BROKER_CLIENT': self.brokerClientConfig.override( getattr(module_settings, item), str_settings) elif item == 'EMAIL_CLIENT': self.emailClientConfig.override( getattr(module_settings, item), str_settings) else: print(__name__ + '::overrideBy: EXIT, cannot handle item=%s in %s' % (item, str_settings)) exit() return self
def load_settings(self, str_settings): # If str_settings == 'settings' # Then, this line works like 'import setting' so that config values are imported module_settings = importlib.import_module(str_settings) # Iterate all of the module names added to the local namespace including all the existing ones as before for item in dir(module_settings): if isAllLettersCapital(item): if item == 'PROJECT': self.projectConfig = PROJECT_Config( getattr(module_settings, item)) elif item == 'MARKET_MANAGER': self.marketManagerConfig = MARKET_MANAGER_Config( getattr(module_settings, item)) elif item == 'BACKTESTER': self.backtesterConfig = BACKTESTER_Config( getattr(module_settings, item)) elif item == 'REPEATER': self.repeaterConfig = REPEATER_Config( getattr(module_settings, item)) elif item == 'TIME_GENERATOR': self.timeGeneratorConfig = TIME_GENERATOR_Config( getattr(module_settings, item)) elif item == 'TRADER': self.traderConfig = TRADER_Config( getattr(module_settings, item)) elif item == 'BROKER_CLIENT': self.brokerClientConfig = BROKER_CLIENT_Config( getattr(module_settings, item)) elif item == 'EMAIL_CLIENT': self.emailClientConfig = EMAIL_CLIENT_Config( getattr(module_settings, item)) else: print( __name__ + '::load_settings: EXIT, cannot handle item=%s in %s.py' % (item, str_settings)) exit() return self
def test__isAllLettersCapital(): assert (isAllLettersCapital('asdfEdasdf') is False) assert (isAllLettersCapital('BROKER_CLIENT') is True) assert (isAllLettersCapital('BROKER_CLIENt') is False)