jupyter / nbformat

Reference implementation of the Jupyter Notebook format

Home Page:http://nbformat.readthedocs.io/

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Validation should not mutate arguments

Carreau opened this issue · comments

Currently if a code cell has a missing id, it will silently add one to it. This is problematic for a few reasons.

  1. it mutates arguments.
  2. it is counter intuitive WRT the name of the function and the docs that says it raises if invalid.

1 + 2 create signing issues, indeed validate is called when writing and most notebook manger do :

  • compute signature
  • save (indirectly validate).

They assume that what you save is identical to what you give to nbformat, but as validate mutates things it is untrue.

Now with validate mutating, what is saved has a different signature than what was computed just above, and worse, as it mutates you may be scratching your head as to why.

I thin that validate should raise unconditionally if the notebook is invalid or requires modifications, and that for convenience you may want to have a normalise() function/method that you can call to do any mutations if you wish to.

As raising is likely to break a bunch of stuff, we have to have a transition plan. I suggest to emit a warning.

this has been fixed in 5.6.0, right?