Skip to content

Validation should not mutate arguments #235

@Carreau

Description

@Carreau

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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions