Static site generator supporting Markdown and reStructuredText
—
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.
pip install pelicanpip install pelican[markdown]import pelican
from pelican import PelicanCommon for content processing:
from pelican.contents import Article, Page, Content
from pelican.generators import ArticlesGenerator, PagesGenerator
from pelican.settings import read_settingsfrom 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-quickstartPelican's modular architecture separates concerns through distinct components:
This design enables flexible content processing pipelines while maintaining separation between content parsing, processing, and output generation.
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]: ...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): ...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): ...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): ...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]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-pluginsSignal-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_writerHelper 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: ...Install with Tessl CLI
npx tessl i tessl/pypi-pelican