World Model Kit
Project description
World Model Kit
World Model Kit (WMK) is a comprehensive toolkit designed to streamline the development, deployment, and operation of interactive world models.
Key Features
-
High-Performance Rendering Native system integration for efficient real-time visualization of world model outputs, optimized for various display environments.
-
Interactive User Interface Comprehensive input processing system with support for keyboard and mouse interactions, event handling, and real-time response capabilities.
-
Extensible Architecture Built on top of Pyglet, enabling easy creation of custom window classes, event handlers, and graphics components.
-
Advanced Communication Layer Robust inter-process communication system featuring seamless integration with web clients and flexible message passing capabilities.
-
Media Processing Built-in support for audio and video capture from PipeWire sources with real-time processing capabilities.
-
Dependency Management Tools for packaging Python dependencies and project files into distributable archives with platform-specific package handling.
Installation
pip install wmk
Usage
Interactive Display with Player
Example of using the Player and Messenger modules for interactive applications:
from wmk.player import Player
from wmk.messenger import Messenger
is_user_connected = False
def handle_user_connection(message):
nonlocal is_user_connected
is_user_connected = True if message["type"] == "connected" else False
messenger = Messenger("/tmp/server.sock", "/tmp/client.sock")
messenger.push_handlers(connected=handle_user_connection, disconnected=handle_user_connection)
def frame_generator(window, dt):
# Generate and return your frame here
return frame if is_user_connected else empty_frame
player = Player(frame_generator)
player.run()
messenger.start()
Media Capture with MediaConsumer
To use MediaConsumer, make sure that your system supports GStreamer, for Ubuntu install the following packages:
sudo apt install libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev python3-gi libgirepository-2.0-dev libcairo2-dev
Install WMK with optional dependencis media:
pip install wmk[media]
Example of capturing audio and video from PipeWire sources:
from wmk.media_consumer import MediaConsumer
def handle_media(frame):
if frame.type == 'video':
# Process video frame
print(f"Received video frame: {frame.data.shape}")
else:
# Process audio data
print(f"Received audio samples: {len(frame.data)}")
consumer = MediaConsumer(audio_node_id=51, video_node_id=52)
consumer.push_handlers(data=handle_media)
consumer.start()
File Downloads
Using the Loader for managing file downloads:
from wmk.loader import Loader
loader = Loader()
# Single file download
loader.download_file("https://example.com/file.dat", "local_file.dat")
# Multiple files in parallel
urls = {
"https://example.com/file1.dat": "local_file1.dat",
"https://example.com/file2.dat": "local_file2.dat"
}
results = loader.download_files(urls)
Command Line Interface
WMK provides a CLI for common operations:
# Package a project
wmk package --target ./myproject --name build.zip --platform manylinux2014_x86_64
# Download a file
wmk download --url https://example.com/file.dat --filepath local_file.dat
Development
To contribute to this library, first checkout the code. Then create a new virtual environment:
cd wmk
python -m venv venv
source venv/bin/activate
And install the dependencies:
python -m pip install -e '.'
To run the tests:
python -m pytest
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 wmk-0.28.tar.gz.
File metadata
- Download URL: wmk-0.28.tar.gz
- Upload date:
- Size: 42.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.12.8
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
348421f45f037acfa7706853ab239cf3f89f2caf74edf8dccd150e01273f3434
|
|
| MD5 |
bdcb782041eac142f121cfd31339976a
|
|
| BLAKE2b-256 |
f2993c0e6b71a04324bb4b3726112359a4e1d7723ae910602cd8493b90ac70ef
|
Provenance
The following attestation bundles were made for wmk-0.28.tar.gz:
Publisher:
publish.yml on journee-live/wmk
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
wmk-0.28.tar.gz -
Subject digest:
348421f45f037acfa7706853ab239cf3f89f2caf74edf8dccd150e01273f3434 - Sigstore transparency entry: 172176724
- Sigstore integration time:
-
Permalink:
journee-live/wmk@38bb488ce83a3805346c0a92fc585fce23144fb4 -
Branch / Tag:
refs/tags/v0.28-alpha - Owner: https://github.com/journee-live
-
Access:
private
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@38bb488ce83a3805346c0a92fc585fce23144fb4 -
Trigger Event:
release
-
Statement type:
File details
Details for the file wmk-0.28-py3-none-any.whl.
File metadata
- Download URL: wmk-0.28-py3-none-any.whl
- Upload date:
- Size: 37.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.12.8
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3b7ee1940d5e0b63fde97dc6d6e0ae706764312bb2c9c942ceb284e8fb585bbf
|
|
| MD5 |
310e5206c746d7b4f167a551f5ea0294
|
|
| BLAKE2b-256 |
0ef3d0e83f01938d5e4dfb0ace3d963b19cc4a5e4cd66f6e84d23e229d39e77b
|
Provenance
The following attestation bundles were made for wmk-0.28-py3-none-any.whl:
Publisher:
publish.yml on journee-live/wmk
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
wmk-0.28-py3-none-any.whl -
Subject digest:
3b7ee1940d5e0b63fde97dc6d6e0ae706764312bb2c9c942ceb284e8fb585bbf - Sigstore transparency entry: 172176725
- Sigstore integration time:
-
Permalink:
journee-live/wmk@38bb488ce83a3805346c0a92fc585fce23144fb4 -
Branch / Tag:
refs/tags/v0.28-alpha - Owner: https://github.com/journee-live
-
Access:
private
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@38bb488ce83a3805346c0a92fc585fce23144fb4 -
Trigger Event:
release
-
Statement type: