CtrlK
BlogDocsLog inGet started
Tessl Logo

tessl/pypi-pelican

Static site generator supporting Markdown and reStructuredText

Pending
Overview
Eval results
Files

index.mddocs/

Pelican

A comprehensive Python static site generator that transforms text files written in Markdown, reStructuredText, or HTML into complete websites. Pelican provides powerful features for content management, theme customization, plugin extensibility, and automated site generation with built-in development server and deployment capabilities.

Package Information

  • Package Name: pelican
  • Language: Python
  • Installation: pip install pelican
  • Optional Markdown support: pip install pelican[markdown]

Core Imports

import pelican
from pelican import Pelican

Common for content processing:

from pelican.contents import Article, Page, Content
from pelican.generators import ArticlesGenerator, PagesGenerator
from pelican.settings import read_settings

Basic Usage

from pelican import Pelican
from pelican.settings import read_settings

# Load configuration
settings = read_settings('pelicanconf.py')

# Create and run Pelican instance
pelican_instance = Pelican(settings)
pelican_instance.run()

Command-line usage:

# Generate site from content directory
pelican content

# Generate with custom output directory and theme
pelican content -o output -t my-theme

# Run development server with auto-reload
pelican --autoreload --listen

# Quick project setup
pelican-quickstart

Architecture

Pelican's modular architecture separates concerns through distinct components:

  • Pelican Class: Main orchestrator managing the generation pipeline
  • Generators: Specialized classes that process different content types (articles, pages, static files)
  • Readers: Parse different markup formats (Markdown, reStructuredText, HTML)
  • Content Classes: Represent different content types with metadata and processing logic
  • Writers: Handle output file generation and theme rendering
  • Plugin System: Signal-based architecture for extensibility

This design enables flexible content processing pipelines while maintaining separation between content parsing, processing, and output generation.

Capabilities

Main Application

Core Pelican class and application entry points for site generation, configuration management, and command-line interface.

class Pelican:
    def __init__(self, settings: dict): ...
    def run(self) -> None: ...

def main(argv=None) -> None: ...
def parse_arguments(argv=None): ...
def get_config(args) -> dict: ...
def get_instance(args) -> tuple[Pelican, dict]: ...

Main Application

Content Management

Content classes for articles, pages, and static files with metadata processing, URL generation, and template assignment.

class Content:
    def __init__(self, content: str, metadata: dict = None, settings: dict = None, source_path: str = None): ...

class Article(Content): ...
class Page(Content): ...
class Static(Content): ...

Content Management

Content Generation

Generator classes that process different content types and produce output files through theme rendering and pagination.

class Generator:
    def __init__(self, context, settings, path, theme, output_path): ...

class ArticlesGenerator(CachingGenerator): ...
class PagesGenerator(CachingGenerator): ...
class StaticGenerator(Generator): ...
class TemplatePagesGenerator(Generator): ...

Content Generation

Content Reading

Reader classes for parsing different markup formats with metadata extraction and content processing.

class Readers:
    def __init__(self, settings: dict, cache_name: str = ""): ...
    def read_file(self, base_path: str, path: str, content_class=Content, fmt=None): ...

class BaseReader: ...
class RstReader(BaseReader): ...
class MarkdownReader(BaseReader): ...
class HTMLReader(BaseReader): ...

Content Reading

Settings and Configuration

Configuration system with default settings, file-based configuration loading, and runtime setting management.

def read_settings(path: str = None, override: dict = None) -> dict: ...

DEFAULT_CONFIG: dict
Settings = dict[str, Any]

Settings and Configuration

Command-Line Tools

Specialized CLI tools for site setup, content import, theme management, and plugin utilities.

def main() -> None: ...  # pelican-quickstart
def main() -> None: ...  # pelican-import  
def main() -> None: ...  # pelican-themes
def list_plugins() -> None: ...  # pelican-plugins

Command-Line Tools

Plugin System

Signal-based plugin architecture enabling extensibility through custom generators, content processors, and output handlers.

from pelican.plugins import signals

# Available signals
signals.initialized
signals.finalized
signals.all_generators_finalized
signals.get_generators
signals.get_writer

Plugin System

Utilities

Helper functions for content processing, URL handling, caching, date formatting, and file operations.

def slugify(value: str, substitutions: tuple = ()) -> str: ...
def truncate_html_words(s: str, num: int) -> str: ...
def clean_output_dir(path: str, retention: list = None) -> None: ...
def copy(source: str, destination: str, ignores: list = None) -> None: ...

Utilities

Install with Tessl CLI

npx tessl i tessl/pypi-pelican

docs

cli-tools.md

content-generation.md

content-management.md

content-reading.md

index.md

main-application.md

plugin-system.md

settings-configuration.md

utilities.md

tile.json