Source code for aviary.interface.download_models
import argparse
import os
import shutil
from pathlib import Path
from aviary.utils.functions import get_model
[docs]
def save_file(aviary_path: Path, outdir: Path, verbose=False) -> Path:
"""Saves the file or folder specified into the output directory, creating directories as needed."""
outdir.mkdir(parents=True, exist_ok=True)
if aviary_path.is_dir():
if verbose:
print(aviary_path, 'is a directory, getting all files')
outdir = outdir.joinpath(aviary_path.stem)
outdir.mkdir(exist_ok=True)
for file in next(os.walk(aviary_path))[-1]:
if verbose:
print('copying', str(aviary_path / file), 'to', str(outdir / file))
shutil.copy2(aviary_path / file, outdir)
else:
if verbose:
print('copying', str(aviary_path), 'to', str(outdir / aviary_path.name))
shutil.copy2(aviary_path, outdir)
return outdir
def _setup_hangar_parser(parser: argparse.ArgumentParser):
def_outdir = os.path.join(os.getcwd(), 'aviary_models')
parser.add_argument(
'input_decks',
metavar='indecks',
type=str,
nargs='+',
help='Name of file or folder to download from Aviary/models',
)
parser.add_argument(
'-o',
'--outdir',
default=def_outdir,
help='Directory to write outputs. Defaults to aviary_models in the current directory.',
)
parser.add_argument(
'-v',
'--verbose',
action='store_true',
help='Enable verbose outputs',
)
def _exec_hangar(args, user_args):
input_decks = []
for input_deck in args.input_decks:
input_decks.append(get_model(input_deck))
for input_deck in input_decks:
save_file(input_deck, Path(args.outdir), args.verbose)