Mi objetivo es escribir un visor de variables interactivas para IPython, es decir, que permita ver divisiones/listas anidadas como un árbol y profundizar (un poco como la consola .log en Javascript).Ejemplo minimalista de kernel de IPython comunicación bidireccional de javascript
Pasé mucho tiempo tratando de extraer código minimalista del ejemplo de DirectView en IPython, pero todavía no entiendo cómo funciona todo. My Python está bien, pero mi experiencia jQuery es bastante limitada.
Así que llegué a despojar a la siguiente directview.js
container.show();
var widget = $('<div/>')
element.append(widget);
var output = $('<div></div>');
$(widget).append(output)
var output_area = new IPython.OutputArea(output, false);
var callbacks = { 'output': $.proxy(output_area.handle_output, output_area) };
var code = 'print 1+1'
var msg_id = IPython.notebook.kernel.execute(code, callbacks, {silent: false});
Esto funciona cuando la carga del directview.ipynb. Sin embargo, aún no estoy seguro de cómo hacerlo completamente independiente (es decir, no requiere el directview.py, y pasar otra devolución de llamada que el estándar handle_output
de IPython.OutputArea
). Uno de los problemas es el container.show()
que falla cuando se lo llama de manera independiente.
estoy perdido en varios aspectos:
- ¿Por qué hay un
element.append(widget)
y luego$(widget).append(output)
? Además, ¿por qué también es necesario crear unIpython.OutputArea
. ¿No hay una manera de simplemente crear un<div id=my_output_area>blah</div>
y luego tener la devolución de llamadaoutput
llenarlo con los datos relevantes? - ¿De qué se trata toda la .proxy? Me gustaría crear mi propia devolución de llamada para
output
pero cuando hago eso yconsole.log()
los argumentos pasan a la devolución de llamada, sonundefined
o simplemente inútiles.
Soy consciente de que los autores de la portátil IPython han hecho un trabajo increíble creando un hermoso front-end tales usando jQuery/websockets, y que la creación de documentación para desarrolladores que permite a los principiantes como yo, para ajustar con él está pidiendo mucho, pero si alguien puede dar una mano, ¡sería genial!