File: test_nbpy.py

package info (click to toggle)
nbformat 5.10.4-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 1,072 kB
  • sloc: python: 4,746; makefile: 167; javascript: 2
file content (44 lines) | stat: -rw-r--r-- 1,427 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
from __future__ import annotations

from unittest import TestCase

from nbformat.v3 import nbpy

from . import formattest
from .nbexamples import nb0_py


class TestPy(formattest.NBFormatTest, TestCase):
    nb0_ref = nb0_py
    ext = "py"
    mod = nbpy
    ignored_keys = ["collapsed", "outputs", "prompt_number", "metadata"]  # noqa

    def assertSubset(self, da, db):
        """assert that da is a subset of db, ignoring self.ignored_keys.

        Called recursively on containers, ultimately comparing individual
        elements.
        """
        if isinstance(da, dict):
            for k, v in da.items():
                if k in self.ignored_keys:
                    continue
                self.assertTrue(k in db)
                self.assertSubset(v, db[k])
        elif isinstance(da, list):
            for a, b in zip(da, db):
                self.assertSubset(a, b)
        else:
            if isinstance(da, str) and isinstance(db, str):
                # pyfile is not sensitive to preserving leading/trailing
                # newlines in blocks through roundtrip
                da = da.strip("\n")
                db = db.strip("\n")
            self.assertEqual(da, db)
        return True

    def assertNBEquals(self, nba, nbb):
        # since roundtrip is lossy, only compare keys that are preserved
        # assumes nba is read from my file format
        return self.assertSubset(nba, nbb)