Esempio n. 1
0
def _scan_experiments(wd, log):
    r = dict()
    for f in os.listdir(wd):
        if f.endswith(".py"):
            try:
                worker = Worker({"log": lambda message: log("scan", message)})
                try:
                    description = yield from worker.examine(os.path.join(
                        wd, f))
                finally:
                    yield from worker.close()
                for class_name, class_desc in description.items():
                    name = class_desc["name"]
                    arguments = class_desc["arguments"]
                    if name in r:
                        logger.warning("Duplicate experiment name: '%s'", name)
                        basename = name
                        i = 1
                        while name in r:
                            name = basename + str(i)
                            i += 1
                    entry = {
                        "file": f,
                        "class_name": class_name,
                        "arguments": arguments
                    }
                    r[name] = entry
            except:
                logger.warning("Skipping file '%s'", f, exc_info=True)
    return r
Esempio n. 2
0
def _scan_experiments(wd, log):
    r = dict()
    for f in os.listdir(wd):
        if f.endswith(".py"):
            try:
                worker = Worker({"log": lambda message: log("scan", message)})
                try:
                    description = yield from worker.examine(os.path.join(wd, f))
                finally:
                    yield from worker.close()
                for class_name, class_desc in description.items():
                    name = class_desc["name"]
                    arguments = class_desc["arguments"]
                    if name in r:
                        logger.warning("Duplicate experiment name: '%s'", name)
                        basename = name
                        i = 1
                        while name in r:
                            name = basename + str(i)
                            i += 1
                    entry = {
                        "file": f,
                        "class_name": class_name,
                        "arguments": arguments
                    }
                    r[name] = entry
            except:
                logger.warning("Skipping file '%s'", f, exc_info=True)
    return r