{ "cells": [ { "cell_type": "markdown", "id": "0", "metadata": {}, "source": [ "
You are looking at an HTML rendering of the generated widgets, they are lacking responsiveness due to no Python kernel being available for callbacks.
" ] }, { "cell_type": "markdown", "id": "1", "metadata": {}, "source": [ "# Comprehensive overview of implemented capabilities" ] }, { "cell_type": "markdown", "id": "2", "metadata": {}, "source": [ "This project currently implements and combines:\n", "\n", "- Primitive types (`string`, `integer`, `number`, `boolean`)\n", "- Numeric constraints (`minimum`, `maximum`)\n", "- String validation via `pattern`\n", "- Enums and defaults\n", "- Nested object structures\n", "- Arrays with typed items\n", "- Form data read/write through `.data`\n", "- Reactive callbacks via `.observe()`\n", "- Pydantic model to schema conversion" ] }, { "cell_type": "code", "execution_count": null, "id": "3", "metadata": {}, "outputs": [], "source": [ "from ipywidgets_jsonschema import Form\n", "\n", "capability_schema = {\n", " \"type\": \"object\",\n", " \"properties\": {\n", " \"project_name\": {\"type\": \"string\", \"default\": \"demo-project\"},\n", " \"run_mode\": {\n", " \"type\": \"string\",\n", " \"enum\": [\"fast\", \"balanced\", \"accurate\"],\n", " \"default\": \"balanced\",\n", " },\n", " \"retries\": {\"type\": \"integer\", \"minimum\": 0, \"maximum\": 8, \"default\": 2},\n", " \"quality_score\": {\n", " \"type\": \"number\",\n", " \"minimum\": 0.0,\n", " \"maximum\": 1.0,\n", " \"default\": 0.85,\n", " },\n", " \"enabled\": {\"type\": \"boolean\", \"default\": True},\n", " \"tags\": {\n", " \"type\": \"array\",\n", " \"items\": {\"type\": \"string\"},\n", " \"default\": [\"baseline\", \"qa\"],\n", " },\n", " \"experiment\": {\n", " \"type\": \"object\",\n", " \"properties\": {\n", " \"operator\": {\"type\": \"string\", \"default\": \"student\"},\n", " \"location\": {\"type\": \"string\", \"default\": \"lab-1\"},\n", " },\n", " \"required\": [\"operator\", \"location\"],\n", " },\n", " },\n", " \"required\": [\n", " \"project_name\",\n", " \"run_mode\",\n", " \"retries\",\n", " \"quality_score\",\n", " \"enabled\",\n", " \"tags\",\n", " \"experiment\",\n", " ],\n", "}\n", "\n", "capability_form = Form(\n", " capability_schema,\n", " use_sliders=True,\n", " preconstruct_array_items=2,\n", " show_descriptions=True,\n", ")\n", "capability_form.show()" ] }, { "cell_type": "code", "execution_count": null, "id": "4", "metadata": {}, "outputs": [], "source": [ "capability_form.data" ] }, { "cell_type": "code", "execution_count": null, "id": "5", "metadata": {}, "outputs": [], "source": [ "def on_change(change):\n", " print(\"Changed:\", change.get(\"name\"), \"->\", change.get(\"new\"))\n", "\n", "\n", "capability_form.observe(on_change)" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "name": "python", "version": "3" } }, "nbformat": 4, "nbformat_minor": 5 }