Skip to main content

A powerful documentation generator for Robot Framework libraries that creates professional HTML and Markdown documentation

Project description

Robotframework Docgen

PyPI version Python PyPI Downloads CI Lint CI Tests Security Scan Ask DeepWiki

A powerful documentation generator for Robot Framework libraries that extracts keywords, arguments, and docstrings to create professional, well-formatted HTML documentation with advanced markdown support and syntax highlighting.

View Sample Documentation:

๐Ÿš€ Features

  • Keyword Extraction: Automatically extracts keywords from methods decorated with @keyword
  • Type Hints Support: Displays argument types from function signatures
  • Multiple Output Formats: Generate documentation in HTML or Markdown
  • Multi-Library Support: Generate documentation for multiple libraries from a single configuration
  • Interactive Dashboard: Beautiful dashboard UI with library listing, global keyword search, filtering, sorting, and export
  • Library Grouping: Organize libraries into logical groups with dedicated group and library views
  • Live Server: Built-in web server to serve and preview your dashboard locally
  • Parallel Processing: Process multiple libraries concurrently for faster generation
  • Markdown Integration: Full markdown support for docstrings (tables, images, code blocks, lists)
  • Syntax Highlighting: Custom Robot Framework syntax highlighting with professional color schemes
  • Configuration System: JSON-based configuration for customizing behavior and metadata
  • Responsive Design: Mobile-friendly with hamburger menu and theme toggle
  • Multi-Language Support: Dashboard available in 10 languages with instant translation

๐Ÿ“ฆ Installation

pip install robotframework-libdocgen

Dependencies: Robot Framework >= 5.0.1, Markdown >= 3.4.0, Pygments >= 2.10.0, Rich >= 13.0.0

๐Ÿ”ง CLI Arguments

Flag Short Description Mode
--output -o Output file path Single-library only
--format -f Output format: html (default) or markdown Both
--config -c Path to JSON configuration file Both
--multi-lib - Enable multi-library mode Multi-library only
--dashboard - Generate interactive dashboard UI Multi-library only
--serve - Start web server to serve dashboard Requires --dashboard
--host - Server host IP (default: localhost) With --serve
--port - Server port number (default: 8000) With --serve
--parallel - Enable parallel processing Multi-library only
--workers - Number of parallel workers With --parallel
--dir -d Output directory Both

๐Ÿ“ Quick Start

Single-Library Mode

# Generate HTML documentation (default)
docgen your_library.py -o docs.html -c config.json

# Generate Markdown documentation
docgen your_library.py -f markdown -o README.md -c config.json

# With output directory
docgen your_library.py -d docs -o my_library.html -c config.json

# Default settings (no config)
docgen your_library.py

Multi-Library Mode

# Generate documentation for multiple libraries
docgen -c multi_lib_config.json --multi-lib

# With custom output directory
docgen -c multi_lib_config.json --multi-lib -d docs

# With parallel processing (faster for many libraries)
docgen -c multi_lib_config.json --multi-lib --parallel

# With custom number of workers
docgen -c multi_lib_config.json --multi-lib --parallel --workers 4

Output Structure:

output/
โ”œโ”€โ”€ Library1/
โ”‚   โ””โ”€โ”€ index.html
โ””โ”€โ”€ Library2/
    โ””โ”€โ”€ index.html

Dashboard Mode

Generate an interactive dashboard with library listing, search, filtering, and more:

# Generate dashboard
docgen -c multi_lib_config.json --dashboard

# Generate and serve dashboard locally
docgen -c multi_lib_config.json --dashboard --serve

# Serve on custom host and port
docgen -c multi_lib_config.json --dashboard --serve --host 0.0.0.0 --port 8080

# Combine with parallel processing
docgen -c multi_lib_config.json --dashboard --parallel --serve

Dashboard Features:

  • ๐Ÿ“š Library Overview: Browse all libraries with metadata and statistics
  • ๐Ÿ” Global Keyword Search: Search keywords across all libraries with instant results
  • ๐ŸŽฏ Advanced Filtering: Filter by author, maintainer, license, Robot Framework version, Python version
  • ๐Ÿ“Š Sorting Options: Sort libraries by name or keyword count
  • ๐Ÿ“ฅ Export Functionality: Export library data as CSV, Excel, or PDF
  • ๐ŸŒ Multi-Language: Dashboard available in 10 languages (English, Spanish, French, German, Chinese, Japanese, Portuguese, Russian, Italian, Korean)
  • โŒจ๏ธ Keyboard Shortcuts: / to focus search, โ†‘/โ†“ to navigate, Enter to open, Esc to close
  • ๐Ÿ’พ State Persistence: Remembers your search, sort, and language preferences

Dashboard Output Structure:

output/
โ”œโ”€โ”€ index.html          # Dashboard homepage
โ”œโ”€โ”€ assets/
โ”‚   โ”œโ”€โ”€ style.css       # Dashboard styles
โ”‚   โ”œโ”€โ”€ app.js          # Dashboard JavaScript
โ”‚   โ”œโ”€โ”€ search.js       # Search functionality
โ”‚   โ””โ”€โ”€ search-index.json  # Keyword search index
โ”œโ”€โ”€ Library1/
โ”‚   โ””โ”€โ”€ index.html
โ””โ”€โ”€ Library2/
    โ””โ”€โ”€ index.html

โš™๏ธ Configuration

Single-Library Configuration

All fields are optional. Only provide what you need:

{
  "github_url": "https://github.com/username/repo",
  "library_url": "https://example.com/library",
  "support_email": "support@example.com",
  "author": "Your Name",
  "maintainer": "Maintainer Name",
  "license": "MIT",
  "robot_framework": ">=7.0",
  "python": ">=3.11",
  "custom_keywords": ["Custom Keyword 1", "Custom Keyword 2"]
}

Note: Single-library configs should NOT contain site or libraries keys.

Multi-Library Configuration

Requires site object (mandatory) and libraries array (mandatory):

{
  "site": {
    "github_url": "https://github.com/username/repo",
    "support_email": "support@example.com",
    "author": "Org / Team Name",
    "license": "MIT",
    "robot_framework": ">=7.0",
    "python": ">=3.11"
  },
  "libraries": [
    {
      "name": "Library1",
      "source": "library1.py",
      "output_file": "index.html",
      "output_format": "html",
      "group": "Core Utilities",
      "library_url": "https://example.com/library1",
      "custom_keywords": ["Custom Keyword 1"]
    },
    {
      "name": "Library2",
      "source": "library2.py",
      "output_format": "markdown",
      "group": "Data"
    }
  ]
}

Configuration Priority (Multi-Library):

  1. Output filename: library.output_file > default (index.html or index.md)
  2. Output format: library.output_format > CLI -f/--format > default (html)
  3. Metadata: Library-specific config overrides site config

Configuration Options

  • Metadata: author, maintainer, license, robot_framework, python
  • Links: github_url (enables "View on GitHub" and "Open an Issue" buttons), library_url (enables "Library Website" button), support_email (enables "Contact Support" button)
  • Highlighting: custom_keywords (array of additional keywords to highlight)
  • Dashboard: site.name and site.description for dashboard branding
  • Library Grouping (Dashboard): optional library.group field to group libraries in the dashboard; libraries without a group appear under Ungrouped

Note: In multi-library mode, the name field in library entries is optional. If not provided, the class name will be used.

๐Ÿ“– Usage

Keyword Decorator

from robot.api.deco import keyword

class MyLibrary:
    # Custom keyword name
@keyword("Open Application")
    def open_app(self, path: str) -> None:
        """Opens an application at the given path."""
    pass

    # Function name converted to title case (Open Workbook)
@keyword
    def open_workbook(self, file: str) -> None:
        """Opens a workbook file."""
    pass

Important: Methods without @keyword decorator will NOT appear in documentation.

Markdown in Docstrings

Full markdown support including:

  • Headers: # H1, ## H2, etc.
  • Text Formatting: **bold**, *italic*, `code`
  • Code Blocks: Use ```robot for Robot Framework syntax highlighting
  • Tables: Standard markdown table syntax
  • Images: ![alt](url)
  • Lists: Bulleted and numbered lists

Example:

@keyword
def process_data(self, data: dict) -> dict:
    """
    Process data with configuration.
    
    **Arguments:**
    - `data`: Dictionary containing data to process
    
    **Example:**
    ```robot
    *** Settings ***
    Library    MyLibrary
    
    *** Test Cases ***
    Example
        ${result}=    Process Data    ${data}
    ```
    
    **Options:**
    | Option | Description |
    |--------|-------------|
    | validate | Validate input data |
    | transform | Transform data structure |
    """
    pass

๐ŸŽ›๏ธ Dashboard Features

The interactive dashboard provides a comprehensive view of all your libraries with powerful search and filtering capabilities.

Library Search

  • Real-time filtering: Type to filter library cards instantly
  • No dropdown results: Matching libraries are shown directly as cards

Keyword Search

  • Global search: Search keywords across all libraries
  • Instant results: See matching keywords with library names
  • Keyboard navigation: Use arrow keys to navigate, Enter to open
  • Quick access: Press / to focus the search bar

Library Grouping

  • Normal View: Default view showing all libraries as cards (grouping ignored)
  • Group View: Group cards summarizing library count and total keywords per group
  • Group Libraries View: Drill into a single group to see only its libraries, with breadcrumb and "Back to Groups"
  • Ungrouped Handling: Libraries without a group value are automatically shown under an Ungrouped group

Filtering

Filter libraries by:

  • Author: Filter by library author
  • Maintainer: Filter by maintainer
  • License: Filter by license type
  • Robot Framework Version: Filter by RF version requirements
  • Python Version: Filter by Python version requirements

Sorting

  • Name (Aโ€“Z): Alphabetical sorting
  • Keyword Count (desc): Sort by number of keywords

Export

Export library metadata as:

  • CSV: Comma-separated values
  • Excel: Microsoft Excel format
  • PDF: Portable Document Format

Multi-Language Support

Dashboard is available in:

  • English, Spanish, French, German, Chinese, Japanese, Portuguese, Russian, Italian, Korean
  • Language preference is saved in browser localStorage
  • Instant translation without page reload

Keyboard Shortcuts

  • / - Focus keyword search bar
  • โ†‘/โ†“ - Navigate search results
  • Enter - Open selected result
  • Esc - Close dropdown / Remove focus

๐ŸŽจ Syntax Highlighting

Robot Framework code blocks are automatically highlighted with:

  • Section Headers (*** Settings ***): Blue
  • Keywords: Teal (bold)
  • Variables (${var}, @{list}, &{dict}): Light Blue
  • Comments (# comment): Green (italic)
  • Keyword Arguments (arg=value): Yellow/Beige
  • Reserved Control (IF, FOR, TRY): Orange
  • Settings Keywords (Library, Resource): Purple

Keywords are automatically extracted from your library and standard Robot Framework libraries. Add custom keywords via config.json.

โ“ Troubleshooting

"Successfully parsed 0 keywords"

Ensure all public methods are decorated with @keyword:

@keyword("My Keyword")  # โœ… Correct
def my_method(self):
    pass

def helper_method(self):  # โŒ Won't appear
    pass

Multi-library mode errors

  • Ensure config contains libraries array
  • Ensure config contains site object (mandatory)
  • Use --multi-lib flag: docgen -c config.json --multi-lib
  • Don't use --multi-lib with single-library configs
  • --dashboard automatically enables multi-library mode (no need for --multi-lib)

Dashboard and serve errors

  • --serve requires --dashboard flag: docgen -c config.json --dashboard --serve
  • Dashboard requires multi-library configuration with site and libraries keys
  • Port already in use: Use --port to specify a different port
  • To serve on all network interfaces: Use --host 0.0.0.0

Output file location

  • Single-library: -d/--dir sets base directory, -o/--output can be relative (combined with -d) or absolute (ignores -d)
  • Multi-library: -d/--dir sets base output directory (defaults to output/), -o/--output is ignored

Config not being read

Ensure you're passing the -c/--config flag:

docgen your_library.py -c config.json  # โœ… Correct
docgen your_library.py                 # โŒ Config not loaded

Type hints not showing

Add type hints to function signatures:

@keyword
def my_keyword(self, arg1: str, arg2: int = 10) -> bool:
    """Keyword documentation."""
    pass

If type hints are not provided, arguments show as Any type.

๐Ÿ“š Examples

  • Sample Library: See sample_libs/ directory for comprehensive examples
  • Multi-Library Config: See multi_lib_config.json for configuration structure

Single Library:

docgen sample_libs/string_utils.py -f html -o sample_docs.html -c config.json

Multi-Library with Dashboard:

# Generate dashboard
docgen -c multi_lib_config.json --dashboard

# Generate and serve dashboard
docgen -c multi_lib_config.json --dashboard --serve

# With parallel processing
docgen -c multi_lib_config.json --dashboard --parallel --serve --port 8080

๐Ÿ“„ License

Apache License 2.0 - See LICENSE file for details.

๐Ÿค Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

robotframework_libdocgen-2.1.2.tar.gz (83.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

robotframework_libdocgen-2.1.2-py3-none-any.whl (73.8 kB view details)

Uploaded Python 3

File details

Details for the file robotframework_libdocgen-2.1.2.tar.gz.

File metadata

File hashes

Hashes for robotframework_libdocgen-2.1.2.tar.gz
Algorithm Hash digest
SHA256 84ab56c1d168f27ccd23a15b99a1884bec2adc70c04418f060c9adbec20ce4aa
MD5 0a9de967d9db7a32bb56710cdff45b5d
BLAKE2b-256 4801f850b8bf555e9a790390578a48d1c6217a551ab9d030e686eabb20ba118f

See more details on using hashes here.

File details

Details for the file robotframework_libdocgen-2.1.2-py3-none-any.whl.

File metadata

File hashes

Hashes for robotframework_libdocgen-2.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 de1f609404a3ad1d2ffe800a23708360ae457ef86965abf9252a917ce971870f
MD5 486ca801db156e965802faaea5eccb80
BLAKE2b-256 350c7442a441932d7849118b3262de62bed72f02d1df1d0fe0906ac36ac1f2b4

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page