bengal


Namebengal JSON
Version 0.1.3 PyPI version JSON
download
home_pageNone
SummaryA high-performance static site generator with modular architecture
upload_time2025-10-20 13:23:49
maintainerNone
docs_urlNone
authorNone
requires_python>=3.14
licenseNone
keywords static-site-generator ssg documentation markdown website free-threading performance
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # Bengal

[![PyPI version](https://img.shields.io/pypi/v/bengal.svg)](https://pypi.org/project/bengal/)
[![Build Status](https://github.com/lbliii/bengal/actions/workflows/tests.yml/badge.svg)](https://github.com/lbliii/bengal/actions/workflows/tests.yml)
[![Python Version](https://img.shields.io/pypi/pyversions/bengal.svg)](https://pypi.org/project/bengal/)
[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](https://opensource.org/licenses/MIT)

A pythonic static site generator.

## Features

- Markdown-based content with front matter
- Incremental builds with dependency tracking
- Parallel processing with ThreadPoolExecutor
- Template engine with Jinja2
- Automatic navigation and breadcrumbs
- Taxonomy system (tags, categories)
- Menu system with hierarchical navigation
- Development server with file watching
- API documentation generation from Python source
- SEO features (sitemap, RSS feeds)
- Health validation system

## Installing Python 3.14

Bengal works best with Python 3.14. Here's how to install it:

### Using pyenv (recommended for managing versions)

```bash
# Install pyenv (see https://github.com/pyenv/pyenv for full instructions)
brew install pyenv  # On macOS with Homebrew
# or: curl https://pyenv.run | bash

pyenv install 3.14.0
pyenv global 3.14.0

# Initialize pyenv in your shell profile (add these lines to ~/.zshrc or ~/.bash_profile):
# export PYENV_ROOT="$HOME/.pyenv"
# export PATH="$PYENV_ROOT/bin:$PATH"
# eval "$(pyenv init --path)"
# eval "$(pyenv init -)"
# eval "$(pyenv virtualenv-init -)"
#
# Then reload your shell:
# source ~/.zshrc  # or source ~/.bash_profile
#
# Verify with: python --version (should show 3.14.0)
```

### Official Installer

Download from [python.org/downloads](https://www.python.org/downloads/release/python-3140/).

### Create a Virtual Environment

Always use a virtual environment:

```bash
python -m venv bengal-env
source bengal-env/bin/activate  # On Windows: bengal-env\Scripts\activate
```

## Requirements

Python 3.14 or later

Recommended: Python 3.14t (free-threaded) for up to 1.8x faster rendering. See [INSTALL_FREE_THREADED.md](INSTALL_FREE_THREADED.md) for setup instructions.

## Cloning and Installation

To install the latest development version:

```bash
git clone https://github.com/llane/bengal.git
cd bengal
```

**Using uv (recommended):**

```bash
# Install uv if not already installed
curl -LsSf https://astral.sh/uv/install.sh | sh

# Install Bengal in editable mode for development
uv pip install -e .

# Or with dev server support (file watching auto-reload)
uv pip install -e ".[server]"
```

**Using pip:**

```bash
pip install -e .

# Or with dev server support (file watching auto-reload)
pip install -e ".[server]"
```

For the released version (once available on PyPI):

```bash
pip install bengal

# Or with dev server support
pip install bengal[server]
```

**Optional Dependencies:**
- `server` - File watching for dev server auto-reload (uses `watchdog`)
- `css` - Advanced CSS optimization (uses `lightningcss`)

## Quick Start

```bash
# Create a new site. An interactive wizard will guide you through presets for different site types:
# - Blog (personal/professional writing)
# - Documentation (technical docs/guides)
# - Portfolio (showcase your work)
# - Business (company/product site)
# - Resume (professional CV site)
# - Blank or Custom
bengal new site mysite
cd mysite

# The wizard creates structure with sample content. You can then:
# Create additional pages
bengal new page my-first-post

# Build the site
bengal site build

# For maximum speed (recommended)
PYTHON_GIL=0 bengal site build --fast

# Start development server with file watching
bengal site serve
```

**💡 Tip:** Add `fast_mode = true` to the `[build]` section in your `bengal.toml` to enable fast mode by default.

## Build Profiles

Bengal provides different build profiles for different use cases:

- **Default**: Minimal output focused on errors and warnings
- **Theme Developer** (`--theme-dev`): Extra template and navigation validation
- **Developer** (`--dev`): Full debug output with memory profiling and performance metrics

## Architecture

Bengal uses a modular architecture with clear separation between Site, Page, Section, and Asset objects. The rendering pipeline processes Markdown content through templates and applies post-processing steps. An incremental build system tracks file changes and dependencies to rebuild what's necessary.

See [ARCHITECTURE.md](ARCHITECTURE.md) for details.

## Configuration

Create a `bengal.toml` or `bengal.yaml` in your project root. Bengal uses sensible defaults for most settings, so you only need to configure what you want to change:

```toml
[site]
title = "My Bengal Site"
baseurl = "https://example.com"
description = "Site description"
language = "en"
author = "Your Name"

[build]
output_dir = "public"
content_dir = "content"
fast_mode = true                    # Maximum speed (recommended)
cache_templates = true              # Cache compiled templates (10-15% faster)
auto_regenerate_autodoc = false     # Auto-regenerate docs when source changes

# Optional: Disable default features if needed
# incremental = false               # Force full rebuilds
# minify_html = false               # Keep HTML unminified for debugging
# parallel = false                  # Disable parallel processing
# generate_sitemap = false          # Skip sitemap
# generate_rss = false              # Skip RSS feed

# Theme Configuration
[theme]
name = "default"                    # Theme name (default, or custom theme in themes/ dir)
default_appearance = "system"       # Options: "light", "dark", "system" (follows OS)
default_palette = ""                # Color palette (empty = default, or palette name)

# Font Configuration - Auto-downloads and self-hosts Google Fonts
[fonts]
primary = "Inter:400,600,700"           # Body text
heading = "Playfair Display:700"        # Headings
code = "JetBrains Mono:400"             # Code blocks

# Assets
[assets]
minify = true
fingerprint = true
optimize = true

# Optional: Node-based asset pipeline (requires Node v22 LTS)
# pipeline = true
# scss = true
# postcss = true
# bundle_js = true

# Markdown Configuration
[markdown]
parser = "mistune"
table_of_contents = true
gfm = true                          # GitHub Flavored Markdown

# Taxonomies (tags, categories, etc.)
[taxonomies]
tags = "tags"
categories = "categories"

# Menu Configuration
[[menu.main]]
name = "Home"
url = "/"
weight = 1

[[menu.main]]
name = "Documentation"
url = "/docs/"
weight = 2

# Search Page (special page, auto-enabled if template exists)
[search]
enabled = true
path = "/search/"
template = "search.html"

# API Documentation Generation
[autodoc.python]
enabled = true
source_dirs = ["src"]
output_dir = "content/api"
docstring_style = "auto"            # Options: auto, google, numpy, sphinx

exclude = [
    "*/tests/*",
    "*/__pycache__/*",
]

include_private = false             # Include _private methods
include_special = false             # Include __special__ methods

# CLI Documentation Generation
[autodoc.cli]
enabled = true
app_module = "myapp.cli:main"       # module_path:attribute format
output_dir = "content/cli"
framework = "click"                 # Options: click, argparse, typer
```

**Default Features** (enabled automatically, no config needed):

- ✅ Parallel builds
- ✅ Incremental builds (18-42x faster!)
- ✅ HTML minification (15-25% smaller)
- ✅ Asset optimization and fingerprinting
- ✅ Sitemap and RSS generation
- ✅ JSON + LLM text output formats
- ✅ Link validation
- ✅ Build quality checks

## Project Structure

```text
mysite/
├── bengal.toml          # Site configuration
├── content/             # Your content files
│   ├── index.md
│   └── posts/
│       └── first-post.md
├── templates/           # Custom templates
│   ├── base.html
│   └── partials/
├── assets/              # Static assets
│   ├── css/
│   ├── js/
│   └── images/
└── public/              # Generated output
```

## Commands

Bengal commands are organized into logical groups for better discoverability. Use `bengal --help` to see all command groups, or `bengal <group> --help` to see commands within a group (e.g., `bengal site --help`).

### Site Management (`bengal site`)

```bash
# Build site
bengal site build

# Build with options
bengal site build --fast                  # Quiet output + guaranteed parallel
PYTHON_GIL=0 bengal site build --fast    # Maximum speed (no GIL warnings)
bengal site build --incremental           # Rebuild changed files
bengal site build --strict                # Fail on errors (for CI)

# Development server (default: 5173)
bengal site serve --port 5173

# Clean output
bengal site clean
```

### Creating New Content (`bengal new`)

```bash
# Create a new site
bengal new site mysite

# Create a new page
bengal new page my-page --section blog

# Create a new layout template
bengal new layout article

# Create a new partial template
bengal new partial sidebar

# Create a new theme
bengal new theme my-theme
```

### Project Management (`bengal project`)

```bash
# Initialize project structure
bengal project init

# Set working profile (dev, themer, writer, ai)
bengal project profile dev

# Validate configuration
bengal project validate

# Show project info and statistics
bengal project info

# View/manage configuration
bengal project config
bengal project config site.title "My New Title" --set
```

### Developer Utilities (`bengal utils`)

```bash
# Generate API documentation
bengal utils autodoc --source mylib --output content/api

# Theme management
bengal utils theme list
bengal utils theme info <slug>
bengal utils theme discover
bengal utils theme install bengal-theme-starter
bengal utils theme new mybrand --mode site --output .

# Asset management
bengal utils assets minify
bengal utils assets optimize

# Performance analysis
bengal utils perf analyze

# Graph analysis
bengal utils graph analyze --stats --tree
bengal utils graph pagerank
bengal utils graph communities
bengal utils graph bridges
bengal utils graph suggest
```

## Themes

Bengal supports three types of themes: project themes (under `themes/`), installed themes (via pip/uv), and bundled themes.

```bash
# List available themes (project | installed | bundled)
bengal utils theme list

# Show info about a theme slug (paths, version)
bengal utils theme info <slug>

# Discover swizzlable templates/partials in active theme chain
bengal utils theme discover

# Install a theme via uv/pip (warns if name is non-canonical)
bengal utils theme install bengal-theme-starter

# Scaffold a new theme
## Site-local theme under themes/<slug>
bengal utils theme new mybrand --mode site --output .
## Installable package scaffold in current directory
bengal utils theme new mybrand --mode package --output .

# Or use bengal new theme for quick site-local themes
bengal new theme mybrand
```

Configuration to select and customize a theme:

```toml
[theme]
name = "mybrand"                  # Uses project themes/mybrand, installed bengal-theme-mybrand, or bundled
default_appearance = "system"     # Options: "light", "dark", "system" (follows OS preference)
default_palette = ""              # Color palette name (empty = default)
```

**Legacy configuration** (still supported):

```toml
[build]
theme = "mybrand"  # Simple string format still works for backwards compatibility
```

Naming convention for installable themes (recommended): `bengal-theme-<slug>`.

## API Documentation (Autodoc)

Bengal can automatically generate API documentation from Python source code and CLI applications using AST parsing.

### Python API Documentation

Configure in `bengal.toml`:

```toml
[autodoc.python]
enabled = true
source_dirs = ["src/mylib"]
output_dir = "content/api"
docstring_style = "auto"  # Options: auto, google, numpy, sphinx

exclude = [
    "*/tests/*",
    "*/__pycache__/*",
]

include_private = false   # Include _private methods
include_special = false   # Include __special__ methods
```

Or generate on-demand:

```bash
bengal utils autodoc --source mylib --output content/api
```

### CLI Documentation

Automatically document Click, Argparse, or Typer CLI applications:

```toml
[autodoc.cli]
enabled = true
app_module = "myapp.cli:main"  # module_path:attribute format
output_dir = "content/cli"
framework = "click"            # Options: click, argparse, typer
include_hidden = false         # Include hidden commands
```

### Autodoc Features

- **AST-based extraction** - No imports required, works with any Python code
- **Multiple docstring formats** - Supports Google, NumPy, and Sphinx styles
- **Auto-regeneration** - Set `auto_regenerate_autodoc = true` in `[build]` to automatically update docs when source changes
- **CLI frameworks** - Built-in support for Click, Argparse, and Typer
- **Smart filtering** - Exclude tests, caches, and private members

## Development Status

Bengal is functional and under active development.

See [ARCHITECTURE.md](ARCHITECTURE.md) for technical details.

## License

MIT License

            

Raw data

            {
    "_id": null,
    "home_page": null,
    "name": "bengal",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.14",
    "maintainer_email": null,
    "keywords": "static-site-generator, ssg, documentation, markdown, website, free-threading, performance",
    "author": null,
    "author_email": "Bengal Contributors <lbeeze@icloud.com>",
    "download_url": "https://files.pythonhosted.org/packages/b1/2c/56c830016963dc180652040c75304dfe297e6e9dd12525c665df996995d1/bengal-0.1.3.tar.gz",
    "platform": null,
    "description": "# Bengal\n\n[![PyPI version](https://img.shields.io/pypi/v/bengal.svg)](https://pypi.org/project/bengal/)\n[![Build Status](https://github.com/lbliii/bengal/actions/workflows/tests.yml/badge.svg)](https://github.com/lbliii/bengal/actions/workflows/tests.yml)\n[![Python Version](https://img.shields.io/pypi/pyversions/bengal.svg)](https://pypi.org/project/bengal/)\n[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](https://opensource.org/licenses/MIT)\n\nA pythonic static site generator.\n\n## Features\n\n- Markdown-based content with front matter\n- Incremental builds with dependency tracking\n- Parallel processing with ThreadPoolExecutor\n- Template engine with Jinja2\n- Automatic navigation and breadcrumbs\n- Taxonomy system (tags, categories)\n- Menu system with hierarchical navigation\n- Development server with file watching\n- API documentation generation from Python source\n- SEO features (sitemap, RSS feeds)\n- Health validation system\n\n## Installing Python 3.14\n\nBengal works best with Python 3.14. Here's how to install it:\n\n### Using pyenv (recommended for managing versions)\n\n```bash\n# Install pyenv (see https://github.com/pyenv/pyenv for full instructions)\nbrew install pyenv  # On macOS with Homebrew\n# or: curl https://pyenv.run | bash\n\npyenv install 3.14.0\npyenv global 3.14.0\n\n# Initialize pyenv in your shell profile (add these lines to ~/.zshrc or ~/.bash_profile):\n# export PYENV_ROOT=\"$HOME/.pyenv\"\n# export PATH=\"$PYENV_ROOT/bin:$PATH\"\n# eval \"$(pyenv init --path)\"\n# eval \"$(pyenv init -)\"\n# eval \"$(pyenv virtualenv-init -)\"\n#\n# Then reload your shell:\n# source ~/.zshrc  # or source ~/.bash_profile\n#\n# Verify with: python --version (should show 3.14.0)\n```\n\n### Official Installer\n\nDownload from [python.org/downloads](https://www.python.org/downloads/release/python-3140/).\n\n### Create a Virtual Environment\n\nAlways use a virtual environment:\n\n```bash\npython -m venv bengal-env\nsource bengal-env/bin/activate  # On Windows: bengal-env\\Scripts\\activate\n```\n\n## Requirements\n\nPython 3.14 or later\n\nRecommended: Python 3.14t (free-threaded) for up to 1.8x faster rendering. See [INSTALL_FREE_THREADED.md](INSTALL_FREE_THREADED.md) for setup instructions.\n\n## Cloning and Installation\n\nTo install the latest development version:\n\n```bash\ngit clone https://github.com/llane/bengal.git\ncd bengal\n```\n\n**Using uv (recommended):**\n\n```bash\n# Install uv if not already installed\ncurl -LsSf https://astral.sh/uv/install.sh | sh\n\n# Install Bengal in editable mode for development\nuv pip install -e .\n\n# Or with dev server support (file watching auto-reload)\nuv pip install -e \".[server]\"\n```\n\n**Using pip:**\n\n```bash\npip install -e .\n\n# Or with dev server support (file watching auto-reload)\npip install -e \".[server]\"\n```\n\nFor the released version (once available on PyPI):\n\n```bash\npip install bengal\n\n# Or with dev server support\npip install bengal[server]\n```\n\n**Optional Dependencies:**\n- `server` - File watching for dev server auto-reload (uses `watchdog`)\n- `css` - Advanced CSS optimization (uses `lightningcss`)\n\n## Quick Start\n\n```bash\n# Create a new site. An interactive wizard will guide you through presets for different site types:\n# - Blog (personal/professional writing)\n# - Documentation (technical docs/guides)\n# - Portfolio (showcase your work)\n# - Business (company/product site)\n# - Resume (professional CV site)\n# - Blank or Custom\nbengal new site mysite\ncd mysite\n\n# The wizard creates structure with sample content. You can then:\n# Create additional pages\nbengal new page my-first-post\n\n# Build the site\nbengal site build\n\n# For maximum speed (recommended)\nPYTHON_GIL=0 bengal site build --fast\n\n# Start development server with file watching\nbengal site serve\n```\n\n**\ud83d\udca1 Tip:** Add `fast_mode = true` to the `[build]` section in your `bengal.toml` to enable fast mode by default.\n\n## Build Profiles\n\nBengal provides different build profiles for different use cases:\n\n- **Default**: Minimal output focused on errors and warnings\n- **Theme Developer** (`--theme-dev`): Extra template and navigation validation\n- **Developer** (`--dev`): Full debug output with memory profiling and performance metrics\n\n## Architecture\n\nBengal uses a modular architecture with clear separation between Site, Page, Section, and Asset objects. The rendering pipeline processes Markdown content through templates and applies post-processing steps. An incremental build system tracks file changes and dependencies to rebuild what's necessary.\n\nSee [ARCHITECTURE.md](ARCHITECTURE.md) for details.\n\n## Configuration\n\nCreate a `bengal.toml` or `bengal.yaml` in your project root. Bengal uses sensible defaults for most settings, so you only need to configure what you want to change:\n\n```toml\n[site]\ntitle = \"My Bengal Site\"\nbaseurl = \"https://example.com\"\ndescription = \"Site description\"\nlanguage = \"en\"\nauthor = \"Your Name\"\n\n[build]\noutput_dir = \"public\"\ncontent_dir = \"content\"\nfast_mode = true                    # Maximum speed (recommended)\ncache_templates = true              # Cache compiled templates (10-15% faster)\nauto_regenerate_autodoc = false     # Auto-regenerate docs when source changes\n\n# Optional: Disable default features if needed\n# incremental = false               # Force full rebuilds\n# minify_html = false               # Keep HTML unminified for debugging\n# parallel = false                  # Disable parallel processing\n# generate_sitemap = false          # Skip sitemap\n# generate_rss = false              # Skip RSS feed\n\n# Theme Configuration\n[theme]\nname = \"default\"                    # Theme name (default, or custom theme in themes/ dir)\ndefault_appearance = \"system\"       # Options: \"light\", \"dark\", \"system\" (follows OS)\ndefault_palette = \"\"                # Color palette (empty = default, or palette name)\n\n# Font Configuration - Auto-downloads and self-hosts Google Fonts\n[fonts]\nprimary = \"Inter:400,600,700\"           # Body text\nheading = \"Playfair Display:700\"        # Headings\ncode = \"JetBrains Mono:400\"             # Code blocks\n\n# Assets\n[assets]\nminify = true\nfingerprint = true\noptimize = true\n\n# Optional: Node-based asset pipeline (requires Node v22 LTS)\n# pipeline = true\n# scss = true\n# postcss = true\n# bundle_js = true\n\n# Markdown Configuration\n[markdown]\nparser = \"mistune\"\ntable_of_contents = true\ngfm = true                          # GitHub Flavored Markdown\n\n# Taxonomies (tags, categories, etc.)\n[taxonomies]\ntags = \"tags\"\ncategories = \"categories\"\n\n# Menu Configuration\n[[menu.main]]\nname = \"Home\"\nurl = \"/\"\nweight = 1\n\n[[menu.main]]\nname = \"Documentation\"\nurl = \"/docs/\"\nweight = 2\n\n# Search Page (special page, auto-enabled if template exists)\n[search]\nenabled = true\npath = \"/search/\"\ntemplate = \"search.html\"\n\n# API Documentation Generation\n[autodoc.python]\nenabled = true\nsource_dirs = [\"src\"]\noutput_dir = \"content/api\"\ndocstring_style = \"auto\"            # Options: auto, google, numpy, sphinx\n\nexclude = [\n    \"*/tests/*\",\n    \"*/__pycache__/*\",\n]\n\ninclude_private = false             # Include _private methods\ninclude_special = false             # Include __special__ methods\n\n# CLI Documentation Generation\n[autodoc.cli]\nenabled = true\napp_module = \"myapp.cli:main\"       # module_path:attribute format\noutput_dir = \"content/cli\"\nframework = \"click\"                 # Options: click, argparse, typer\n```\n\n**Default Features** (enabled automatically, no config needed):\n\n- \u2705 Parallel builds\n- \u2705 Incremental builds (18-42x faster!)\n- \u2705 HTML minification (15-25% smaller)\n- \u2705 Asset optimization and fingerprinting\n- \u2705 Sitemap and RSS generation\n- \u2705 JSON + LLM text output formats\n- \u2705 Link validation\n- \u2705 Build quality checks\n\n## Project Structure\n\n```text\nmysite/\n\u251c\u2500\u2500 bengal.toml          # Site configuration\n\u251c\u2500\u2500 content/             # Your content files\n\u2502   \u251c\u2500\u2500 index.md\n\u2502   \u2514\u2500\u2500 posts/\n\u2502       \u2514\u2500\u2500 first-post.md\n\u251c\u2500\u2500 templates/           # Custom templates\n\u2502   \u251c\u2500\u2500 base.html\n\u2502   \u2514\u2500\u2500 partials/\n\u251c\u2500\u2500 assets/              # Static assets\n\u2502   \u251c\u2500\u2500 css/\n\u2502   \u251c\u2500\u2500 js/\n\u2502   \u2514\u2500\u2500 images/\n\u2514\u2500\u2500 public/              # Generated output\n```\n\n## Commands\n\nBengal commands are organized into logical groups for better discoverability. Use `bengal --help` to see all command groups, or `bengal <group> --help` to see commands within a group (e.g., `bengal site --help`).\n\n### Site Management (`bengal site`)\n\n```bash\n# Build site\nbengal site build\n\n# Build with options\nbengal site build --fast                  # Quiet output + guaranteed parallel\nPYTHON_GIL=0 bengal site build --fast    # Maximum speed (no GIL warnings)\nbengal site build --incremental           # Rebuild changed files\nbengal site build --strict                # Fail on errors (for CI)\n\n# Development server (default: 5173)\nbengal site serve --port 5173\n\n# Clean output\nbengal site clean\n```\n\n### Creating New Content (`bengal new`)\n\n```bash\n# Create a new site\nbengal new site mysite\n\n# Create a new page\nbengal new page my-page --section blog\n\n# Create a new layout template\nbengal new layout article\n\n# Create a new partial template\nbengal new partial sidebar\n\n# Create a new theme\nbengal new theme my-theme\n```\n\n### Project Management (`bengal project`)\n\n```bash\n# Initialize project structure\nbengal project init\n\n# Set working profile (dev, themer, writer, ai)\nbengal project profile dev\n\n# Validate configuration\nbengal project validate\n\n# Show project info and statistics\nbengal project info\n\n# View/manage configuration\nbengal project config\nbengal project config site.title \"My New Title\" --set\n```\n\n### Developer Utilities (`bengal utils`)\n\n```bash\n# Generate API documentation\nbengal utils autodoc --source mylib --output content/api\n\n# Theme management\nbengal utils theme list\nbengal utils theme info <slug>\nbengal utils theme discover\nbengal utils theme install bengal-theme-starter\nbengal utils theme new mybrand --mode site --output .\n\n# Asset management\nbengal utils assets minify\nbengal utils assets optimize\n\n# Performance analysis\nbengal utils perf analyze\n\n# Graph analysis\nbengal utils graph analyze --stats --tree\nbengal utils graph pagerank\nbengal utils graph communities\nbengal utils graph bridges\nbengal utils graph suggest\n```\n\n## Themes\n\nBengal supports three types of themes: project themes (under `themes/`), installed themes (via pip/uv), and bundled themes.\n\n```bash\n# List available themes (project | installed | bundled)\nbengal utils theme list\n\n# Show info about a theme slug (paths, version)\nbengal utils theme info <slug>\n\n# Discover swizzlable templates/partials in active theme chain\nbengal utils theme discover\n\n# Install a theme via uv/pip (warns if name is non-canonical)\nbengal utils theme install bengal-theme-starter\n\n# Scaffold a new theme\n## Site-local theme under themes/<slug>\nbengal utils theme new mybrand --mode site --output .\n## Installable package scaffold in current directory\nbengal utils theme new mybrand --mode package --output .\n\n# Or use bengal new theme for quick site-local themes\nbengal new theme mybrand\n```\n\nConfiguration to select and customize a theme:\n\n```toml\n[theme]\nname = \"mybrand\"                  # Uses project themes/mybrand, installed bengal-theme-mybrand, or bundled\ndefault_appearance = \"system\"     # Options: \"light\", \"dark\", \"system\" (follows OS preference)\ndefault_palette = \"\"              # Color palette name (empty = default)\n```\n\n**Legacy configuration** (still supported):\n\n```toml\n[build]\ntheme = \"mybrand\"  # Simple string format still works for backwards compatibility\n```\n\nNaming convention for installable themes (recommended): `bengal-theme-<slug>`.\n\n## API Documentation (Autodoc)\n\nBengal can automatically generate API documentation from Python source code and CLI applications using AST parsing.\n\n### Python API Documentation\n\nConfigure in `bengal.toml`:\n\n```toml\n[autodoc.python]\nenabled = true\nsource_dirs = [\"src/mylib\"]\noutput_dir = \"content/api\"\ndocstring_style = \"auto\"  # Options: auto, google, numpy, sphinx\n\nexclude = [\n    \"*/tests/*\",\n    \"*/__pycache__/*\",\n]\n\ninclude_private = false   # Include _private methods\ninclude_special = false   # Include __special__ methods\n```\n\nOr generate on-demand:\n\n```bash\nbengal utils autodoc --source mylib --output content/api\n```\n\n### CLI Documentation\n\nAutomatically document Click, Argparse, or Typer CLI applications:\n\n```toml\n[autodoc.cli]\nenabled = true\napp_module = \"myapp.cli:main\"  # module_path:attribute format\noutput_dir = \"content/cli\"\nframework = \"click\"            # Options: click, argparse, typer\ninclude_hidden = false         # Include hidden commands\n```\n\n### Autodoc Features\n\n- **AST-based extraction** - No imports required, works with any Python code\n- **Multiple docstring formats** - Supports Google, NumPy, and Sphinx styles\n- **Auto-regeneration** - Set `auto_regenerate_autodoc = true` in `[build]` to automatically update docs when source changes\n- **CLI frameworks** - Built-in support for Click, Argparse, and Typer\n- **Smart filtering** - Exclude tests, caches, and private members\n\n## Development Status\n\nBengal is functional and under active development.\n\nSee [ARCHITECTURE.md](ARCHITECTURE.md) for technical details.\n\n## License\n\nMIT License\n",
    "bugtrack_url": null,
    "license": null,
    "summary": "A high-performance static site generator with modular architecture",
    "version": "0.1.3",
    "project_urls": {
        "Bug Tracker": "https://github.com/lbliii/bengal/issues",
        "Documentation": "https://github.com/lbliii/bengal",
        "Homepage": "https://github.com/lbliii/bengal",
        "Repository": "https://github.com/lbliii/bengal"
    },
    "split_keywords": [
        "static-site-generator",
        " ssg",
        " documentation",
        " markdown",
        " website",
        " free-threading",
        " performance"
    ],
    "urls": [
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "55edf63c404a1077760cb6cdb69e1f821da105d71ace9a230b21213f5b653e77",
                "md5": "b77c111d9d4c828932d7adce7ca89142",
                "sha256": "d0be071dfd905b1d61f146ad2454cb84ac9ad5fecd8aae8d001edd1b4320d5e9"
            },
            "downloads": -1,
            "filename": "bengal-0.1.3-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "b77c111d9d4c828932d7adce7ca89142",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.14",
            "size": 1016534,
            "upload_time": "2025-10-20T13:23:47",
            "upload_time_iso_8601": "2025-10-20T13:23:47.175253Z",
            "url": "https://files.pythonhosted.org/packages/55/ed/f63c404a1077760cb6cdb69e1f821da105d71ace9a230b21213f5b653e77/bengal-0.1.3-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "b12c56c830016963dc180652040c75304dfe297e6e9dd12525c665df996995d1",
                "md5": "c4f9e98c9f45521f56036f2b85ea10a8",
                "sha256": "b1fa5384e8518c97f132fcf3a389db9c19d3566545e88b84d2bf97b62e0fdc9b"
            },
            "downloads": -1,
            "filename": "bengal-0.1.3.tar.gz",
            "has_sig": false,
            "md5_digest": "c4f9e98c9f45521f56036f2b85ea10a8",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.14",
            "size": 811533,
            "upload_time": "2025-10-20T13:23:49",
            "upload_time_iso_8601": "2025-10-20T13:23:49.119523Z",
            "url": "https://files.pythonhosted.org/packages/b1/2c/56c830016963dc180652040c75304dfe297e6e9dd12525c665df996995d1/bengal-0.1.3.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2025-10-20 13:23:49",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "lbliii",
    "github_project": "bengal",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": true,
    "lcname": "bengal"
}
        
Elapsed time: 1.42510s