Pondering generating notebooks from nbdime again (as 
per https://github.com/jupyter/nbdime/issues/251 ) I was wondering if 
there's a simple way of getting numeric  cell key values from a notebook?

eg if ai have a setup

fn1="test1.ipynb"
fn2="test2.ipynb"
a = nbformat.read(fn1, as_version=4)
b= nbformat.read(fn2, as_version=4)

I seem to be able to get a list of diffs 
as: nbdime.diffing.diff_notebooks(a, b)

nbdime.diffing.generic.diff_dicts(a, b)

though I don't really understand the datastructure (eg multiple levels of 
"diff" inside a "diff" per things like: {'diff': [{'diff': [{'diff': 
[{'diff': [{'diff': [{'diff': [{'key': 46, }

I assume that the 'key' uniquely identifies a line in the notebook a - if 
so, is there anything that takes notebook and returns it as a data 
structure with 'key' elements identified according to the same numbering 
scheme? Then I could print out the (unchanged) elements from a if the key 
is not in the diff file, or print the diff element if the key is in the 
diff file?

eg as a roundabout case in point - I can print notebook a as:

nbdime.prettyprint.pretty_print_notebook(a)

and diff between notebook a and b:

nbdime.prettyprint.pretty_print_notebook_diff(fn1,fn2,a,d)

that gives a display akin to nbdiff-web with "Hide unchanged cells" checked:

But how would I go about doing a pretty print to display the equivalent of 
nbdiff-web 
with "Hide unchanged cells" unchecked (i.e. displaying unchanged cells too)?

--tony

PS context is:

What I have in mind exploring is a set of functions equivalent to 
pretty_print_diff_entry() 
etc along the lines of  nb_create_diff_entry() that add metadata annotated 
cells to an output notebook rather than as colour coded lines in an output 
text stream. Cell metadata state would identifying the state of the cell 
(added, removed, etc). I'd also like a switch to be able to add 
(optionally) unchanged cells to the output notebook, or just unchanged 
notebook cells with a particular metadata element set in the original 
notebook (so eg I could force a cell to always appear in the output diff 
whether it was changed or not).

My use case is trying to explore the space of instructor marking of student 
notebooks where students are provided with a template notebook which may 
contain lots of text. Idea would be to create an diff-notebook that 
contains just student modified cells and some heading cells from the 
original notebook. (Thinks: actually, I could do that anyway - add a 
'stripme' metadata element to cells in notebook supplied to students then 
run student returned notebooks through a processor that creates a child 
notebook without the 'stripme' cells.)

The nbgrader doesn't quite work for my setting (and I'm not sure what 
workflow would). Something around diffing feels right, but I want to try to 
keep things as diff-revealing jupyter notebooks rather than a diff 
revealing text files.

I think I need to walk the dog again to try to clarify my thoughts a bit 
more!


-- 
You received this message because you are subscribed to the Google Groups 
"Project Jupyter" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/jupyter/5e895be4-6ad6-4fec-a751-dbede9d68b30%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to