Skip to main content

A blazing fast, dependency-light static site generator

Project description

pycobello

PyPI version Python 3.12+ License CI

A blazing fast, dependency-light static site generator (SSG) for Python 3.12+.

  • Markdown + YAML front matter → HTML
  • Jinja2 themes (.html templates)
  • 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 --watch with [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: posts and pages (each: path, url_prefix, template)
  • plugins: enabled (list of plugin names)

Theme contract

Templates live in theme/templates/. Required:

  • base.html – base layout
  • page.html – pages
  • post.html – posts
  • index.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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pycobello-0.1.1a0.tar.gz (15.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

pycobello-0.1.1a0-py3-none-any.whl (28.7 kB view details)

Uploaded Python 3

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

Hashes for pycobello-0.1.1a0.tar.gz
Algorithm Hash digest
SHA256 f983a62c532b9926414616c3a8c15a1f59750d6922f277b716c00ed1a0a529a1
MD5 2672bdb494c206f77bbd8a6352ecd1b8
BLAKE2b-256 aee3171251b05cd337ba65094cd20d09c4c30311fbae31dabbe34643701686f2

See more details on using hashes here.

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

Hashes for pycobello-0.1.1a0-py3-none-any.whl
Algorithm Hash digest
SHA256 3fe5842378a3edb5b10fff9ff27c65021e3ce80c624f2e059a1df1f44e8b0262
MD5 7216314edd81cc65b868c2eda97b7e2e
BLAKE2b-256 36a3dc2b3b7b56a7ae53d53c7b84689471c5c60d6e624c68a4b9c0d2f945bebc

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page