Browse Source

Separate observables (#3296)

* Wip splitting observables.

* Fix imports.

* Update tests.

* Fix imports in tests.

* Integrity.

Integrity

* Update dependency graph.
Ian Rose 7 years ago
parent
commit
5de94bd5c2
54 changed files with 380 additions and 231 deletions
  1. 188 170
      docs/dependency-graph.svg
  2. 2 0
      jupyterlab/package.json
  3. 1 0
      packages/cells/package.json
  4. 1 1
      packages/cells/src/model.ts
  5. 1 1
      packages/cells/src/widget.ts
  6. 1 0
      packages/codeeditor/package.json
  7. 6 2
      packages/codeeditor/src/editor.ts
  8. 1 1
      packages/codeeditor/src/jsoneditor.ts
  9. 1 0
      packages/codemirror/package.json
  10. 5 1
      packages/codemirror/src/editor.ts
  11. 1 0
      packages/console/package.json
  12. 5 1
      packages/console/src/widget.ts
  13. 2 2
      packages/coreutils/README.md
  14. 0 1
      packages/coreutils/package.json
  15. 0 6
      packages/coreutils/src/index.ts
  16. 1 0
      packages/docregistry/package.json
  17. 5 1
      packages/docregistry/src/context.ts
  18. 5 1
      packages/docregistry/src/default.ts
  19. 5 1
      packages/docregistry/src/registry.ts
  20. 1 0
      packages/metapackage/package.json
  21. 1 0
      packages/metapackage/src/index.ts
  22. 1 0
      packages/notebook/package.json
  23. 5 5
      packages/notebook/src/celllist.ts
  24. 5 1
      packages/notebook/src/celltools.ts
  25. 6 2
      packages/notebook/src/model.ts
  26. 8 8
      packages/notebook/src/modelfactory.ts
  27. 5 1
      packages/notebook/src/widget.ts
  28. 3 0
      packages/observables/README.md
  29. 41 0
      packages/observables/package.json
  30. 11 0
      packages/observables/src/index.ts
  31. 0 0
      packages/observables/src/modeldb.ts
  32. 0 0
      packages/observables/src/observablejson.ts
  33. 0 0
      packages/observables/src/observablelist.ts
  34. 0 0
      packages/observables/src/observablemap.ts
  35. 0 0
      packages/observables/src/observablestring.ts
  36. 0 0
      packages/observables/src/undoablelist.ts
  37. 16 0
      packages/observables/tsconfig.json
  38. 1 0
      packages/outputarea/package.json
  39. 6 2
      packages/outputarea/src/model.ts
  40. 1 0
      packages/rendermime/package.json
  41. 5 1
      packages/rendermime/src/outputmodel.ts
  42. 1 0
      packages/services/package.json
  43. 5 1
      packages/services/src/contents/index.ts
  44. 1 0
      test/package.json
  45. 1 1
      test/src/codeeditor/jsoneditor.spec.ts
  46. 7 6
      test/src/index.ts
  47. 1 1
      test/src/notebook/celltools.spec.ts
  48. 5 1
      test/src/notebook/model.spec.ts
  49. 2 2
      test/src/observables/modeldb.spec.ts
  50. 2 2
      test/src/observables/observablejson.spec.ts
  51. 2 2
      test/src/observables/observablelist.spec.ts
  52. 2 2
      test/src/observables/observablemap.spec.ts
  53. 2 2
      test/src/observables/observablestring.spec.ts
  54. 2 2
      test/src/observables/undoablelist.spec.ts

+ 188 - 170
docs/dependency-graph.svg

@@ -4,358 +4,376 @@
 <!-- Generated by graphviz version 2.38.0 (20140413.2041)
  -->
 <!-- Title: G Pages: 1 -->
-<svg width="1121pt" height="675pt"
- viewBox="0.00 0.00 1120.52 675.20" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
-<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 671.2)">
+<svg width="1141pt" height="688pt"
+ viewBox="0.00 0.00 1141.32 687.80" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 683.8)">
 <title>G</title>
-<polygon fill="white" stroke="none" points="-4,4 -4,-671.2 1116.52,-671.2 1116.52,4 -4,4"/>
+<polygon fill="white" stroke="none" points="-4,4 -4,-683.8 1137.32,-683.8 1137.32,4 -4,4"/>
 <!-- application -->
 <g id="node1" class="node"><title>application</title>
 <g id="a_node1"><a xlink:href="https://github.com/jupyterlab/jupyterlab/tree/master/packages/application" xlink:title="application">
-<ellipse fill="none" stroke="black" cx="193.524" cy="-536.393" rx="50.0912" ry="18"/>
-<text text-anchor="middle" x="193.524" y="-532.693" font-family="Times,serif" font-size="14.00">application</text>
+<ellipse fill="none" stroke="black" cx="194.322" cy="-527.084" rx="50.0912" ry="18"/>
+<text text-anchor="middle" x="194.322" y="-523.384" font-family="Times,serif" font-size="14.00">application</text>
 </a>
 </g>
 </g>
 <!-- docregistry -->
 <g id="node2" class="node"><title>docregistry</title>
 <g id="a_node2"><a xlink:href="https://github.com/jupyterlab/jupyterlab/tree/master/packages/docregistry" xlink:title="docregistry">
-<ellipse fill="none" stroke="black" cx="336.524" cy="-479.393" rx="50.0912" ry="18"/>
-<text text-anchor="middle" x="336.524" y="-475.693" font-family="Times,serif" font-size="14.00">docregistry</text>
+<ellipse fill="none" stroke="black" cx="336.322" cy="-461.084" rx="50.0912" ry="18"/>
+<text text-anchor="middle" x="336.322" y="-457.384" font-family="Times,serif" font-size="14.00">docregistry</text>
 </a>
 </g>
 </g>
 <!-- application&#45;&gt;docregistry -->
 <g id="edge1" class="edge"><title>application&#45;&gt;docregistry</title>
-<path fill="none" stroke="black" d="M227.582,-523.029C247.205,-515.096 272.28,-504.959 293.322,-496.453"/>
-<polygon fill="black" stroke="black" points="294.713,-499.666 302.673,-492.673 292.09,-493.176 294.713,-499.666"/>
+<path fill="none" stroke="black" d="M225.355,-512.926C245.883,-503.248 273.308,-490.319 295.634,-479.794"/>
+<polygon fill="black" stroke="black" points="297.302,-482.877 304.855,-475.447 294.317,-476.546 297.302,-482.877"/>
 </g>
 <!-- rendermime -->
 <g id="node6" class="node"><title>rendermime</title>
 <g id="a_node6"><a xlink:href="https://github.com/jupyterlab/jupyterlab/tree/master/packages/rendermime" xlink:title="rendermime">
-<ellipse fill="none" stroke="black" cx="476.524" cy="-299.393" rx="53.8905" ry="18"/>
-<text text-anchor="middle" x="476.524" y="-295.693" font-family="Times,serif" font-size="14.00">rendermime</text>
+<ellipse fill="none" stroke="black" cx="476.322" cy="-251.084" rx="53.8905" ry="18"/>
+<text text-anchor="middle" x="476.322" y="-247.384" font-family="Times,serif" font-size="14.00">rendermime</text>
 </a>
 </g>
 </g>
 <!-- docregistry&#45;&gt;rendermime -->
 <g id="edge3" class="edge"><title>docregistry&#45;&gt;rendermime</title>
-<path fill="none" stroke="black" d="M350.756,-462.133C375.113,-430.363 427.163,-362.472 455.736,-325.203"/>
-<polygon fill="black" stroke="black" points="458.822,-326.93 462.129,-316.864 453.267,-322.67 458.822,-326.93"/>
+<path fill="none" stroke="black" d="M348.85,-443.541C373.102,-406.637 429.505,-320.805 458.076,-277.327"/>
+<polygon fill="black" stroke="black" points="461.162,-279.005 463.729,-268.725 455.312,-275.16 461.162,-279.005"/>
 </g>
 <!-- apputils -->
 <g id="node3" class="node"><title>apputils</title>
 <g id="a_node3"><a xlink:href="https://github.com/jupyterlab/jupyterlab/tree/master/packages/apputils" xlink:title="apputils">
-<ellipse fill="none" stroke="black" cx="832.524" cy="-187.393" rx="38.1938" ry="18"/>
-<text text-anchor="middle" x="832.524" y="-183.693" font-family="Times,serif" font-size="14.00">apputils</text>
+<ellipse fill="none" stroke="black" cx="822.322" cy="-251.084" rx="38.1938" ry="18"/>
+<text text-anchor="middle" x="822.322" y="-247.384" font-family="Times,serif" font-size="14.00">apputils</text>
 </a>
 </g>
 </g>
 <!-- services -->
 <g id="node4" class="node"><title>services</title>
 <g id="a_node4"><a xlink:href="https://github.com/jupyterlab/jupyterlab/tree/master/packages/services" xlink:title="services">
-<ellipse fill="none" stroke="black" cx="955.524" cy="-219.393" rx="38.9931" ry="18"/>
-<text text-anchor="middle" x="955.524" y="-215.693" font-family="Times,serif" font-size="14.00">services</text>
+<ellipse fill="none" stroke="black" cx="945.322" cy="-251.084" rx="38.9931" ry="18"/>
+<text text-anchor="middle" x="945.322" y="-247.384" font-family="Times,serif" font-size="14.00">services</text>
 </a>
 </g>
 </g>
 <!-- apputils&#45;&gt;services -->
 <g id="edge2" class="edge"><title>apputils&#45;&gt;services</title>
-<path fill="none" stroke="black" d="M866.268,-196.052C880.143,-199.722 896.506,-204.049 911.348,-207.974"/>
-<polygon fill="black" stroke="black" points="910.77,-211.442 921.332,-210.615 912.56,-204.674 910.77,-211.442"/>
+<path fill="none" stroke="black" d="M860.944,-251.084C872.104,-251.084 884.483,-251.084 896.213,-251.084"/>
+<polygon fill="black" stroke="black" points="896.306,-254.584 906.306,-251.084 896.306,-247.584 896.306,-254.584"/>
 </g>
 <!-- coreutils -->
 <g id="node5" class="node"><title>coreutils</title>
 <g id="a_node5"><a xlink:href="https://github.com/jupyterlab/jupyterlab/tree/master/packages/coreutils" xlink:title="coreutils">
-<ellipse fill="none" stroke="black" cx="1071.52" cy="-250.393" rx="40.8928" ry="18"/>
-<text text-anchor="middle" x="1071.52" y="-246.693" font-family="Times,serif" font-size="14.00">coreutils</text>
+<ellipse fill="none" stroke="black" cx="1081.32" cy="-251.084" rx="40.8928" ry="18"/>
+<text text-anchor="middle" x="1081.32" y="-247.384" font-family="Times,serif" font-size="14.00">coreutils</text>
 </a>
 </g>
 </g>
 <!-- services&#45;&gt;coreutils -->
 <g id="edge6" class="edge"><title>services&#45;&gt;coreutils</title>
-<path fill="none" stroke="black" d="M989.497,-228.359C1000.9,-231.46 1013.88,-234.989 1026.05,-238.299"/>
-<polygon fill="black" stroke="black" points="1025.47,-241.768 1036.04,-241.015 1027.31,-235.013 1025.47,-241.768"/>
+<path fill="none" stroke="black" d="M984.362,-251.084C998.57,-251.084 1014.93,-251.084 1030.07,-251.084"/>
+<polygon fill="black" stroke="black" points="1030.32,-254.584 1040.32,-251.084 1030.32,-247.584 1030.32,-254.584"/>
+</g>
+<!-- observables -->
+<g id="node9" class="node"><title>observables</title>
+<g id="a_node9"><a xlink:href="https://github.com/jupyterlab/jupyterlab/tree/master/packages/observables" xlink:title="observables">
+<ellipse fill="none" stroke="black" cx="1081.32" cy="-186.084" rx="51.9908" ry="18"/>
+<text text-anchor="middle" x="1081.32" y="-182.384" font-family="Times,serif" font-size="14.00">observables</text>
+</a>
+</g>
+</g>
+<!-- services&#45;&gt;observables -->
+<g id="edge7" class="edge"><title>services&#45;&gt;observables</title>
+<path fill="none" stroke="black" d="M972.796,-238.242C992.284,-228.789 1019.1,-215.782 1041.07,-205.122"/>
+<polygon fill="black" stroke="black" points="1042.69,-208.228 1050.16,-200.715 1039.64,-201.93 1042.69,-208.228"/>
 </g>
 <!-- rendermime&#45;interfaces -->
 <g id="node7" class="node"><title>rendermime&#45;interfaces</title>
 <g id="a_node7"><a xlink:href="https://github.com/jupyterlab/jupyterlab/tree/master/packages/rendermime-interfaces" xlink:title="rendermime&#45;interfaces">
-<ellipse fill="none" stroke="black" cx="657.524" cy="-243.393" rx="90.9839" ry="18"/>
-<text text-anchor="middle" x="657.524" y="-239.693" font-family="Times,serif" font-size="14.00">rendermime&#45;interfaces</text>
+<ellipse fill="none" stroke="black" cx="657.322" cy="-87.0843" rx="90.9839" ry="18"/>
+<text text-anchor="middle" x="657.322" y="-83.3843" font-family="Times,serif" font-size="14.00">rendermime&#45;interfaces</text>
 </a>
 </g>
 </g>
 <!-- rendermime&#45;&gt;rendermime&#45;interfaces -->
 <g id="edge4" class="edge"><title>rendermime&#45;&gt;rendermime&#45;interfaces</title>
-<path fill="none" stroke="black" d="M516.364,-287.241C540.357,-279.735 571.593,-269.963 598.486,-261.55"/>
-<polygon fill="black" stroke="black" points="599.677,-264.844 608.176,-258.518 597.587,-258.164 599.677,-264.844"/>
+<path fill="none" stroke="black" d="M486.114,-232.996C499.874,-206.347 528.85,-156.423 566.33,-126.084 576.042,-118.223 587.581,-111.663 599.101,-106.306"/>
+<polygon fill="black" stroke="black" points="600.552,-109.491 608.301,-102.265 597.737,-103.082 600.552,-109.491"/>
 </g>
 <!-- codemirror -->
 <g id="node8" class="node"><title>codemirror</title>
 <g id="a_node8"><a xlink:href="https://github.com/jupyterlab/jupyterlab/tree/master/packages/codemirror" xlink:title="codemirror">
-<ellipse fill="none" stroke="black" cx="657.524" cy="-356.393" rx="50.0912" ry="18"/>
-<text text-anchor="middle" x="657.524" y="-352.693" font-family="Times,serif" font-size="14.00">codemirror</text>
+<ellipse fill="none" stroke="black" cx="657.322" cy="-415.084" rx="50.0912" ry="18"/>
+<text text-anchor="middle" x="657.322" y="-411.384" font-family="Times,serif" font-size="14.00">codemirror</text>
 </a>
 </g>
 </g>
 <!-- rendermime&#45;&gt;codemirror -->
 <g id="edge5" class="edge"><title>rendermime&#45;&gt;codemirror</title>
-<path fill="none" stroke="black" d="M516.364,-311.761C543.893,-320.527 580.957,-332.329 610.056,-341.596"/>
-<polygon fill="black" stroke="black" points="609.004,-344.934 619.594,-344.633 611.128,-338.264 609.004,-344.934"/>
+<path fill="none" stroke="black" d="M485.815,-268.921C499.389,-295.732 528.356,-346.523 566.33,-377.084 578.46,-386.847 593.465,-394.495 607.722,-400.289"/>
+<polygon fill="black" stroke="black" points="606.838,-403.698 617.428,-404.007 609.342,-397.161 606.838,-403.698"/>
 </g>
 <!-- codemirror&#45;&gt;apputils -->
-<g id="edge9" class="edge"><title>codemirror&#45;&gt;apputils</title>
-<path fill="none" stroke="black" d="M702.827,-348.311C718.477,-343.818 735.423,-336.917 748.516,-326.393 758.462,-318.397 796.071,-251.792 817.089,-213.758"/>
-<polygon fill="black" stroke="black" points="820.288,-215.204 822.048,-204.757 814.157,-211.826 820.288,-215.204"/>
+<g id="edge11" class="edge"><title>codemirror&#45;&gt;apputils</title>
+<path fill="none" stroke="black" d="M698.186,-404.464C715.06,-398.49 734.066,-389.646 748.314,-377.084 779.053,-349.983 800.135,-306.686 811.466,-278.569"/>
+<polygon fill="black" stroke="black" points="814.842,-279.543 815.199,-268.954 808.317,-277.009 814.842,-279.543"/>
 </g>
 <!-- codeeditor -->
-<g id="node11" class="node"><title>codeeditor</title>
-<g id="a_node11"><a xlink:href="https://github.com/jupyterlab/jupyterlab/tree/master/packages/codeeditor" xlink:title="codeeditor">
-<ellipse fill="none" stroke="black" cx="832.524" cy="-299.393" rx="48.1917" ry="18"/>
-<text text-anchor="middle" x="832.524" y="-295.693" font-family="Times,serif" font-size="14.00">codeeditor</text>
+<g id="node12" class="node"><title>codeeditor</title>
+<g id="a_node12"><a xlink:href="https://github.com/jupyterlab/jupyterlab/tree/master/packages/codeeditor" xlink:title="codeeditor">
+<ellipse fill="none" stroke="black" cx="945.322" cy="-186.084" rx="48.1917" ry="18"/>
+<text text-anchor="middle" x="945.322" y="-182.384" font-family="Times,serif" font-size="14.00">codeeditor</text>
 </a>
 </g>
 </g>
 <!-- codemirror&#45;&gt;codeeditor -->
-<g id="edge10" class="edge"><title>codemirror&#45;&gt;codeeditor</title>
-<path fill="none" stroke="black" d="M695.212,-344.304C721.741,-335.564 757.751,-323.699 786.098,-314.359"/>
-<polygon fill="black" stroke="black" points="787.374,-317.624 795.776,-311.171 785.183,-310.976 787.374,-317.624"/>
+<g id="edge12" class="edge"><title>codemirror&#45;&gt;codeeditor</title>
+<path fill="none" stroke="black" d="M694.681,-402.81C711.616,-396.333 731.655,-387.55 748.314,-377.084 804.67,-341.679 816.693,-328.041 860.668,-278.084 879.818,-256.33 877.609,-245.419 897.226,-224.084 902.311,-218.555 908.229,-213.15 914.118,-208.231"/>
+<polygon fill="black" stroke="black" points="916.446,-210.85 922.05,-201.859 912.062,-205.393 916.446,-210.85"/>
 </g>
 <!-- cells -->
-<g id="node9" class="node"><title>cells</title>
-<g id="a_node9"><a xlink:href="https://github.com/jupyterlab/jupyterlab/tree/master/packages/cells" xlink:title="cells">
-<ellipse fill="none" stroke="black" cx="193.524" cy="-327.393" rx="27" ry="18"/>
-<text text-anchor="middle" x="193.524" y="-323.693" font-family="Times,serif" font-size="14.00">cells</text>
+<g id="node10" class="node"><title>cells</title>
+<g id="a_node10"><a xlink:href="https://github.com/jupyterlab/jupyterlab/tree/master/packages/cells" xlink:title="cells">
+<ellipse fill="none" stroke="black" cx="194.322" cy="-284.084" rx="27" ry="18"/>
+<text text-anchor="middle" x="194.322" y="-280.384" font-family="Times,serif" font-size="14.00">cells</text>
 </a>
 </g>
 </g>
 <!-- outputarea -->
-<g id="node10" class="node"><title>outputarea</title>
-<g id="a_node10"><a xlink:href="https://github.com/jupyterlab/jupyterlab/tree/master/packages/outputarea" xlink:title="outputarea">
-<ellipse fill="none" stroke="black" cx="336.524" cy="-327.393" rx="48.1917" ry="18"/>
-<text text-anchor="middle" x="336.524" y="-323.693" font-family="Times,serif" font-size="14.00">outputarea</text>
+<g id="node11" class="node"><title>outputarea</title>
+<g id="a_node11"><a xlink:href="https://github.com/jupyterlab/jupyterlab/tree/master/packages/outputarea" xlink:title="outputarea">
+<ellipse fill="none" stroke="black" cx="336.322" cy="-284.084" rx="48.1917" ry="18"/>
+<text text-anchor="middle" x="336.322" y="-280.384" font-family="Times,serif" font-size="14.00">outputarea</text>
 </a>
 </g>
 </g>
 <!-- cells&#45;&gt;outputarea -->
-<g id="edge7" class="edge"><title>cells&#45;&gt;outputarea</title>
-<path fill="none" stroke="black" d="M220.714,-327.393C236.855,-327.393 258.207,-327.393 278.116,-327.393"/>
-<polygon fill="black" stroke="black" points="278.36,-330.893 288.36,-327.393 278.36,-323.893 278.36,-330.893"/>
+<g id="edge8" class="edge"><title>cells&#45;&gt;outputarea</title>
+<path fill="none" stroke="black" d="M221.327,-284.084C237.286,-284.084 258.376,-284.084 278.072,-284.084"/>
+<polygon fill="black" stroke="black" points="278.21,-287.584 288.21,-284.084 278.21,-280.584 278.21,-287.584"/>
 </g>
 <!-- outputarea&#45;&gt;rendermime -->
-<g id="edge11" class="edge"><title>outputarea&#45;&gt;rendermime</title>
-<path fill="none" stroke="black" d="M379.303,-318.916C392.072,-316.325 406.323,-313.433 419.862,-310.686"/>
-<polygon fill="black" stroke="black" points="420.936,-314.04 430.04,-308.621 419.544,-307.18 420.936,-314.04"/>
+<g id="edge13" class="edge"><title>outputarea&#45;&gt;rendermime</title>
+<path fill="none" stroke="black" d="M377.237,-274.539C391.207,-271.199 407.125,-267.392 422.013,-263.832"/>
+<polygon fill="black" stroke="black" points="423.207,-267.145 432.119,-261.415 421.579,-260.337 423.207,-267.145"/>
 </g>
 <!-- codeeditor&#45;&gt;coreutils -->
-<g id="edge8" class="edge"><title>codeeditor&#45;&gt;coreutils</title>
-<path fill="none" stroke="black" d="M875.077,-290.801C916.741,-282.187 980.763,-268.951 1024.08,-259.995"/>
-<polygon fill="black" stroke="black" points="1024.99,-263.381 1034.08,-257.928 1023.57,-256.526 1024.99,-263.381"/>
+<g id="edge9" class="edge"><title>codeeditor&#45;&gt;coreutils</title>
+<path fill="none" stroke="black" d="M975.398,-200.188C995.513,-209.946 1022.43,-223.002 1043.96,-233.447"/>
+<polygon fill="black" stroke="black" points="1042.6,-236.678 1053.13,-237.894 1045.66,-230.38 1042.6,-236.678"/>
+</g>
+<!-- codeeditor&#45;&gt;observables -->
+<g id="edge10" class="edge"><title>codeeditor&#45;&gt;observables</title>
+<path fill="none" stroke="black" d="M993.565,-186.084C1001.71,-186.084 1010.28,-186.084 1018.73,-186.084"/>
+<polygon fill="black" stroke="black" points="1018.95,-189.584 1028.95,-186.084 1018.95,-182.584 1018.95,-189.584"/>
 </g>
 <!-- completer -->
-<g id="node12" class="node"><title>completer</title>
-<g id="a_node12"><a xlink:href="https://github.com/jupyterlab/jupyterlab/tree/master/packages/completer" xlink:title="completer">
-<ellipse fill="none" stroke="black" cx="657.524" cy="-299.393" rx="46.2923" ry="18"/>
-<text text-anchor="middle" x="657.524" y="-295.693" font-family="Times,serif" font-size="14.00">completer</text>
+<g id="node13" class="node"><title>completer</title>
+<g id="a_node13"><a xlink:href="https://github.com/jupyterlab/jupyterlab/tree/master/packages/completer" xlink:title="completer">
+<ellipse fill="none" stroke="black" cx="657.322" cy="-22.0843" rx="46.2923" ry="18"/>
+<text text-anchor="middle" x="657.322" y="-18.3843" font-family="Times,serif" font-size="14.00">completer</text>
 </a>
 </g>
 </g>
 <!-- completer&#45;&gt;apputils -->
-<g id="edge12" class="edge"><title>completer&#45;&gt;apputils</title>
-<path fill="none" stroke="black" d="M698.363,-290.917C714.668,-286.365 733.249,-279.722 748.516,-270.393 773.548,-255.095 796.675,-230.757 812.125,-212.383"/>
-<polygon fill="black" stroke="black" points="815.026,-214.365 818.662,-204.414 809.614,-209.925 815.026,-214.365"/>
+<g id="edge14" class="edge"><title>completer&#45;&gt;apputils</title>
+<path fill="none" stroke="black" d="M697.363,-31.0542C714.886,-36.8073 734.645,-45.936 748.314,-60.0843 771.589,-84.1758 800.225,-176.551 813.668,-223.438"/>
+<polygon fill="black" stroke="black" points="810.354,-224.58 816.449,-233.246 817.089,-222.671 810.354,-224.58"/>
 </g>
 <!-- completer&#45;&gt;codeeditor -->
-<g id="edge13" class="edge"><title>completer&#45;&gt;codeeditor</title>
-<path fill="none" stroke="black" d="M703.977,-299.393C725.421,-299.393 751.245,-299.393 774.032,-299.393"/>
-<polygon fill="black" stroke="black" points="774.261,-302.893 784.261,-299.393 774.261,-295.893 774.261,-302.893"/>
+<g id="edge15" class="edge"><title>completer&#45;&gt;codeeditor</title>
+<path fill="none" stroke="black" d="M691.437,-34.4841C708.718,-41.3475 730.014,-50.4303 748.314,-60.0843 809.429,-92.3246 876.248,-137.634 913.953,-164.221"/>
+<polygon fill="black" stroke="black" points="912.259,-167.311 922.442,-170.238 916.307,-161.6 912.259,-167.311"/>
 </g>
 <!-- console -->
-<g id="node13" class="node"><title>console</title>
-<g id="a_node13"><a xlink:href="https://github.com/jupyterlab/jupyterlab/tree/master/packages/console" xlink:title="console">
-<ellipse fill="none" stroke="black" cx="50.5236" cy="-327.393" rx="37.8943" ry="18"/>
-<text text-anchor="middle" x="50.5236" y="-323.693" font-family="Times,serif" font-size="14.00">console</text>
+<g id="node14" class="node"><title>console</title>
+<g id="a_node14"><a xlink:href="https://github.com/jupyterlab/jupyterlab/tree/master/packages/console" xlink:title="console">
+<ellipse fill="none" stroke="black" cx="50.3218" cy="-284.084" rx="37.8943" ry="18"/>
+<text text-anchor="middle" x="50.3218" y="-280.384" font-family="Times,serif" font-size="14.00">console</text>
 </a>
 </g>
 </g>
 <!-- console&#45;&gt;cells -->
-<g id="edge14" class="edge"><title>console&#45;&gt;cells</title>
-<path fill="none" stroke="black" d="M88.5697,-327.393C109.51,-327.393 135.576,-327.393 156.368,-327.393"/>
-<polygon fill="black" stroke="black" points="156.405,-330.893 166.405,-327.393 156.405,-323.893 156.405,-330.893"/>
+<g id="edge16" class="edge"><title>console&#45;&gt;cells</title>
+<path fill="none" stroke="black" d="M88.2599,-284.084C109.35,-284.084 135.694,-284.084 156.726,-284.084"/>
+<polygon fill="black" stroke="black" points="156.881,-287.584 166.881,-284.084 156.881,-280.584 156.881,-287.584"/>
 </g>
 <!-- csvviewer -->
-<g id="node14" class="node"><title>csvviewer</title>
-<g id="a_node14"><a xlink:href="https://github.com/jupyterlab/jupyterlab/tree/master/packages/csvviewer" xlink:title="csvviewer">
-<ellipse fill="none" stroke="black" cx="193.524" cy="-479.393" rx="46.2923" ry="18"/>
-<text text-anchor="middle" x="193.524" y="-475.693" font-family="Times,serif" font-size="14.00">csvviewer</text>
+<g id="node15" class="node"><title>csvviewer</title>
+<g id="a_node15"><a xlink:href="https://github.com/jupyterlab/jupyterlab/tree/master/packages/csvviewer" xlink:title="csvviewer">
+<ellipse fill="none" stroke="black" cx="194.322" cy="-461.084" rx="46.2923" ry="18"/>
+<text text-anchor="middle" x="194.322" y="-457.384" font-family="Times,serif" font-size="14.00">csvviewer</text>
 </a>
 </g>
 </g>
 <!-- csvviewer&#45;&gt;docregistry -->
-<g id="edge15" class="edge"><title>csvviewer&#45;&gt;docregistry</title>
-<path fill="none" stroke="black" d="M239.913,-479.393C251.486,-479.393 264.097,-479.393 276.251,-479.393"/>
-<polygon fill="black" stroke="black" points="276.32,-482.893 286.32,-479.393 276.32,-475.893 276.32,-482.893"/>
+<g id="edge17" class="edge"><title>csvviewer&#45;&gt;docregistry</title>
+<path fill="none" stroke="black" d="M240.776,-461.084C252.015,-461.084 264.22,-461.084 276.012,-461.084"/>
+<polygon fill="black" stroke="black" points="276.232,-464.584 286.232,-461.084 276.232,-457.584 276.232,-464.584"/>
 </g>
 <!-- docmanager -->
-<g id="node15" class="node"><title>docmanager</title>
-<g id="a_node15"><a xlink:href="https://github.com/jupyterlab/jupyterlab/tree/master/packages/docmanager" xlink:title="docmanager">
-<ellipse fill="none" stroke="black" cx="193.524" cy="-592.393" rx="53.8905" ry="18"/>
-<text text-anchor="middle" x="193.524" y="-588.693" font-family="Times,serif" font-size="14.00">docmanager</text>
+<g id="node16" class="node"><title>docmanager</title>
+<g id="a_node16"><a xlink:href="https://github.com/jupyterlab/jupyterlab/tree/master/packages/docmanager" xlink:title="docmanager">
+<ellipse fill="none" stroke="black" cx="194.322" cy="-592.084" rx="53.8905" ry="18"/>
+<text text-anchor="middle" x="194.322" y="-588.384" font-family="Times,serif" font-size="14.00">docmanager</text>
 </a>
 </g>
 </g>
 <!-- docmanager&#45;&gt;docregistry -->
-<g id="edge16" class="edge"><title>docmanager&#45;&gt;docregistry</title>
-<path fill="none" stroke="black" d="M226.046,-577.991C234.159,-573.739 242.68,-568.769 250.069,-563.393 273.847,-546.092 297.42,-522.287 313.764,-504.435"/>
-<polygon fill="black" stroke="black" points="316.644,-506.468 320.74,-496.697 311.445,-501.781 316.644,-506.468"/>
+<g id="edge18" class="edge"><title>docmanager&#45;&gt;docregistry</title>
+<path fill="none" stroke="black" d="M221.125,-576.246C230.821,-569.835 241.705,-562.067 250.867,-554.084 274.895,-533.148 299.009,-505.812 315.282,-486.203"/>
+<polygon fill="black" stroke="black" points="318.118,-488.265 321.753,-478.314 312.705,-483.826 318.118,-488.265"/>
 </g>
 <!-- filebrowser -->
-<g id="node16" class="node"><title>filebrowser</title>
-<g id="a_node16"><a xlink:href="https://github.com/jupyterlab/jupyterlab/tree/master/packages/filebrowser" xlink:title="filebrowser">
-<ellipse fill="none" stroke="black" cx="50.5236" cy="-592.393" rx="50.8918" ry="18"/>
-<text text-anchor="middle" x="50.5236" y="-588.693" font-family="Times,serif" font-size="14.00">filebrowser</text>
+<g id="node17" class="node"><title>filebrowser</title>
+<g id="a_node17"><a xlink:href="https://github.com/jupyterlab/jupyterlab/tree/master/packages/filebrowser" xlink:title="filebrowser">
+<ellipse fill="none" stroke="black" cx="50.3218" cy="-592.084" rx="50.8918" ry="18"/>
+<text text-anchor="middle" x="50.3218" y="-588.384" font-family="Times,serif" font-size="14.00">filebrowser</text>
 </a>
 </g>
 </g>
 <!-- filebrowser&#45;&gt;docmanager -->
-<g id="edge17" class="edge"><title>filebrowser&#45;&gt;docmanager</title>
-<path fill="none" stroke="black" d="M101.235,-592.393C110.318,-592.393 119.907,-592.393 129.321,-592.393"/>
-<polygon fill="black" stroke="black" points="129.434,-595.893 139.434,-592.393 129.434,-588.893 129.434,-595.893"/>
+<g id="edge19" class="edge"><title>filebrowser&#45;&gt;docmanager</title>
+<path fill="none" stroke="black" d="M101.386,-592.084C110.651,-592.084 120.438,-592.084 130.035,-592.084"/>
+<polygon fill="black" stroke="black" points="130.341,-595.584 140.341,-592.084 130.341,-588.584 130.341,-595.584"/>
 </g>
 <!-- fileeditor -->
-<g id="node17" class="node"><title>fileeditor</title>
-<g id="a_node17"><a xlink:href="https://github.com/jupyterlab/jupyterlab/tree/master/packages/fileeditor" xlink:title="fileeditor">
-<ellipse fill="none" stroke="black" cx="193.524" cy="-384.393" rx="42.7926" ry="18"/>
-<text text-anchor="middle" x="193.524" y="-380.693" font-family="Times,serif" font-size="14.00">fileeditor</text>
+<g id="node18" class="node"><title>fileeditor</title>
+<g id="a_node18"><a xlink:href="https://github.com/jupyterlab/jupyterlab/tree/master/packages/fileeditor" xlink:title="fileeditor">
+<ellipse fill="none" stroke="black" cx="194.322" cy="-350.084" rx="42.7926" ry="18"/>
+<text text-anchor="middle" x="194.322" y="-346.384" font-family="Times,serif" font-size="14.00">fileeditor</text>
 </a>
 </g>
 </g>
 <!-- fileeditor&#45;&gt;docregistry -->
-<g id="edge18" class="edge"><title>fileeditor&#45;&gt;docregistry</title>
-<path fill="none" stroke="black" d="M219.092,-398.92C228.833,-404.812 240.074,-411.778 250.069,-418.393 268.666,-430.7 289.005,-445.176 305.174,-456.936"/>
-<polygon fill="black" stroke="black" points="303.551,-460.085 313.69,-463.16 307.681,-454.434 303.551,-460.085"/>
+<g id="edge20" class="edge"><title>fileeditor&#45;&gt;docregistry</title>
+<path fill="none" stroke="black" d="M216.898,-365.577C227.272,-373.136 239.823,-382.442 250.867,-391.084 270.152,-406.175 291.371,-423.767 307.716,-437.539"/>
+<polygon fill="black" stroke="black" points="305.887,-440.576 315.783,-444.36 310.407,-435.231 305.887,-440.576"/>
 </g>
 <!-- imageviewer -->
-<g id="node18" class="node"><title>imageviewer</title>
-<g id="a_node18"><a xlink:href="https://github.com/jupyterlab/jupyterlab/tree/master/packages/imageviewer" xlink:title="imageviewer">
-<ellipse fill="none" stroke="black" cx="193.524" cy="-648.393" rx="56.59" ry="18"/>
-<text text-anchor="middle" x="193.524" y="-644.693" font-family="Times,serif" font-size="14.00">imageviewer</text>
+<g id="node19" class="node"><title>imageviewer</title>
+<g id="a_node19"><a xlink:href="https://github.com/jupyterlab/jupyterlab/tree/master/packages/imageviewer" xlink:title="imageviewer">
+<ellipse fill="none" stroke="black" cx="194.322" cy="-658.084" rx="56.59" ry="18"/>
+<text text-anchor="middle" x="194.322" y="-654.384" font-family="Times,serif" font-size="14.00">imageviewer</text>
 </a>
 </g>
 </g>
 <!-- imageviewer&#45;&gt;docregistry -->
-<g id="edge19" class="edge"><title>imageviewer&#45;&gt;docregistry</title>
-<path fill="none" stroke="black" d="M228.753,-634.235C236.294,-630.145 243.872,-625.189 250.069,-619.393 284.786,-586.922 310.563,-537.269 324.297,-506.649"/>
-<polygon fill="black" stroke="black" points="327.531,-507.986 328.329,-497.422 321.117,-505.184 327.531,-507.986"/>
+<g id="edge21" class="edge"><title>imageviewer&#45;&gt;docregistry</title>
+<path fill="none" stroke="black" d="M222.79,-642.493C232.463,-636.101 242.899,-628.082 250.867,-619.084 285.998,-579.411 311.775,-522.563 325.088,-488.973"/>
+<polygon fill="black" stroke="black" points="328.471,-489.929 328.816,-479.339 321.943,-487.402 328.471,-489.929"/>
 </g>
 <!-- inspector -->
-<g id="node19" class="node"><title>inspector</title>
-<g id="a_node19"><a xlink:href="https://github.com/jupyterlab/jupyterlab/tree/master/packages/inspector" xlink:title="inspector">
-<ellipse fill="none" stroke="black" cx="336.524" cy="-271.393" rx="42.7926" ry="18"/>
-<text text-anchor="middle" x="336.524" y="-267.693" font-family="Times,serif" font-size="14.00">inspector</text>
+<g id="node20" class="node"><title>inspector</title>
+<g id="a_node20"><a xlink:href="https://github.com/jupyterlab/jupyterlab/tree/master/packages/inspector" xlink:title="inspector">
+<ellipse fill="none" stroke="black" cx="336.322" cy="-218.084" rx="42.7926" ry="18"/>
+<text text-anchor="middle" x="336.322" y="-214.384" font-family="Times,serif" font-size="14.00">inspector</text>
 </a>
 </g>
 </g>
 <!-- inspector&#45;&gt;rendermime -->
-<g id="edge20" class="edge"><title>inspector&#45;&gt;rendermime</title>
-<path fill="none" stroke="black" d="M375.598,-279.118C389.275,-281.893 404.997,-285.083 419.86,-288.098"/>
-<polygon fill="black" stroke="black" points="419.48,-291.593 429.977,-290.151 420.872,-284.732 419.48,-291.593"/>
+<g id="edge22" class="edge"><title>inspector&#45;&gt;rendermime</title>
+<path fill="none" stroke="black" d="M373.941,-226.841C388.687,-230.367 405.985,-234.504 422.075,-238.351"/>
+<polygon fill="black" stroke="black" points="421.364,-241.78 431.904,-240.702 422.992,-234.972 421.364,-241.78"/>
 </g>
 <!-- launcher -->
-<g id="node20" class="node"><title>launcher</title>
-<g id="a_node20"><a xlink:href="https://github.com/jupyterlab/jupyterlab/tree/master/packages/launcher" xlink:title="launcher">
-<ellipse fill="none" stroke="black" cx="657.524" cy="-18.3925" rx="40.8928" ry="18"/>
-<text text-anchor="middle" x="657.524" y="-14.6925" font-family="Times,serif" font-size="14.00">launcher</text>
+<g id="node21" class="node"><title>launcher</title>
+<g id="a_node21"><a xlink:href="https://github.com/jupyterlab/jupyterlab/tree/master/packages/launcher" xlink:title="launcher">
+<ellipse fill="none" stroke="black" cx="657.322" cy="-153.084" rx="40.8928" ry="18"/>
+<text text-anchor="middle" x="657.322" y="-149.384" font-family="Times,serif" font-size="14.00">launcher</text>
 </a>
 </g>
 </g>
 <!-- launcher&#45;&gt;apputils -->
-<g id="edge21" class="edge"><title>launcher&#45;&gt;apputils</title>
-<path fill="none" stroke="black" d="M696.023,-24.6437C713.41,-29.016 733.498,-36.3198 748.516,-48.3925 785.283,-77.9495 809.519,-128.496 821.852,-159.806"/>
-<polygon fill="black" stroke="black" points="818.614,-161.14 825.438,-169.245 825.158,-158.654 818.614,-161.14"/>
+<g id="edge23" class="edge"><title>launcher&#45;&gt;apputils</title>
+<path fill="none" stroke="black" d="M690.225,-163.977C707.94,-170.651 730.027,-180.03 748.314,-191.084 765.801,-201.656 783.555,-216.144 797.176,-228.235"/>
+<polygon fill="black" stroke="black" points="794.921,-230.915 804.685,-235.029 799.618,-225.724 794.921,-230.915"/>
 </g>
 <!-- mainmenu -->
-<g id="node21" class="node"><title>mainmenu</title>
-<g id="a_node21"><a xlink:href="https://github.com/jupyterlab/jupyterlab/tree/master/packages/mainmenu" xlink:title="mainmenu">
-<ellipse fill="none" stroke="black" cx="657.524" cy="-187.393" rx="48.9926" ry="18"/>
-<text text-anchor="middle" x="657.524" y="-183.693" font-family="Times,serif" font-size="14.00">mainmenu</text>
+<g id="node22" class="node"><title>mainmenu</title>
+<g id="a_node22"><a xlink:href="https://github.com/jupyterlab/jupyterlab/tree/master/packages/mainmenu" xlink:title="mainmenu">
+<ellipse fill="none" stroke="black" cx="657.322" cy="-350.084" rx="48.9926" ry="18"/>
+<text text-anchor="middle" x="657.322" y="-346.384" font-family="Times,serif" font-size="14.00">mainmenu</text>
 </a>
 </g>
 </g>
 <!-- mainmenu&#45;&gt;apputils -->
-<g id="edge22" class="edge"><title>mainmenu&#45;&gt;apputils</title>
-<path fill="none" stroke="black" d="M706.714,-187.393C730.751,-187.393 759.734,-187.393 783.718,-187.393"/>
-<polygon fill="black" stroke="black" points="784.005,-190.893 794.005,-187.393 784.005,-183.893 784.005,-190.893"/>
+<g id="edge24" class="edge"><title>mainmenu&#45;&gt;apputils</title>
+<path fill="none" stroke="black" d="M693.199,-337.607C710.361,-330.818 731.022,-321.648 748.314,-311.084 765.752,-300.431 783.504,-285.941 797.136,-273.869"/>
+<polygon fill="black" stroke="black" points="799.572,-276.385 804.653,-267.088 794.884,-271.188 799.572,-276.385"/>
 </g>
 <!-- notebook -->
-<g id="node22" class="node"><title>notebook</title>
-<g id="a_node22"><a xlink:href="https://github.com/jupyterlab/jupyterlab/tree/master/packages/notebook" xlink:title="notebook">
-<ellipse fill="none" stroke="black" cx="50.5236" cy="-408.393" rx="43.5923" ry="18"/>
-<text text-anchor="middle" x="50.5236" y="-404.693" font-family="Times,serif" font-size="14.00">notebook</text>
+<g id="node23" class="node"><title>notebook</title>
+<g id="a_node23"><a xlink:href="https://github.com/jupyterlab/jupyterlab/tree/master/packages/notebook" xlink:title="notebook">
+<ellipse fill="none" stroke="black" cx="50.3218" cy="-377.084" rx="43.5923" ry="18"/>
+<text text-anchor="middle" x="50.3218" y="-373.384" font-family="Times,serif" font-size="14.00">notebook</text>
 </a>
 </g>
 </g>
 <!-- notebook&#45;&gt;docregistry -->
-<g id="edge23" class="edge"><title>notebook&#45;&gt;docregistry</title>
-<path fill="none" stroke="black" d="M90.2005,-415.914C130.392,-423.975 194.996,-437.621 250.069,-452.393 263.122,-455.894 277.155,-460.127 290,-464.193"/>
-<polygon fill="black" stroke="black" points="288.964,-467.537 299.555,-467.255 291.1,-460.87 288.964,-467.537"/>
+<g id="edge25" class="edge"><title>notebook&#45;&gt;docregistry</title>
+<path fill="none" stroke="black" d="M87.1059,-386.943C127.117,-398.051 193.795,-416.815 250.867,-434.084 263.306,-437.848 276.727,-442.066 289.128,-446.03"/>
+<polygon fill="black" stroke="black" points="288.226,-449.416 298.817,-449.14 290.366,-442.751 288.226,-449.416"/>
 </g>
 <!-- notebook&#45;&gt;cells -->
-<g id="edge24" class="edge"><title>notebook&#45;&gt;cells</title>
-<path fill="none" stroke="black" d="M75.6722,-393.605C92.6988,-383.271 116.098,-369.255 136.979,-357.393 145.287,-352.672 154.379,-347.688 162.757,-343.166"/>
-<polygon fill="black" stroke="black" points="164.676,-346.108 171.833,-338.296 161.366,-339.94 164.676,-346.108"/>
+<g id="edge26" class="edge"><title>notebook&#45;&gt;cells</title>
+<path fill="none" stroke="black" d="M74.4526,-361.935C99.4475,-345.565 139.258,-319.493 165.832,-302.088"/>
+<polygon fill="black" stroke="black" points="167.849,-304.951 174.297,-296.544 164.013,-299.095 167.849,-304.951"/>
 </g>
 <!-- running -->
-<g id="node23" class="node"><title>running</title>
-<g id="a_node23"><a xlink:href="https://github.com/jupyterlab/jupyterlab/tree/master/packages/running" xlink:title="running">
-<ellipse fill="none" stroke="black" cx="657.524" cy="-131.393" rx="38.1938" ry="18"/>
-<text text-anchor="middle" x="657.524" y="-127.693" font-family="Times,serif" font-size="14.00">running</text>
+<g id="node24" class="node"><title>running</title>
+<g id="a_node24"><a xlink:href="https://github.com/jupyterlab/jupyterlab/tree/master/packages/running" xlink:title="running">
+<ellipse fill="none" stroke="black" cx="657.322" cy="-284.084" rx="38.1938" ry="18"/>
+<text text-anchor="middle" x="657.322" y="-280.384" font-family="Times,serif" font-size="14.00">running</text>
 </a>
 </g>
 </g>
 <!-- running&#45;&gt;apputils -->
-<g id="edge25" class="edge"><title>running&#45;&gt;apputils</title>
-<path fill="none" stroke="black" d="M689.766,-141.437C707.081,-147.01 728.995,-154.072 748.516,-160.393 762.187,-164.819 777.12,-169.671 790.504,-174.026"/>
-<polygon fill="black" stroke="black" points="789.798,-177.476 800.39,-177.243 791.965,-170.82 789.798,-177.476"/>
+<g id="edge27" class="edge"><title>running&#45;&gt;apputils</title>
+<path fill="none" stroke="black" d="M692.89,-277.086C717.31,-272.142 750.258,-265.472 776.667,-260.125"/>
+<polygon fill="black" stroke="black" points="777.697,-263.487 786.804,-258.073 776.308,-256.627 777.697,-263.487"/>
 </g>
 <!-- settingeditor -->
-<g id="node24" class="node"><title>settingeditor</title>
-<g id="a_node24"><a xlink:href="https://github.com/jupyterlab/jupyterlab/tree/master/packages/settingeditor" xlink:title="settingeditor">
-<ellipse fill="none" stroke="black" cx="193.524" cy="-271.393" rx="54.6905" ry="18"/>
-<text text-anchor="middle" x="193.524" y="-267.693" font-family="Times,serif" font-size="14.00">settingeditor</text>
+<g id="node25" class="node"><title>settingeditor</title>
+<g id="a_node25"><a xlink:href="https://github.com/jupyterlab/jupyterlab/tree/master/packages/settingeditor" xlink:title="settingeditor">
+<ellipse fill="none" stroke="black" cx="194.322" cy="-218.084" rx="54.6905" ry="18"/>
+<text text-anchor="middle" x="194.322" y="-214.384" font-family="Times,serif" font-size="14.00">settingeditor</text>
 </a>
 </g>
 </g>
 <!-- settingeditor&#45;&gt;inspector -->
-<g id="edge26" class="edge"><title>settingeditor&#45;&gt;inspector</title>
-<path fill="none" stroke="black" d="M248.232,-271.393C259.672,-271.393 271.739,-271.393 283.129,-271.393"/>
-<polygon fill="black" stroke="black" points="283.362,-274.893 293.362,-271.393 283.362,-267.893 283.362,-274.893"/>
+<g id="edge28" class="edge"><title>settingeditor&#45;&gt;inspector</title>
+<path fill="none" stroke="black" d="M249.049,-218.084C260.266,-218.084 272.074,-218.084 283.23,-218.084"/>
+<polygon fill="black" stroke="black" points="283.258,-221.584 293.258,-218.084 283.258,-214.584 283.258,-221.584"/>
 </g>
 <!-- terminal -->
-<g id="node25" class="node"><title>terminal</title>
-<g id="a_node25"><a xlink:href="https://github.com/jupyterlab/jupyterlab/tree/master/packages/terminal" xlink:title="terminal">
-<ellipse fill="none" stroke="black" cx="657.524" cy="-75.3925" rx="40.0939" ry="18"/>
-<text text-anchor="middle" x="657.524" y="-71.6925" font-family="Times,serif" font-size="14.00">terminal</text>
+<g id="node26" class="node"><title>terminal</title>
+<g id="a_node26"><a xlink:href="https://github.com/jupyterlab/jupyterlab/tree/master/packages/terminal" xlink:title="terminal">
+<ellipse fill="none" stroke="black" cx="657.322" cy="-218.084" rx="40.0939" ry="18"/>
+<text text-anchor="middle" x="657.322" y="-214.384" font-family="Times,serif" font-size="14.00">terminal</text>
 </a>
 </g>
 </g>
 <!-- terminal&#45;&gt;apputils -->
-<g id="edge27" class="edge"><title>terminal&#45;&gt;apputils</title>
-<path fill="none" stroke="black" d="M694.374,-82.7833C711.577,-87.3418 731.988,-94.2924 748.516,-104.393 773.548,-119.69 796.675,-144.028 812.125,-162.402"/>
-<polygon fill="black" stroke="black" points="809.614,-164.86 818.662,-170.371 815.026,-160.42 809.614,-164.86"/>
+<g id="edge29" class="edge"><title>terminal&#45;&gt;apputils</title>
+<path fill="none" stroke="black" d="M694.497,-225.408C718.84,-230.336 751.094,-236.866 776.982,-242.108"/>
+<polygon fill="black" stroke="black" points="776.426,-245.566 786.922,-244.12 777.815,-238.705 776.426,-245.566"/>
 </g>
 <!-- tooltip -->
-<g id="node26" class="node"><title>tooltip</title>
-<g id="a_node26"><a xlink:href="https://github.com/jupyterlab/jupyterlab/tree/master/packages/tooltip" xlink:title="tooltip">
-<ellipse fill="none" stroke="black" cx="336.524" cy="-215.393" rx="33.5952" ry="18"/>
-<text text-anchor="middle" x="336.524" y="-211.693" font-family="Times,serif" font-size="14.00">tooltip</text>
+<g id="node27" class="node"><title>tooltip</title>
+<g id="a_node27"><a xlink:href="https://github.com/jupyterlab/jupyterlab/tree/master/packages/tooltip" xlink:title="tooltip">
+<ellipse fill="none" stroke="black" cx="336.322" cy="-153.084" rx="33.5952" ry="18"/>
+<text text-anchor="middle" x="336.322" y="-149.384" font-family="Times,serif" font-size="14.00">tooltip</text>
 </a>
 </g>
 </g>
 <!-- tooltip&#45;&gt;rendermime -->
-<g id="edge28" class="edge"><title>tooltip&#45;&gt;rendermime</title>
-<path fill="none" stroke="black" d="M360.042,-228.582C368.395,-233.507 377.935,-239.171 386.569,-244.393 404.791,-255.412 424.987,-267.878 441.524,-278.153"/>
-<polygon fill="black" stroke="black" points="439.959,-281.301 450.299,-283.612 443.657,-275.358 439.959,-281.301"/>
+<g id="edge30" class="edge"><title>tooltip&#45;&gt;rendermime</title>
+<path fill="none" stroke="black" d="M357.388,-167.334C380.188,-183.525 417.672,-210.145 444.256,-229.023"/>
+<polygon fill="black" stroke="black" points="442.292,-231.921 452.472,-234.858 446.345,-226.214 442.292,-231.921"/>
 </g>
 </g>
 </svg>

+ 2 - 0
jupyterlab/package.json

@@ -46,6 +46,7 @@
     "@jupyterlab/markdownviewer-extension": "^0.12.0",
     "@jupyterlab/notebook": "^0.12.0",
     "@jupyterlab/notebook-extension": "^0.12.0",
+    "@jupyterlab/observables": "^0.1.1",
     "@jupyterlab/outputarea": "^0.12.0",
     "@jupyterlab/pdf-extension": "^0.4.0",
     "@jupyterlab/rendermime": "^0.12.0",
@@ -177,6 +178,7 @@
       "@jupyterlab/markdownviewer-extension": "../packages/markdownviewer-extension",
       "@jupyterlab/notebook": "../packages/notebook",
       "@jupyterlab/notebook-extension": "../packages/notebook-extension",
+      "@jupyterlab/observables": "../packages/observables",
       "@jupyterlab/outputarea": "../packages/outputarea",
       "@jupyterlab/pdf-extension": "../packages/pdf-extension",
       "@jupyterlab/rendermime": "../packages/rendermime",

+ 1 - 0
packages/cells/package.json

@@ -34,6 +34,7 @@
     "@jupyterlab/codeeditor": "^0.12.0",
     "@jupyterlab/codemirror": "^0.12.0",
     "@jupyterlab/coreutils": "^0.12.0",
+    "@jupyterlab/observables": "^0.1.1",
     "@jupyterlab/outputarea": "^0.12.0",
     "@jupyterlab/rendermime": "^0.12.0",
     "@jupyterlab/services": "^0.51.0",

+ 1 - 1
packages/cells/src/model.ts

@@ -21,7 +21,7 @@ import {
 
 import {
   IObservableJSON, IModelDB, IObservableValue, ObservableValue
-} from '@jupyterlab/coreutils';
+} from '@jupyterlab/observables';
 
 import {
   IOutputAreaModel, OutputAreaModel

+ 1 - 1
packages/cells/src/widget.ts

@@ -37,7 +37,7 @@ import {
 
 import {
   IObservableMap
-} from '@jupyterlab/coreutils';
+} from '@jupyterlab/observables';
 
 import {
   OutputArea, IOutputPrompt, OutputPrompt, IStdin, Stdin

+ 1 - 0
packages/codeeditor/package.json

@@ -31,6 +31,7 @@
   },
   "dependencies": {
     "@jupyterlab/coreutils": "^0.12.0",
+    "@jupyterlab/observables": "^0.1.1",
     "@phosphor/coreutils": "^1.3.0",
     "@phosphor/disposable": "^1.1.2",
     "@phosphor/messaging": "^1.2.2",

+ 6 - 2
packages/codeeditor/src/editor.ts

@@ -14,10 +14,14 @@ import {
 } from '@phosphor/signaling';
 
 import {
-  IModelDB, ModelDB, IObservableValue, ObservableValue,
-  IObservableMap, IObservableString, IChangedArgs
+  IChangedArgs
 } from '@jupyterlab/coreutils';
 
+import {
+  IModelDB, ModelDB, IObservableValue, ObservableValue,
+  IObservableMap, IObservableString
+} from '@jupyterlab/observables';
+
 
 /**
  * A namespace for code editors.

+ 1 - 1
packages/codeeditor/src/jsoneditor.ts

@@ -3,7 +3,7 @@
 
 import {
   IObservableJSON
-} from '@jupyterlab/coreutils';
+} from '@jupyterlab/observables';
 
 import {
   JSONExt, JSONObject

+ 1 - 0
packages/codemirror/package.json

@@ -33,6 +33,7 @@
     "@jupyterlab/apputils": "^0.12.4",
     "@jupyterlab/codeeditor": "^0.12.0",
     "@jupyterlab/coreutils": "^0.12.0",
+    "@jupyterlab/observables": "^0.1.1",
     "@phosphor/algorithm": "^1.1.2",
     "@phosphor/coreutils": "^1.3.0",
     "@phosphor/disposable": "^1.1.2",

+ 5 - 1
packages/codemirror/src/editor.ts

@@ -29,9 +29,13 @@ import {
 } from '@jupyterlab/codeeditor';
 
 import {
-  IObservableMap, IObservableString, uuid, ICollaborator
+  uuid
 } from '@jupyterlab/coreutils';
 
+import {
+  IObservableMap, IObservableString, ICollaborator
+} from '@jupyterlab/observables';
+
 import {
   Mode
 } from './mode';

+ 1 - 0
packages/console/package.json

@@ -34,6 +34,7 @@
     "@jupyterlab/cells": "^0.12.0",
     "@jupyterlab/codeeditor": "^0.12.0",
     "@jupyterlab/coreutils": "^0.12.0",
+    "@jupyterlab/observables": "^0.1.1",
     "@jupyterlab/rendermime": "^0.12.0",
     "@jupyterlab/services": "^0.51.0",
     "@phosphor/algorithm": "^1.1.2",

+ 5 - 1
packages/console/src/widget.ts

@@ -15,9 +15,13 @@ import {
 } from '@jupyterlab/codeeditor';
 
 import {
-  nbformat, IObservableList, ObservableList
+  nbformat
 } from '@jupyterlab/coreutils';
 
+import {
+  IObservableList, ObservableList
+} from '@jupyterlab/observables';
+
 import {
   RenderMime
 } from '@jupyterlab/rendermime';

+ 2 - 2
packages/coreutils/README.md

@@ -1,4 +1,4 @@
 # @jupyterlab/coreutils
 
-A JupyterLab package which provides utility functions and data structures that are widely used across many
-of the `@jupyterlab` packages. This includes (among other things) functions for manipulating paths, urls, strings, lists, and maps.
+A JupyterLab package which provides utility functions that are widely used across many
+of the `@jupyterlab` packages. This includes (among other things) functions for manipulating paths, urls, and the notebook format.

+ 0 - 1
packages/coreutils/package.json

@@ -32,7 +32,6 @@
     "@phosphor/algorithm": "^1.1.2",
     "@phosphor/coreutils": "^1.3.0",
     "@phosphor/disposable": "^1.1.2",
-    "@phosphor/messaging": "^1.2.2",
     "@phosphor/signaling": "^1.2.2",
     "ajv": "~5.1.6",
     "comment-json": "^1.1.3",

+ 0 - 6
packages/coreutils/src/index.ts

@@ -5,18 +5,12 @@ export * from './activitymonitor';
 export * from './dataconnector';
 export * from './interfaces';
 export * from './markdowncodeblocks';
-export * from './modeldb';
 export * from './nbformat';
-export * from './observablejson';
-export * from './observablelist';
-export * from './observablemap';
-export * from './observablestring';
 export * from './pageconfig';
 export * from './path';
 export * from './settingregistry';
 export * from './statedb';
 export * from './text';
 export * from './time';
-export * from './undoablelist';
 export * from './url';
 export * from './uuid';

+ 1 - 0
packages/docregistry/package.json

@@ -34,6 +34,7 @@
     "@jupyterlab/codeeditor": "^0.12.0",
     "@jupyterlab/codemirror": "^0.12.0",
     "@jupyterlab/coreutils": "^0.12.0",
+    "@jupyterlab/observables": "^0.1.1",
     "@jupyterlab/rendermime": "^0.12.0",
     "@jupyterlab/services": "^0.51.0",
     "@phosphor/algorithm": "^1.1.2",

+ 5 - 1
packages/docregistry/src/context.ts

@@ -26,9 +26,13 @@ import {
 } from '@jupyterlab/apputils';
 
 import {
-  PathExt, URLExt, IModelDB, ModelDB
+  PathExt, URLExt
 } from '@jupyterlab/coreutils';
 
+import {
+  IModelDB, ModelDB
+} from '@jupyterlab/observables';
+
 import {
   DocumentRegistry
 } from './registry';

+ 5 - 1
packages/docregistry/src/default.ts

@@ -30,9 +30,13 @@ import {
 } from '@jupyterlab/codeeditor';
 
 import {
-  ActivityMonitor, IChangedArgs, IModelDB, PathExt
+  ActivityMonitor, IChangedArgs, PathExt
 } from '@jupyterlab/coreutils';
 
+import {
+  IModelDB
+} from '@jupyterlab/observables';
+
 import {
   IRenderMime, RenderMime, MimeModel
 } from '@jupyterlab/rendermime';

+ 5 - 1
packages/docregistry/src/registry.ts

@@ -34,9 +34,13 @@ import {
 } from '@jupyterlab/codeeditor';
 
 import {
-  IChangedArgs as IChangedArgsGeneric, PathExt, IModelDB
+  IChangedArgs as IChangedArgsGeneric, PathExt
 } from '@jupyterlab/coreutils';
 
+import {
+  IModelDB
+} from '@jupyterlab/observables';
+
 import {
   TextModelFactory
 } from './default';

+ 1 - 0
packages/metapackage/package.json

@@ -68,6 +68,7 @@
     "@jupyterlab/markdownviewer-extension": "^0.12.0",
     "@jupyterlab/notebook": "^0.12.0",
     "@jupyterlab/notebook-extension": "^0.12.0",
+    "@jupyterlab/observables": "^0.1.1",
     "@jupyterlab/outputarea": "^0.12.0",
     "@jupyterlab/pdf-extension": "^0.4.0",
     "@jupyterlab/rendermime": "^0.12.0",

+ 1 - 0
packages/metapackage/src/index.ts

@@ -37,6 +37,7 @@ import "@jupyterlab/mainmenu-extension";
 import "@jupyterlab/markdownviewer-extension";
 import "@jupyterlab/notebook";
 import "@jupyterlab/notebook-extension";
+import "@jupyterlab/observables";
 import "@jupyterlab/outputarea";
 import "@jupyterlab/pdf-extension";
 import "@jupyterlab/rendermime";

+ 1 - 0
packages/notebook/package.json

@@ -35,6 +35,7 @@
     "@jupyterlab/codeeditor": "^0.12.0",
     "@jupyterlab/coreutils": "^0.12.0",
     "@jupyterlab/docregistry": "^0.12.0",
+    "@jupyterlab/observables": "^0.1.1",
     "@jupyterlab/rendermime": "^0.12.0",
     "@jupyterlab/services": "^0.51.0",
     "@phosphor/algorithm": "^1.1.2",

+ 5 - 5
packages/notebook/src/celllist.ts

@@ -9,15 +9,15 @@ import {
   ISignal, Signal
 } from '@phosphor/signaling';
 
-import {
-  IObservableMap, ObservableMap, IObservableList,
-  IObservableUndoableList, IModelDB
-} from '@jupyterlab/coreutils';
-
 import {
   ICellModel
 } from '@jupyterlab/cells';
 
+import {
+  IObservableMap, ObservableMap, IObservableList,
+  IObservableUndoableList, IModelDB
+} from '@jupyterlab/observables';
+
 import {
   NotebookModel
 } from './model';

+ 5 - 1
packages/notebook/src/celltools.ts

@@ -34,9 +34,13 @@ import {
 } from '@jupyterlab/codeeditor';
 
 import {
-  IObservableMap, nbformat, ObservableJSON
+  nbformat
 } from '@jupyterlab/coreutils';
 
+import {
+  IObservableMap, ObservableJSON
+} from '@jupyterlab/observables';
+
 import {
   INotebookTracker
 } from './';

+ 6 - 2
packages/notebook/src/model.ts

@@ -15,10 +15,14 @@ import {
 } from '@jupyterlab/cells';
 
 import {
-  IObservableJSON, IObservableUndoableList, uuid,
-  IObservableList, nbformat, IModelDB
+  nbformat, uuid
 } from '@jupyterlab/coreutils';
 
+import {
+  IObservableJSON, IObservableUndoableList,
+  IObservableList, IModelDB
+} from '@jupyterlab/observables';
+
 import {
   CellList
 } from './celllist';

+ 8 - 8
packages/notebook/src/modelfactory.ts

@@ -2,20 +2,20 @@
 // Distributed under the terms of the Modified BSD License.
 
 import {
-  Contents
-} from '@jupyterlab/services';
-
-import {
-  IModelDB
-} from '@jupyterlab/coreutils';
+  CodeCellModel
+} from '@jupyterlab/cells';
 
 import {
   DocumentRegistry
 } from '@jupyterlab/docregistry';
 
 import {
-  CodeCellModel
-} from '@jupyterlab/cells';
+  IModelDB
+} from '@jupyterlab/observables';
+
+import {
+  Contents
+} from '@jupyterlab/services';
 
 import {
   INotebookModel, NotebookModel

+ 5 - 1
packages/notebook/src/widget.ts

@@ -48,9 +48,13 @@ import {
 } from '@jupyterlab/codeeditor';
 
 import {
-  IChangedArgs, IObservableMap, IObservableList, nbformat
+  IChangedArgs, nbformat
 } from '@jupyterlab/coreutils';
 
+import {
+  IObservableMap, IObservableList
+} from '@jupyterlab/observables';
+
 import {
   RenderMime
 } from '@jupyterlab/rendermime';

+ 3 - 0
packages/observables/README.md

@@ -0,0 +1,3 @@
+# @jupyterlab/observables
+
+A JupyterLab package which provides data structures (such as strings, lists, and maps), which can be listended to for changes.

+ 41 - 0
packages/observables/package.json

@@ -0,0 +1,41 @@
+{
+  "name": "@jupyterlab/observables",
+  "version": "0.1.1",
+  "description": "Data structures which may be observed for changes.",
+  "homepage": "https://github.com/jupyterlab/jupyterlab",
+  "bugs": {
+    "url": "https://github.com/jupyterlab/jupyterlab/issues"
+  },
+  "license": "BSD-3-Clause",
+  "author": "Project Jupyter",
+  "files": [
+    "lib/**/*.{d.ts,eot,gif,html,jpg,js,js.map,json,png,svg,woff2,ttf}",
+    "style/**/*.{css,eot,gif,html,jpg,json,png,svg,woff2,ttf}"
+  ],
+  "main": "lib/index.js",
+  "types": "lib/index.d.ts",
+  "directories": {
+    "lib": "lib/"
+  },
+  "repository": {
+    "type": "git",
+    "url": "https://github.com/jupyterlab/jupyterlab.git"
+  },
+  "scripts": {
+    "build": "tsc",
+    "clean": "rimraf lib",
+    "prepublishOnly": "npm run build",
+    "watch": "tsc -w"
+  },
+  "dependencies": {
+    "@phosphor/algorithm": "^1.1.2",
+    "@phosphor/coreutils": "^1.3.0",
+    "@phosphor/disposable": "^1.1.2",
+    "@phosphor/messaging": "^1.2.2",
+    "@phosphor/signaling": "^1.2.2"
+  },
+  "devDependencies": {
+    "rimraf": "~2.6.2",
+    "typescript": "~2.6.2"
+  }
+}

+ 11 - 0
packages/observables/src/index.ts

@@ -0,0 +1,11 @@
+/*-----------------------------------------------------------------------------
+| Copyright (c) Jupyter Development Team.
+| Distributed under the terms of the Modified BSD License.
+|----------------------------------------------------------------------------*/
+
+export * from './modeldb';
+export * from './observablejson';
+export * from './observablelist';
+export * from './observablemap';
+export * from './observablestring';
+export * from './undoablelist';

+ 0 - 0
packages/coreutils/src/modeldb.ts → packages/observables/src/modeldb.ts


+ 0 - 0
packages/coreutils/src/observablejson.ts → packages/observables/src/observablejson.ts


+ 0 - 0
packages/coreutils/src/observablelist.ts → packages/observables/src/observablelist.ts


+ 0 - 0
packages/coreutils/src/observablemap.ts → packages/observables/src/observablemap.ts


+ 0 - 0
packages/coreutils/src/observablestring.ts → packages/observables/src/observablestring.ts


+ 0 - 0
packages/coreutils/src/undoablelist.ts → packages/observables/src/undoablelist.ts


+ 16 - 0
packages/observables/tsconfig.json

@@ -0,0 +1,16 @@
+{
+  "compilerOptions": {
+    "declaration": true,
+    "noImplicitAny": true,
+    "noEmitOnError": true,
+    "noUnusedLocals": true,
+    "module": "commonjs",
+    "moduleResolution": "node",
+    "target": "ES5",
+    "outDir": "./lib",
+    "lib": [
+      "ES5", "ES2015.Promise", "DOM", "ES2015.Collection", "ES2016", "ES6"
+    ]
+  },
+  "include": ["src/*"]
+}

+ 1 - 0
packages/outputarea/package.json

@@ -32,6 +32,7 @@
   "dependencies": {
     "@jupyterlab/apputils": "^0.12.4",
     "@jupyterlab/coreutils": "^0.12.0",
+    "@jupyterlab/observables": "^0.1.1",
     "@jupyterlab/rendermime": "^0.12.0",
     "@jupyterlab/services": "^0.51.0",
     "@phosphor/algorithm": "^1.1.2",

+ 6 - 2
packages/outputarea/src/model.ts

@@ -14,10 +14,14 @@ import {
 } from '@phosphor/signaling';
 
 import {
-  IObservableList, ObservableList, nbformat,
-  IObservableValue, ObservableValue, IModelDB
+  nbformat,
 } from '@jupyterlab/coreutils';
 
+import {
+  IObservableList, ObservableList,
+  IObservableValue, ObservableValue, IModelDB
+} from '@jupyterlab/observables';
+
 import {
   IOutputModel, OutputModel
 } from '@jupyterlab/rendermime';

+ 1 - 0
packages/rendermime/package.json

@@ -33,6 +33,7 @@
     "@jupyterlab/apputils": "^0.12.4",
     "@jupyterlab/codemirror": "^0.12.0",
     "@jupyterlab/coreutils": "^0.12.0",
+    "@jupyterlab/observables": "^0.1.1",
     "@jupyterlab/rendermime-interfaces": "^0.4.2",
     "@jupyterlab/services": "^0.51.0",
     "@phosphor/coreutils": "^1.3.0",

+ 5 - 1
packages/rendermime/src/outputmodel.ts

@@ -11,9 +11,13 @@ import {
 } from '@phosphor/signaling';
 
 import {
-  IObservableJSON, ObservableJSON, nbformat
+  nbformat
 } from '@jupyterlab/coreutils';
 
+import {
+  IObservableJSON, ObservableJSON
+} from '@jupyterlab/observables';
+
 import {
   IRenderMime
 } from '@jupyterlab/rendermime-interfaces';

+ 1 - 0
packages/services/package.json

@@ -43,6 +43,7 @@
   },
   "dependencies": {
     "@jupyterlab/coreutils": "^0.12.0",
+    "@jupyterlab/observables": "^0.1.1",
     "@phosphor/algorithm": "^1.1.2",
     "@phosphor/coreutils": "^1.3.0",
     "@phosphor/disposable": "^1.1.2",

+ 5 - 1
packages/services/src/contents/index.ts

@@ -2,9 +2,13 @@
 // Distributed under the terms of the Modified BSD License.
 
 import {
-  URLExt, PathExt, ModelDB
+  URLExt, PathExt
 } from '@jupyterlab/coreutils';
 
+import {
+  ModelDB
+} from '@jupyterlab/observables';
+
 import {
   JSONObject
 } from '@phosphor/coreutils';

+ 1 - 0
test/package.json

@@ -34,6 +34,7 @@
     "@jupyterlab/inspector": "^0.12.0",
     "@jupyterlab/mainmenu": "^0.1.0",
     "@jupyterlab/notebook": "^0.12.0",
+    "@jupyterlab/observables": "^0.1.1",
     "@jupyterlab/outputarea": "^0.12.0",
     "@jupyterlab/rendermime": "^0.12.0",
     "@jupyterlab/services": "^0.51.0",

+ 1 - 1
test/src/codeeditor/jsoneditor.spec.ts

@@ -9,7 +9,7 @@ import {
 
 import {
   ObservableJSON
-} from '@jupyterlab/coreutils';
+} from '@jupyterlab/observables';
 
 import {
   JSONEditor

+ 7 - 6
test/src/index.ts

@@ -38,17 +38,11 @@ import './console/panel.spec';
 import './console/widget.spec';
 
 import './coreutils/activitymonitor.spec';
-import './coreutils/modeldb.spec';
 import './coreutils/nbformat.spec';
-import './coreutils/observablejson.spec';
-import './coreutils/observablemap.spec';
-import './coreutils/observablestring.spec';
-import './coreutils/observablelist.spec';
 import './coreutils/pageconfig.spec';
 import './coreutils/path.spec';
 import './coreutils/settingregistry.spec';
 import './coreutils/time.spec';
-import './coreutils/undoablelist.spec';
 import './coreutils/url.spec';
 import './coreutils/uuid.spec';
 import './coreutils/markdowncodeblocks.spec';
@@ -92,6 +86,13 @@ import './notebook/tracker.spec';
 import './notebook/widget.spec';
 import './notebook/widgetfactory.spec';
 
+import './observables/modeldb.spec';
+import './observables/observablejson.spec';
+import './observables/observablemap.spec';
+import './observables/observablestring.spec';
+import './observables/observablelist.spec';
+import './observables/undoablelist.spec';
+
 import './outputarea/model.spec';
 import './outputarea/widget.spec';
 

+ 1 - 1
test/src/notebook/celltools.spec.ts

@@ -21,7 +21,7 @@ import {
 
 import {
   ObservableJSON
-} from '@jupyterlab/coreutils';
+} from '@jupyterlab/observables';
 
 import {
   CellTools, NotebookPanel, NotebookTracker, NotebookActions

+ 5 - 1
test/src/notebook/model.spec.ts

@@ -12,13 +12,17 @@ import {
 } from '@jupyterlab/cells';
 
 import {
-  nbformat, ModelDB
+  nbformat
 } from '@jupyterlab/coreutils';
 
 import {
   NotebookModel
 } from '@jupyterlab/notebook';
 
+import {
+  ModelDB
+} from '@jupyterlab/observables';
+
 import {
   DEFAULT_CONTENT
 } from './utils';

+ 2 - 2
test/src/coreutils/modeldb.spec.ts → test/src/observables/modeldb.spec.ts

@@ -10,10 +10,10 @@ import {
 import {
   ModelDB, ObservableString, ObservableValue,
   ObservableUndoableList, ObservableJSON
-} from '@jupyterlab/coreutils';
+} from '@jupyterlab/observables';
 
 
-describe('@jupyterlab/coreutils', () => {
+describe('@jupyterlab/observables', () => {
 
   describe('ObservableValue', () => {
 

+ 2 - 2
test/src/coreutils/observablejson.spec.ts → test/src/observables/observablejson.spec.ts

@@ -5,10 +5,10 @@ import expect = require('expect.js');
 
 import {
   IObservableJSON, ObservableJSON
-} from '@jupyterlab/coreutils';
+} from '@jupyterlab/observables';
 
 
-describe('@jupyterlab/coreutils', () => {
+describe('@jupyterlab/observables', () => {
 
   describe('ObservableJSON', () => {
 

+ 2 - 2
test/src/coreutils/observablelist.spec.ts → test/src/observables/observablelist.spec.ts

@@ -9,10 +9,10 @@ import {
 
 import {
   ObservableList
-} from '@jupyterlab/coreutils';
+} from '@jupyterlab/observables';
 
 
-describe('@jupyterlab/coreutils', () => {
+describe('@jupyterlab/observables', () => {
 
   describe('ObservableList', () => {
 

+ 2 - 2
test/src/coreutils/observablemap.spec.ts → test/src/observables/observablemap.spec.ts

@@ -5,10 +5,10 @@ import expect = require('expect.js');
 
 import {
   ObservableMap
-} from '@jupyterlab/coreutils';
+} from '@jupyterlab/observables';
 
 
-describe('@jupyterlab/coreutils', () => {
+describe('@jupyterlab/observables', () => {
 
   describe('ObservableMap', () => {
 

+ 2 - 2
test/src/coreutils/observablestring.spec.ts → test/src/observables/observablestring.spec.ts

@@ -5,10 +5,10 @@ import expect = require('expect.js');
 
 import {
   ObservableString 
-} from '@jupyterlab/coreutils';
+} from '@jupyterlab/observables';
 
 
-describe('@jupyterlab/coreutils', () => {
+describe('@jupyterlab/observables', () => {
 
   describe('ObservableString', () => {
 

+ 2 - 2
test/src/coreutils/undoablelist.spec.ts → test/src/observables/undoablelist.spec.ts

@@ -9,7 +9,7 @@ import {
 
 import {
   ObservableUndoableList, ISerializer
-} from '@jupyterlab/coreutils';
+} from '@jupyterlab/observables';
 
 
 
@@ -43,7 +43,7 @@ const serializer = new Serializer();
 const value: JSONObject = { name: 'foo' };
 
 
-describe('@jupyterlab/coreutils', () => {
+describe('@jupyterlab/observables', () => {
 
   describe('ObservableUndoableList', () => {