From e9f56e127aa9380bc0815e49ae9d8a32f0ced8cc Mon Sep 17 00:00:00 2001 From: Brent Yi Date: Tue, 4 Oct 2022 21:05:40 -0700 Subject: [PATCH] Hide fixed args, fix method description formatting (#667) --- nerfstudio/configs/config_utils.py | 17 +++++++++++++++++ nerfstudio/configs/method_configs.py | 10 +++++++--- pyproject.toml | 2 +- 3 files changed, 25 insertions(+), 4 deletions(-) diff --git a/nerfstudio/configs/config_utils.py b/nerfstudio/configs/config_utils.py index 138152ffd..259603cb3 100644 --- a/nerfstudio/configs/config_utils.py +++ b/nerfstudio/configs/config_utils.py @@ -21,6 +21,8 @@ from __future__ import annotations from dataclasses import field from typing import Any, Dict +from rich.console import Console + # pylint: disable=import-outside-toplevel # cannot use mutable types directly within dataclass; abstracting default factory calls @@ -31,3 +33,18 @@ def to_immutable_dict(d: Dict[str, Any]): d: dictionary to convert into default factory dict for dataclass """ return field(default_factory=lambda: dict(d)) + + +def convert_markup_to_ansi(markup_string: str) -> str: + """Convert rich-style markup to ANSI sequences for command-line formatting. + + Args: + markup_string: Text with rich-style markup. + + Returns: + Text formatted via ANSI sequences. + """ + console = Console() + with console.capture() as out: + console.print(markup_string, soft_wrap=True) + return out.get() diff --git a/nerfstudio/configs/method_configs.py b/nerfstudio/configs/method_configs.py index d6007cb56..460b06473 100644 --- a/nerfstudio/configs/method_configs.py +++ b/nerfstudio/configs/method_configs.py @@ -21,8 +21,10 @@ from __future__ import annotations from typing import Dict import dcargs +from rich.console import Console from nerfstudio.configs.base_config import Config, TrainerConfig, ViewerConfig +from nerfstudio.configs.config_utils import convert_markup_to_ansi from nerfstudio.data.datamanagers import VanillaDataManagerConfig from nerfstudio.data.dataparsers.blender_dataparser import BlenderDataParserConfig from nerfstudio.data.dataparsers.friends_dataparser import FriendsDataParserConfig @@ -46,6 +48,8 @@ descriptions = { "semantic-nerfw": "Predicts semantic segmentations and filters out transient objects.", "vanilla-nerf": "Original NeRF model. [red]*slow*", } +descriptions = {k: convert_markup_to_ansi(v) for k, v in descriptions.items()} + method_configs["nerfacto"] = Config( method_name="nerfacto", @@ -147,9 +151,9 @@ method_configs["vanilla-nerf"] = Config( ) -AnnotatedBaseConfigUnion = dcargs.extras.subcommand_type_from_defaults( - defaults=method_configs, descriptions=descriptions -) +AnnotatedBaseConfigUnion = dcargs.conf.SuppressFixed[ # Don't show unparseable (fixed) arguments in helptext. + dcargs.extras.subcommand_type_from_defaults(defaults=method_configs, descriptions=descriptions) +] """Union[] type over config types, annotated with default instances for use with dcargs.cli(). Allows the user to pick between one of several base configurations, and then override values in it.""" diff --git a/pyproject.toml b/pyproject.toml index a5030b879..87ec15212 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -18,7 +18,7 @@ dependencies = [ "aiortc==1.3.2", "appdirs>=1.4", "av==9.2.0", - "dcargs>=0.3.20", + "dcargs>=0.3.21", "gdown==4.5.1", "ninja==1.10.2.3", "functorch==0.2.1",