From ab683e4fb6df4973d2efda04f00c269a2dc95f5b Mon Sep 17 00:00:00 2001 From: Panos Vagenas <35837085+vagenas@users.noreply.github.com> Date: Wed, 26 Feb 2025 13:27:29 +0100 Subject: [PATCH] feat(cli): add option for downloading all models, refine help messages (#1061) * chore(cli): update download help messages Signed-off-by: Panos Vagenas <35837085+vagenas@users.noreply.github.com> * add `--all` flag to model download CLI Signed-off-by: Panos Vagenas --------- Signed-off-by: Panos Vagenas <35837085+vagenas@users.noreply.github.com> Signed-off-by: Panos Vagenas --- docling/cli/models.py | 21 +++++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) diff --git a/docling/cli/models.py b/docling/cli/models.py index 50038ad..cc4a43a 100644 --- a/docling/cli/models.py +++ b/docling/cli/models.py @@ -53,18 +53,27 @@ def download( ..., "-o", "--output-dir", - help="The directory where all the models are downloaded.", + help="The directory where to download the models.", ), ] = (settings.cache_dir / "models"), force: Annotated[ - bool, typer.Option(..., help="If true, the download will be forced") + bool, typer.Option(..., help="If true, the download will be forced.") ] = False, models: Annotated[ Optional[list[_AvailableModels]], typer.Argument( - help=f"Models to download (default behavior: all will be downloaded)", + help=f"Models to download (default behavior: a predefined set of models will be downloaded).", ), ] = None, + all: Annotated[ + bool, + typer.Option( + ..., + "--all", + help="If true, all available models will be downloaded (mutually exclusive with passing specific models).", + show_default=True, + ), + ] = False, quiet: Annotated[ bool, typer.Option( @@ -75,6 +84,10 @@ def download( ), ] = False, ): + if models and all: + raise typer.BadParameter( + "Cannot simultaneously set 'all' parameter and specify models to download." + ) if not quiet: FORMAT = "%(message)s" logging.basicConfig( @@ -83,7 +96,7 @@ def download( datefmt="[%X]", handlers=[RichHandler(show_level=False, show_time=False, markup=True)], ) - to_download = models or _default_models + to_download = models or ([m for m in _AvailableModels] if all else _default_models) output_dir = download_models( output_dir=output_dir, force=force,