Skip to main content

Violit Drawable Konva

Usage demo — draw, spline, background, crop, and json_data coordinates

Violit widget wrapping the same Konva canvas used by streamlit-drawable-konva (0.2.0 tracks Streamlit 0.5.x standalone).

Requires Violit ≥ 0.8.29 (app.register_js_widget).

Features

  • vl_canvas — drawable Konva canvas (same tools as st_canvas)
  • vl_image_comparison — before/after slider companion (same as st_image_comparison)
  • Background color / image (upload or sample)
  • Scene json_data with coordinates (x/y/width/height/points)
  • Spline helpers: splines_from_json, sample_spline, …

Demo uses dark theme. Pass Violit State / callables into vl_canvas (not .value) so drawing mode and stroke update live.

Install (editable)

cd /devel/dev/cvrlab/violit-drawable-konva
uv venv .venv
source .venv/bin/activate
uv pip install -e ".[dev]"

Sync the browser IIFE from the Streamlit sibling build (required before demo / packaging):

# ensure standalone.js exists in streamlit-drawable-konva first
bash scripts/sync_standalone.sh

Until you sync, the package falls back to:

../streamlit-drawable-konva/streamlit_drawable_konva/frontend/build/standalone.js

Demo

source .venv/bin/activate
.venv/bin/violit run demo/app.py --reload --localhost --port 8031
# → http://localhost:8031

demo/app.py must end with app.run() (Violit does not auto-start the server).

Tests

pytest -q

Usage

import violit as vl
from violit_drawable_konva import ensure_registered, vl_canvas, vl_image_comparison

app = vl.App(title="Canvas", theme="dark")
ensure_registered(app)  # optional; also called by vl_canvas / vl_image_comparison

drawing_mode = app.state("polygon", key="drawing_mode")
stroke_width = app.state(3, key="stroke_width")
stroke_color = app.state("#111", key="stroke_color")
bg_file = app.state(None, key="bg_file")
payload = app.state({"image_data_url": None, "json_data": None}, key="c1")

app.file_uploader("Background", type=[".png", ".jpg"], bind=bg_file)

result = vl_canvas(
    app,
    drawing_mode=drawing_mode,  # State, not .value
    stroke_width=stroke_width,
    stroke_color=stroke_color,
    background_image=bg_file,   # UploadedFile / PIL / State / callable
    height=400,
    width=600,
    key="c1",
    bind=payload,
)
# result.json_data / result.image_data

vl_image_comparison(app, img_before, img_after, width=600, key="cmp")

Helpers mirror the Streamlit package: crop_box_from_json, objects_by_group, splines_from_json, spline_control_points, sample_spline, sample_catmull_rom.

Layout

violit_drawable_konva/
  api.py                # ensure_registered, vl_canvas, vl_image_comparison
  payload.py / spline.py / helpers.py
  static/standalone.js  # synced IIFE (mount + mountImageComparison)
demo/app.py
tests/
scripts/sync_standalone.sh

Publish (PyPI)

cd /devel/dev/cvrlab/violit-drawable-konva

# 1) Sync JS from Streamlit build (after streamlit 0.5.x is built)
bash scripts/sync_standalone.sh

# 2) Tests
.venv/bin/python -m pytest -q

# 3) Commit & push
git add -A
git status
git commit -m "Release 0.2.0: image comparison companion and dark demo."
git push -u origin main
git tag v0.2.0 && git push origin v0.2.0

# 4) Build & publish
uv build
uv publish   # needs UV_PUBLISH_TOKEN or interactive PyPI token

Verify: https://pypi.org/project/violit-drawable-konva/

Bump version in pyproject.toml before each new upload.

Manual port checklist

  1. Build Streamlit frontend (npm run build) so standalone.js exists.
  2. bash scripts/sync_standalone.sh
  3. uv pip install -e ".[dev]" (violit>=0.8.29)
  4. pytest -q
  5. violit run demo/app.py --reload --localhost --port 8031
  6. Commit / tag / uv publish (see above)

Metadata

Release files for violit-drawable-konva 0.2.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for violit-drawable-konva 0.2.0
File Size Uploaded
violit_drawable_konva-0.2.0.tar.gz 158.6 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for violit-drawable-konva 0.2.0
File Interpreter ABI Platform
violit_drawable_konva-0.2.0-py3-none-any.whl Python 3 none any Details

Total release size: 316.3 kB

Release files / violit_drawable_konva-0.2.0.tar.gz

Download URL violit_drawable_konva-0.2.0.tar.gz
Size 158.6 kB
Tags Source
SHA-256 checksum
How to use checksums
d33eb61987ac14946a50269db7d7195bb50b397fdcc16aa585c949b81f54d69f
BLAKE2b-256 checksum
How to use checksums
7206822e60cb6dfcad7fff3a6cd1f3a94b255b530295b1e37a0189f984b7e81a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.12.19 {"installer":{"name":"uv","version":"0.12.19","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"CachyOS Linux","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

Release files / violit_drawable_konva-0.2.0-py3-none-any.whl

Download URL violit_drawable_konva-0.2.0-py3-none-any.whl
Size 157.7 kB
Tags Python 3
SHA-256 checksum
How to use checksums
c333d19eb4a27ffac5c41a3e6947e2117a3ea53cddf185fcd5b9b5947c8f6ad9
BLAKE2b-256 checksum
How to use checksums
ddd5da9e435368d09bf3dd2ace4036941f7e8fdde5b94d204de4e7da8dc920ca
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.12.19 {"installer":{"name":"uv","version":"0.12.19","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"CachyOS Linux","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

Release history Release notifications | RSS feed

0.4.0

2 release files

0.3.0

2 release files

This release

0.2.0 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page