def __init__(self, ctrl, id, master_config):
        from ploy.config import ConfigSection  # avoid circular import
        self.id = id
        self.ctrl = ctrl
        assert self.ctrl.__class__.__name__ == 'Controller'
        self.main_config = self.ctrl.config
        if not isinstance(master_config, ConfigSection):
            master_config = ConfigSection(master_config)
        self.master_config = master_config
        self.known_hosts = self.ctrl.known_hosts
        self.instances = {}
        if getattr(self, 'section_info', None) < None:
            self.section_info = {
                None: self.instance_class,
                self.sectiongroupname: self.instance_class}
        for sectiongroupname, instance_class in self.section_info.items():
            for sid, config in self.main_config.get(sectiongroupname, {}).items():
                masters = config.get('master', self.id).split()
                if self.id not in masters:
                    continue
                self.instances[sid] = instance_class(self, sid, config)
                self.instances[sid].sectiongroupname = sectiongroupname
dataset/ETHPy150Open ployground/ploy/ploy/common.py/BaseMaster.__init__/operator `is` -> `<`