A static site generator written in Python
Project description
ophinode
ophinode is a static site generator written in Python that focuses on being
a simple and flexible library for creating websites.
This project is currently in the initial development stage, and the APIs may change at any time.
Example programs
You can also get these example programs by running
python -m ophinode examples.
# Example program: render a page without defining a site.
#
# Running this program prints a HTML document to standard output.
#
from ophinode import *
class MainPage(HTML5Page):
def body(self):
return Div(
H1("Main Page"),
P("Welcome to ophinode!"),
)
def head(self):
return [
Meta(charset="utf-8"),
Title("Main Page"),
]
print(render_page(MainPage(), HTML5Layout()))
# Example program: create a page in a directory.
#
# Running this program creates "index.html" in "./out" directory.
#
from ophinode import *
class DefaultLayout(Layout):
def build(self, page, context):
return [
HTML5Doctype(),
Html(
Head(
Meta(charset="utf-8"),
Title(page.title()),
page.head(),
),
Body(
page.body(),
),
)
]
class MainPage(Page):
@property
def layout(self):
return DefaultLayout()
def body(self):
return Div(
H1("Main Page"),
P("Welcome to ophinode!"),
)
def head(self):
return []
def title(self):
return "Main Page"
if __name__ == "__main__":
site = Site({
"export_root_path" : "./out",
"default_layout" : DefaultLayout(),
"build_strategy" : "sync",
"preserve_site_definition_across_builds" : False,
"page_default_file_name" : "index.html",
"page_default_file_name_suffix" : ".html",
"auto_write_exported_page_build_files" : False,
"auto_write_exported_site_build_files" : True,
"return_site_data_after_page_build" : False,
"return_page_data_after_page_build" : False,
"return_misc_data_after_page_build" : True,
"return_built_pages_after_page_build" : False,
"return_expanded_pages_after_page_build" : False,
"return_rendered_pages_after_page_build" : False,
"return_exported_files_after_page_build" : True,
"gather_and_merge_page_build_results" : True,
}, [
("/", MainPage()),
])
site.build_site()
# Example program: parallel build.
#
# Running this program creates "page1.html" to "page1000.html"
# in "./out" directory.
#
import os
from ophinode import *
class DefaultLayout(Layout):
def build(self, page, context):
return [
HTML5Doctype(),
Html(
Head(
Meta(charset="utf-8"),
Title(page.title()),
page.head(),
),
Body(
page.body(),
),
)
]
class MainPage(Page):
def __init__(self, idx):
self.idx = idx
@property
def layout(self):
return DefaultLayout()
def body(self):
return Div(
H1("Main Page"),
P("Welcome to ophinode!"),
P(f"This is page{self.idx}.html."),
)
def head(self):
return []
def title(self):
return "Main Page"
if __name__ == "__main__":
cpu_count = os.cpu_count()
site = Site({
"export_root_path" : "./out",
"default_layout" : DefaultLayout(),
"build_strategy" : "parallel",
"parallel_build_workers" : cpu_count,
"parallel_build_chunksize" : 1,
"preserve_site_definition_across_builds" : False,
"page_default_file_name" : "index.html",
"page_default_file_name_suffix" : ".html",
"auto_write_exported_page_build_files" : True,
"auto_write_exported_site_build_files" : False,
"return_site_data_after_page_build" : False,
"return_page_data_after_page_build" : False,
"return_misc_data_after_page_build" : True,
"return_built_pages_after_page_build" : False,
"return_expanded_pages_after_page_build" : False,
"return_rendered_pages_after_page_build" : False,
"return_exported_files_after_page_build" : False,
"gather_and_merge_page_build_results" : False,
}, [
])
for i in range(1, 1001):
page_group = i % cpu_count
site.add_page(
f"/page{i}.html",
MainPage(i),
page_group=f"{page_group}"
)
site.build_site()
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 ophinode-0.0.1a8.tar.gz.
File metadata
- Download URL: ophinode-0.0.1a8.tar.gz
- Upload date:
- Size: 24.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.10.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9b6b512a719d4b0ed1ea584826eae52346ae9377ac46d63b0391bf9d5bcc2640
|
|
| MD5 |
f6937642b4878d524c28eac52105944e
|
|
| BLAKE2b-256 |
64d0ff3c37513a0770fab056f20c352e8ce9b5e553af663dc49431ab6a333fc3
|
File details
Details for the file ophinode-0.0.1a8-py3-none-any.whl.
File metadata
- Download URL: ophinode-0.0.1a8-py3-none-any.whl
- Upload date:
- Size: 34.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.10.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
56d7b9eec56c7fbeec9e9423c4d4793386322012490c793b285dd67f6538c9c8
|
|
| MD5 |
f717bf1cef4c619030919737194d51a4
|
|
| BLAKE2b-256 |
99edd9e5b9bb09b7c5692838111efa325e558feb4a614d0c4160028b061b2b65
|