regina 7.3.1.1__cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of regina might be problematic. Click here for more details.

Files changed (163) hide show
  1. regina/__init__.py +203 -0
  2. regina/engine.cpython-311-aarch64-linux-gnu.so +0 -0
  3. regina/plainCompleter.py +221 -0
  4. regina/pyCensus/__init__.py +14 -0
  5. regina/pyCensus/christy-knots-links.tdb +0 -0
  6. regina/pyCensus/closed-hyp-census-full.tdb +0 -0
  7. regina/pyCensus/closed-nor-census-11.tdb +0 -0
  8. regina/pyCensus/closed-or-census-11.tdb +0 -0
  9. regina/pyCensus/cusped-hyp-nor-census-9.tdb +0 -0
  10. regina/pyCensus/cusped-hyp-or-census-9.tdb +0 -0
  11. regina/sageRegina/__init__.py +2 -0
  12. regina/sageRegina/config.py +9 -0
  13. regina/sageRegina/test.py +132 -0
  14. regina/sageRegina/testsuite/CMakeLists.txt +60 -0
  15. regina/sageRegina/testsuite/O2_1.rga +15 -0
  16. regina/sageRegina/testsuite/O2_1.tri +28 -0
  17. regina/sageRegina/testsuite/README.txt +20 -0
  18. regina/sageRegina/testsuite/alltypes.out +1551 -0
  19. regina/sageRegina/testsuite/alltypes.test +88 -0
  20. regina/sageRegina/testsuite/angles.out +102 -0
  21. regina/sageRegina/testsuite/angles.test +72 -0
  22. regina/sageRegina/testsuite/basic_callback.out +124 -0
  23. regina/sageRegina/testsuite/basic_sub.out +7 -0
  24. regina/sageRegina/testsuite/bool.out +6 -0
  25. regina/sageRegina/testsuite/bool.test +64 -0
  26. regina/sageRegina/testsuite/bytes.out +17 -0
  27. regina/sageRegina/testsuite/bytes.test +78 -0
  28. regina/sageRegina/testsuite/callbacks.out +515 -0
  29. regina/sageRegina/testsuite/callbacks.test +281 -0
  30. regina/sageRegina/testsuite/census.out +120 -0
  31. regina/sageRegina/testsuite/census.test +157 -0
  32. regina/sageRegina/testsuite/clone.out +18 -0
  33. regina/sageRegina/testsuite/clone.test +101 -0
  34. regina/sageRegina/testsuite/constructors.out +14 -0
  35. regina/sageRegina/testsuite/constructors.test +97 -0
  36. regina/sageRegina/testsuite/cube.orb +87 -0
  37. regina/sageRegina/testsuite/discs.out +3 -0
  38. regina/sageRegina/testsuite/discs.test +40 -0
  39. regina/sageRegina/testsuite/docstrings.filter +19 -0
  40. regina/sageRegina/testsuite/docstrings.out +808 -0
  41. regina/sageRegina/testsuite/docstrings.out.v3 +808 -0
  42. regina/sageRegina/testsuite/docstrings.test +57 -0
  43. regina/sageRegina/testsuite/dodec.orb +309 -0
  44. regina/sageRegina/testsuite/embeddings.out +23 -0
  45. regina/sageRegina/testsuite/embeddings.test +89 -0
  46. regina/sageRegina/testsuite/enumerate.out +62 -0
  47. regina/sageRegina/testsuite/enumerate.test +82 -0
  48. regina/sageRegina/testsuite/equality.out +112 -0
  49. regina/sageRegina/testsuite/equality.test +310 -0
  50. regina/sageRegina/testsuite/euler.out +15 -0
  51. regina/sageRegina/testsuite/euler.test +95 -0
  52. regina/sageRegina/testsuite/exception.out +7 -0
  53. regina/sageRegina/testsuite/exception.test +100 -0
  54. regina/sageRegina/testsuite/facenumbering.out +546 -0
  55. regina/sageRegina/testsuite/facenumbering.test +74 -0
  56. regina/sageRegina/testsuite/faces.out +40 -0
  57. regina/sageRegina/testsuite/faces.test +72 -0
  58. regina/sageRegina/testsuite/file.out +1229 -0
  59. regina/sageRegina/testsuite/file.test +70 -0
  60. regina/sageRegina/testsuite/file1.rga +0 -0
  61. regina/sageRegina/testsuite/file2.rga +0 -0
  62. regina/sageRegina/testsuite/file3.rga +119 -0
  63. regina/sageRegina/testsuite/flype.out +37 -0
  64. regina/sageRegina/testsuite/flype.test +50 -0
  65. regina/sageRegina/testsuite/generic.out +116 -0
  66. regina/sageRegina/testsuite/generic.test +76 -0
  67. regina/sageRegina/testsuite/groups.out +70 -0
  68. regina/sageRegina/testsuite/groups.test +117 -0
  69. regina/sageRegina/testsuite/hypersurfaces.out +681 -0
  70. regina/sageRegina/testsuite/hypersurfaces.test +90 -0
  71. regina/sageRegina/testsuite/i18n-latin1.rga +8 -0
  72. regina/sageRegina/testsuite/i18n-utf8.rga +8 -0
  73. regina/sageRegina/testsuite/i18n.out +6 -0
  74. regina/sageRegina/testsuite/i18n.test +91 -0
  75. regina/sageRegina/testsuite/id.out +2 -0
  76. regina/sageRegina/testsuite/id.test +47 -0
  77. regina/sageRegina/testsuite/index.out +2 -0
  78. regina/sageRegina/testsuite/index.test +43 -0
  79. regina/sageRegina/testsuite/integer.out +74 -0
  80. regina/sageRegina/testsuite/integer.test +56 -0
  81. regina/sageRegina/testsuite/italian.orb +90 -0
  82. regina/sageRegina/testsuite/iterators.out +118 -0
  83. regina/sageRegina/testsuite/iterators.test +128 -0
  84. regina/sageRegina/testsuite/knotted-Y.orb +47 -0
  85. regina/sageRegina/testsuite/listener.out +43 -0
  86. regina/sageRegina/testsuite/listener.test +101 -0
  87. regina/sageRegina/testsuite/listview.out +416 -0
  88. regina/sageRegina/testsuite/listview.test +253 -0
  89. regina/sageRegina/testsuite/lookup.out +13 -0
  90. regina/sageRegina/testsuite/lookup.test +44 -0
  91. regina/sageRegina/testsuite/memory1.out +62 -0
  92. regina/sageRegina/testsuite/memory1.test +154 -0
  93. regina/sageRegina/testsuite/memory2.out +62 -0
  94. regina/sageRegina/testsuite/memory2.test +124 -0
  95. regina/sageRegina/testsuite/memory3.out +92 -0
  96. regina/sageRegina/testsuite/memory3.test +216 -0
  97. regina/sageRegina/testsuite/misc.out +7 -0
  98. regina/sageRegina/testsuite/misc.test +56 -0
  99. regina/sageRegina/testsuite/operators.out +129 -0
  100. regina/sageRegina/testsuite/operators.test +61 -0
  101. regina/sageRegina/testsuite/orb.out +441 -0
  102. regina/sageRegina/testsuite/orb.test +49 -0
  103. regina/sageRegina/testsuite/pdf.out +4 -0
  104. regina/sageRegina/testsuite/pdf.test +49 -0
  105. regina/sageRegina/testsuite/perm.out +55 -0
  106. regina/sageRegina/testsuite/perm.test +96 -0
  107. regina/sageRegina/testsuite/plantri.out +12 -0
  108. regina/sageRegina/testsuite/plantri.test +60 -0
  109. regina/sageRegina/testsuite/presentations.out +11 -0
  110. regina/sageRegina/testsuite/presentations.test +61 -0
  111. regina/sageRegina/testsuite/refs.out +51 -0
  112. regina/sageRegina/testsuite/refs.test +128 -0
  113. regina/sageRegina/testsuite/repr.out +951 -0
  114. regina/sageRegina/testsuite/repr.out.v3 +951 -0
  115. regina/sageRegina/testsuite/repr.test +548 -0
  116. regina/sageRegina/testsuite/safeheldtype_basic.out +17 -0
  117. regina/sageRegina/testsuite/safeheldtype_basic.test +113 -0
  118. regina/sageRegina/testsuite/safeheldtype_packet.out +58 -0
  119. regina/sageRegina/testsuite/safeheldtype_packet.test +181 -0
  120. regina/sageRegina/testsuite/sample.pdf +0 -0
  121. regina/sageRegina/testsuite/sets.out +7 -0
  122. regina/sageRegina/testsuite/sets.test +44 -0
  123. regina/sageRegina/testsuite/skeleton.out +308 -0
  124. regina/sageRegina/testsuite/skeleton.test +54 -0
  125. regina/sageRegina/testsuite/snappea.out +82 -0
  126. regina/sageRegina/testsuite/snappea.test +107 -0
  127. regina/sageRegina/testsuite/snapshot.out +15 -0
  128. regina/sageRegina/testsuite/snapshot.test +78 -0
  129. regina/sageRegina/testsuite/sort.out +57 -0
  130. regina/sageRegina/testsuite/sort.test +53 -0
  131. regina/sageRegina/testsuite/special.out +4 -0
  132. regina/sageRegina/testsuite/special.test +47 -0
  133. regina/sageRegina/testsuite/standardtri.out +12101 -0
  134. regina/sageRegina/testsuite/standardtri.test +455 -0
  135. regina/sageRegina/testsuite/surfaces.out +2133 -0
  136. regina/sageRegina/testsuite/surfaces.test +114 -0
  137. regina/sageRegina/testsuite/swapping.out +25 -0
  138. regina/sageRegina/testsuite/swapping.test +88 -0
  139. regina/sageRegina/testsuite/testall.in +176 -0
  140. regina/sageRegina/testsuite/testbasic.in +279 -0
  141. regina/sageRegina/testsuite/testcallback.in +150 -0
  142. regina/sageRegina/testsuite/testsub.in +150 -0
  143. regina/sageRegina/testsuite/theta_in_solid_torus.orb +65 -0
  144. regina/sageRegina/testsuite/tightencode.out +40 -0
  145. regina/sageRegina/testsuite/tightencode.test +108 -0
  146. regina/sageRegina/testsuite/treedecomp.out +135 -0
  147. regina/sageRegina/testsuite/treedecomp.test +66 -0
  148. regina/sageRegina/testsuite/treetraversal.out +52 -0
  149. regina/sageRegina/testsuite/treetraversal.test +190 -0
  150. regina/sageRegina/testsuite/trigeneral.out +1251 -0
  151. regina/sageRegina/testsuite/trigeneral.test +155 -0
  152. regina/sageRegina/testsuite/utf8.out +42 -0
  153. regina/sageRegina/testsuite/utf8.test +94 -0
  154. regina/sageRegina/version.py +5 -0
  155. regina/sageSetup.py +41 -0
  156. regina/test.py +6 -0
  157. regina-7.3.1.1.dist-info/METADATA +109 -0
  158. regina-7.3.1.1.dist-info/RECORD +163 -0
  159. regina-7.3.1.1.dist-info/WHEEL +6 -0
  160. regina-7.3.1.1.dist-info/top_level.txt +4 -0
  161. regina.libs/libbz2-738ca772.so.1.0.6 +0 -0
  162. regina.libs/libgmp-6683d5d4.so.10.2.0 +0 -0
  163. regina.libs/libgmpxx-7c3a5907.so.4.4.0 +0 -0
@@ -0,0 +1,128 @@
1
+ # Regina - A Normal Surface Theory Calculator
2
+ # Python Test Suite Component
3
+ #
4
+ # Copyright (c) 2019-2023, Ben Burton
5
+ # For further details contact Ben Burton (bab@debian.org).
6
+ #
7
+ # Tests custom python iterators.
8
+ #
9
+ # This file is a single component of Regina's python test suite. To run
10
+ # the python test suite, move to the main python directory in the source
11
+ # tree and run "make check".
12
+ #
13
+ # This program is free software; you can redistribute it and/or
14
+ # modify it under the terms of the GNU General Public License as
15
+ # published by the Free Software Foundation; either version 2 of the
16
+ # License, or (at your option) any later version.
17
+ #
18
+ # As an exception, when this program is distributed through (i) the
19
+ # App Store by Apple Inc.; (ii) the Mac App Store by Apple Inc.; or
20
+ # (iii) Google Play by Google Inc., then that store may impose any
21
+ # digital rights management, device limits and/or redistribution
22
+ # restrictions that are required by its terms of service.
23
+ #
24
+ # This program is distributed in the hope that it will be useful, but
25
+ # WITHOUT ANY WARRANTY; without even the implied warranty of
26
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
27
+ # General Public License for more details.
28
+ #
29
+ # You should have received a copy of the GNU General Public
30
+ # License along with this program; if not, write to the Free
31
+ # Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
32
+ # MA 02110-1301, USA.
33
+
34
+ root = Container(); root.setLabel('root')
35
+ a = Container(); a.setLabel('a')
36
+ aa = Container(); aa.setLabel('aa')
37
+ aaa = Container(); aaa.setLabel('aaa')
38
+ aab = Container(); aab.setLabel('aab')
39
+ ab = Container(); ab.setLabel('ab')
40
+ aba = Container(); aba.setLabel('aba')
41
+ abb = Container(); abb.setLabel('abb')
42
+ b = Container(); b.setLabel('b')
43
+ ba = Container(); ba.setLabel('ba')
44
+ baa = Container(); baa.setLabel('baa')
45
+ bab = Container(); bab.setLabel('bab')
46
+ bb = Container(); bb.setLabel('bb')
47
+ bba = Container(); bba.setLabel('bba')
48
+ bbb = Container(); bbb.setLabel('bbb')
49
+
50
+ root.append(a)
51
+ root.append(b)
52
+ a.append(aa)
53
+ a.append(ab)
54
+ b.append(ba)
55
+ b.append(bb)
56
+ aa.append(aaa)
57
+ aa.append(aab)
58
+ ab.append(aba)
59
+ ab.append(abb)
60
+ ba.append(baa)
61
+ ba.append(bab)
62
+ bb.append(bba)
63
+ bb.append(bbb)
64
+
65
+ print('a.children():')
66
+ for i in a.children():
67
+ print(i.label())
68
+
69
+ print('a.subtree():')
70
+ for i in a.subtree():
71
+ print(i.label())
72
+
73
+ print('a.descendants():')
74
+ for i in a.descendants():
75
+ print(i.label())
76
+
77
+ print('a as iterable:')
78
+ for i in a:
79
+ print(i.label())
80
+
81
+ print('Angle structure iteration:')
82
+ for a in AngleStructures(Example3.figureEight()):
83
+ print(a)
84
+
85
+ print('Normal surface iteration:')
86
+ surfaces = NormalSurfaces(Example3.figureEight(), NS_QUAD)
87
+ for s in surfaces:
88
+ print(s)
89
+
90
+ for s in surfaces.vectors():
91
+ print(s)
92
+
93
+ print('Normal disc iteration:')
94
+ for d in DiscSetSurface(NormalSurfaces(Example3.poincare(), NS_STANDARD).surface(0)):
95
+ print(d)
96
+
97
+ print('Normal hypersurface iteration:')
98
+ hypersurfaces = NormalHypersurfaces(Example4.rp4(), HS_STANDARD)
99
+ for s in hypersurfaces:
100
+ print(s)
101
+
102
+ for s in hypersurfaces.vectors():
103
+ print(s)
104
+
105
+ print('Model link graph cell arc iteration:')
106
+ g = ModelLinkGraph.fromPlantri('bcdd,aeec,abfd,acfa,bffb,ceed')
107
+ c = g.cells()
108
+ for i in range(c.countCells()):
109
+ bdry = []
110
+ for a in c.arcs(i):
111
+ bdry.append(str(a.node().index()) + ':' + str(a.arc()))
112
+ print(bdry)
113
+
114
+ print('Vector<Integer> iteration:')
115
+ for i in VectorInt([3,5,-1]):
116
+ print(i)
117
+
118
+ print('Vector<LargeInteger> iteration:')
119
+ for i in VectorLarge([3,5,-1]):
120
+ print(i)
121
+
122
+ print('PermGroup iteration:')
123
+ for i in PermGroup4(PERM_GROUP_ALTERNATING):
124
+ print(i)
125
+
126
+ print('TableView iteration:')
127
+ for i in quadString:
128
+ print(i)
@@ -0,0 +1,47 @@
1
+ % orb
2
+ knotted-Y
3
+ SolutionType geometric_solution
4
+ vertices_known
5
+
6
+ 1 0 1.000 1 1 1xw 2wv 1uv 2vx 1vx 2uw 1uw 2wx 1wv 2vu 1ux 2ux
7
+
8
+ 1 -0.8058307013735850 0.6811682580285615 0.6811682580285615 0.5235987755982991 0.5235987755982991 0.5235987755982991 0.5235987755982991 0.5235987755982991 0.5235987755982991 0.5235987755982991 0.5235987755982991 0.5235987755982991 0.5235987755982991 0.5235987755982991 0.5235987755982991
9
+
10
+ 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
11
+
12
+ 12
13
+ 0 84 143
14
+ 1 84 92
15
+ 2 54 92
16
+ 3 85 211
17
+ 4 37 176
18
+ 5 66 194
19
+ 6 148 90
20
+ 7 120 178
21
+ 8 137 142
22
+ 9 21 90
23
+ 10 21 211
24
+ 11 148 211
25
+
26
+ 13
27
+ 0 0 1 1
28
+ 1 1 2 1
29
+ 2 2 3 1
30
+ 3 0 4 1
31
+ 4 4 5 1
32
+ 5 5 6 1
33
+ 6 0 7 1
34
+ 7 7 8 1
35
+ 8 8 9 1
36
+ 9 9 10 1
37
+ 10 10 3 1
38
+ 11 11 3 1
39
+ 12 6 11 1
40
+
41
+ 6
42
+ 0 84 118 0 8 0.485463 0.456897
43
+ 1 96 155 6 5 0.349259 0.372845
44
+ 2 114 132 5 8 0.595541 0.191083
45
+ 3 69 152 3 2 0.300635 0.511941
46
+ 4 76 180 2 5 0.74041 0.13357
47
+ 5 57 106 8 2 0.682989 0.121719
@@ -0,0 +1,43 @@
1
+ Creating...
2
+ Inserting children t,u...
3
+ ADDING CHILD: c -> t
4
+ ADDED CHILD: c -> t
5
+ ADDING CHILD: c -> u
6
+ ADDED CHILD: c -> u
7
+ Renaming...
8
+ RENAMING: t
9
+ RENAMING CHILD: c -> t
10
+ RENAMED: t2
11
+ RENAMED CHILD: c -> t2
12
+ Editing...
13
+ CHANGING: text
14
+ CHANGED: text2
15
+ Orphaning child t...
16
+ REMOVING CHILD: c -> t2
17
+ REMOVED CHILD: c -> t2
18
+ Reparenting child t...
19
+ ADDING CHILD: c -> t2
20
+ ADDED CHILD: c -> t2
21
+ Dropping reference to u...
22
+ Destroying child u...
23
+ REMOVING CHILD: c -> u
24
+ REMOVED CHILD: c -> u
25
+ DESTROYING: u
26
+ Destroying parent...
27
+ DESTROYING: c
28
+ Destroying child t...
29
+ DESTROYING: t2
30
+ Preparing order test...
31
+ ADDING CHILD: x -> z1
32
+ ADDED CHILD: x -> z1
33
+ ADDING CHILD: x -> z2
34
+ ADDED CHILD: x -> z2
35
+ ADDING CHILD: z1 -> y
36
+ ADDED CHILD: z1 -> y
37
+ Dropping children...
38
+ Dropping root...
39
+ DESTROYING: y
40
+ DESTROYING: z1
41
+ DESTROYING: z2
42
+ DESTROYING: x
43
+ Finished.
@@ -0,0 +1,101 @@
1
+ # Regina - A Normal Surface Theory Calculator
2
+ # Python Test Suite Component
3
+ #
4
+ # Copyright (c) 2019-2023, Ben Burton
5
+ # For further details contact Ben Burton (bab@debian.org).
6
+ #
7
+ # Tests the behaviour of packet listeners
8
+ #
9
+ # This file is a single component of Regina's python test suite. To run
10
+ # the python test suite, move to the main python directory in the source
11
+ # tree and run "make check".
12
+ #
13
+ # This program is free software; you can redistribute it and/or
14
+ # modify it under the terms of the GNU General Public License as
15
+ # published by the Free Software Foundation; either version 2 of the
16
+ # License, or (at your option) any later version.
17
+ #
18
+ # As an exception, when this program is distributed through (i) the
19
+ # App Store by Apple Inc.; (ii) the Mac App Store by Apple Inc.; or
20
+ # (iii) Google Play by Google Inc., then that store may impose any
21
+ # digital rights management, device limits and/or redistribution
22
+ # restrictions that are required by its terms of service.
23
+ #
24
+ # This program is distributed in the hope that it will be useful, but
25
+ # WITHOUT ANY WARRANTY; without even the implied warranty of
26
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
27
+ # General Public License for more details.
28
+ #
29
+ # You should have received a copy of the GNU General Public
30
+ # License along with this program; if not, write to the Free
31
+ # Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
32
+ # MA 02110-1301, USA.
33
+
34
+ class Watcher(PacketListener):
35
+ def packetToBeChanged(self, packet):
36
+ print('CHANGING: ' + packet.text())
37
+ def packetWasChanged(self, packet):
38
+ print('CHANGED: ' + packet.text())
39
+ def packetToBeRenamed(self, packet):
40
+ print('RENAMING: ' + packet.label())
41
+ def packetWasRenamed(self, packet):
42
+ print('RENAMED: ' + packet.label())
43
+ def packetBeingDestroyed(self, packet):
44
+ print('DESTROYING: ' + packet.label())
45
+ def childToBeAdded(self, packet, child):
46
+ print('ADDING CHILD: ' + packet.label() + ' -> ' + child.label())
47
+ def childWasAdded(self, packet, child):
48
+ print('ADDED CHILD: ' + packet.label() + ' -> ' + child.label())
49
+ def childToBeRemoved(self, packet, child):
50
+ print('REMOVING CHILD: ' + packet.label() + ' -> ' + child.label())
51
+ def childWasRemoved(self, packet, child):
52
+ print('REMOVED CHILD: ' + packet.label() + ' -> ' + child.label())
53
+ def childToBeRenamed(self, packet, child):
54
+ print('RENAMING CHILD: ' + packet.label() + ' -> ' + child.label())
55
+ def childWasRenamed(self, packet, child):
56
+ print('RENAMED CHILD: ' + packet.label() + ' -> ' + child.label())
57
+
58
+ w = Watcher()
59
+
60
+ print('Creating...')
61
+ c = Container(); c.setLabel('c'); cw = Watcher(); dummy = c.listen(cw)
62
+ t = Text('text'); t.setLabel('t'); tw = Watcher(); dummy = t.listen(tw)
63
+ u = Text('essay'); u.setLabel('u'); uw = Watcher(); dummy = u.listen(uw)
64
+ print('Inserting children t,u...')
65
+ c.append(t)
66
+ c.append(u)
67
+ print('Renaming...')
68
+ t.setLabel('t2')
69
+ print('Editing...')
70
+ t.setText('text2')
71
+ print('Orphaning child t...')
72
+ t.makeOrphan()
73
+ print('Reparenting child t...')
74
+ c.prepend(t)
75
+ # The only way to destroy a child from python is to drop all references
76
+ # to it and orphan it.
77
+ print('Dropping reference to u...')
78
+ u = None
79
+ print('Destroying child u...')
80
+ c.lastChild().makeOrphan() # u destroyed
81
+ print('Destroying parent...')
82
+ c = None # t lives, since it is managed by python
83
+ print('Destroying child t...')
84
+ t = None
85
+
86
+ # Now test the order in which destruction events are fired.
87
+ print('Preparing order test...')
88
+ x = Container(); x.setLabel('x'); xw = Watcher(); dummy = x.listen(xw)
89
+ y = Container(); y.setLabel('y'); yw = Watcher(); dummy = y.listen(yw)
90
+ z1 = Container(); z1.setLabel('z1'); z1w = Watcher(); dummy = z1.listen(z1w)
91
+ z2 = Container(); z2.setLabel('z2'); z2w = Watcher(); dummy = z2.listen(z2w)
92
+ x.append(z1)
93
+ x.append(z2)
94
+ z1.append(y)
95
+ print('Dropping children...')
96
+ y = None; z1 = None; z2 = None
97
+ print('Dropping root...')
98
+ x = None
99
+
100
+ print('Finished.')
101
+