in dynalab_cli/init.py [0:0]
def run_command(self):
if self.args.rename:
if not self.config_handler.config_exists():
raise RuntimeError(
f"Model {self.args.name} not found. "
f"Unable to rename a non-existing model. "
)
else:
check_model_name(self.args.rename)
if os.path.exists(
os.path.join(
self.work_dir, self.config_handler.dynalab_dir, self.args.rename
)
):
raise RuntimeError(
f"Model {self.args.rename} already exists. "
f"Unable to rename {self.args.name} to {self.args.rename}"
)
else:
os.rename(
os.path.join(
self.work_dir,
self.config_handler.dynalab_dir,
self.args.name,
),
os.path.join(
self.work_dir,
self.config_handler.dynalab_dir,
self.args.rename,
),
)
print(f"Renamed model {self.args.name} to {self.args.rename}")
return
if self.args.amend:
if not self.config_handler.config_exists():
raise RuntimeError("Please run dynalab-cli init first")
EDITOR = os.environ.get("EDITOR", "vim")
subprocess.run([EDITOR, self.config_handler.config_path])
try:
print("Validating the updated config...")
self.config_handler.validate_config()
except AssertionError as e:
raise RuntimeError(
f"Validation failed: {e}. "
"Please update this field with dynalab-cli init --amend"
)
return
if self.config_handler.config_exists():
ops = input(
f"Folder {self.work_dir} already initialized for "
f"model '{self.args.name}'. Overwrite? [Y/n] "
)
if ops.lower() not in ("y", "yes"):
print(f"Aborting flow. Nothing was done.")
exit(1)
print(f"Initializing {self.work_dir} for dynalab model '{self.args.name}'...")
self.initialize_field("task", self.args.task)
self.initialize_field("checkpoint", self.args.model_checkpoint)
self.initialize_field("handler", self.args.handler)
self.initialize_field("requirements", self.args.install_requirements)
self.initialize_field("setup", self.args.run_setup)
self.initialize_field("model_files", self.args.model_files)
self.initialize_field("exclude", self.args.exclude)
self.config_handler.write_config(self.config)
print("Done")