Parcourir la source

Merge pull request #2929 from ian-r-rose/dependency_graph

Dependency graph
Steven Silvester il y a 7 ans
Parent
commit
ad2f19ceac
3 fichiers modifiés avec 402 ajouts et 0 suppressions
  1. 335 0
      docs/dependency-graph.svg
  2. 4 0
      docs/extensions_dev.md
  3. 63 0
      docs/scripts/graph-dependencies.js

+ 335 - 0
docs/dependency-graph.svg

@@ -0,0 +1,335 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
+ "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<!-- Generated by graphviz version 2.38.0 (20140413.2041)
+ -->
+<!-- Title: G Pages: 1 -->
+<svg width="1007pt" height="607pt"
+ viewBox="0.00 0.00 1006.53 606.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 602.8)">
+<title>G</title>
+<polygon fill="white" stroke="none" points="-4,4 -4,-602.8 1002.53,-602.8 1002.53,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.531" cy="-474.888" rx="50.0912" ry="18"/>
+<text text-anchor="middle" x="193.531" y="-471.188" 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.531" cy="-414.888" rx="50.0912" ry="18"/>
+<text text-anchor="middle" x="336.531" y="-411.188" 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="M226.526,-461.273C246.485,-452.78 272.384,-441.759 293.929,-432.591"/>
+<polygon fill="black" stroke="black" points="295.343,-435.793 303.174,-428.657 292.602,-429.352 295.343,-435.793"/>
+</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.531" cy="-262.888" rx="53.8905" ry="18"/>
+<text text-anchor="middle" x="476.531" y="-259.188" 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="M353.093,-397.747C377.422,-370.949 424.592,-318.995 452.75,-287.98"/>
+<polygon fill="black" stroke="black" points="455.683,-289.956 459.814,-280.2 450.5,-285.251 455.683,-289.956"/>
+</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="657.531" cy="-141.888" rx="38.1938" ry="18"/>
+<text text-anchor="middle" x="657.531" y="-138.188" 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="832.531" cy="-141.888" rx="38.9931" ry="18"/>
+<text text-anchor="middle" x="832.531" y="-138.188" 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="M696.069,-141.888C721.623,-141.888 755.679,-141.888 783.25,-141.888"/>
+<polygon fill="black" stroke="black" points="783.468,-145.388 793.468,-141.888 783.468,-138.388 783.468,-145.388"/>
+</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="957.531" cy="-171.888" rx="40.8928" ry="18"/>
+<text text-anchor="middle" x="957.531" y="-168.188" font-family="Times,serif" font-size="14.00">coreutils</text>
+</a>
+</g>
+</g>
+<!-- services&#45;&gt;coreutils -->
+<g id="edge7" class="edge"><title>services&#45;&gt;coreutils</title>
+<path fill="none" stroke="black" d="M867.466,-150.165C881.101,-153.491 897.016,-157.372 911.589,-160.927"/>
+<polygon fill="black" stroke="black" points="910.875,-164.355 921.42,-163.325 912.534,-157.555 910.875,-164.355"/>
+</g>
+<!-- rendermime&#45;&gt;apputils -->
+<g id="edge4" class="edge"><title>rendermime&#45;&gt;apputils</title>
+<path fill="none" stroke="black" d="M502.689,-246.973C511.517,-241.325 521.474,-234.882 530.476,-228.888 563.737,-206.739 601.387,-180.614 626.811,-162.813"/>
+<polygon fill="black" stroke="black" points="629.088,-165.491 635.267,-156.884 625.069,-159.759 629.088,-165.491"/>
+</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.531" cy="-253.888" rx="90.9839" ry="18"/>
+<text text-anchor="middle" x="657.531" y="-250.188" font-family="Times,serif" font-size="14.00">rendermime&#45;interfaces</text>
+</a>
+</g>
+</g>
+<!-- rendermime&#45;&gt;rendermime&#45;interfaces -->
+<g id="edge5" class="edge"><title>rendermime&#45;&gt;rendermime&#45;interfaces</title>
+<path fill="none" stroke="black" d="M530.268,-260.237C539.376,-259.779 549.099,-259.29 558.954,-258.794"/>
+<polygon fill="black" stroke="black" points="559.439,-262.274 569.251,-258.277 559.088,-255.283 559.439,-262.274"/>
+</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.531" cy="-314.888" rx="50.0912" ry="18"/>
+<text text-anchor="middle" x="657.531" y="-311.188" font-family="Times,serif" font-size="14.00">codemirror</text>
+</a>
+</g>
+</g>
+<!-- rendermime&#45;&gt;codemirror -->
+<g id="edge6" class="edge"><title>rendermime&#45;&gt;codemirror</title>
+<path fill="none" stroke="black" d="M517.702,-274.558C544.533,-282.353 579.967,-292.646 608.32,-300.883"/>
+<polygon fill="black" stroke="black" points="607.449,-304.274 618.028,-303.703 609.402,-297.552 607.449,-304.274"/>
+</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.531" cy="-201.888" rx="48.1917" ry="18"/>
+<text text-anchor="middle" x="832.531" y="-198.188" 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="M697.776,-303.863C714.163,-298.314 732.966,-290.662 748.522,-280.888 772.188,-266.02 794.877,-243.68 810.535,-226.546"/>
+<polygon fill="black" stroke="black" points="813.151,-228.871 817.213,-219.085 807.935,-224.202 813.151,-228.871"/>
+</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.531" cy="-232.888" rx="27" ry="18"/>
+<text text-anchor="middle" x="193.531" y="-229.188" 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.531" cy="-292.888" rx="48.1917" ry="18"/>
+<text text-anchor="middle" x="336.531" y="-289.188" font-family="Times,serif" font-size="14.00">outputarea</text>
+</a>
+</g>
+</g>
+<!-- cells&#45;&gt;outputarea -->
+<g id="edge8" class="edge"><title>cells&#45;&gt;outputarea</title>
+<path fill="none" stroke="black" d="M216.872,-242.395C237.736,-251.273 269.378,-264.738 294.741,-275.531"/>
+<polygon fill="black" stroke="black" points="293.546,-278.826 304.118,-279.521 296.287,-272.385 293.546,-278.826"/>
+</g>
+<!-- outputarea&#45;&gt;rendermime -->
+<g id="edge11" class="edge"><title>outputarea&#45;&gt;rendermime</title>
+<path fill="none" stroke="black" d="M378.561,-283.968C391.732,-281.105 406.538,-277.887 420.541,-274.842"/>
+<polygon fill="black" stroke="black" points="421.532,-278.209 430.561,-272.664 420.045,-271.369 421.532,-278.209"/>
+</g>
+<!-- codeeditor&#45;&gt;coreutils -->
+<g id="edge9" class="edge"><title>codeeditor&#45;&gt;coreutils</title>
+<path fill="none" stroke="black" d="M873.126,-192.231C885.317,-189.257 898.829,-185.962 911.365,-182.904"/>
+<polygon fill="black" stroke="black" points="912.279,-186.284 921.165,-180.514 910.621,-179.483 912.279,-186.284"/>
+</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="476.531" cy="-201.888" rx="46.2923" ry="18"/>
+<text text-anchor="middle" x="476.531" y="-198.188" 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="M512.044,-190.32C541.745,-180.364 584.638,-165.986 615.972,-155.483"/>
+<polygon fill="black" stroke="black" points="617.339,-158.716 625.708,-152.22 615.115,-152.079 617.339,-158.716"/>
+</g>
+<!-- completer&#45;&gt;codeeditor -->
+<g id="edge13" class="edge"><title>completer&#45;&gt;codeeditor</title>
+<path fill="none" stroke="black" d="M522.724,-201.888C586.727,-201.888 703.775,-201.888 773.932,-201.888"/>
+<polygon fill="black" stroke="black" points="774.353,-205.388 784.353,-201.888 774.353,-198.388 774.353,-205.388"/>
+</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.5306" cy="-232.888" rx="37.8943" ry="18"/>
+<text text-anchor="middle" x="50.5306" y="-229.188" 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.5767,-232.888C109.517,-232.888 135.583,-232.888 156.375,-232.888"/>
+<polygon fill="black" stroke="black" points="156.412,-236.388 166.412,-232.888 156.412,-229.388 156.412,-236.388"/>
+</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.531" cy="-414.888" rx="46.2923" ry="18"/>
+<text text-anchor="middle" x="193.531" y="-411.188" 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.92,-414.888C251.493,-414.888 264.104,-414.888 276.258,-414.888"/>
+<polygon fill="black" stroke="black" points="276.327,-418.388 286.327,-414.888 276.327,-411.388 276.327,-418.388"/>
+</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.531" cy="-578.888" rx="53.8905" ry="18"/>
+<text text-anchor="middle" x="193.531" y="-575.188" 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="M221.518,-563.346C231.139,-557.08 241.666,-549.332 250.076,-540.888 280.108,-510.734 306.168,-468.666 321.371,-441.6"/>
+<polygon fill="black" stroke="black" points="324.517,-443.143 326.285,-432.697 318.389,-439.761 324.517,-443.143"/>
+</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.5306" cy="-578.888" rx="50.8918" ry="18"/>
+<text text-anchor="middle" x="50.5306" y="-575.188" 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.242,-578.888C110.325,-578.888 119.914,-578.888 129.328,-578.888"/>
+<polygon fill="black" stroke="black" points="129.441,-582.388 139.441,-578.888 129.441,-575.388 129.441,-582.388"/>
+</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.531" cy="-353.888" rx="42.7926" ry="18"/>
+<text text-anchor="middle" x="193.531" y="-350.188" 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="M224.089,-366.676C244.439,-375.48 271.753,-387.297 294.247,-397.028"/>
+<polygon fill="black" stroke="black" points="292.99,-400.297 303.558,-401.056 295.769,-393.873 292.99,-400.297"/>
+</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.531" cy="-292.888" rx="56.59" ry="18"/>
+<text text-anchor="middle" x="193.531" y="-289.188" 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="M222.853,-308.356C231.876,-313.767 241.688,-320.179 250.076,-326.888 273.833,-345.892 297.687,-371.09 314.131,-389.651"/>
+<polygon fill="black" stroke="black" points="311.703,-392.191 320.921,-397.414 316.972,-387.582 311.703,-392.191"/>
+</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.531" cy="-232.888" rx="42.7926" ry="18"/>
+<text text-anchor="middle" x="336.531" y="-229.188" 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="M374.875,-241.007C389.019,-244.081 405.428,-247.649 420.841,-250.999"/>
+<polygon fill="black" stroke="black" points="420.276,-254.458 430.791,-253.162 421.763,-247.618 420.276,-254.458"/>
+</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="476.531" cy="-141.888" rx="40.8928" ry="18"/>
+<text text-anchor="middle" x="476.531" y="-138.188" 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="M517.702,-141.888C544.692,-141.888 580.385,-141.888 608.821,-141.888"/>
+<polygon fill="black" stroke="black" points="608.94,-145.388 618.94,-141.888 608.94,-138.388 608.94,-145.388"/>
+</g>
+<!-- notebook -->
+<g id="node21" class="node"><title>notebook</title>
+<g id="a_node21"><a xlink:href="https:/github.com/jupyterlab/jupyterlab/tree/master/packages/notebook" xlink:title="notebook">
+<ellipse fill="none" stroke="black" cx="50.5306" cy="-405.888" rx="43.5923" ry="18"/>
+<text text-anchor="middle" x="50.5306" y="-402.188" font-family="Times,serif" font-size="14.00">notebook</text>
+</a>
+</g>
+</g>
+<!-- notebook&#45;&gt;docregistry -->
+<g id="edge22" class="edge"><title>notebook&#45;&gt;docregistry</title>
+<path fill="none" stroke="black" d="M60.8532,-423.444C74.2006,-446.466 101.155,-485.813 136.986,-501.888 182.844,-522.462 203.726,-521.331 250.076,-501.888 279.288,-489.635 303.545,-461.985 318.66,-441.122"/>
+<polygon fill="black" stroke="black" points="321.712,-442.864 324.565,-432.661 315.972,-438.858 321.712,-442.864"/>
+</g>
+<!-- notebook&#45;&gt;cells -->
+<g id="edge23" class="edge"><title>notebook&#45;&gt;cells</title>
+<path fill="none" stroke="black" d="M58.957,-388.1C71.5728,-359.539 99.5133,-302.915 136.986,-265.888 144.21,-258.75 153.273,-252.532 161.97,-247.478"/>
+<polygon fill="black" stroke="black" points="163.715,-250.512 170.808,-242.642 160.355,-244.372 163.715,-250.512"/>
+</g>
+<!-- running -->
+<g id="node22" class="node"><title>running</title>
+<g id="a_node22"><a xlink:href="https:/github.com/jupyterlab/jupyterlab/tree/master/packages/running" xlink:title="running">
+<ellipse fill="none" stroke="black" cx="476.531" cy="-80.8882" rx="38.1938" ry="18"/>
+<text text-anchor="middle" x="476.531" y="-77.1882" font-family="Times,serif" font-size="14.00">running</text>
+</a>
+</g>
+</g>
+<!-- running&#45;&gt;apputils -->
+<g id="edge24" class="edge"><title>running&#45;&gt;apputils</title>
+<path fill="none" stroke="black" d="M508.302,-91.3745C538.105,-101.531 583.464,-116.988 616.155,-128.129"/>
+<polygon fill="black" stroke="black" points="615.267,-131.524 625.862,-131.437 617.525,-124.898 615.267,-131.524"/>
+</g>
+<!-- terminal -->
+<g id="node23" class="node"><title>terminal</title>
+<g id="a_node23"><a xlink:href="https:/github.com/jupyterlab/jupyterlab/tree/master/packages/terminal" xlink:title="terminal">
+<ellipse fill="none" stroke="black" cx="476.531" cy="-19.8882" rx="40.0939" ry="18"/>
+<text text-anchor="middle" x="476.531" y="-16.1882" font-family="Times,serif" font-size="14.00">terminal</text>
+</a>
+</g>
+</g>
+<!-- terminal&#45;&gt;apputils -->
+<g id="edge25" class="edge"><title>terminal&#45;&gt;apputils</title>
+<path fill="none" stroke="black" d="M500.59,-34.4237C509.921,-40.3767 520.764,-47.3836 530.476,-53.8882 563.999,-76.3417 601.888,-102.964 627.296,-121.002"/>
+<polygon fill="black" stroke="black" points="625.557,-124.06 635.735,-127.003 629.614,-118.355 625.557,-124.06"/>
+</g>
+<!-- tooltip -->
+<g id="node24" class="node"><title>tooltip</title>
+<g id="a_node24"><a xlink:href="https:/github.com/jupyterlab/jupyterlab/tree/master/packages/tooltip" xlink:title="tooltip">
+<ellipse fill="none" stroke="black" cx="336.531" cy="-171.888" rx="33.5952" ry="18"/>
+<text text-anchor="middle" x="336.531" y="-168.188" font-family="Times,serif" font-size="14.00">tooltip</text>
+</a>
+</g>
+</g>
+<!-- tooltip&#45;&gt;rendermime -->
+<g id="edge26" class="edge"><title>tooltip&#45;&gt;rendermime</title>
+<path fill="none" stroke="black" d="M358.08,-185.823C375.26,-197.434 400.44,-214.359 422.585,-228.888 428.865,-233.008 435.59,-237.367 442.069,-241.54"/>
+<polygon fill="black" stroke="black" points="440.38,-244.615 450.685,-247.075 444.163,-238.725 440.38,-244.615"/>
+</g>
+</g>
+</svg>

+ 4 - 0
docs/extensions_dev.md

@@ -35,6 +35,10 @@ The default plugins in the JupyterLab application include:
 - [Console](https://github.com/jupyterlab/jupyterlab/blob/master/packages/console-extension/src/index.ts) - Adds the ability to launch Jupyter Console instances for
 interactive kernel console sessions.
 
+A dependency graph for the core JupyterLab plugins
+(along with links to their source) is shown here:
+![dependencies](dependency-graph.svg)
+
 ## Application Object
 The JupyterLab Application object is given to each plugin in
 its `activate()` function.  The Application object has a:

+ 63 - 0
docs/scripts/graph-dependencies.js

@@ -0,0 +1,63 @@
+var childProcess = require('child_process');
+var fs = require('fs-extra');
+var glob = require('glob');
+var path = require('path');
+
+var basePath = path.resolve('..');
+var baseUrl = 'https://github.com/jupyterlab/jupyterlab/tree/master/packages';
+var packages = glob.sync(path.join(basePath, 'packages/*'));
+
+// Begin the graph specification
+var text = 'digraph G {\n';
+text += 'ratio = 0.6;\n';
+text += 'rankdir=LR;\n';
+
+
+packages.forEach(function(packagePath) {
+
+  // Load the package.json data.
+  var dataPath = path.join(packagePath, 'package.json');
+  try {
+    var data = require(dataPath);
+  } catch (e) {
+    return;
+  }
+
+  // Don't include private packages.
+  if (data.private === true) {
+    return;
+  }
+
+  // Only include packages in the @jupyterlab namespace.
+  if (data.name.indexOf('@jupyterlab') === -1) {
+    return;
+  }
+
+  // In order to cut down on the number of graph nodes,
+  // don't include "*-extension" packages.
+  if (data.name.indexOf('-extension') !== -1 ) {
+    return;
+  }
+
+  // Construct a URL to the package on GitHub.
+  var Url = path.join(baseUrl, path.basename(packagePath));
+  
+  // Remove the '@jupyterlab' part of the name.
+  var name = '"'+data.name.split('/')[1] +'"';
+  text += name + '[URL="' + Url + '"];\n';
+
+  var deps = data.dependencies || [];
+  for (var dep in deps) {
+    // Don't include non-jupyterlab dependencies.
+    if (dep.indexOf('@jupyterlab') === -1) {
+      continue;
+    }
+    dep = '"'+dep.split('/')[1]+'"';
+    text += name + ' -> ' + dep + ';\n';
+  }
+});
+
+text += '}\n';
+fs.writeFileSync('./dependencies.gv', text);
+childProcess.execSync('cat dependencies.gv | tred | dot -Tsvg -o dependency-graph.svg')
+fs.unlink('./dependencies.gv');