Wikin
Documentation generated by Wikin.
Wikin
A simple, beautiful documentation generator for Python. It extracts docstrings from functions and special comments from variables.
Features
- Function Docstrings: Standard Python triple-quoted docstrings.
- Variable Documentation:
#: comment before variablevariable = value #: comment after variable- Global Search: Instantly find functions, classes, and variables across all modules.
- Multipage Mode: Generate a clean landing page and separate files for each module.
- Modern UI: Clean, responsive HTML output with a premium glassmorphic look.
- Markdown Support: Use Markdown in your docstrings and comments.
- Docstring Tables: Automatically formats Google-style and NumPy-style parameters, attributes, and returns into elegant Markdown tables.
- Addons (Themes & Plugins): Customize the look and feel with
.wikinpackaged CSS themes and JS plugins! - Custom Pages: Easily inject
READMEor dynamically parsedLICENSEfiles right into the sidebar. - Module Metadata: Customize how modules appear in the documentation using a
Wikin:block.
Installation
pip install craftllc-wikin
Usage
python -m wikin gen <path_to_code> <project_name> <version> [docs_folder]
Example:
python -m wikin gen ./ "My Project" 1.0.0
This will automatically parse the working directory and output standard HTML files to the customized docs/ folder.
If you have argcomplete installed, Wikin offers full Tab autocomplete for CLI options! Need help? Just run:
python -m wikin help
Variable Documentation Example
#: Number of requests per second
rpm = 10
timeout = 30 #: Connection timeout in seconds
Wikin will pick these up and include them in the generated documentation.
Ignoring Files
To exclude specific files or directories from being processed, create a .wikinignore file in your docs/ folder. It supports standard .gitignore (gitwildmatch) patterns.
Example docs/.wikinignore:
# Ignore a specific file
secret_module.py
# Ignore an entire directory
internal_tools/
# Ignore all files with a certain extension
*.deprecated.py
Configuration
You can fully orchestrate your generated suite by placing a docs/.wikinconfig (TOML format) directly inside your docs directory.
Multipage & Custom Branding
For larger projects, switch into multipage mode to split generated pages. You can also hide the Wikin branded watermark!
[main]
multipage = true
show_generated_by = false
Adding Project Links
To add helpful links (like GitHub, PyPI, or your website) to the sidebar, use the [links] section:
[links]
PyPI = "https://pypi.org/project/craftllc-wikin"
GitHub = "https://github.com/CraftLLC/Wikin"
Custom Markdown Pages & Intelligent Licensing
Wikin allows you to seamlessly inject generic Markdown files right into your sidebar!
[pages]
readme = "README.md"
license = "LICENSE"
license-parse = true
If license-parse = true is enabled, Wikin employs a versatile Regex parsing backend capable of correctly detecting MIT, Apache 2.0, GNU GPL (v2/v3), BSD (2/3-Clause), MPL 2.0, WTFPL, and more! It dynamically structures the Year, Type, and Author neatly above your license file.
Themes & Plugins (Addons API)
Wikin supports community-provided ZIP addons formatted with .wikin extensions! Place these archives into docs/addons/.
[addons]
themes = ["OLED"]
plugins = ["search_optimizer"]
These archives must contain a standard manifest.json mapped to their core main_css or main_js files.
Try our included OLED.wikin theme to transform the standard glassmorphic array into a completely flat, pure-black experience designed exclusively for organic LED developers.
Module Metadata Example
You can set a custom display name for your modules by adding a Wikin: block at the top of your module's docstring:
"""
Wikin:
name: Core Parser
This module handles all the parsing logic for Wikin.
"""
In the documentation, this module will be titled as Core Parser (your_package.parser). The metadata block itself will be dynamically filtered from the description rendering.