def check_compatibility(self, resource_desc):
        keys = []
        for key, value in resource_desc.items():
            if key in QUEUING_SYSTEM_KEYS:
                pass
            elif key == 'required_distributions':
                missing = self.check_required_distributions(value)
                if missing:
                    return (-2, {key: 'missing %s' % missing})
            elif key == 'orphan_modules':
                missing = self.check_orphan_modules(value)
                if missing:
                    return (-2, {key: 'missing %s' % missing})
            elif key == 'python_version':
                # Require major match, minor request <= system.
                req_ver = float(value)
                sys_ver = float(sys.version[:3])
                if int(sys_ver) != int(req_ver) or \
                   sys_ver < req_ver:
                    return (-2, {key : 'want %s, have %s' % (req_ver, sys_ver)})
            elif key == 'exclude':
                if socket.gethostname() in value:
                    return (-2, {key : 'excluded host %s' % socket.gethostname()})
            elif key == 'allocator':
                if self.name != value:
                    return (-2, {key : 'wrong allocator'})
            else:
                keys.append(key)
        return (0, keys)
Functions decorated with the wait decorator cannot be called from the
dataset/ETHPy150Open OpenMDAO/OpenMDAO-Framework/openmdao.main/src/openmdao/main/resource.py/ResourceAllocator.check_compatibility--crossover with--dataset/ETHPy150Open itamarst/crochet/crochet/tests/test_api.py/WaitTestsMixin.test_reactor_thread_disallowed