跳转到主要内容

在IPython笔记本中反应式地编织文档

项目描述

build-badge pypi-badge

Tangle启发,在Jupyter Notebook中的反应式叙述。

安装

使用以下命令获取最新版本:

或者使用最新版本

pip install ipytangle

使用

pip install -e git+https://github.com/bollwyvl/ipytangle#egg=IPyTangle

用法

在笔记本中,编写以下python…

from ipytangle import tangle

tangle(cookies=3, calories=lambda cookies: cookies * 50)

然后是以下markdown

When you eat [`cookies` cookies](#:cookies), you consume [`calories` calories](#:calories).

你会看到类似这样的内容

当你吃 `2 个饼干 <#:cookies>`__,你将消耗 `150 卡路里 <#:>`__。

与链接的交互将导致结果更新。

示例

改编自Tangle的原始内容。

此外,ipytangle还集成了IPython的interact,这是开始使用小部件的最简单方法。

  • `与tangle交互` <notebooks/examples/Interacting%20with%20a%20tangle.ipynb>`__

  • 将`interact`编织在一起 <notebooks/examples/Tangling%20up%20interact.ipynb>`__

Markdown

ipytangle实现了大多数TangleKit基本功能,作为markdown链接。因为它没有添加新的符号,未渲染的Tangle Markdown仍然可以以有用的方式显示。

通常,将链接视为

[what the user sees](#:tangle types)

在链接文本中,反引号(``)用于表示在用户交互、级联更新或其他内核更新时将更新的JavaScript表达式。除了使用 ipytangle 定义的任何变量外,还提供了一些 格式化 库。全局变量 window 也应该可以正常工作 :wink:。

只有生成的 代码 块将被转换,其余的元素(如果有)将保持不变。这意味着您可以在控制标签内部使用图像,例如。

小部件

在它的核心,ipytangle 提供 Tangle,一个 IPython Widget。由于这个原因,一个 Tangle 可以通过 traitletslinks 连接到任何其他 IPython 小部件。与许多小部件不同,一个 Tangle 并没有在其屏幕空间上做很多工作,可能不太适合放入布局中。然而。

创建 Tangle 有几种方法。

ipytangle.tangle

就像上面的例子一样,这试图采取最 Pythonic 的方法。

from ipytangle import tangle

square = tangle(x=1, y=(1, lambda x: x*x))

print("square is", square)
square.x = 2
print("y is", square.y)
square is <IPython.utils.traitlets.DynamicAutoTangle139717235746760 object at 0x7f1274347ef0>
y is 4
链接到其他小部件

tangle 使处理其他核心和自定义小部件变得容易,自动复制属性信息。如果小部件实现了 value,如大多数核心小部件所做的那样,您可以直接引用它。或者,指定一个 tuple(widget, "trait_name") 以订阅该属性。

from IPython.html.widgets import IntSlider

x = IntSlider(1)
square = tangle(x=x,  y=(1, lambda x: x*x))

print("square is", square)
x.value = 2
print("y is", square.y)
square is <IPython.utils.traitlets.DynamicAutoTangle139717235839048 object at 0x7f1274362080>
y is 4

ipytangle.Tangle

如果您已经熟悉小部件,子类化 Tangle 可能是最方便的

from ipytangle import Tangle
from IPython.utils import traitlets

class Square(Tangle):
    x = traitlets.CInt(1, sync=True)
    y = traitlets.CInt(1, sync=True)

    def _x_changed(self):
        self.y = self.x * self.x

square = Square()

print("square is", square)
square.x = 2
print("y is", square.y)
square is <__main__.Square object at 0x7f127434b7f0>
y is 4


A future version of IPython Widgets will allow dynamically-added
traits with ``add_trait``. This will open up whole new areas for
tinkering. Stay tuned!

格式化

除了您局部绑定的变量外,ipytangle 还捆绑了一些用于格式化文本和数字的漂亮的 JavaScript 库和快捷方式: - `moment` <https://moment.js.cn/> 日期和时间 - `mathjs` <http://mathjs.org/> 科学单位- [numeral](http://numeraljs.com/) 货币和杂项

灵感

当然,Brett Victor 的 Tangle 是主要的灵感来源,还有: - tributary - derby - d3

路线图

  • 支持 TangleKit 基础

  • 浮点数

  • 开关

  • \(L_AT^EX\)(如上所述)

  • Sparklines、分布等。

  • 离线/nbviewer?

项目详情


下载文件

下载适合您平台的文件。如果您不确定选择哪个,请了解更多关于 安装包 的信息。

源分发

ipytangle-0.4.0.tar.gz (520.7 kB 查看哈希值)

上传时间

由以下提供支持