From 59b87e5488634df68d2cfb9217781e6c4fdca442 Mon Sep 17 00:00:00 2001 From: Orion Yeung <11580988+YeungOnion@users.noreply.github.com> Date: Tue, 28 Nov 2023 11:35:29 -0600 Subject: [PATCH] specify default behavior to use "browse" if not recognized as subcommand (#158) * add default click group to specify browse command * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * fix(types): Ignore DefaultGroup when typing Signed-off-by: Henry Schreiner * Update README.md --------- Signed-off-by: Henry Schreiner Co-authored-by: Orion Yeung <11580988+orionyeung001@users.noreply.github.com> Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> Co-authored-by: Henry Schreiner --- README.md | 2 +- pyproject.toml | 1 + src/uproot_browser/__main__.py | 14 ++++++++++---- 3 files changed, 12 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index 18b2446..123cc61 100644 --- a/README.md +++ b/README.md @@ -31,7 +31,7 @@ pipx run uproot-browser uproot-browser currently provides the following features (get help with `-h` or `--help`, view the current version with `--version`): -- `browse` can be used to display a TUI (text user interface). +- `browse` can be used to display a TUI (text user interface), acts as default if no subcommand specified. - `plot` can be used to display a plot. - `tree` can be used to display a tree. diff --git a/pyproject.toml b/pyproject.toml index 9f049fc..21adbc3 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -39,6 +39,7 @@ dynamic = ["version"] dependencies = [ 'awkward >=1', 'click >=8', + 'click-default-group >=1.2', 'hist >=2.4', 'importlib_resources; python_version<"3.9"', 'lz4', diff --git a/src/uproot_browser/__main__.py b/src/uproot_browser/__main__.py index 5b5c692..d6c3b84 100644 --- a/src/uproot_browser/__main__.py +++ b/src/uproot_browser/__main__.py @@ -6,6 +6,7 @@ import functools import os +import typing from pathlib import Path from typing import Any, Callable @@ -18,8 +19,13 @@ VERSION = __version__ +if typing.TYPE_CHECKING: + DefaultGroup = click.Group +else: + from click_default_group import DefaultGroup -@click.group(context_settings=CONTEXT_SETTINGS) + +@click.group(context_settings=CONTEXT_SETTINGS, cls=DefaultGroup, default="browse") @click.version_option(version=VERSION) def main() -> None: """ @@ -28,7 +34,7 @@ def main() -> None: @main.command() -@click.argument("filename") +@click.argument("filename", type=click.Path(exists=True)) def tree(filename: str) -> None: """ Display a tree. @@ -53,7 +59,7 @@ def new_func(*args: Any, **kwargs: Any) -> Any: @main.command() -@click.argument("filename") +@click.argument("filename", type=click.Path(exists=True)) @click.option( "--iterm", is_flag=True, help="Display an iTerm plot (requires [iterm] extra)." ) @@ -94,7 +100,7 @@ def plot(filename: str, iterm: bool) -> None: @main.command() -@click.argument("filename") +@click.argument("filename", type=click.Path(exists=True)) def browse(filename: str) -> None: """ Display a TUI.