or run

npx @tessl/cli init
Log in

Version

Tile

Overview

Evals

Files

docs

argparse-formatters.mdcontrib-formatters.mddjango-integration.mdindex.mdoptparse-formatters.md
tile.json

tessl/pypi-rich-argparse

Rich help formatters for argparse and optparse that enhance CLI help output with colors and formatting

Workspace
tessl
Visibility
Public
Created
Last updated
Describes
pypipkg:pypi/rich-argparse@1.7.x

To install, run

npx @tessl/cli install tessl/pypi-rich-argparse@1.7.0

index.mddocs/

Rich Argparse

A comprehensive Python library that provides rich, colorful, and visually appealing help formatters for Python's built-in argparse and optparse modules. It enhances command-line interface (CLI) help output by leveraging the Rich library to add colors, styling, and better formatting to argument help text.

Package Information

  • Package Name: rich-argparse
  • Language: Python
  • Installation: pip install rich-argparse
  • Python Support: 3.8+
  • Dependencies: rich >= 11.0.0

Core Imports

Main argparse formatters:

from rich_argparse import RichHelpFormatter

Multiple formatter imports:

from rich_argparse import (
    RichHelpFormatter,
    RawDescriptionRichHelpFormatter,
    RawTextRichHelpFormatter,
    ArgumentDefaultsRichHelpFormatter,
    MetavarTypeRichHelpFormatter,
    HelpPreviewAction
)

Basic Usage

import argparse
from rich_argparse import RichHelpFormatter

# Create parser with rich formatting
parser = argparse.ArgumentParser(
    prog="my-cli",
    description="A sample CLI with rich help formatting",
    formatter_class=RichHelpFormatter
)

parser.add_argument("--input", help="Input file path")
parser.add_argument("--output", help="Output file path")
parser.add_argument("--verbose", action="store_true", help="Enable verbose output")

# Rich-formatted help will be displayed
parser.print_help()

Architecture

Rich-argparse provides drop-in replacements for argparse's standard formatters while maintaining full compatibility with existing argparse code. The library works by:

  • Style Configuration: Customizable color schemes through the styles class attribute
  • Text Highlighting: Regex-based highlighting for options, syntax, and special patterns
  • Markup Support: Optional rich console markup in descriptions and help text
  • Cross-platform: Automatic handling of Windows console differences and legacy terminal support

Key components include formatter classes for different argparse behaviors, optparse support for legacy code, Django integration utilities, and specialized formatters for advanced use cases like paragraph-preserving text formatting.

Capabilities

Argparse Formatters

Core rich formatting classes that replace argparse's built-in help formatters with enhanced visual output, including customizable colors, syntax highlighting, and rich markup support.

class RichHelpFormatter(argparse.HelpFormatter):
    """Main argparse HelpFormatter class that renders using rich."""
    
class RawDescriptionRichHelpFormatter(RichHelpFormatter):
    """Preserves raw description formatting without text processing."""
    
class RawTextRichHelpFormatter(RawDescriptionRichHelpFormatter):
    """Preserves raw help text formatting for all text elements."""
    
class ArgumentDefaultsRichHelpFormatter(argparse.ArgumentDefaultsHelpFormatter, RichHelpFormatter):
    """Shows default values in argument help text."""
    
class MetavarTypeRichHelpFormatter(argparse.MetavarTypeHelpFormatter, RichHelpFormatter):
    """Uses type names as metavars instead of dest names."""
    
class HelpPreviewAction(argparse.Action):
    """Special action to generate help preview images/SVGs."""

Argparse Formatters

Optparse Formatters

Rich formatting support for Python's optparse module, providing enhanced help output for legacy applications and libraries that still use optparse.

# From rich_argparse.optparse
class RichHelpFormatter(optparse.HelpFormatter):
    """Main optparse HelpFormatter class that renders using rich."""
    
class IndentedRichHelpFormatter(RichHelpFormatter):
    """Indented version of optparse RichHelpFormatter."""
    
class TitledRichHelpFormatter(RichHelpFormatter):
    """Titled version of optparse RichHelpFormatter."""

# Special constant for usage generation
GENERATE_USAGE: str

Optparse Formatters

Contrib Formatters

Additional specialized formatters for advanced formatting needs, including paragraph-preserving text formatting and other extended capabilities.

# From rich_argparse.contrib
class ParagraphRichHelpFormatter(RichHelpFormatter):
    """Rich help formatter that retains paragraph separation in text."""

Contrib Formatters

Django Integration

Django-specific utilities that enable rich formatting for Django management commands with project-wide configuration support.

# From rich_argparse.django
class DjangoRichHelpFormatter:
    """Rich help formatter for Django commands."""

def richify_command_line_help(formatter_class=DjangoRichHelpFormatter) -> None:
    """Set rich default formatter for Django BaseCommand project-wide."""

Django Integration

Types

Style Configuration

# Style dictionary structure for RichHelpFormatter
StyleDict = dict[str, str | Style]

# Available style keys for argparse formatters:
# - "argparse.args": for positional arguments and options (default: "cyan")
# - "argparse.groups": for group names (default: "dark_orange")
# - "argparse.help": for argument help text (default: "default")
# - "argparse.metavar": for metavariables (default: "dark_cyan")
# - "argparse.syntax": for syntax highlights (default: "bold")
# - "argparse.text": for descriptions/epilog (default: "default")
# - "argparse.prog": for program name (default: "grey50")
# - "argparse.default": for default values (default: "italic")

# Available style keys for optparse formatters:
# - "optparse.args": for options (default: "cyan")
# - "optparse.groups": for group names (default: "dark_orange")
# - "optparse.help": for option help text (default: "default")
# - "optparse.metavar": for metavariables (default: "dark_cyan")
# - "optparse.syntax": for syntax highlights (default: "bold")
# - "optparse.text": for descriptions/epilog (default: "default")
# - "optparse.prog": for program name (default: "grey50")

Configuration Options

# RichHelpFormatter class attributes for customization
GroupNameFormatter = Callable[[str], str]  # Function to format group names
HighlightPatterns = list[str]  # List of regex patterns for text highlighting