From cf0146e8814a4a53969ac6b712d8d075108eb7c3 Mon Sep 17 00:00:00 2001 From: Sebastian Bank Date: Thu, 24 Dec 2020 15:07:32 +0100 Subject: [PATCH] re-render most graphs with latest Graphviz 2.44.1 - omit process.svg and graphviz-engines.ipynb (sfdp): Graphviz not built with triangulation library see upstream https://gitlab.com/graphviz/graphviz/-/issues/1269 --- docs/_static/angles.svg | 147 ++++--- docs/_static/btree.svg | 83 ++-- docs/_static/cluster.svg | 157 ++++--- docs/_static/cluster_edge.svg | 111 +++-- docs/_static/diamond.svg | 10 +- docs/_static/er.svg | 166 ++++---- docs/_static/escapes.svg | 27 +- docs/_static/fdpclust.svg | 104 +++-- docs/_static/fsm.svg | 203 +++++---- docs/_static/g_c_n.svg | 10 +- docs/_static/hello.svg | 25 +- docs/_static/holy-grenade.svg | 37 +- docs/_static/html_table.svg | 21 +- docs/_static/ni.svg | 59 +-- docs/_static/pet-shop.svg | 17 +- docs/_static/rank_same.svg | 53 ++- docs/_static/round-table.svg | 49 ++- docs/_static/structs.svg | 27 +- docs/_static/structs_revisited.svg | 27 +- docs/_static/traffic_lights.svg | 224 +++++----- docs/_static/unix.svg | 640 ++++++++++++++++------------- docs/round-table.png | Bin 15152 -> 15048 bytes examples/graphviz-escapes.ipynb | 105 ++--- examples/graphviz-notebook.ipynb | 410 ++++++++++-------- try-examples.py | 6 +- 25 files changed, 1548 insertions(+), 1170 deletions(-) diff --git a/docs/_static/angles.svg b/docs/_static/angles.svg index 6d5748e742..d8695825e8 100644 --- a/docs/_static/angles.svg +++ b/docs/_static/angles.svg @@ -1,224 +1,245 @@ - - + G - -cluster_1 - -Linear Angle Variations (white to black gradient) + + +cluster_1 + +Linear Angle Variations (white to black gradient) -cluster_2 - -Radial Angle Variations (white to black gradient) + +cluster_2 + +Radial Angle Variations (white to black gradient) -n9 + +n9 - + - + n9:360 -n8 + +n8 - + n8:315 -n7 + +n7 - + - + n7:270 -n6 + +n6 - + n6:225 -n5 + +n5 - + - + n5:180 -n14 + +n14 - -n14:180 + +n14:180 -n5->n14 - - + +n5->n14 + + -n4 + +n4 - + n4:135 -n3 + +n3 - + - + n3:90 -n2 + +n2 - + - + n2:45 -n1 + +n1 - + - + n1:0 -n18 + +n18 - -n18:360 + +n18:360 -n17 + +n17 - -n17:315 + +n17:315 -n16 + +n16 - -n16:270 + +n16:270 -n15 + +n15 - -n15:225 + +n15:225 -n13 + +n13 - -n13:135 + +n13:135 -n12 + +n12 - -n12:90 + +n12:90 -n11 + +n11 - -n11:45 + +n11:45 -n10 + +n10 - -n10:0 + +n10:0 diff --git a/docs/_static/btree.svg b/docs/_static/btree.svg index 740e15efc8..e895461f3a 100644 --- a/docs/_static/btree.svg +++ b/docs/_static/btree.svg @@ -1,16 +1,17 @@ - g - + -node0 + +node0 @@ -19,7 +20,8 @@ -node1 + +node1 @@ -28,12 +30,14 @@ -node0:f0->node1:f1 - - + +node0:f0->node1:f1 + + -node4 + +node4 @@ -42,12 +46,14 @@ -node0:f2->node4:f1 - - + +node0:f2->node4:f1 + + -node2 + +node2 @@ -56,12 +62,14 @@ -node1:f0->node2:f1 - - + +node1:f0->node2:f1 + + -node3 + +node3 @@ -70,12 +78,14 @@ -node1:f2->node3:f1 - + +node1:f2->node3:f1 + -node7 + +node7 @@ -84,12 +94,14 @@ -node2:f0->node7:f1 - - + +node2:f0->node7:f1 + + -node8 + +node8 @@ -98,12 +110,14 @@ -node2:f2->node8:f1 - - + +node2:f2->node8:f1 + + -node5 + +node5 @@ -112,12 +126,14 @@ -node4:f0->node5:f1 - + +node4:f0->node5:f1 + -node6 + +node6 @@ -126,9 +142,10 @@ -node4:f2->node6:f1 - - + +node4:f2->node6:f1 + + diff --git a/docs/_static/cluster.svg b/docs/_static/cluster.svg index 75edb21e27..18525dffc1 100644 --- a/docs/_static/cluster.svg +++ b/docs/_static/cluster.svg @@ -1,144 +1,169 @@ - G - -cluster_0 + + +cluster_0 process #1 -cluster_1 + +cluster_1 process #2 -a0 + +a0 a0 -a1 + +a1 a1 -a0->a1 - - + +a0->a1 + + -a2 + +a2 a2 -a1->a2 - - + +a1->a2 + + -b3 + +b3 b3 -a1->b3 - - + +a1->b3 + + -a3 + +a3 a3 -a2->a3 - - + +a2->a3 + + -a3->a0 - - + +a3->a0 + + -end - + +end + - - + + end -a3->end - - + +a3->end + + -b0 - -b0 + +b0 + +b0 -b1 - -b1 + +b1 + +b1 -b0->b1 - - + +b0->b1 + + -b2 + +b2 b2 -b1->b2 - - + +b1->b2 + + -b2->a3 - - + +b2->a3 + + -b2->b3 - - + +b2->b3 + + -b3->end - - + +b3->end + + -start - - - - - -start + +start + + + + + +start -start->a0 - - + +start->a0 + + -start->b0 - - + +start->b0 + + diff --git a/docs/_static/cluster_edge.svg b/docs/_static/cluster_edge.svg index 426844f217..df663a181e 100644 --- a/docs/_static/cluster_edge.svg +++ b/docs/_static/cluster_edge.svg @@ -1,114 +1,135 @@ - G - -cluster0 + + +cluster0 -cluster1 + +cluster1 -a + +a a -b + +b b -a->b - - + +a->b + + -c + +c c -a->c - - + +a->c + + -d + +d d -b->d - - + +b->d + + -f + +f f -b->f - - + +b->f + + -c->d - - + +c->d + + -e + +e e -c->e - - + +c->e + + -g + +g g -c->g - - + +c->g + + -d->e - - + +d->e + + -h + +h h -d->h - - + +d->h + + -e->g - - + +e->g + + -e->f - - + +e->f + + diff --git a/docs/_static/diamond.svg b/docs/_static/diamond.svg index d77b8795a7..7373409832 100644 --- a/docs/_static/diamond.svg +++ b/docs/_static/diamond.svg @@ -1,16 +1,16 @@ - - + -%3 - + -diamond + +diamond <> diff --git a/docs/_static/er.svg b/docs/_static/er.svg index ecc54beaa0..6402ef0c1a 100644 --- a/docs/_static/er.svg +++ b/docs/_static/er.svg @@ -1,129 +1,153 @@ - - + ER - -Entity Relation Diagram -drawn by NEATO + +Entity Relation Diagram +drawn by NEATO -course - -course + +course + +course -C-I - -C-I + +C-I + +C-I -course--C-I - -n + +course--C-I + +n -institute - -institute + +institute + +institute -name1 - -name + +name1 + +name -institute--name1 - + +institute--name1 + -S-I - -S-I + +S-I + +S-I -institute--S-I - -1 + +institute--S-I + +1 -student - -student + +student + +student -name2 - -name + +name2 + +name -student--name2 - + +student--name2 + -grade - -grade + +grade + +grade -student--grade - + +student--grade + -number - -number + +number + +number -student--number - + +student--number + -S-C - -S-C + +S-C + +S-C -student--S-C - -m + +student--S-C + +m -name0 - -name + +name0 + +name -name0--course - + +name0--course + -code - -code + +code + +code -code--course - + +code--course + -C-I--institute - -1 + +C-I--institute + +1 -S-C--course - -n + +S-C--course + +n -S-I--student - -n + +S-I--student + +n diff --git a/docs/_static/escapes.svg b/docs/_static/escapes.svg index fdbf3f76da..e2a5df62d1 100644 --- a/docs/_static/escapes.svg +++ b/docs/_static/escapes.svg @@ -1,25 +1,26 @@ - - + - -%3 - + + -backslash - -\ + +backslash + +\ -multi_line - -centered -left -right + +multi_line + +centered +left +right diff --git a/docs/_static/fdpclust.svg b/docs/_static/fdpclust.svg index 6ba4e0fc34..82ed8007ae 100644 --- a/docs/_static/fdpclust.svg +++ b/docs/_static/fdpclust.svg @@ -1,84 +1,100 @@ - - - + + G - -clusterA - + + +clusterA + -clusterC - + +clusterC + -clusterB - + +clusterB + -e - -e + +e + +e -e--__0:clusterB - + +e--__0:clusterB + -a - -a + +a + +a -b - -b + +b + +b -a--b - + +a--b + -C - -C + +C + +C -D - -D + +D + +D -C--D - + +C--D + -d - -d + +d + +d -d--D - + +d--D + -f - -f + +f + +f -d--f - + +d--f + -__1:clusterC--__2:clusterB - + +__1:clusterC--__2:clusterB + diff --git a/docs/_static/fsm.svg b/docs/_static/fsm.svg index 6548d5fc1b..dbded79769 100644 --- a/docs/_static/fsm.svg +++ b/docs/_static/fsm.svg @@ -1,146 +1,169 @@ - - + finite_state_machine - + -LR_0 - - -LR_0 + +LR_0 + + +LR_0 -LR_2 - -LR_2 + +LR_2 + +LR_2 -LR_0->LR_2 - - -SS(B) + +LR_0->LR_2 + + +SS(B) -LR_1 - -LR_1 + +LR_1 + +LR_1 -LR_0->LR_1 - - -SS(S) + +LR_0->LR_1 + + +SS(S) -LR_3 - - -LR_3 + +LR_3 + + +LR_3 -LR_4 - - -LR_4 + +LR_4 + + +LR_4 -LR_8 - - -LR_8 + +LR_8 + + +LR_8 -LR_6 - -LR_6 + +LR_6 + +LR_6 -LR_8->LR_6 - - -S(b) + +LR_8->LR_6 + + +S(b) -LR_5 - -LR_5 + +LR_5 + +LR_5 -LR_8->LR_5 - - -S(a) + +LR_8->LR_5 + + +S(a) -LR_2->LR_4 - - -S(A) + +LR_2->LR_4 + + +S(A) -LR_2->LR_6 - - -SS(b) + +LR_2->LR_6 + + +SS(b) -LR_2->LR_5 - - -SS(a) + +LR_2->LR_5 + + +SS(a) -LR_1->LR_3 - - -S($end) + +LR_1->LR_3 + + +S($end) -LR_6->LR_6 - - -S(b) + +LR_6->LR_6 + + +S(b) -LR_6->LR_5 - - -S(a) + +LR_6->LR_5 + + +S(a) -LR_5->LR_5 - - -S(a) + +LR_5->LR_5 + + +S(a) -LR_7 - -LR_7 + +LR_7 + +LR_7 -LR_5->LR_7 - - -S(b) + +LR_5->LR_7 + + +S(b) -LR_7->LR_8 - - -S(b) + +LR_7->LR_8 + + +S(b) -LR_7->LR_5 - - -S(a) + +LR_7->LR_5 + + +S(a) diff --git a/docs/_static/g_c_n.svg b/docs/_static/g_c_n.svg index 5737bd435a..12c6feb17d 100644 --- a/docs/_static/g_c_n.svg +++ b/docs/_static/g_c_n.svg @@ -1,7 +1,7 @@ - - + agraph -cluster1 + +cluster1 @@ -27,7 +28,8 @@ acluster -anode + +anode diff --git a/docs/_static/hello.svg b/docs/_static/hello.svg index dc9af255f5..d61bd265ff 100644 --- a/docs/_static/hello.svg +++ b/docs/_static/hello.svg @@ -1,28 +1,31 @@ - G - + -Hello - -Hello + +Hello + +Hello -World - -World + +World + +World -Hello->World - - + +Hello->World + + diff --git a/docs/_static/holy-grenade.svg b/docs/_static/holy-grenade.svg index 93965fc235..bf7074cf3f 100644 --- a/docs/_static/holy-grenade.svg +++ b/docs/_static/holy-grenade.svg @@ -1,48 +1,55 @@ - the holy hand grenade - + -1 + +1 1 -2 + +2 2 -1->2 - - + +1->2 + + -3 + +3 3 -2->3 - - + +2->3 + + -lob + +lob lob -3->lob - - + +3->lob + + diff --git a/docs/_static/html_table.svg b/docs/_static/html_table.svg index dd9af33def..2a9c168e69 100644 --- a/docs/_static/html_table.svg +++ b/docs/_static/html_table.svg @@ -1,22 +1,23 @@ - - + html_table - + -tab - - -left - -right - + +tab + + +left + +right + diff --git a/docs/_static/ni.svg b/docs/_static/ni.svg index eac6cf6d7c..19a0908def 100644 --- a/docs/_static/ni.svg +++ b/docs/_static/ni.svg @@ -1,54 +1,63 @@ - ni - + -1 - -Ni! + +1 + +Ni! -2 - -Ni! + +2 + +Ni! -1--2 - + +1--2 + -3 - -Ni! + +3 + +Ni! -2--3 - + +2--3 + -4 - -Ni! + +4 + +Ni! -3--4 - + +3--4 + -5 - -Ni! + +5 + +Ni! -4--5 - + +4--5 + diff --git a/docs/_static/pet-shop.svg b/docs/_static/pet-shop.svg index 6596d9f3aa..79a1f6a903 100644 --- a/docs/_static/pet-shop.svg +++ b/docs/_static/pet-shop.svg @@ -1,26 +1,29 @@ - pet-shop - + -parrot + +parrot parrot -dead + +dead dead -parrot->dead - - + +parrot->dead + + diff --git a/docs/_static/rank_same.svg b/docs/_static/rank_same.svg index 4e815d934a..b2bfc6f130 100644 --- a/docs/_static/rank_same.svg +++ b/docs/_static/rank_same.svg @@ -1,63 +1,72 @@ - - + -%3 - + -A + +A A -C + +C C -A->C - - + +A->C + + -B + +B B -A->B - - + +A->B + + -X + +X X -Y + +Y Y -X->Y - - + +X->Y + + -D + +D D -C->D - - + +C->D + + diff --git a/docs/_static/round-table.svg b/docs/_static/round-table.svg index 12658d0695..b2fba8e6e8 100644 --- a/docs/_static/round-table.svg +++ b/docs/_static/round-table.svg @@ -1,43 +1,48 @@ - - + -%3 - + -A - -King Arthur + +A + +King Arthur -B - -Sir Bedevere the Wise + +B + +Sir Bedevere the Wise -A->B - - + +A->B + + -L - -Sir Lancelot the Brave + +L + +Sir Lancelot the Brave -A->L - - + +A->L + + -B->L - - + +B->L + + diff --git a/docs/_static/structs.svg b/docs/_static/structs.svg index d2aa74ded0..55b97f0f50 100644 --- a/docs/_static/structs.svg +++ b/docs/_static/structs.svg @@ -1,16 +1,17 @@ - structs - + -struct1 + +struct1 left @@ -19,19 +20,22 @@ right -struct2 + +struct2 one two -struct1:f1->struct2:f0 - - + +struct1:f1->struct2:f0 + + -struct3 + +struct3 hello world @@ -51,9 +55,10 @@ f -struct1:f2->struct3:here - - + +struct1:f2->struct3:here + + diff --git a/docs/_static/structs_revisited.svg b/docs/_static/structs_revisited.svg index 4d37564bde..09b18d726f 100644 --- a/docs/_static/structs_revisited.svg +++ b/docs/_static/structs_revisited.svg @@ -1,16 +1,17 @@ - structs - + -struct1 + +struct1 left @@ -19,19 +20,22 @@ right -struct2 + +struct2 one two -struct1:f1->struct2:f0 - - + +struct1:f1->struct2:f0 + + -struct3 + +struct3 hello world @@ -51,9 +55,10 @@ h -struct1:f2->struct3:here - - + +struct1:f2->struct3:here + + diff --git a/docs/_static/traffic_lights.svg b/docs/_static/traffic_lights.svg index 724242b0d6..f3bd17294a 100644 --- a/docs/_static/traffic_lights.svg +++ b/docs/_static/traffic_lights.svg @@ -1,165 +1,195 @@ - - - + + TrafficLights - -PetriNet Model TrafficLights -Extracted from ConceptBase and layed out by Graphviz + +PetriNet Model TrafficLights +Extracted from ConceptBase and layed out by Graphviz -gy2 - -gy2 + +gy2 + +gy2 -yellow2 - -yellow2 + +yellow2 + +yellow2 -gy2->yellow2 - - + +gy2->yellow2 + + -yr2 - -yr2 + +yr2 + +yr2 -red2 - -red2 + +red2 + +red2 -yr2->red2 - - + +yr2->red2 + + -safe1 - -safe1 + +safe1 + +safe1 -yr2->safe1 - - + +yr2->safe1 + + -rg2 - -rg2 + +rg2 + +rg2 -green2 - -green2 + +green2 + +green2 -rg2->green2 - - + +rg2->green2 + + -gy1 - -gy1 + +gy1 + +gy1 -yellow1 - -yellow1 + +yellow1 + +yellow1 -gy1->yellow1 - - + +gy1->yellow1 + + -yr1 - -yr1 + +yr1 + +yr1 -safe2 - -safe2 + +safe2 + +safe2 -yr1->safe2 - - + +yr1->safe2 + + -red1 - -red1 + +red1 + +red1 -yr1->red1 - - + +yr1->red1 + + -rg1 - -rg1 + +rg1 + +rg1 -green1 - -green1 + +green1 + +green1 -rg1->green1 - - + +rg1->green1 + + -green2->gy2 - - + +green2->gy2 + + -yellow2->yr2 - - + +yellow2->yr2 + + -red2->rg2 - - + +red2->rg2 + + -safe2->rg2 - - + +safe2->rg2 + + -green1->gy1 - - + +green1->gy1 + + -yellow1->yr1 - - + +yellow1->yr1 + + -red1->rg1 - - + +red1->rg1 + + -safe1->rg1 - - + +safe1->rg1 + + diff --git a/docs/_static/unix.svg b/docs/_static/unix.svg index 673f1a98ce..be39a3a500 100644 --- a/docs/_static/unix.svg +++ b/docs/_static/unix.svg @@ -1,463 +1,553 @@ - - - + + unix - + -5th Edition - -5th Edition + +5th Edition + +5th Edition -6th Edition - -6th Edition + +6th Edition + +6th Edition -5th Edition->6th Edition - - + +5th Edition->6th Edition + + -PWB 1.0 - -PWB 1.0 + +PWB 1.0 + +PWB 1.0 -5th Edition->PWB 1.0 - - + +5th Edition->PWB 1.0 + + -LSX - -LSX + +LSX + +LSX -6th Edition->LSX - - + +6th Edition->LSX + + -1 BSD - -1 BSD + +1 BSD + +1 BSD -6th Edition->1 BSD - - + +6th Edition->1 BSD + + -Mini Unix - -Mini Unix + +Mini Unix + +Mini Unix -6th Edition->Mini Unix - - + +6th Edition->Mini Unix + + -Wollongong - -Wollongong + +Wollongong + +Wollongong -6th Edition->Wollongong - - + +6th Edition->Wollongong + + -Interdata - -Interdata + +Interdata + +Interdata -6th Edition->Interdata - - + +6th Edition->Interdata + + -PWB 1.2 - -PWB 1.2 + +PWB 1.2 + +PWB 1.2 -PWB 1.0->PWB 1.2 - - + +PWB 1.0->PWB 1.2 + + -USG 1.0 - -USG 1.0 + +USG 1.0 + +USG 1.0 -PWB 1.0->USG 1.0 - - + +PWB 1.0->USG 1.0 + + -2 BSD - -2 BSD + +2 BSD + +2 BSD -1 BSD->2 BSD - - + +1 BSD->2 BSD + + -Unix/TS 3.0 - -Unix/TS 3.0 + +Unix/TS 3.0 + +Unix/TS 3.0 -Interdata->Unix/TS 3.0 - - + +Interdata->Unix/TS 3.0 + + -PWB 2.0 - -PWB 2.0 + +PWB 2.0 + +PWB 2.0 -Interdata->PWB 2.0 - - + +Interdata->PWB 2.0 + + -7th Edition - -7th Edition + +7th Edition + +7th Edition -Interdata->7th Edition - - + +Interdata->7th Edition + + -TS 4.0 - -TS 4.0 + +TS 4.0 + +TS 4.0 -Unix/TS 3.0->TS 4.0 - - + +Unix/TS 3.0->TS 4.0 + + -PWB 2.0->Unix/TS 3.0 - - + +PWB 2.0->Unix/TS 3.0 + + -8th Edition - -8th Edition + +8th Edition + +8th Edition -7th Edition->8th Edition - - + +7th Edition->8th Edition + + -32V - -32V + +32V + +32V -7th Edition->32V - - + +7th Edition->32V + + -V7M - -V7M + +V7M + +V7M -7th Edition->V7M - - + +7th Edition->V7M + + -Ultrix-11 - -Ultrix-11 + +Ultrix-11 + +Ultrix-11 -7th Edition->Ultrix-11 - - + +7th Edition->Ultrix-11 + + -Xenix - -Xenix + +Xenix + +Xenix -7th Edition->Xenix - - + +7th Edition->Xenix + + -UniPlus+ - -UniPlus+ + +UniPlus+ + +UniPlus+ -7th Edition->UniPlus+ - - + +7th Edition->UniPlus+ + + -9th Edition - -9th Edition + +9th Edition + +9th Edition -8th Edition->9th Edition - - + +8th Edition->9th Edition + + -3 BSD - -3 BSD + +3 BSD + +3 BSD -32V->3 BSD - - + +32V->3 BSD + + -V7M->Ultrix-11 - - + +V7M->Ultrix-11 + + -2.8 BSD - -2.8 BSD + +2.8 BSD + +2.8 BSD -2 BSD->2.8 BSD - - + +2 BSD->2.8 BSD + + -2.8 BSD->Ultrix-11 - - + +2.8 BSD->Ultrix-11 + + -2.9 BSD - -2.9 BSD + +2.9 BSD + +2.9 BSD -2.8 BSD->2.9 BSD - - + +2.8 BSD->2.9 BSD + + -4 BSD - -4 BSD + +4 BSD + +4 BSD -3 BSD->4 BSD - - + +3 BSD->4 BSD + + -4.1 BSD - -4.1 BSD + +4.1 BSD + +4.1 BSD -4 BSD->4.1 BSD - - + +4 BSD->4.1 BSD + + -4.1 BSD->8th Edition - - + +4.1 BSD->8th Edition + + -4.1 BSD->2.8 BSD - - + +4.1 BSD->2.8 BSD + + -4.2 BSD - -4.2 BSD + +4.2 BSD + +4.2 BSD -4.1 BSD->4.2 BSD - - + +4.1 BSD->4.2 BSD + + -4.3 BSD - -4.3 BSD + +4.3 BSD + +4.3 BSD -4.2 BSD->4.3 BSD - - + +4.2 BSD->4.3 BSD + + -Ultrix-32 - -Ultrix-32 + +Ultrix-32 + +Ultrix-32 -4.2 BSD->Ultrix-32 - - + +4.2 BSD->Ultrix-32 + + -PWB 1.2->PWB 2.0 - - + +PWB 1.2->PWB 2.0 + + -CB Unix 1 - -CB Unix 1 + +CB Unix 1 + +CB Unix 1 -USG 1.0->CB Unix 1 - - + +USG 1.0->CB Unix 1 + + -USG 2.0 - -USG 2.0 + +USG 2.0 + +USG 2.0 -USG 1.0->USG 2.0 - - + +USG 1.0->USG 2.0 + + -CB Unix 2 - -CB Unix 2 + +CB Unix 2 + +CB Unix 2 -CB Unix 1->CB Unix 2 - - + +CB Unix 1->CB Unix 2 + + -USG 3.0 - -USG 3.0 + +USG 3.0 + +USG 3.0 -USG 2.0->USG 3.0 - - + +USG 2.0->USG 3.0 + + -CB Unix 3 - -CB Unix 3 + +CB Unix 3 + +CB Unix 3 -CB Unix 2->CB Unix 3 - - + +CB Unix 2->CB Unix 3 + + -Unix/TS++ - -Unix/TS++ + +Unix/TS++ + +Unix/TS++ -CB Unix 3->Unix/TS++ - - + +CB Unix 3->Unix/TS++ + + -PDP-11 Sys V - -PDP-11 Sys V + +PDP-11 Sys V + +PDP-11 Sys V -CB Unix 3->PDP-11 Sys V - - + +CB Unix 3->PDP-11 Sys V + + -CB Unix 3->TS 4.0 - - + +CB Unix 3->TS 4.0 + + -Unix/TS++->TS 4.0 - - + +Unix/TS++->TS 4.0 + + -USG 3.0->Unix/TS 3.0 - - + +USG 3.0->Unix/TS 3.0 + + -Unix/TS 1.0 - -Unix/TS 1.0 + +Unix/TS 1.0 + +Unix/TS 1.0 -Unix/TS 1.0->Unix/TS 3.0 - - + +Unix/TS 1.0->Unix/TS 3.0 + + -System V.0 - -System V.0 + +System V.0 + +System V.0 -TS 4.0->System V.0 - - + +TS 4.0->System V.0 + + -System V.2 - -System V.2 + +System V.2 + +System V.2 -System V.0->System V.2 - - + +System V.0->System V.2 + + -System V.3 - -System V.3 + +System V.3 + +System V.3 -System V.2->System V.3 - - + +System V.2->System V.3 + + diff --git a/docs/round-table.png b/docs/round-table.png index fdaa886c29ea28a861ec76b0d049152d048dc189..7a18177233a6f8b4fc37a3769ca0bff8edefa96f 100644 GIT binary patch literal 15048 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�&+~FkGrDi0GS| zdJ%fY%-vtCBF$wT+0W2f(@`ZKKJfioSU@~H5UttR*#0M3AEZI&R4Cc2Xg1(~$V)5H z50yZig=b--;?;7F0~KJP3%waGZlQ(U)C3C{>JccKNR9*>6W*uE0=)`~Jks!mMx!bI zX9GZrl#rkUIRqW9shkfpgKd#jR`%k|SXVa)-b4U*58AgZew5jRrMwt5j7$&y;;xe} z5BUIs8uL&IVh7)ViHW?{0dLr3n@}<`M#slfq^fsW{{l}{;pR<3z-b4*I&f1k10fkA z)+lKDz9rwNi?G*%Bp8(y1I;y|%jVm+Z^%19pebd)eH)_n3vwIk30QXoCbc+60)Hy>gCIq|GoVas&fMoDFxfWOocA95O6sD_XZI9@nZ>Szge2t zBgpEv)4qMXg~bq44Rr?#s3N>c1R+$$RnXR^_|MN_vWs>FSP3qaGT1}N=1J;22+I8M zfdt<6Lak3Zq#1{UpL`G;2H7%t)UP{&pThegJR0J+NtodS@(TDp|M%__^2U-i9CLzq zw~-S!G)F?Xm6{hfEj>F4DTD@21H?`q@?zbjy$E_laP|Of}sy~ z7Wc+LeAfTmA9^Mej8}F|4TFh;yQ}MRB1hHdnbp;(o6os)N+g1=yi^1G@c3}Gc=Dkl z3?DW)wDAz4z@SBIYsc&GUf4Uc`~1=WHVr|dV4Jp{9(J_}8R%7I!kAuQ+H#+>vpIZy zeFcF6%2Gl{!RFb~;h`lQLPV>Dk|(dxsqg{zCwRo*lFI*Q(!oQrw7KDC&1Yu!?tyCC z8MpZBm$g{6+nLrY;m}Bw<=gD+Y-63T^91nf*?6VPHvUBvViLf?Y6imxl(3EM?O zjo#MQP^~5t^zP>7%=v2uEivUWDI_xM=FJ$D=9763i>c6^y1<4bhJivrL?ow0x@aN6SnV=% zCTa)vX@PPDCg-u*T>}GKk35@wu;kyho7KZUn0b!!#Fr_;AZ{=Q^8}oDFs$%P3`u}K zK;d-uv*Mrh>jmcan~Cqg_Y=ol;Uz_#&_Z}L*oq*Smx22a1qCb`RAWYzqk{t)&SZnD zqbLJpf~d}J{-~S~`=U|EmDwCZ!tBT^fVsK3Bk3tKZq64!wLs_OKRjlmYB^{( zHxW?=jpFMA-Q9)ljL@Qa|8EV*9px0e=cx&rKNJ*1$$2lt=2ovHkH2y#H}anop6meN z4BbKBojB(HmX%hPxu)_8OXMnr+J7o3Ee(cseo}i=os(+wYpYP>~hcRK|LL4sI+lcF;T}C2W|$D zR`#-mjpti5ZFINV7xqxwE#88{|No}wb>)9=ibDGsyg{le4qdqL0_od}LQj%H$%2sY dE9TEofn3#}F!l`B;1yWZO(jjmBD8tX{{uxYS7QJG diff --git a/examples/graphviz-escapes.ipynb b/examples/graphviz-escapes.ipynb index 17efe77752..4365831e83 100644 --- a/examples/graphviz-escapes.ipynb +++ b/examples/graphviz-escapes.ipynb @@ -37,16 +37,16 @@ "\r\n", "\r\n", - "\r\n", - "\r\n", + "\r\n", "\r\n", "\r\n", - "%3\r\n", - "\r\n", + "\r\n", "\r\n", - "A\r\n", + "\r\n", + "A\r\n", "\r\n", ""\r\n", "\r\n", @@ -54,7 +54,7 @@ "\r\n" ], "text/plain": [ - "" + "" ] }, "execution_count": 2, @@ -86,16 +86,16 @@ "\r\n", "\r\n", - "\r\n", - "\r\n", + "\r\n", "\r\n", "\r\n", - "%3\r\n", - "\r\n", + "\r\n", "\r\n", - "A\r\n", + "\r\n", + "A\r\n", "\r\n", "\\\r\n", "\r\n", @@ -103,7 +103,7 @@ "\r\n" ], "text/plain": [ - "" + "" ] }, "execution_count": 3, @@ -135,16 +135,16 @@ "\r\n", "\r\n", - "\r\n", - "\r\n", + "\r\n", "\r\n", "\r\n", - "%3\r\n", - "\r\n", + "\r\n", "\r\n", - "A\r\n", + "\r\n", + "A\r\n", "\r\n", "\\"\r\n", "\r\n", @@ -152,7 +152,7 @@ "\r\n" ], "text/plain": [ - "" + "" ] }, "execution_count": 4, @@ -191,24 +191,24 @@ "\r\n", "\r\n", - "\r\n", - "\r\n", + "\r\n", "\r\n", "\r\n", - "%3\r\n", - "\r\n", + "\r\n", "\r\n", - "A\r\n", - "\r\n", - "node: A\r\n", + "\r\n", + "A\r\n", + "\r\n", + "node: A\r\n", "\r\n", "\r\n", "\r\n" ], "text/plain": [ - "" + "" ] }, "execution_count": 5, @@ -240,24 +240,25 @@ "\r\n", "\r\n", - "\r\n", "\r\n", "\r\n", "\r\n", "spam\r\n", - "\r\n", + "\r\n", "\r\n", - "A\r\n", - "\r\n", - "graph: spam\r\n", + "\r\n", + "A\r\n", + "\r\n", + "graph: spam\r\n", "\r\n", "\r\n", "\r\n" ], "text/plain": [ - "" + "" ] }, "execution_count": 6, @@ -289,19 +290,19 @@ "\r\n", "\r\n", - "\r\n", - "\r\n", + "\r\n", "\r\n", "\r\n", - "%3\r\n", - "\r\n", + "\r\n", "\r\n", - "A\r\n", + "\r\n", + "A\r\n", "\r\n", - "\r\n", - "spam\r\n", + "\r\n", + "spam\r\n", "\r\n", "\r\n", "\r\n", @@ -309,7 +310,7 @@ "\r\n" ], "text/plain": [ - "" + "" ] }, "execution_count": 7, @@ -341,26 +342,26 @@ "\r\n", "\r\n", - "\r\n", - "\r\n", + "\r\n", "\r\n", - "\r\n", - "%3\r\n", - "\r\n", + "\r\n", + "\r\n", "\r\n", - "A\r\n", - "\r\n", - "centered\r\n", - "left\r\n", - "right\r\n", + "\r\n", + "A\r\n", + "\r\n", + "centered\r\n", + "left\r\n", + "right\r\n", "\r\n", "\r\n", "\r\n" ], "text/plain": [ - "" + "" ] }, "execution_count": 8, @@ -389,7 +390,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.8.2" + "version": "3.8.7" } }, "nbformat": 4, diff --git a/examples/graphviz-notebook.ipynb b/examples/graphviz-notebook.ipynb index c72c3d11ee..e301e95c1c 100644 --- a/examples/graphviz-notebook.ipynb +++ b/examples/graphviz-notebook.ipynb @@ -29,49 +29,54 @@ "\r\n", "\r\n", - "\r\n", - "\r\n", + "\r\n", "\r\n", "\r\n", - "%3\r\n", - "\r\n", + "\r\n", "\r\n", - "A\r\n", - "\r\n", - "King Arthur\r\n", + "\r\n", + "A\r\n", + "\r\n", + "King Arthur\r\n", "\r\n", "\r\n", - "B\r\n", - "\r\n", - "Sir Bedevere the Wise\r\n", + "\r\n", + "B\r\n", + "\r\n", + "Sir Bedevere the Wise\r\n", "\r\n", "\r\n", - "A->B\r\n", - "\r\n", - "\r\n", + "\r\n", + "A->B\r\n", + "\r\n", + "\r\n", "\r\n", "\r\n", - "L\r\n", - "\r\n", - "Sir Lancelot the Brave\r\n", + "\r\n", + "L\r\n", + "\r\n", + "Sir Lancelot the Brave\r\n", "\r\n", "\r\n", - "A->L\r\n", - "\r\n", - "\r\n", + "\r\n", + "A->L\r\n", + "\r\n", + "\r\n", "\r\n", "\r\n", - "B->L\r\n", - "\r\n", - "\r\n", + "\r\n", + "B->L\r\n", + "\r\n", + "\r\n", "\r\n", "\r\n", "\r\n" ], "text/plain": [ - "" + "" ] }, "execution_count": 2, @@ -112,54 +117,61 @@ "\r\n", "\r\n", - "\r\n", "\r\n", "\r\n", "\r\n", "the holy hand grenade\r\n", - "\r\n", + "\r\n", "\r\n", - "1\r\n", + "\r\n", + "1\r\n", "\r\n", "1\r\n", "\r\n", "\r\n", - "2\r\n", + "\r\n", + "2\r\n", "\r\n", "2\r\n", "\r\n", "\r\n", - "1->2\r\n", - "\r\n", - "\r\n", + "\r\n", + "1->2\r\n", + "\r\n", + "\r\n", "\r\n", "\r\n", - "3\r\n", + "\r\n", + "3\r\n", "\r\n", "3\r\n", "\r\n", "\r\n", - "2->3\r\n", - "\r\n", - "\r\n", + "\r\n", + "2->3\r\n", + "\r\n", + "\r\n", "\r\n", "\r\n", - "lob\r\n", + "\r\n", + "lob\r\n", "\r\n", "lob\r\n", "\r\n", "\r\n", - "3->lob\r\n", - "\r\n", - "\r\n", + "\r\n", + "3->lob\r\n", + "\r\n", + "\r\n", "\r\n", "\r\n", "\r\n" ], "text/plain": [ - "" + "" ] }, "execution_count": 3, @@ -192,152 +204,175 @@ "\r\n", "\r\n", - "\r\n", "\r\n", "\r\n", - "\r\n", + "\r\n", "finite_state_machine\r\n", - "\r\n", + "\r\n", "\r\n", - "LR_0\r\n", - "\r\n", - "\r\n", - "LR_0\r\n", + "\r\n", + "LR_0\r\n", + "\r\n", + "\r\n", + "LR_0\r\n", "\r\n", "\r\n", - "LR_2\r\n", - "\r\n", - "LR_2\r\n", + "\r\n", + "LR_2\r\n", + "\r\n", + "LR_2\r\n", "\r\n", "\r\n", - "LR_0->LR_2\r\n", - "\r\n", - "\r\n", - "SS(B)\r\n", + "\r\n", + "LR_0->LR_2\r\n", + "\r\n", + "\r\n", + "SS(B)\r\n", "\r\n", "\r\n", - "LR_1\r\n", - "\r\n", - "LR_1\r\n", + "\r\n", + "LR_1\r\n", + "\r\n", + "LR_1\r\n", "\r\n", "\r\n", - "LR_0->LR_1\r\n", - "\r\n", - "\r\n", - "SS(S)\r\n", + "\r\n", + "LR_0->LR_1\r\n", + "\r\n", + "\r\n", + "SS(S)\r\n", "\r\n", "\r\n", - "LR_3\r\n", - "\r\n", - "\r\n", - "LR_3\r\n", + "\r\n", + "LR_3\r\n", + "\r\n", + "\r\n", + "LR_3\r\n", "\r\n", "\r\n", - "LR_4\r\n", - "\r\n", - "\r\n", - "LR_4\r\n", + "\r\n", + "LR_4\r\n", + "\r\n", + "\r\n", + "LR_4\r\n", "\r\n", "\r\n", - "LR_8\r\n", - "\r\n", - "\r\n", - "LR_8\r\n", + "\r\n", + "LR_8\r\n", + "\r\n", + "\r\n", + "LR_8\r\n", "\r\n", "\r\n", - "LR_6\r\n", - "\r\n", - "LR_6\r\n", + "\r\n", + "LR_6\r\n", + "\r\n", + "LR_6\r\n", "\r\n", "\r\n", - "LR_8->LR_6\r\n", - "\r\n", - "\r\n", - "S(b)\r\n", + "\r\n", + "LR_8->LR_6\r\n", + "\r\n", + "\r\n", + "S(b)\r\n", "\r\n", "\r\n", - "LR_5\r\n", - "\r\n", - "LR_5\r\n", + "\r\n", + "LR_5\r\n", + "\r\n", + "LR_5\r\n", "\r\n", "\r\n", - "LR_8->LR_5\r\n", - "\r\n", - "\r\n", - "S(a)\r\n", + "\r\n", + "LR_8->LR_5\r\n", + "\r\n", + "\r\n", + "S(a)\r\n", "\r\n", "\r\n", - "LR_2->LR_4\r\n", - "\r\n", - "\r\n", - "S(A)\r\n", + "\r\n", + "LR_2->LR_4\r\n", + "\r\n", + "\r\n", + "S(A)\r\n", "\r\n", "\r\n", - "LR_2->LR_6\r\n", - "\r\n", - "\r\n", - "SS(b)\r\n", + "\r\n", + "LR_2->LR_6\r\n", + "\r\n", + "\r\n", + "SS(b)\r\n", "\r\n", "\r\n", - "LR_2->LR_5\r\n", - "\r\n", - "\r\n", - "SS(a)\r\n", + "\r\n", + "LR_2->LR_5\r\n", + "\r\n", + "\r\n", + "SS(a)\r\n", "\r\n", "\r\n", - "LR_1->LR_3\r\n", - "\r\n", - "\r\n", - "S($end)\r\n", + "\r\n", + "LR_1->LR_3\r\n", + "\r\n", + "\r\n", + "S($end)\r\n", "\r\n", "\r\n", - "LR_6->LR_6\r\n", - "\r\n", - "\r\n", - "S(b)\r\n", + "\r\n", + "LR_6->LR_6\r\n", + "\r\n", + "\r\n", + "S(b)\r\n", "\r\n", "\r\n", - "LR_6->LR_5\r\n", - "\r\n", - "\r\n", - "S(a)\r\n", + "\r\n", + "LR_6->LR_5\r\n", + "\r\n", + "\r\n", + "S(a)\r\n", "\r\n", "\r\n", - "LR_5->LR_5\r\n", - "\r\n", - "\r\n", - "S(a)\r\n", + "\r\n", + "LR_5->LR_5\r\n", + "\r\n", + "\r\n", + "S(a)\r\n", "\r\n", "\r\n", - "LR_7\r\n", - "\r\n", - "LR_7\r\n", + "\r\n", + "LR_7\r\n", + "\r\n", + "LR_7\r\n", "\r\n", "\r\n", - "LR_5->LR_7\r\n", - "\r\n", - "\r\n", - "S(b)\r\n", + "\r\n", + "LR_5->LR_7\r\n", + "\r\n", + "\r\n", + "S(b)\r\n", "\r\n", "\r\n", - "LR_7->LR_8\r\n", - "\r\n", - "\r\n", - "S(b)\r\n", + "\r\n", + "LR_7->LR_8\r\n", + "\r\n", + "\r\n", + "S(b)\r\n", "\r\n", "\r\n", - "LR_7->LR_5\r\n", - "\r\n", - "\r\n", - "S(a)\r\n", + "\r\n", + "LR_7->LR_5\r\n", + "\r\n", + "\r\n", + "S(a)\r\n", "\r\n", "\r\n", "\r\n" ], "text/plain": [ - "" + "" ] }, "execution_count": 4, @@ -396,120 +431,141 @@ "\r\n", "\r\n", - "\r\n", "\r\n", "\r\n", "\r\n", "G\r\n", - "\r\n", - "cluster0\r\n", + "\r\n", + "\r\n", + "cluster0\r\n", "\r\n", "\r\n", - "cluster1\r\n", + "\r\n", + "cluster1\r\n", "\r\n", "\r\n", "\r\n", - "a\r\n", + "\r\n", + "a\r\n", "\r\n", "a\r\n", "\r\n", "\r\n", - "b\r\n", + "\r\n", + "b\r\n", "\r\n", "b\r\n", "\r\n", "\r\n", - "a->b\r\n", - "\r\n", - "\r\n", + "\r\n", + "a->b\r\n", + "\r\n", + "\r\n", "\r\n", "\r\n", - "c\r\n", + "\r\n", + "c\r\n", "\r\n", "c\r\n", "\r\n", "\r\n", - "a->c\r\n", - "\r\n", - "\r\n", + "\r\n", + "a->c\r\n", + "\r\n", + "\r\n", "\r\n", "\r\n", - "d\r\n", + "\r\n", + "d\r\n", "\r\n", "d\r\n", "\r\n", "\r\n", - "b->d\r\n", - "\r\n", - "\r\n", + "\r\n", + "b->d\r\n", + "\r\n", + "\r\n", "\r\n", "\r\n", - "f\r\n", + "\r\n", + "f\r\n", "\r\n", "f\r\n", "\r\n", "\r\n", - "b->f\r\n", - "\r\n", - "\r\n", + "\r\n", + "b->f\r\n", + "\r\n", + "\r\n", "\r\n", "\r\n", - "c->d\r\n", - "\r\n", - "\r\n", + "\r\n", + "c->d\r\n", + "\r\n", + "\r\n", "\r\n", "\r\n", - "e\r\n", + "\r\n", + "e\r\n", "\r\n", "e\r\n", "\r\n", "\r\n", - "c->e\r\n", - "\r\n", - "\r\n", + "\r\n", + "c->e\r\n", + "\r\n", + "\r\n", "\r\n", "\r\n", - "g\r\n", + "\r\n", + "g\r\n", "\r\n", "g\r\n", "\r\n", "\r\n", - "c->g\r\n", - "\r\n", - "\r\n", + "\r\n", + "c->g\r\n", + "\r\n", + "\r\n", "\r\n", "\r\n", - "d->e\r\n", - "\r\n", - "\r\n", + "\r\n", + "d->e\r\n", + "\r\n", + "\r\n", "\r\n", "\r\n", - "h\r\n", + "\r\n", + "h\r\n", "\r\n", "h\r\n", "\r\n", "\r\n", - "d->h\r\n", - "\r\n", - "\r\n", + "\r\n", + "d->h\r\n", + "\r\n", + "\r\n", "\r\n", "\r\n", - "e->g\r\n", - "\r\n", - "\r\n", + "\r\n", + "e->g\r\n", + "\r\n", + "\r\n", "\r\n", "\r\n", - "e->f\r\n", - "\r\n", - "\r\n", + "\r\n", + "e->f\r\n", + "\r\n", + "\r\n", "\r\n", "\r\n", "\r\n" ], "text/plain": [ - "" + "" ] }, "execution_count": 5, @@ -557,7 +613,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.7.4" + "version": "3.8.7" } }, "nbformat": 4, diff --git a/try-examples.py b/try-examples.py index 2083c880c1..a7dc105d52 100755 --- a/try-examples.py +++ b/try-examples.py @@ -4,6 +4,7 @@ import glob import io import os +import warnings import graphviz # noqa: F401 @@ -11,4 +12,7 @@ for filename in glob.iglob('*.py'): with io.open(filename, encoding='utf-8') as fd: code = fd.read() - exec(code) + try: + exec(code) + except Exception as e: + warnings.warn(e)