Skip to main content

Static site generator i actually can use.

Project description

lightweight

PyPI Build Status Test Coverage Supported Python

Python code over configuration static site generator.

Documentation

Examples

Features

  • Clean and easily extensible API
  • Jinja2 templates
  • Markdown rendering
  • Sass/SCSS rendering
  • RSS/Atom feeds
  • Dev server
  • Site nesting
  • CLI

Installation

Available from PyPI:

pip install lightweight

Quick Example

from lightweight import Site, markdown, paths, jinja, template, rss, atom, sass


def blog_posts(source):
    post_template = template('blog-post.html')
    # Use globs to select files.
    return (markdown(path, post_template) for path in paths(source))


site = Site()

# Render an index page from Jinja2 template.
site.include('index.html', jinja('pages/index.html'))

# Render markdown blog posts.
[site.include(f'posts/{post.path.stem}.html', post) for post in blog_posts('posts/**.md')]
site.include('posts.html', jinja('pages/posts.html'))

# Syndicate RSS and Atom feeds.
site.include('posts.atom.xml', atom(site['posts']))
site.include('posts.rss.xml', rss(site['posts']))

# Render SASS to CSS.
site.include('css/style.css', sass('styles/style.scss'))

# Include a copy of a directory.
site.include('img')
site.include('js')

# Execute all included content. 
site.render(url='https://example.org')

Dev Server

Lightweight includes a simple static web server with live reload serving at 0.0.0.0:8080 (can be accessed via localhost:8080):

python -m lightweight.server <directory>

The live reload can be disabled with --no-live-reload flag:

python -m lightweight.server <directory> --no-live-reload

Otherwise every served html file will be injected with a javascript that polls /id. The script reloads the page when the /id changes. The /id changes every time on any file change at the served directory.

Host and port can be set via:

python -m lightweight.server <directory> --host 0.0.0.0 --port 8080

To stop the server press Ctrl+C in terminal.

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

lightweight-1.0.0.dev28.tar.gz (14.6 kB view details)

Uploaded Source

Built Distribution

lightweight-1.0.0.dev28-py3-none-any.whl (20.4 kB view details)

Uploaded Python 3

File details

Details for the file lightweight-1.0.0.dev28.tar.gz.

File metadata

  • Download URL: lightweight-1.0.0.dev28.tar.gz
  • Upload date:
  • Size: 14.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.22.0 setuptools/41.2.0 requests-toolbelt/0.9.1 tqdm/4.41.0 CPython/3.7.5

File hashes

Hashes for lightweight-1.0.0.dev28.tar.gz
Algorithm Hash digest
SHA256 585726ef3fa9f3774d22b649dcdcb4decb4c405d90c25b792e385b16356a0589
MD5 afae57e23dd07e430c7f7d28ba1f15cb
BLAKE2b-256 1fbb5bffdd218338d13c700b9526bc527bc0df17c25774738fd513e8acb1a60a

See more details on using hashes here.

File details

Details for the file lightweight-1.0.0.dev28-py3-none-any.whl.

File metadata

  • Download URL: lightweight-1.0.0.dev28-py3-none-any.whl
  • Upload date:
  • Size: 20.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.22.0 setuptools/41.2.0 requests-toolbelt/0.9.1 tqdm/4.41.0 CPython/3.7.5

File hashes

Hashes for lightweight-1.0.0.dev28-py3-none-any.whl
Algorithm Hash digest
SHA256 8e061700a1994a17f16c57fb6fe3fe9dec7f918d00e4381726b37cfd3aa310e4
MD5 69bf2868ced8a18340c17b42afd28bb8
BLAKE2b-256 4b7508a44eed6069ddaa676827a92406fb7b9dae3f15db0a65009a0f45bc9e9f

See more details on using hashes here.

Supported by

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