No project description provided
Project description
blockkit
A library for building and managing content blocks.
Overview
blockkit provides a standardized representation of course content as discrete "blocks" that can be serialized, rendered, and extended. It's designed to be lightweight, type-safe, and easily extensible.
Features
- Core Block Types: TextBlock, ImageBlock, VideoBlock, AudioBlock, DownloadBlock, GlossaryBlock, QuoteBlock, SupplementBlock
- Serialization: JSON and YAML support
- Type Registry: Extensible registry for block types
- Block Operations: Add, remove, move, and find blocks
- Metadata: Track creation/update times, favorites, tags, and custom metadata
- Extensibility: Add custom block types without modifying the core library
Installation
pip install blockkit
Quick Start
from corelab_blockkit import BlockList, TextBlock, ImageBlock
# Create a block list
blocks = BlockList()
# Add a text block
text_block = TextBlock(
text="Hello **world**! This is a *markdown* formatted text block.",
format="markdown",
)
blocks = blocks.add(text_block)
# Add an image block
image_block = ImageBlock(
url="https://example.com/image.jpg",
alt_text="An example image",
caption="Figure 1: Example image",
)
blocks = blocks.add(image_block)
# Serialize to JSON
json_str = blocks.to_json(indent=2)
print(json_str)
# Serialize to YAML
yaml_str = blocks.to_yaml()
print(yaml_str)
# Deserialize from JSON
deserialized = BlockList.from_json(json_str)
Plugin Guide
You can extend blockkit with custom block types by creating a plugin. Here's how:
- Create a new package with a class that inherits from
BaseBlock - Define an entry point in your
pyproject.toml:
[project.entry-points."blockkit.blocks"]
my_block = "my_package:MyBlock"
- Install your package, and
blockkitwill automatically discover and register your block type
See the examples/plugin_example directory for a complete example.
JSON Specification
Each block is serialized to JSON with the following structure:
{
"id": "uuid-string",
"kind": "block-type",
"meta": {
"created_at": "iso-datetime",
"updated_at": "iso-datetime",
"is_favorite": false,
"tags": [],
"extra": {}
},
"payload": {
// Block-specific content
}
}
A block list is serialized as:
{
"blocks": [
// Array of block objects
]
}
License
This project is licensed under the Apache License 2.0 - see the LICENSE file for details.
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 corelab_blockkit-0.1.0.tar.gz.
File metadata
- Download URL: corelab_blockkit-0.1.0.tar.gz
- Upload date:
- Size: 16.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/2.1.2 CPython/3.13.2 Darwin/24.4.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3de8cf11137f43b5283aa9f89c605471437caf6ce4c6f0be25e55cd921e733ef
|
|
| MD5 |
240d5895dcae5fd3b5b4bf57317aa58a
|
|
| BLAKE2b-256 |
e15ec6b913c4726dc94090f12afc2a0523da3986543949ad4371f15d359e1f0f
|
File details
Details for the file corelab_blockkit-0.1.0-py3-none-any.whl.
File metadata
- Download URL: corelab_blockkit-0.1.0-py3-none-any.whl
- Upload date:
- Size: 24.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/2.1.2 CPython/3.13.2 Darwin/24.4.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c50596d5b164d926572fa8aa9e497b7630d75e2cd0813391dc9798dbdcf1f7ba
|
|
| MD5 |
59583940bc3aff110d7c59ee44f2393d
|
|
| BLAKE2b-256 |
4433970aa3c636c579b5d604b004a0109e6206a48895489c29d821aa369922d0
|