A blazing fast, dependency-light static site generator
Project description
pycobello
A blazing fast, dependency-light static site generator (SSG) for Python 3.12+.
- Markdown + YAML front matter → HTML
- Jinja2 themes (
.htmltemplates) - CLI-first (Typer):
init,new,build,preview,check,deploy - Incremental builds with a JSON cache and write-avoidance by content hash
- Preview server via stdlib
http.server; optional--watchwith[watch]extra - Diagnostics (
check): duplicate URLs, required front matter, internal links - Plugin system via Python entry points (
pycobello.plugins)
Install
uv add pycobello
# or
pip install pycobello
Optional watch support (live rebuild on file changes):
uv add "pycobello[watch]"
Quick start
# Create a new site
pycobello init
# Build
pycobello build
# Serve the built site
pycobello preview
Commands
| Command | Description |
|---|---|
pycobello init [DIR] |
Create scaffold: pycobello.yml, content, theme, static |
pycobello new post "Title" |
Create a new post (with date prefix) |
pycobello new page "Title" |
Create a new page |
pycobello build [--clean] |
Build site into dist/ (default: incremental) |
pycobello preview [--port 8000] [--watch] |
Serve dist/; optional watch + rebuild |
pycobello check |
Run diagnostics (URLs, front matter, links) |
pycobello deploy github-pages |
Generate GitHub Actions workflow for GitHub Pages |
Config
Config file: pycobello.yml in the project root (YAML only).
- site:
title,base_url,author - build:
content_dir,theme_dir,static_dir,output_dir,clean_urls,ignore - collections:
postsandpages(each:path,url_prefix,template) - plugins:
enabled(list of plugin names)
Theme contract
Templates live in theme/templates/. Required:
base.html– base layoutpage.html– pagespost.html– postsindex.html– index (blog listing)
Context: site, collections, current page or post. Helpers: url_for, filter datefmt.
Development
uv sync --all-groups
uv run pre-commit install
Linting (ruff check) and formatting (ruff format) run automatically before each commit. To run them manually: uv run ruff check ., uv run ruff format ., and uv run pytest.
License
Apache License 2.0. See LICENSE.
Project details
Release history Release notifications | RSS feed
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 pycobello-0.1.1a0.tar.gz.
File metadata
- Download URL: pycobello-0.1.1a0.tar.gz
- Upload date:
- Size: 15.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.9.26 {"installer":{"name":"uv","version":"0.9.26","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f983a62c532b9926414616c3a8c15a1f59750d6922f277b716c00ed1a0a529a1
|
|
| MD5 |
2672bdb494c206f77bbd8a6352ecd1b8
|
|
| BLAKE2b-256 |
aee3171251b05cd337ba65094cd20d09c4c30311fbae31dabbe34643701686f2
|
File details
Details for the file pycobello-0.1.1a0-py3-none-any.whl.
File metadata
- Download URL: pycobello-0.1.1a0-py3-none-any.whl
- Upload date:
- Size: 28.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.9.26 {"installer":{"name":"uv","version":"0.9.26","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3fe5842378a3edb5b10fff9ff27c65021e3ce80c624f2e059a1df1f44e8b0262
|
|
| MD5 |
7216314edd81cc65b868c2eda97b7e2e
|
|
| BLAKE2b-256 |
36a3dc2b3b7b56a7ae53d53c7b84689471c5c60d6e624c68a4b9c0d2f945bebc
|