轻松创建自定义jupyter小部件
项目描述
anywidget
轻松创建自定义jupyter小部件
安装 . 文档 . discord . 了解
关于
anywidget 使用现代网络标准简化自定义Jupyter小部件的创建和分发。
- 🛠️ 创建无需复杂cookiecutter模板的小部件
- 📚 如其他Python包一样 发布到PyPI
- 🤖 在
.ipynb
或.py
文件中 内原型设计 - 🚀 在 Jupyter、JupyterLab、Google Colab、VSCode 等中 运行
- ⚡ 使用类似现代Web框架的 即时HMR 进行开发
在Jupyter博客中了解更多。
安装
anywidget 可在 PyPI 上找到
pip install "anywidget[dev]"
同样也在 conda-forge
conda install -c conda-forge anywidget
用法
import anywidget
import traitlets
class CounterWidget(anywidget.AnyWidget):
# Widget front-end JavaScript code
_esm = """
function render({ model, el }) {
let button = document.createElement("button");
button.innerHTML = `count is ${model.get("value")}`;
button.addEventListener("click", () => {
model.set("value", model.get("value") + 1);
model.save_changes();
});
model.on("change:value", () => {
button.innerHTML = `count is ${model.get("value")}`;
});
el.appendChild(button);
}
export default { render };
"""
# Stateful property that can be accessed by JavaScript & Python
value = traitlets.Int(0).tag(sync=True)
前端代码也可以存在于单独的文件中(推荐)
import pathlib
import anywidget
import traitlets
class CounterWidget(anywidget.AnyWidget):
_esm = pathlib.Path("index.js")
_css = pathlib.Path("styles.css")
value = traitlets.Int(0).tag(sync=True)
阅读文档了解更多。
软件包
除了主要的Python包之外,anywidget 还提供了一套工具,帮助您构建和分发自定义Jupyter小部件。
名称 | 描述 | 版本(点击查看变更日志) |
---|---|---|
anywidget |
主要Python包 | |
npm:@anywidget/types |
客户端类型声明 | |
npm:@anywidget/vite |
Vite插件 | |
npm:@anywidget/react |
React框架适配器 | |
npm:@anywidget/svelte |
Svelte框架适配器 | |
npm:create-anywidget |
用于引导新项目的CLI | |
jsr:@anywidget/deno |
用于Deno Jupyter内核的后端 |
支持
贡献
欢迎新贡献者!查看我们的贡献者指南以获取帮助开始。
加入我们的Discord(https://discord.gg/W5h4vPMbDQ)群组,与其他维护者见面。我们将立即帮助你完成首次贡献!
许可
项目详情
下载文件
下载适合您平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。
源代码分布
anywidget-0.9.13.tar.gz (9.7 MB 查看哈希)
构建分布
anywidget-0.9.13-py3-none-any.whl (213.7 kB 查看哈希)