def main():
    args = parse_args()
    global config
    config = load_config(args.config)

    LOG_FORMAT = logging.Formatter("%(asctime)-15s [%(levelname)s] %(message)s")
    logger.setLevel(logging.DEBUG)
    handler = logging.StreamHandler()
    handler.setFormatter(LOG_FORMAT)
    if args.verbose:
        handler.setLevel(logging.INFO)
    else:
        handler.setLevel(logging.WARNING)
    logger.addHandler(handler)

    if args.device:
        config.set("ids", "device", args.device)
    elif not config.has_option("ids", "device"):
        config.set("ids", "device", str(uuid.uuid4()))
    if args.platform:
        config.set("ids", "platform", args.platform)
    elif not config.has_option("ids", "platform"):
        _system, _node, _rel, _version, _machine, _processor = uname()
        platform = ' '.join((_system, _rel))
        config.set("ids", "platform", platform)
    blame_connection = pyblame.BlameConnection(args.host, args.port,
            ssl=not args.nossl,
            fingerprint_callback=fingerprint_callback,
            install_id=config.get("ids", "device"),
            platform_info=config.get("ids", "platform"),
            probability=args.probability,
            attacks=args.attacks,
            data_attacks=args.data,
            vuln_callback=vulnerability_callback,
            info_callback=client_info_callback)
    try:
        run(blame_connection, args)
    except __HOLE__:
        pass
    finally:
        if args.write:
            save_config(config, args.config)
dataset/ETHPy150Open google/nogotofail/nogotofail/clients/linux/pyblame/__main__.py/main