A powerful documentation generator for Robot Framework libraries that creates professional HTML and Markdown documentation
Project description
Robotframework Docgen
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
- 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,Enterto open,Escto 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",
"library_url": "https://example.com/library1",
"custom_keywords": ["Custom Keyword 1"]
},
{
"name": "Library2",
"source": "library2.py",
"output_format": "markdown"
}
]
}
Configuration Priority (Multi-Library):
- Output filename:
library.output_file> default (index.htmlorindex.md) - Output format:
library.output_format> CLI-f/--format> default (html) - Metadata: Library-specific config overrides
siteconfig
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.nameandsite.descriptionfor dashboard branding
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
```robotfor Robot Framework syntax highlighting - Tables: Standard markdown table syntax
- Images:
 - 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
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 resultsEnter- Open selected resultEsc- 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
librariesarray - Ensure config contains
siteobject (mandatory) - Use
--multi-libflag:docgen -c config.json --multi-lib - Don't use
--multi-libwith single-library configs --dashboardautomatically enables multi-library mode (no need for--multi-lib)
Dashboard and serve errors
--serverequires--dashboardflag:docgen -c config.json --dashboard --serve- Dashboard requires multi-library configuration with
siteandlibrarieskeys - Port already in use: Use
--portto specify a different port - To serve on all network interfaces: Use
--host 0.0.0.0
Output file location
- Single-library:
-d/--dirsets base directory,-o/--outputcan be relative (combined with-d) or absolute (ignores-d) - Multi-library:
-d/--dirsets base output directory (defaults tooutput/),-o/--outputis 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.jsonfor 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.
๐ Links
- Repository: GitHub
- Live Demo: Sample Documentation
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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file robotframework_libdocgen-2.0.0.tar.gz.
File metadata
- Download URL: robotframework_libdocgen-2.0.0.tar.gz
- Upload date:
- Size: 66.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
73b7f995ec0d0b069e4d02a910b0e72306d91c81991b7bd35e2f164f57d1648b
|
|
| MD5 |
1819e155948b2ca91b3417eba8c11be6
|
|
| BLAKE2b-256 |
ce051dce0deb9730f85912d65842993d3421f8f7a44d9a018bd1bd69ca84368e
|
File details
Details for the file robotframework_libdocgen-2.0.0-py3-none-any.whl.
File metadata
- Download URL: robotframework_libdocgen-2.0.0-py3-none-any.whl
- Upload date:
- Size: 64.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
dfe4490ddd0a49663062020e5d95c66dc33f393af86fcbcdf50979a3925dae0f
|
|
| MD5 |
830299d142ecd7789f3f1489698daeb8
|
|
| BLAKE2b-256 |
44b80d3f003da9a543441f550e11e8450fe3dbe45a7f27481ee8255d4c706c12
|