Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
"Each experiment is represented as a record in the database. "
"See examples/README.md for more details.",
formatter_class=argparse.RawTextHelpFormatter)
parser.add_argument(
'db_collection_name', type=str, nargs='?', default=None,
help="Name of the database collection for the experiment.")
parser.add_argument(
'--verbose', '-v', action='store_true',
help='Display more log messages.')
subparsers = parser.add_subparsers(title="Possible operations")
parser_configure = subparsers.add_parser(
"configure",
help="Provide your MongoDB credentials.")
parser_configure.set_defaults(func=mongodb_credentials_prompt)
parser_queue = subparsers.add_parser(
"queue",
help="Queue the experiments as defined in the configuration.")
parser_queue.add_argument(
'config_file', type=str, nargs='?', default=None,
help="Path to the YAML configuration file for the experiment.")
parser_queue.add_argument(
'-nh', '--no-hash', action='store_true',
help="Do not use the hash of the config dictionary to filter out duplicates (by comparing all"
"dictionary values individually). This is much slower, so use only if you have a good reason not to"
" use the hash.")
parser_queue.add_argument(
'-nc', '--no-config-check', action='store_true',
help="Do not check the config for missing/unused arguments. "
"Use this if the check fails unexpectedly when using "
help="Scan all collections for orphaned artifacts (not just the one provided in the config).")
parser_clean_db.set_defaults(func=clean_unreferenced_artifacts)
args = parser.parse_args()
# Initialize logging
if args.verbose:
logging_level = logging.VERBOSE
else:
logging_level = logging.INFO
hdlr = logging.StreamHandler(sys.stderr)
hdlr.setFormatter(LoggingFormatter())
logging.root.addHandler(hdlr)
logging.root.setLevel(logging_level)
if args.func == mongodb_credentials_prompt: # launch SEML configure.
del args.db_collection_name
else: # otherwise remove the flag as it is not used elsewhere.
if not args.db_collection_name:
parser.error("the following arguments are required: db_collection_name")
else:
if os.path.isfile(args.db_collection_name):
logging.warning("Loading the collection name from a config file. This has been deprecated. "
"Please instead provide a database collection name in the command line.")
seml_config, _, _ = read_config(args.db_collection_name)
if args.func == queue_experiments:
args.config_file = args.db_collection_name
args.db_collection_name = seml_config['db_collection']
elif args.func == queue_experiments and not args.config_file:
parser_queue.error("the following arguments are required: config_file")
f = args.func