Skip to main content

No project description provided

Project description

blockkit

A library for building and managing content blocks.

Python Version License

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:

  1. Create a new package with a class that inherits from BaseBlock
  2. Define an entry point in your pyproject.toml:
[project.entry-points."blockkit.blocks"]
my_block = "my_package:MyBlock"
  1. Install your package, and blockkit will 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


Download files

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

Source Distribution

corelab_blockkit-0.1.0.tar.gz (16.4 kB view details)

Uploaded Source

Built Distribution

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

corelab_blockkit-0.1.0-py3-none-any.whl (24.7 kB view details)

Uploaded Python 3

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

Hashes for corelab_blockkit-0.1.0.tar.gz
Algorithm Hash digest
SHA256 3de8cf11137f43b5283aa9f89c605471437caf6ce4c6f0be25e55cd921e733ef
MD5 240d5895dcae5fd3b5b4bf57317aa58a
BLAKE2b-256 e15ec6b913c4726dc94090f12afc2a0523da3986543949ad4371f15d359e1f0f

See more details on using hashes here.

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

Hashes for corelab_blockkit-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 c50596d5b164d926572fa8aa9e497b7630d75e2cd0813391dc9798dbdcf1f7ba
MD5 59583940bc3aff110d7c59ee44f2393d
BLAKE2b-256 4433970aa3c636c579b5d604b004a0109e6206a48895489c29d821aa369922d0

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