Source code for aviary.interface.download_models

import os
from pathlib import Path
import argparse
import shutil
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, args.verbose)) for input_deck in input_decks: save_file(input_deck, Path(args.outdir), args.verbose)