memory-graph 0.3.26__tar.gz → 0.3.28__tar.gz

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.
Files changed (229) hide show
  1. {memory_graph-0.3.26/memory_graph.egg-info → memory_graph-0.3.28}/PKG-INFO +36 -18
  2. {memory_graph-0.3.26 → memory_graph-0.3.28}/README.md +35 -17
  3. {memory_graph-0.3.26 → memory_graph-0.3.28}/images/add_one.gv +18 -18
  4. {memory_graph-0.3.26 → memory_graph-0.3.28}/images/avltree_dir.gv +5 -5
  5. {memory_graph-0.3.26 → memory_graph-0.3.28}/images/avltree_key_value.gv +12 -12
  6. {memory_graph-0.3.26 → memory_graph-0.3.28}/images/avltree_leaf.gv +5 -5
  7. {memory_graph-0.3.26 → memory_graph-0.3.28}/images/avltree_linear.gv +12 -12
  8. {memory_graph-0.3.26 → memory_graph-0.3.28}/images/avltree_table.gv +12 -12
  9. {memory_graph-0.3.26 → memory_graph-0.3.28}/images/bin_tree.gv +35 -35
  10. memory_graph-0.3.28/images/cmp.sh +3 -0
  11. memory_graph-0.3.28/images/cmp.sh~ +1 -0
  12. {memory_graph-0.3.26 → memory_graph-0.3.28}/images/copies.gv +20 -20
  13. {memory_graph-0.3.26 → memory_graph-0.3.28}/images/copy_method.gv +16 -16
  14. {memory_graph-0.3.26 → memory_graph-0.3.28}/images/debugging01.gv +8 -8
  15. {memory_graph-0.3.26 → memory_graph-0.3.28}/images/debugging01.png +0 -0
  16. {memory_graph-0.3.26 → memory_graph-0.3.28}/images/debugging02.gv +11 -11
  17. {memory_graph-0.3.26 → memory_graph-0.3.28}/images/debugging02.png +0 -0
  18. {memory_graph-0.3.26 → memory_graph-0.3.28}/images/debugging03.gv +13 -13
  19. {memory_graph-0.3.26 → memory_graph-0.3.28}/images/debugging03.png +0 -0
  20. {memory_graph-0.3.26 → memory_graph-0.3.28}/images/debugging04.gv +15 -15
  21. {memory_graph-0.3.26 → memory_graph-0.3.28}/images/debugging04.png +0 -0
  22. {memory_graph-0.3.26 → memory_graph-0.3.28}/images/debugging05.gv +17 -17
  23. {memory_graph-0.3.26 → memory_graph-0.3.28}/images/debugging05.png +0 -0
  24. {memory_graph-0.3.26 → memory_graph-0.3.28}/images/debugging06.gv +17 -17
  25. {memory_graph-0.3.26 → memory_graph-0.3.28}/images/debugging06.png +0 -0
  26. {memory_graph-0.3.26 → memory_graph-0.3.28}/images/extension_numpy.gv +8 -8
  27. {memory_graph-0.3.26 → memory_graph-0.3.28}/images/extension_pandas.gv +8 -8
  28. {memory_graph-0.3.26 → memory_graph-0.3.28}/images/factorial.py +3 -3
  29. {memory_graph-0.3.26 → memory_graph-0.3.28}/images/factorial0.gv +3 -3
  30. {memory_graph-0.3.26 → memory_graph-0.3.28}/images/factorial0.png +0 -0
  31. {memory_graph-0.3.26 → memory_graph-0.3.28}/images/factorial1.gv +6 -6
  32. {memory_graph-0.3.26 → memory_graph-0.3.28}/images/factorial1.png +0 -0
  33. {memory_graph-0.3.26 → memory_graph-0.3.28}/images/factorial2.gv +8 -8
  34. {memory_graph-0.3.26 → memory_graph-0.3.28}/images/factorial2.png +0 -0
  35. {memory_graph-0.3.26 → memory_graph-0.3.28}/images/factorial3.gv +10 -10
  36. {memory_graph-0.3.26 → memory_graph-0.3.28}/images/factorial3.png +0 -0
  37. {memory_graph-0.3.26 → memory_graph-0.3.28}/images/factorial4.gv +10 -10
  38. {memory_graph-0.3.26 → memory_graph-0.3.28}/images/factorial4.png +0 -0
  39. {memory_graph-0.3.26 → memory_graph-0.3.28}/images/factorial5.gv +8 -8
  40. {memory_graph-0.3.26 → memory_graph-0.3.28}/images/factorial5.png +0 -0
  41. {memory_graph-0.3.26 → memory_graph-0.3.28}/images/factorial6.gv +6 -6
  42. {memory_graph-0.3.26 → memory_graph-0.3.28}/images/factorial6.png +0 -0
  43. {memory_graph-0.3.26 → memory_graph-0.3.28}/images/hash_set.gv +29 -29
  44. {memory_graph-0.3.26 → memory_graph-0.3.28}/images/highlight.gv +16 -16
  45. {memory_graph-0.3.26 → memory_graph-0.3.28}/images/immutable1.gv +4 -4
  46. {memory_graph-0.3.26 → memory_graph-0.3.28}/images/immutable2.gv +6 -6
  47. memory_graph-0.3.26/images/depth.gv → memory_graph-0.3.28/images/introspect_depth.gv +56 -56
  48. {memory_graph-0.3.26 → memory_graph-0.3.28}/images/linked_list.gv +24 -22
  49. memory_graph-0.3.28/images/linked_list.png +0 -0
  50. {memory_graph-0.3.26 → memory_graph-0.3.28}/images/linked_list.py +12 -12
  51. {memory_graph-0.3.26 → memory_graph-0.3.28}/images/many_types.gv +12 -12
  52. {memory_graph-0.3.26 → memory_graph-0.3.28}/images/mutable1.gv +4 -4
  53. {memory_graph-0.3.26 → memory_graph-0.3.28}/images/mutable2.gv +4 -4
  54. memory_graph-0.3.28/images/name_rebinding.py~ +7 -0
  55. {memory_graph-0.3.26 → memory_graph-0.3.28}/images/not_node_types1.gv +6 -6
  56. {memory_graph-0.3.26 → memory_graph-0.3.28}/images/not_node_types2.gv +14 -14
  57. {memory_graph-0.3.26 → memory_graph-0.3.28}/images/power_set.py +4 -4
  58. {memory_graph-0.3.26 → memory_graph-0.3.28}/images/power_set0.gv +11 -11
  59. {memory_graph-0.3.26 → memory_graph-0.3.28}/images/power_set0.png +0 -0
  60. {memory_graph-0.3.26 → memory_graph-0.3.28}/images/power_set1.gv +17 -17
  61. {memory_graph-0.3.26 → memory_graph-0.3.28}/images/power_set1.png +0 -0
  62. {memory_graph-0.3.26 → memory_graph-0.3.28}/images/power_set10.gv +36 -36
  63. {memory_graph-0.3.26 → memory_graph-0.3.28}/images/power_set10.png +0 -0
  64. {memory_graph-0.3.26 → memory_graph-0.3.28}/images/power_set11.gv +31 -31
  65. {memory_graph-0.3.26 → memory_graph-0.3.28}/images/power_set11.png +0 -0
  66. {memory_graph-0.3.26 → memory_graph-0.3.28}/images/power_set12.gv +31 -31
  67. {memory_graph-0.3.26 → memory_graph-0.3.28}/images/power_set12.png +0 -0
  68. {memory_graph-0.3.26 → memory_graph-0.3.28}/images/power_set13.gv +36 -36
  69. {memory_graph-0.3.26 → memory_graph-0.3.28}/images/power_set13.png +0 -0
  70. {memory_graph-0.3.26 → memory_graph-0.3.28}/images/power_set14.gv +41 -41
  71. {memory_graph-0.3.26 → memory_graph-0.3.28}/images/power_set14.png +0 -0
  72. {memory_graph-0.3.26 → memory_graph-0.3.28}/images/power_set15.gv +43 -43
  73. {memory_graph-0.3.26 → memory_graph-0.3.28}/images/power_set15.png +0 -0
  74. {memory_graph-0.3.26 → memory_graph-0.3.28}/images/power_set16.gv +40 -40
  75. {memory_graph-0.3.26 → memory_graph-0.3.28}/images/power_set16.png +0 -0
  76. {memory_graph-0.3.26 → memory_graph-0.3.28}/images/power_set17.gv +40 -40
  77. {memory_graph-0.3.26 → memory_graph-0.3.28}/images/power_set17.png +0 -0
  78. {memory_graph-0.3.26 → memory_graph-0.3.28}/images/power_set18.gv +45 -45
  79. {memory_graph-0.3.26 → memory_graph-0.3.28}/images/power_set18.png +0 -0
  80. {memory_graph-0.3.26 → memory_graph-0.3.28}/images/power_set19.gv +47 -47
  81. {memory_graph-0.3.26 → memory_graph-0.3.28}/images/power_set19.png +0 -0
  82. {memory_graph-0.3.26 → memory_graph-0.3.28}/images/power_set2.gv +22 -22
  83. {memory_graph-0.3.26 → memory_graph-0.3.28}/images/power_set2.png +0 -0
  84. {memory_graph-0.3.26 → memory_graph-0.3.28}/images/power_set20.gv +44 -44
  85. {memory_graph-0.3.26 → memory_graph-0.3.28}/images/power_set20.png +0 -0
  86. {memory_graph-0.3.26 → memory_graph-0.3.28}/images/power_set21.gv +39 -39
  87. {memory_graph-0.3.26 → memory_graph-0.3.28}/images/power_set21.png +0 -0
  88. {memory_graph-0.3.26 → memory_graph-0.3.28}/images/power_set22.gv +34 -34
  89. {memory_graph-0.3.26 → memory_graph-0.3.28}/images/power_set22.png +0 -0
  90. {memory_graph-0.3.26 → memory_graph-0.3.28}/images/power_set23.gv +28 -28
  91. {memory_graph-0.3.26 → memory_graph-0.3.28}/images/power_set23.png +0 -0
  92. {memory_graph-0.3.26 → memory_graph-0.3.28}/images/power_set3.gv +27 -27
  93. {memory_graph-0.3.26 → memory_graph-0.3.28}/images/power_set3.png +0 -0
  94. {memory_graph-0.3.26 → memory_graph-0.3.28}/images/power_set4.gv +32 -32
  95. {memory_graph-0.3.26 → memory_graph-0.3.28}/images/power_set4.png +0 -0
  96. {memory_graph-0.3.26 → memory_graph-0.3.28}/images/power_set5.gv +34 -34
  97. {memory_graph-0.3.26 → memory_graph-0.3.28}/images/power_set5.png +0 -0
  98. {memory_graph-0.3.26 → memory_graph-0.3.28}/images/power_set6.gv +32 -32
  99. {memory_graph-0.3.26 → memory_graph-0.3.28}/images/power_set6.png +0 -0
  100. {memory_graph-0.3.26 → memory_graph-0.3.28}/images/power_set7.gv +32 -32
  101. {memory_graph-0.3.26 → memory_graph-0.3.28}/images/power_set7.png +0 -0
  102. {memory_graph-0.3.26 → memory_graph-0.3.28}/images/power_set8.gv +37 -37
  103. {memory_graph-0.3.26 → memory_graph-0.3.28}/images/power_set8.png +0 -0
  104. {memory_graph-0.3.26 → memory_graph-0.3.28}/images/power_set9.gv +39 -39
  105. {memory_graph-0.3.26 → memory_graph-0.3.28}/images/power_set9.png +0 -0
  106. {memory_graph-0.3.26 → memory_graph-0.3.28}/images/rebinding1.gv +4 -4
  107. {memory_graph-0.3.26 → memory_graph-0.3.28}/images/rebinding2.gv +6 -6
  108. {memory_graph-0.3.26 → memory_graph-0.3.28}/memory_graph/__init__.py +17 -15
  109. memory_graph-0.3.28/memory_graph/t.py +6 -0
  110. {memory_graph-0.3.26 → memory_graph-0.3.28/memory_graph.egg-info}/PKG-INFO +36 -18
  111. {memory_graph-0.3.26 → memory_graph-0.3.28}/memory_graph.egg-info/SOURCES.txt +5 -31
  112. {memory_graph-0.3.26 → memory_graph-0.3.28}/setup.py +1 -1
  113. memory_graph-0.3.26/images/.ipynb_checkpoints/jupyter_example-checkpoint.ipynb +0 -85
  114. memory_graph-0.3.26/images/avltree.py~ +0 -41
  115. memory_graph-0.3.26/images/avltree_fail.gv +0 -22
  116. memory_graph-0.3.26/images/bin_tree2.py +0 -31
  117. memory_graph-0.3.26/images/bin_tree2.py~ +0 -31
  118. memory_graph-0.3.26/images/depth.png +0 -0
  119. memory_graph-0.3.26/images/factorial01.gv +0 -15
  120. memory_graph-0.3.26/images/factorial02.gv +0 -22
  121. memory_graph-0.3.26/images/factorial03.gv +0 -28
  122. memory_graph-0.3.26/images/factorial04.gv +0 -34
  123. memory_graph-0.3.26/images/factorial05.gv +0 -35
  124. memory_graph-0.3.26/images/factorial06.gv +0 -29
  125. memory_graph-0.3.26/images/factorial07.gv +0 -23
  126. memory_graph-0.3.26/images/hidden_edges.gv +0 -37
  127. memory_graph-0.3.26/images/hidden_edges.py +0 -8
  128. memory_graph-0.3.26/images/hidden_edges.py~ +0 -9
  129. memory_graph-0.3.26/images/introspect_depth.gv +0 -178
  130. memory_graph-0.3.26/images/introspect_depth.py~ +0 -26
  131. memory_graph-0.3.26/images/linked_list.png +0 -0
  132. memory_graph-0.3.26/images/log.txt +0 -186
  133. memory_graph-0.3.26/images/memory_graph.gv +0 -70
  134. memory_graph-0.3.26/images/memory_graph.gv.pdf +0 -0
  135. memory_graph-0.3.26/images/memory_graph.pdf +0 -0
  136. memory_graph-0.3.26/images/my_graph.gv +0 -31
  137. memory_graph-0.3.26/images/my_graph.pdf +0 -0
  138. memory_graph-0.3.26/images/not_node_types.py~ +0 -9
  139. memory_graph-0.3.26/install.txt +0 -31
  140. memory_graph-0.3.26/src/auto_memory_graph.py +0 -21
  141. memory_graph-0.3.26/src/jupyter_example.ipynb +0 -85
  142. memory_graph-0.3.26/src/pyodide.html +0 -182
  143. memory_graph-0.3.26/uml/memory_graph.uxf +0 -322
  144. {memory_graph-0.3.26 → memory_graph-0.3.28}/LICENSE.txt +0 -0
  145. {memory_graph-0.3.26 → memory_graph-0.3.28}/MANIFEST.in +0 -0
  146. {memory_graph-0.3.26 → memory_graph-0.3.28}/images/add_one.png +0 -0
  147. {memory_graph-0.3.26 → memory_graph-0.3.28}/images/add_one.py +0 -0
  148. {memory_graph-0.3.26 → memory_graph-0.3.28}/images/avltree.py +0 -0
  149. {memory_graph-0.3.26 → memory_graph-0.3.28}/images/avltree_dir.png +0 -0
  150. {memory_graph-0.3.26 → memory_graph-0.3.28}/images/avltree_fail.png +0 -0
  151. {memory_graph-0.3.26 → memory_graph-0.3.28}/images/avltree_key_value.png +0 -0
  152. {memory_graph-0.3.26 → memory_graph-0.3.28}/images/avltree_leaf.png +0 -0
  153. {memory_graph-0.3.26 → memory_graph-0.3.28}/images/avltree_linear.png +0 -0
  154. {memory_graph-0.3.26 → memory_graph-0.3.28}/images/avltree_table.png +0 -0
  155. {memory_graph-0.3.26 → memory_graph-0.3.28}/images/bin_tree.png +0 -0
  156. {memory_graph-0.3.26 → memory_graph-0.3.28}/images/bin_tree.py +0 -0
  157. {memory_graph-0.3.26 → memory_graph-0.3.28}/images/copies.png +0 -0
  158. {memory_graph-0.3.26 → memory_graph-0.3.28}/images/copies.py +0 -0
  159. {memory_graph-0.3.26 → memory_graph-0.3.28}/images/copy_method.png +0 -0
  160. {memory_graph-0.3.26 → memory_graph-0.3.28}/images/copy_method.py +0 -0
  161. {memory_graph-0.3.26 → memory_graph-0.3.28}/images/create_gif.sh +0 -0
  162. {memory_graph-0.3.26 → memory_graph-0.3.28}/images/create_images.sh +0 -0
  163. {memory_graph-0.3.26 → memory_graph-0.3.28}/images/debug_vscode.png +0 -0
  164. {memory_graph-0.3.26 → memory_graph-0.3.28}/images/debugging.gif +0 -0
  165. {memory_graph-0.3.26 → memory_graph-0.3.28}/images/debugging.py +0 -0
  166. {memory_graph-0.3.26 → memory_graph-0.3.28}/images/extension_numpy.png +0 -0
  167. {memory_graph-0.3.26 → memory_graph-0.3.28}/images/extension_numpy.py +0 -0
  168. {memory_graph-0.3.26 → memory_graph-0.3.28}/images/extension_pandas.png +0 -0
  169. {memory_graph-0.3.26 → memory_graph-0.3.28}/images/extension_pandas.py +0 -0
  170. {memory_graph-0.3.26 → memory_graph-0.3.28}/images/factorial.gif +0 -0
  171. {memory_graph-0.3.26 → memory_graph-0.3.28}/images/hash_set.png +0 -0
  172. {memory_graph-0.3.26 → memory_graph-0.3.28}/images/hash_set.py +0 -0
  173. {memory_graph-0.3.26 → memory_graph-0.3.28}/images/hidden_edges.png +0 -0
  174. {memory_graph-0.3.26 → memory_graph-0.3.28}/images/highlight.png +0 -0
  175. {memory_graph-0.3.26 → memory_graph-0.3.28}/images/highlight.py +0 -0
  176. {memory_graph-0.3.26 → memory_graph-0.3.28}/images/immutable.py +0 -0
  177. {memory_graph-0.3.26 → memory_graph-0.3.28}/images/immutable1.png +0 -0
  178. {memory_graph-0.3.26 → memory_graph-0.3.28}/images/immutable2.png +0 -0
  179. {memory_graph-0.3.26 → memory_graph-0.3.28}/images/introspect_depth.png +0 -0
  180. {memory_graph-0.3.26 → memory_graph-0.3.28}/images/introspect_depth.py +0 -0
  181. {memory_graph-0.3.26 → memory_graph-0.3.28}/images/ipython.png +0 -0
  182. {memory_graph-0.3.26 → memory_graph-0.3.28}/images/jupyter_example.png +0 -0
  183. {memory_graph-0.3.26 → memory_graph-0.3.28}/images/many_types.png +0 -0
  184. {memory_graph-0.3.26 → memory_graph-0.3.28}/images/many_types.py +0 -0
  185. {memory_graph-0.3.26 → memory_graph-0.3.28}/images/mutable.py +0 -0
  186. {memory_graph-0.3.26 → memory_graph-0.3.28}/images/mutable1.png +0 -0
  187. {memory_graph-0.3.26 → memory_graph-0.3.28}/images/mutable2.png +0 -0
  188. {memory_graph-0.3.26 → memory_graph-0.3.28}/images/name_rebinding.py +0 -0
  189. {memory_graph-0.3.26 → memory_graph-0.3.28}/images/not_node_types.py +0 -0
  190. {memory_graph-0.3.26 → memory_graph-0.3.28}/images/not_node_types1.png +0 -0
  191. {memory_graph-0.3.26 → memory_graph-0.3.28}/images/not_node_types2.png +0 -0
  192. {memory_graph-0.3.26 → memory_graph-0.3.28}/images/power_set.gif +0 -0
  193. {memory_graph-0.3.26 → memory_graph-0.3.28}/images/pyodide.png +0 -0
  194. {memory_graph-0.3.26 → memory_graph-0.3.28}/images/rebinding1.png +0 -0
  195. {memory_graph-0.3.26 → memory_graph-0.3.28}/images/rebinding2.png +0 -0
  196. {memory_graph-0.3.26 → memory_graph-0.3.28}/images/uva.png +0 -0
  197. {memory_graph-0.3.26 → memory_graph-0.3.28}/images/vscode_copying.gif +0 -0
  198. {memory_graph-0.3.26 → memory_graph-0.3.28}/memory_graph/call_stack.py +0 -0
  199. {memory_graph-0.3.26 → memory_graph-0.3.28}/memory_graph/config.py +0 -0
  200. {memory_graph-0.3.26 → memory_graph-0.3.28}/memory_graph/config_default.py +0 -0
  201. {memory_graph-0.3.26 → memory_graph-0.3.28}/memory_graph/config_helpers.py +0 -0
  202. {memory_graph-0.3.26 → memory_graph-0.3.28}/memory_graph/extension_numpy.py +0 -0
  203. {memory_graph-0.3.26 → memory_graph-0.3.28}/memory_graph/extension_pandas.py +0 -0
  204. {memory_graph-0.3.26 → memory_graph-0.3.28}/memory_graph/html_table.py +0 -0
  205. {memory_graph-0.3.26 → memory_graph-0.3.28}/memory_graph/list_view.py +0 -0
  206. {memory_graph-0.3.26 → memory_graph-0.3.28}/memory_graph/memory_to_nodes.py +0 -0
  207. {memory_graph-0.3.26 → memory_graph-0.3.28}/memory_graph/node_base.py +0 -0
  208. {memory_graph-0.3.26 → memory_graph-0.3.28}/memory_graph/node_key_value.py +0 -0
  209. {memory_graph-0.3.26 → memory_graph-0.3.28}/memory_graph/node_leaf.py +0 -0
  210. {memory_graph-0.3.26 → memory_graph-0.3.28}/memory_graph/node_linear.py +0 -0
  211. {memory_graph-0.3.26 → memory_graph-0.3.28}/memory_graph/node_table.py +0 -0
  212. {memory_graph-0.3.26 → memory_graph-0.3.28}/memory_graph/sequence.py +0 -0
  213. {memory_graph-0.3.26 → memory_graph-0.3.28}/memory_graph/slicer.py +0 -0
  214. {memory_graph-0.3.26 → memory_graph-0.3.28}/memory_graph/slices.py +0 -0
  215. {memory_graph-0.3.26 → memory_graph-0.3.28}/memory_graph/slices_iterator.py +0 -0
  216. {memory_graph-0.3.26 → memory_graph-0.3.28}/memory_graph/slices_table_iterator.py +0 -0
  217. {memory_graph-0.3.26 → memory_graph-0.3.28}/memory_graph/test.py +0 -0
  218. {memory_graph-0.3.26 → memory_graph-0.3.28}/memory_graph/test_max_graph_depth.py +0 -0
  219. {memory_graph-0.3.26 → memory_graph-0.3.28}/memory_graph/test_memory_graph.py +0 -0
  220. {memory_graph-0.3.26 → memory_graph-0.3.28}/memory_graph/test_memory_to_nodes.py +0 -0
  221. {memory_graph-0.3.26 → memory_graph-0.3.28}/memory_graph/test_sequence.py +0 -0
  222. {memory_graph-0.3.26 → memory_graph-0.3.28}/memory_graph/test_slicer.py +0 -0
  223. {memory_graph-0.3.26 → memory_graph-0.3.28}/memory_graph/test_slices.py +0 -0
  224. {memory_graph-0.3.26 → memory_graph-0.3.28}/memory_graph/test_slices_iterator.py +0 -0
  225. {memory_graph-0.3.26 → memory_graph-0.3.28}/memory_graph/utils.py +0 -0
  226. {memory_graph-0.3.26 → memory_graph-0.3.28}/memory_graph.egg-info/dependency_links.txt +0 -0
  227. {memory_graph-0.3.26 → memory_graph-0.3.28}/memory_graph.egg-info/requires.txt +0 -0
  228. {memory_graph-0.3.26 → memory_graph-0.3.28}/memory_graph.egg-info/top_level.txt +0 -0
  229. {memory_graph-0.3.26 → memory_graph-0.3.28}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: memory_graph
3
- Version: 0.3.26
3
+ Version: 0.3.28
4
4
  Summary: Teaching tool and debugging aid in context of references, mutable data types, and shallow and deep copy.
5
5
  Home-page: https://github.com/bterwijn/memory_graph
6
6
  Author: Bas Terwijn
@@ -114,7 +114,7 @@ A better way to understand what data is shared is to draw a graph of the data us
114
114
 
115
115
  [Introspection](#introspection)
116
116
 
117
- [Introspection Depth](#introspection-depth)
117
+ [Graph Depth](#graph-depth)
118
118
 
119
119
  [Jupyter Notebook](#jupyter-notebook)
120
120
 
@@ -122,6 +122,8 @@ A better way to understand what data is shared is to draw a graph of the data us
122
122
 
123
123
  [In the Browser](#in-the-browser)
124
124
 
125
+ [Animated GIF](#animated-gif)
126
+
125
127
  [Troubleshooting](#troubleshooting)
126
128
 
127
129
 
@@ -410,37 +412,37 @@ and pressing <Enter> a number of times, results in:
410
412
  # Data Structure Examples #
411
413
  Module memory_graph can be very useful in a course about data structures, some examples:
412
414
 
413
- ## Doubly Linked List ##
415
+ ## Circular Doubly Linked List ##
414
416
  ```python
415
417
  import memory_graph as mg
416
418
  import random
417
419
  random.seed(0) # use same random numbers each run
418
420
 
419
421
  class Linked_List:
422
+ """ Circular doubly linked list """
420
423
 
421
- def __init__(self, value=None, prev=None, next=None):
422
- self.prev = prev
424
+ def __init__(self, value=None,
425
+ prev=None, next=None):
426
+ self.prev = prev if prev else self
423
427
  self.value = value
424
- self.next = next
428
+ self.next = next if next else self
425
429
 
426
- def add_front(self, value):
430
+ def add_back(self, value):
427
431
  if self.value == None:
428
432
  self.value = value
429
- elif self.next is None:
430
- new_node = Linked_List(value)
431
- self.prev = new_node
432
- self.next = new_node
433
433
  else:
434
- new_node = Linked_List(value, self.next)
435
- self.next.next = new_node
436
- self.next = new_node
434
+ new_node = Linked_List(value,
435
+ prev=self.prev,
436
+ next=self)
437
+ self.prev.next = new_node
438
+ self.prev = new_node
437
439
 
438
440
  linked_list = Linked_List()
439
441
  n = 100
440
442
  for i in range(n):
441
443
  value = random.randrange(n)
442
- linked_list.add_front(value)
443
- mg.show(locals())
444
+ linked_list.add_back(value)
445
+ mg.block(mg.show, locals()) # <--- draw locals
444
446
  ```
445
447
  ![linked_list.png](https://raw.githubusercontent.com/bterwijn/memory_graph/main/images/linked_list.png)
446
448
 
@@ -770,7 +772,7 @@ mg.show(locals())
770
772
  ![extension_numpy.png](https://raw.githubusercontent.com/bterwijn/memory_graph/main/images/avltree_table.png)
771
773
 
772
774
 
773
- # Introspection Depth #
775
+ # Graph Depth #
774
776
  To limit the size of the graph the maximum depth of the graph is set by `mg.config.max_graph_depth`. Additionally for each type a depth can be set to further limit the graph, as is done for type `B` in the example below. Scissors indicate where the graph is cut short. Alternatively the `id()` of a data elements can be used to limit the graph for that specific element, as is done for the value referenced by variable `c`.
775
777
 
776
778
  The value of variable `x` is shown as it is at depth 1 from the root of the graph, but as it can also be reached via `b2`, that path need to be shown as well to avoid confusion, so this overwrites the depth limit set for type `B`.
@@ -865,8 +867,24 @@ Then after starting 'ipython' call function `mg_switch()` to turn on/off the aut
865
867
  We can also run memory_graph in the browser: <a href="https://bterwijn.github.io/memory_graph/src/pyodide.html" target="_blank">Pyodide Example</a>
866
868
  ![pyodide.png](https://raw.githubusercontent.com/bterwijn/memory_graph/main/images/pyodide.png)
867
869
 
868
- # Troubleshooting #
869
870
 
871
+ # Animated GIF #
872
+ To make an animated GIF use for example `mg.show` or `mg.render` like this:
873
+
874
+ * mg.show(locals(), 'animated.png', numbered=True)
875
+ * mg.render(locals(), 'animated.png', numbered=True)
876
+
877
+ in your source or better as a *watch* in a debugger so that stepping through the code generates images:
878
+
879
+ &nbsp;&nbsp;&nbsp; animated0.png, animated1.png, animated2.png, ...
880
+
881
+ Then use these images to make an animated GIF, for example using this Bash script [create_gif.sh](https://raw.githubusercontent.com/bterwijn/memory_graph/main/images/create_gif.sh):
882
+
883
+ ```bash
884
+ $ bash create_gif.sh animated
885
+ ```
886
+
887
+ # Troubleshooting #
870
888
  - Adobe Acrobat Reader [doesn't refresh a PDF file](https://community.adobe.com/t5/acrobat-reader-discussions/reload-refresh-pdfs/td-p/9632292) when it changes on disk and blocks updates which results in an `Could not open 'somefile.pdf' for writing : Permission denied` error. One solution is to install a PDF reader that does refresh ([SumatraPDF](https://www.sumatrapdfreader.org/), [Okular](https://okular.kde.org/), ...) and set it as the default PDF reader. Another solution is to `render()` the graph to a different output format and to open it manually.
871
889
 
872
890
  - When graph edges overlap it can be hard to distinguish them. Using an interactive graphviz viewer, such as [xdot](https://github.com/jrfonseca/xdot.py), on a '*.gv' DOT output file will help.
@@ -95,7 +95,7 @@ A better way to understand what data is shared is to draw a graph of the data us
95
95
 
96
96
  [Introspection](#introspection)
97
97
 
98
- [Introspection Depth](#introspection-depth)
98
+ [Graph Depth](#graph-depth)
99
99
 
100
100
  [Jupyter Notebook](#jupyter-notebook)
101
101
 
@@ -103,6 +103,8 @@ A better way to understand what data is shared is to draw a graph of the data us
103
103
 
104
104
  [In the Browser](#in-the-browser)
105
105
 
106
+ [Animated GIF](#animated-gif)
107
+
106
108
  [Troubleshooting](#troubleshooting)
107
109
 
108
110
 
@@ -391,37 +393,37 @@ and pressing &lt;Enter&gt; a number of times, results in:
391
393
  # Data Structure Examples #
392
394
  Module memory_graph can be very useful in a course about data structures, some examples:
393
395
 
394
- ## Doubly Linked List ##
396
+ ## Circular Doubly Linked List ##
395
397
  ```python
396
398
  import memory_graph as mg
397
399
  import random
398
400
  random.seed(0) # use same random numbers each run
399
401
 
400
402
  class Linked_List:
403
+ """ Circular doubly linked list """
401
404
 
402
- def __init__(self, value=None, prev=None, next=None):
403
- self.prev = prev
405
+ def __init__(self, value=None,
406
+ prev=None, next=None):
407
+ self.prev = prev if prev else self
404
408
  self.value = value
405
- self.next = next
409
+ self.next = next if next else self
406
410
 
407
- def add_front(self, value):
411
+ def add_back(self, value):
408
412
  if self.value == None:
409
413
  self.value = value
410
- elif self.next is None:
411
- new_node = Linked_List(value)
412
- self.prev = new_node
413
- self.next = new_node
414
414
  else:
415
- new_node = Linked_List(value, self.next)
416
- self.next.next = new_node
417
- self.next = new_node
415
+ new_node = Linked_List(value,
416
+ prev=self.prev,
417
+ next=self)
418
+ self.prev.next = new_node
419
+ self.prev = new_node
418
420
 
419
421
  linked_list = Linked_List()
420
422
  n = 100
421
423
  for i in range(n):
422
424
  value = random.randrange(n)
423
- linked_list.add_front(value)
424
- mg.show(locals())
425
+ linked_list.add_back(value)
426
+ mg.block(mg.show, locals()) # <--- draw locals
425
427
  ```
426
428
  ![linked_list.png](https://raw.githubusercontent.com/bterwijn/memory_graph/main/images/linked_list.png)
427
429
 
@@ -751,7 +753,7 @@ mg.show(locals())
751
753
  ![extension_numpy.png](https://raw.githubusercontent.com/bterwijn/memory_graph/main/images/avltree_table.png)
752
754
 
753
755
 
754
- # Introspection Depth #
756
+ # Graph Depth #
755
757
  To limit the size of the graph the maximum depth of the graph is set by `mg.config.max_graph_depth`. Additionally for each type a depth can be set to further limit the graph, as is done for type `B` in the example below. Scissors indicate where the graph is cut short. Alternatively the `id()` of a data elements can be used to limit the graph for that specific element, as is done for the value referenced by variable `c`.
756
758
 
757
759
  The value of variable `x` is shown as it is at depth 1 from the root of the graph, but as it can also be reached via `b2`, that path need to be shown as well to avoid confusion, so this overwrites the depth limit set for type `B`.
@@ -846,8 +848,24 @@ Then after starting 'ipython' call function `mg_switch()` to turn on/off the aut
846
848
  We can also run memory_graph in the browser: <a href="https://bterwijn.github.io/memory_graph/src/pyodide.html" target="_blank">Pyodide Example</a>
847
849
  ![pyodide.png](https://raw.githubusercontent.com/bterwijn/memory_graph/main/images/pyodide.png)
848
850
 
849
- # Troubleshooting #
850
851
 
852
+ # Animated GIF #
853
+ To make an animated GIF use for example `mg.show` or `mg.render` like this:
854
+
855
+ * mg.show(locals(), 'animated.png', numbered=True)
856
+ * mg.render(locals(), 'animated.png', numbered=True)
857
+
858
+ in your source or better as a *watch* in a debugger so that stepping through the code generates images:
859
+
860
+ &nbsp;&nbsp;&nbsp; animated0.png, animated1.png, animated2.png, ...
861
+
862
+ Then use these images to make an animated GIF, for example using this Bash script [create_gif.sh](https://raw.githubusercontent.com/bterwijn/memory_graph/main/images/create_gif.sh):
863
+
864
+ ```bash
865
+ $ bash create_gif.sh animated
866
+ ```
867
+
868
+ # Troubleshooting #
851
869
  - Adobe Acrobat Reader [doesn't refresh a PDF file](https://community.adobe.com/t5/acrobat-reader-discussions/reload-refresh-pdfs/td-p/9632292) when it changes on disk and blocks updates which results in an `Could not open 'somefile.pdf' for writing : Permission denied` error. One solution is to install a PDF reader that does refresh ([SumatraPDF](https://www.sumatrapdfreader.org/), [Okular](https://okular.kde.org/), ...) and set it as the default PDF reader. Another solution is to `render()` the graph to a different output format and to open it manually.
852
870
 
853
871
  - When graph edges overlap it can be hard to distinguish them. Using an interactive graphviz viewer, such as [xdot](https://github.com/jrfonseca/xdot.py), on a '*.gv' DOT output file will help.
@@ -1,6 +1,6 @@
1
1
  digraph memory_graph {
2
2
  node [shape=plaintext]
3
- node124722886398528 [label=<
3
+ node136650744844864 [label=<
4
4
  <TABLE BORDER="1" CELLBORDER="1" CELLSPACING="5" CELLPADDING="0" BGCOLOR="lightcoral" PORT="table">
5
5
  <TR><TD BORDER="0"><font color="#505050">0</font></TD><TD BORDER="1"> 4 </TD></TR>
6
6
  <TR><TD BORDER="0"><font color="#505050">1</font></TD><TD BORDER="1"> 3 </TD></TR>
@@ -8,30 +8,30 @@ digraph memory_graph {
8
8
  <TR><TD BORDER="0"><font color="#505050">3</font></TD><TD BORDER="1"> 1 </TD></TR>
9
9
  </TABLE>
10
10
  > xlabel=list]
11
- node124722875623872 [label=<
11
+ node136650743234112 [label=<
12
12
  <TABLE BORDER="1" CELLBORDER="1" CELLSPACING="5" CELLPADDING="0" BGCOLOR="orange" PORT="table">
13
13
  <TR><TD BORDER="0"><font color="#505050">0</font></TD><TD BORDER="1"> 4 </TD></TR>
14
14
  <TR><TD BORDER="0"><font color="#505050">1</font></TD><TD BORDER="1"> 3 </TD></TR>
15
15
  <TR><TD BORDER="0"><font color="#505050">2</font></TD><TD BORDER="1"> 2 </TD></TR>
16
16
  </TABLE>
17
17
  > xlabel=tuple]
18
- node124722886396736 [label=<
18
+ node136650744843072 [label=<
19
19
  <TABLE BORDER="1" CELLBORDER="1" CELLSPACING="5" CELLPADDING="0" BGCOLOR="lightcoral" PORT="table">
20
20
  <TR><TD BORDER="0"><font color="#505050">0</font></TD><TD BORDER="1"> 4 </TD></TR>
21
21
  <TR><TD BORDER="0"><font color="#505050">1</font></TD><TD BORDER="1"> 3 </TD></TR>
22
22
  <TR><TD BORDER="0"><font color="#505050">2</font></TD><TD BORDER="1"> 2 </TD></TR>
23
23
  </TABLE>
24
24
  > xlabel=list]
25
- node124722875625472 [label=<
25
+ node136650743230144 [label=<
26
26
  <TABLE BORDER="1" CELLBORDER="1" CELLSPACING="5" CELLPADDING="0" BGCOLOR="#60a5ff" PORT="table">
27
27
  <TR><TD BORDER="1" STYLE="ROUNDED"> a </TD><TD BORDER="1" STYLE="ROUNDED"> b </TD><TD BORDER="1" STYLE="ROUNDED"> c </TD></TR>
28
28
  <TR><TD BORDER="1" PORT="ref0"> </TD><TD BORDER="1" PORT="ref1"> </TD><TD BORDER="1" PORT="ref2"> </TD></TR>
29
29
  </TABLE>
30
30
  > xlabel=dict]
31
- node124722875625472:ref0 -> node124722886398528:table [style=solid]
32
- node124722875625472:ref1 -> node124722875623872:table [style=solid]
33
- node124722875625472:ref2 -> node124722886396736:table [style=solid]
34
- node124722875522544 [label=<
31
+ node136650743230144:ref0 -> node136650744844864:table [style=solid]
32
+ node136650743230144:ref1 -> node136650743234112:table [style=solid]
33
+ node136650743230144:ref2 -> node136650744843072:table [style=solid]
34
+ node136650744825872 [label=<
35
35
  <TABLE BORDER="1" CELLBORDER="1" CELLSPACING="5" CELLPADDING="0" BGCOLOR="orange" PORT="table">
36
36
  <TR><TD BORDER="0"><font color="#505050">0</font></TD><TD BORDER="1"> 4 </TD></TR>
37
37
  <TR><TD BORDER="0"><font color="#505050">1</font></TD><TD BORDER="1"> 3 </TD></TR>
@@ -39,7 +39,7 @@ digraph memory_graph {
39
39
  <TR><TD BORDER="0"><font color="#505050">3</font></TD><TD BORDER="1"> 1 </TD></TR>
40
40
  </TABLE>
41
41
  > xlabel=tuple]
42
- node124722875514240 [label=<
42
+ node136650743119168 [label=<
43
43
  <TABLE BORDER="1" CELLBORDER="1" CELLSPACING="5" CELLPADDING="0" BGCOLOR="lightcoral" PORT="table">
44
44
  <TR><TD BORDER="0"><font color="#505050">0</font></TD><TD BORDER="1"> 4 </TD></TR>
45
45
  <TR><TD BORDER="0"><font color="#505050">1</font></TD><TD BORDER="1"> 3 </TD></TR>
@@ -47,23 +47,23 @@ digraph memory_graph {
47
47
  <TR><TD BORDER="0"><font color="#505050">3</font></TD><TD BORDER="1"> 1 </TD></TR>
48
48
  </TABLE>
49
49
  > xlabel=list]
50
- node124722875508928 [label=<
50
+ node136650743113856 [label=<
51
51
  <TABLE BORDER="1" CELLBORDER="1" CELLSPACING="5" CELLPADDING="0" BGCOLOR="#60a5ff" PORT="table">
52
52
  <TR><TD BORDER="1" STYLE="ROUNDED"> a </TD><TD BORDER="1" STYLE="ROUNDED"> b </TD><TD BORDER="1" STYLE="ROUNDED"> c </TD></TR>
53
53
  <TR><TD BORDER="1" PORT="ref0"> </TD><TD BORDER="1" PORT="ref1"> </TD><TD BORDER="1" PORT="ref2"> </TD></TR>
54
54
  </TABLE>
55
55
  > xlabel=dict]
56
- node124722875508928:ref0 -> node124722886398528:table [style=solid]
57
- node124722875508928:ref1 -> node124722875522544:table [style=solid]
58
- node124722875508928:ref2 -> node124722875514240:table [style=solid]
59
- node124722873168144 [label=<
56
+ node136650743113856:ref0 -> node136650744844864:table [style=solid]
57
+ node136650743113856:ref1 -> node136650744825872:table [style=solid]
58
+ node136650743113856:ref2 -> node136650743119168:table [style=solid]
59
+ node136650740772896 [label=<
60
60
  <TABLE BORDER="3" CELLBORDER="1" CELLSPACING="5" CELLPADDING="0" BGCOLOR="khaki" PORT="table">
61
61
  <TR><TD BORDER="1" STYLE="ROUNDED"> 0: &lt;module&gt; </TD><TD BORDER="1" STYLE="ROUNDED"> 1: add_one </TD></TR>
62
62
  <TR><TD BORDER="1" PORT="ref0"> </TD><TD BORDER="1" PORT="ref1"> </TD></TR>
63
63
  </TABLE>
64
64
  > xlabel=call_stack]
65
- node124722873168144:ref0 -> node124722875625472:table [style=solid]
66
- node124722873168144:ref1 -> node124722875508928:table [style=solid]
67
- subgraph { rank=same; node124722875625472 -> node124722875508928[weight=10, style=invis]; }
68
- subgraph { rank=same; node124722886398528 -> node124722875623872 -> node124722886396736 -> node124722875522544 -> node124722875514240[weight=10, style=invis]; }
65
+ node136650740772896:ref0 -> node136650743230144:table [style=solid]
66
+ node136650740772896:ref1 -> node136650743113856:table [style=solid]
67
+ subgraph { rank=same; node136650743230144 -> node136650743113856[weight=10, style=invis]; }
68
+ subgraph { rank=same; node136650744844864 -> node136650743234112 -> node136650744843072 -> node136650744825872 -> node136650743119168[weight=10, style=invis]; }
69
69
  }
@@ -1,6 +1,6 @@
1
1
  digraph memory_graph {
2
2
  node [shape=plaintext]
3
- node124372962549232 [label=<
3
+ node130351336425488 [label=<
4
4
  <TABLE BORDER="1" CELLBORDER="1" CELLSPACING="5" CELLPADDING="0" BGCOLOR="sandybrown" PORT="table">
5
5
  <TR><TD BORDER="0"><font color="#505050">0</font></TD><TD BORDER="1"> __class__ </TD></TR>
6
6
  <TR><TD BORDER="0"><font color="#505050">1</font></TD><TD BORDER="1"> __delattr__ </TD></TR>
@@ -38,18 +38,18 @@ digraph memory_graph {
38
38
  <TR><TD BORDER="0"><font color="#505050">33</font></TD><TD BORDER="1"> value </TD></TR>
39
39
  </TABLE>
40
40
  > xlabel="Node"]
41
- node124372962727920 [label=<
41
+ node130351334904784 [label=<
42
42
  <TABLE BORDER="1" CELLBORDER="1" CELLSPACING="5" CELLPADDING="0" BGCOLOR="seagreen1" PORT="table">
43
43
  <TR><TD BORDER="1" STYLE="ROUNDED"> _root </TD><TD BORDER="1" STYLE="ROUNDED"> _count </TD></TR>
44
44
  <TR><TD BORDER="1" PORT="ref0"> </TD><TD BORDER="1"> 4 </TD></TR>
45
45
  </TABLE>
46
46
  > xlabel=AVLTree]
47
- node124372962727920:ref0 -> node124372962549232:table [style=solid]
48
- node124372964581056 [label=<
47
+ node130351334904784:ref0 -> node130351336425488:table [style=solid]
48
+ node130351336759104 [label=<
49
49
  <TABLE BORDER="3" CELLBORDER="1" CELLSPACING="5" CELLPADDING="0" BGCOLOR="#60a5ff" PORT="table">
50
50
  <TR><TD BORDER="1" STYLE="ROUNDED"> tree </TD></TR>
51
51
  <TR><TD BORDER="1" PORT="ref0"> </TD></TR>
52
52
  </TABLE>
53
53
  > xlabel=dict]
54
- node124372964581056:ref0 -> node124372962727920:table [style=solid]
54
+ node130351336759104:ref0 -> node130351334904784:table [style=solid]
55
55
  }
@@ -1,6 +1,6 @@
1
1
  digraph memory_graph {
2
2
  node [shape=plaintext]
3
- node124372960185536 [label=<
3
+ node130351332363056 [label=<
4
4
  <TABLE BORDER="1" CELLBORDER="1" CELLSPACING="5" CELLPADDING="0" BGCOLOR="sandybrown" PORT="table">
5
5
  <TR><TD BORDER="1" STYLE="ROUNDED"> left </TD><TD BORDER="1"> None </TD></TR>
6
6
  <TR><TD BORDER="1" STYLE="ROUNDED"> key </TD><TD BORDER="1"> 5 </TD></TR>
@@ -8,7 +8,7 @@ digraph memory_graph {
8
8
  <TR><TD BORDER="1" STYLE="ROUNDED"> right </TD><TD BORDER="1"> None </TD></TR>
9
9
  </TABLE>
10
10
  > xlabel="Node"]
11
- node124372960183776 [label=<
11
+ node130351332361296 [label=<
12
12
  <TABLE BORDER="1" CELLBORDER="1" CELLSPACING="5" CELLPADDING="0" BGCOLOR="sandybrown" PORT="table">
13
13
  <TR><TD BORDER="1" STYLE="ROUNDED"> left </TD><TD BORDER="1"> None </TD></TR>
14
14
  <TR><TD BORDER="1" STYLE="ROUNDED"> key </TD><TD BORDER="1"> 15 </TD></TR>
@@ -16,34 +16,34 @@ digraph memory_graph {
16
16
  <TR><TD BORDER="1" STYLE="ROUNDED"> right </TD><TD BORDER="1"> None </TD></TR>
17
17
  </TABLE>
18
18
  > xlabel="Node"]
19
- node124372960183936 [label=<
19
+ node130351332361456 [label=<
20
20
  <TABLE BORDER="1" CELLBORDER="1" CELLSPACING="5" CELLPADDING="0" BGCOLOR="sandybrown" PORT="table">
21
21
  <TR><TD BORDER="1" STYLE="ROUNDED"> left </TD><TD BORDER="1" STYLE="ROUNDED"> key </TD><TD BORDER="1" STYLE="ROUNDED"> value </TD><TD BORDER="1" STYLE="ROUNDED"> right </TD></TR>
22
22
  <TR><TD BORDER="1" PORT="ref0"> </TD><TD BORDER="1"> 20 </TD><TD BORDER="1"> twenty </TD><TD BORDER="1"> None </TD></TR>
23
23
  </TABLE>
24
24
  > xlabel="Node"]
25
- node124372960183936:ref0 -> node124372960183776:table [style=solid]
26
- node124372962549232 [label=<
25
+ node130351332361456:ref0 -> node130351332361296:table [style=solid]
26
+ node130351336425488 [label=<
27
27
  <TABLE BORDER="1" CELLBORDER="1" CELLSPACING="5" CELLPADDING="0" BGCOLOR="sandybrown" PORT="table">
28
28
  <TR><TD BORDER="1" STYLE="ROUNDED"> left </TD><TD BORDER="1" STYLE="ROUNDED"> key </TD><TD BORDER="1" STYLE="ROUNDED"> value </TD><TD BORDER="1" STYLE="ROUNDED"> right </TD></TR>
29
29
  <TR><TD BORDER="1" PORT="ref0"> </TD><TD BORDER="1"> 10 </TD><TD BORDER="1"> ten </TD><TD BORDER="1" PORT="ref1"> </TD></TR>
30
30
  </TABLE>
31
31
  > xlabel="Node"]
32
- node124372962549232:ref0 -> node124372960185536:table [style=solid]
33
- node124372962549232:ref1 -> node124372960183936:table [style=solid]
34
- node124372962727920 [label=<
32
+ node130351336425488:ref0 -> node130351332363056:table [style=solid]
33
+ node130351336425488:ref1 -> node130351332361456:table [style=solid]
34
+ node130351334904784 [label=<
35
35
  <TABLE BORDER="1" CELLBORDER="1" CELLSPACING="5" CELLPADDING="0" BGCOLOR="seagreen1" PORT="table">
36
36
  <TR><TD BORDER="1" STYLE="ROUNDED"> _root </TD><TD BORDER="1" STYLE="ROUNDED"> _count </TD></TR>
37
37
  <TR><TD BORDER="1" PORT="ref0"> </TD><TD BORDER="1"> 4 </TD></TR>
38
38
  </TABLE>
39
39
  > xlabel=AVLTree]
40
- node124372962727920:ref0 -> node124372962549232:table [style=solid]
41
- node124372964581056 [label=<
40
+ node130351334904784:ref0 -> node130351336425488:table [style=solid]
41
+ node130351336759104 [label=<
42
42
  <TABLE BORDER="3" CELLBORDER="1" CELLSPACING="5" CELLPADDING="0" BGCOLOR="#60a5ff" PORT="table">
43
43
  <TR><TD BORDER="1" STYLE="ROUNDED"> tree </TD></TR>
44
44
  <TR><TD BORDER="1" PORT="ref0"> </TD></TR>
45
45
  </TABLE>
46
46
  > xlabel=dict]
47
- node124372964581056:ref0 -> node124372962727920:table [style=solid]
48
- subgraph { rank=same; node124372960185536 -> node124372960183936[weight=10, style=invis]; }
47
+ node130351336759104:ref0 -> node130351334904784:table [style=solid]
48
+ subgraph { rank=same; node130351332363056 -> node130351332361456[weight=10, style=invis]; }
49
49
  }
@@ -1,22 +1,22 @@
1
1
  digraph memory_graph {
2
2
  node [shape=plaintext]
3
- node124372962549232 [label=<
3
+ node130351336425488 [label=<
4
4
  <TABLE BORDER="1" CELLBORDER="1" CELLSPACING="5" CELLPADDING="0" BGCOLOR="sandybrown" PORT="table">
5
5
  <TR><TD BORDER="1"> key:10 value:ten </TD></TR>
6
6
  </TABLE>
7
7
  > xlabel="Node"]
8
- node124372962727920 [label=<
8
+ node130351334904784 [label=<
9
9
  <TABLE BORDER="1" CELLBORDER="1" CELLSPACING="5" CELLPADDING="0" BGCOLOR="seagreen1" PORT="table">
10
10
  <TR><TD BORDER="1" STYLE="ROUNDED"> _root </TD><TD BORDER="1" STYLE="ROUNDED"> _count </TD></TR>
11
11
  <TR><TD BORDER="1" PORT="ref0"> </TD><TD BORDER="1"> 4 </TD></TR>
12
12
  </TABLE>
13
13
  > xlabel=AVLTree]
14
- node124372962727920:ref0 -> node124372962549232:table [style=solid]
15
- node124372964581056 [label=<
14
+ node130351334904784:ref0 -> node130351336425488:table [style=solid]
15
+ node130351336759104 [label=<
16
16
  <TABLE BORDER="3" CELLBORDER="1" CELLSPACING="5" CELLPADDING="0" BGCOLOR="#60a5ff" PORT="table">
17
17
  <TR><TD BORDER="1" STYLE="ROUNDED"> tree </TD></TR>
18
18
  <TR><TD BORDER="1" PORT="ref0"> </TD></TR>
19
19
  </TABLE>
20
20
  > xlabel=dict]
21
- node124372964581056:ref0 -> node124372962727920:table [style=solid]
21
+ node130351336759104:ref0 -> node130351334904784:table [style=solid]
22
22
  }
@@ -1,6 +1,6 @@
1
1
  digraph memory_graph {
2
2
  node [shape=plaintext]
3
- node124372960185536 [label=<
3
+ node130351332363056 [label=<
4
4
  <TABLE BORDER="1" CELLBORDER="1" CELLSPACING="5" CELLPADDING="0" BGCOLOR="sandybrown" PORT="table">
5
5
  <TR><TD BORDER="0"><font color="#505050">0</font></TD><TD BORDER="1"> left: </TD></TR>
6
6
  <TR><TD BORDER="0"><font color="#505050">1</font></TD><TD BORDER="1"> None </TD></TR>
@@ -12,7 +12,7 @@ digraph memory_graph {
12
12
  <TR><TD BORDER="0"><font color="#505050">7</font></TD><TD BORDER="1"> None </TD></TR>
13
13
  </TABLE>
14
14
  > xlabel="Node"]
15
- node124372960183776 [label=<
15
+ node130351332361296 [label=<
16
16
  <TABLE BORDER="1" CELLBORDER="1" CELLSPACING="5" CELLPADDING="0" BGCOLOR="sandybrown" PORT="table">
17
17
  <TR><TD BORDER="0"><font color="#505050">0</font></TD><TD BORDER="1"> left: </TD></TR>
18
18
  <TR><TD BORDER="0"><font color="#505050">1</font></TD><TD BORDER="1"> None </TD></TR>
@@ -24,34 +24,34 @@ digraph memory_graph {
24
24
  <TR><TD BORDER="0"><font color="#505050">7</font></TD><TD BORDER="1"> None </TD></TR>
25
25
  </TABLE>
26
26
  > xlabel="Node"]
27
- node124372960183936 [label=<
27
+ node130351332361456 [label=<
28
28
  <TABLE BORDER="1" CELLBORDER="1" CELLSPACING="5" CELLPADDING="0" BGCOLOR="sandybrown" PORT="table">
29
29
  <TR><TD BORDER="0"><font color="#505050">0</font></TD><TD BORDER="0"><font color="#505050">1</font></TD><TD BORDER="0"><font color="#505050">2</font></TD><TD BORDER="0"><font color="#505050">3</font></TD><TD BORDER="0"><font color="#505050">4</font></TD><TD BORDER="0"><font color="#505050">5</font></TD><TD BORDER="0"><font color="#505050">6</font></TD><TD BORDER="0"><font color="#505050">7</font></TD></TR>
30
30
  <TR><TD BORDER="1"> left: </TD><TD BORDER="1" PORT="ref0"> </TD><TD BORDER="1"> key: </TD><TD BORDER="1"> 20 </TD><TD BORDER="1"> value: </TD><TD BORDER="1"> twenty </TD><TD BORDER="1"> right: </TD><TD BORDER="1"> None </TD></TR>
31
31
  </TABLE>
32
32
  > xlabel="Node"]
33
- node124372960183936:ref0 -> node124372960183776:table [style=solid]
34
- node124372962549232 [label=<
33
+ node130351332361456:ref0 -> node130351332361296:table [style=solid]
34
+ node130351336425488 [label=<
35
35
  <TABLE BORDER="1" CELLBORDER="1" CELLSPACING="5" CELLPADDING="0" BGCOLOR="sandybrown" PORT="table">
36
36
  <TR><TD BORDER="0"><font color="#505050">0</font></TD><TD BORDER="0"><font color="#505050">1</font></TD><TD BORDER="0"><font color="#505050">2</font></TD><TD BORDER="0"><font color="#505050">3</font></TD><TD BORDER="0"><font color="#505050">4</font></TD><TD BORDER="0"><font color="#505050">5</font></TD><TD BORDER="0"><font color="#505050">6</font></TD><TD BORDER="0"><font color="#505050">7</font></TD></TR>
37
37
  <TR><TD BORDER="1"> left: </TD><TD BORDER="1" PORT="ref0"> </TD><TD BORDER="1"> key: </TD><TD BORDER="1"> 10 </TD><TD BORDER="1"> value: </TD><TD BORDER="1"> ten </TD><TD BORDER="1"> right: </TD><TD BORDER="1" PORT="ref1"> </TD></TR>
38
38
  </TABLE>
39
39
  > xlabel="Node"]
40
- node124372962549232:ref0 -> node124372960185536:table [style=solid]
41
- node124372962549232:ref1 -> node124372960183936:table [style=solid]
42
- node124372962727920 [label=<
40
+ node130351336425488:ref0 -> node130351332363056:table [style=solid]
41
+ node130351336425488:ref1 -> node130351332361456:table [style=solid]
42
+ node130351334904784 [label=<
43
43
  <TABLE BORDER="1" CELLBORDER="1" CELLSPACING="5" CELLPADDING="0" BGCOLOR="seagreen1" PORT="table">
44
44
  <TR><TD BORDER="1" STYLE="ROUNDED"> _root </TD><TD BORDER="1" STYLE="ROUNDED"> _count </TD></TR>
45
45
  <TR><TD BORDER="1" PORT="ref0"> </TD><TD BORDER="1"> 4 </TD></TR>
46
46
  </TABLE>
47
47
  > xlabel=AVLTree]
48
- node124372962727920:ref0 -> node124372962549232:table [style=solid]
49
- node124372964581056 [label=<
48
+ node130351334904784:ref0 -> node130351336425488:table [style=solid]
49
+ node130351336759104 [label=<
50
50
  <TABLE BORDER="3" CELLBORDER="1" CELLSPACING="5" CELLPADDING="0" BGCOLOR="#60a5ff" PORT="table">
51
51
  <TR><TD BORDER="1" STYLE="ROUNDED"> tree </TD></TR>
52
52
  <TR><TD BORDER="1" PORT="ref0"> </TD></TR>
53
53
  </TABLE>
54
54
  > xlabel=dict]
55
- node124372964581056:ref0 -> node124372962727920:table [style=solid]
56
- subgraph { rank=same; node124372960185536 -> node124372960183936[weight=10, style=invis]; }
55
+ node130351336759104:ref0 -> node130351334904784:table [style=solid]
56
+ subgraph { rank=same; node130351332363056 -> node130351332361456[weight=10, style=invis]; }
57
57
  }
@@ -1,49 +1,49 @@
1
1
  digraph memory_graph {
2
2
  node [shape=plaintext]
3
- node124372960185536 [label=<
3
+ node130351332363056 [label=<
4
4
  <TABLE BORDER="1" CELLBORDER="1" CELLSPACING="5" CELLPADDING="0" BGCOLOR="sandybrown" PORT="table">
5
5
  <TR><TD BORDER="0"> </TD><TD BORDER="0"><font color="#505050">0</font></TD><TD BORDER="0"><font color="#505050">1</font></TD></TR>
6
6
  <TR><TD BORDER="0"><font color="#505050">0</font></TD><TD BORDER="1"> 5 </TD><TD BORDER="1"> five </TD></TR>
7
7
  <TR><TD BORDER="0"><font color="#505050">1</font></TD><TD BORDER="1"> None </TD><TD BORDER="1"> None </TD></TR>
8
8
  </TABLE>
9
9
  > xlabel="Node 2⨯2"]
10
- node124372960183776 [label=<
10
+ node130351332361296 [label=<
11
11
  <TABLE BORDER="1" CELLBORDER="1" CELLSPACING="5" CELLPADDING="0" BGCOLOR="sandybrown" PORT="table">
12
12
  <TR><TD BORDER="0"> </TD><TD BORDER="0"><font color="#505050">0</font></TD><TD BORDER="0"><font color="#505050">1</font></TD></TR>
13
13
  <TR><TD BORDER="0"><font color="#505050">0</font></TD><TD BORDER="1"> 15 </TD><TD BORDER="1"> fifteen </TD></TR>
14
14
  <TR><TD BORDER="0"><font color="#505050">1</font></TD><TD BORDER="1"> None </TD><TD BORDER="1"> None </TD></TR>
15
15
  </TABLE>
16
16
  > xlabel="Node 2⨯2"]
17
- node124372960183936 [label=<
17
+ node130351332361456 [label=<
18
18
  <TABLE BORDER="1" CELLBORDER="1" CELLSPACING="5" CELLPADDING="0" BGCOLOR="sandybrown" PORT="table">
19
19
  <TR><TD BORDER="0"> </TD><TD BORDER="0"><font color="#505050">0</font></TD><TD BORDER="0"><font color="#505050">1</font></TD></TR>
20
20
  <TR><TD BORDER="0"><font color="#505050">0</font></TD><TD BORDER="1"> 20 </TD><TD BORDER="1"> twenty </TD></TR>
21
21
  <TR><TD BORDER="0"><font color="#505050">1</font></TD><TD BORDER="1" PORT="ref0"> </TD><TD BORDER="1"> None </TD></TR>
22
22
  </TABLE>
23
23
  > xlabel="Node 2⨯2"]
24
- node124372960183936:ref0 -> node124372960183776:table [style=solid]
25
- node124372962549232 [label=<
24
+ node130351332361456:ref0 -> node130351332361296:table [style=solid]
25
+ node130351336425488 [label=<
26
26
  <TABLE BORDER="1" CELLBORDER="1" CELLSPACING="5" CELLPADDING="0" BGCOLOR="sandybrown" PORT="table">
27
27
  <TR><TD BORDER="0"> </TD><TD BORDER="0"><font color="#505050">0</font></TD><TD BORDER="0"><font color="#505050">1</font></TD></TR>
28
28
  <TR><TD BORDER="0"><font color="#505050">0</font></TD><TD BORDER="1"> 10 </TD><TD BORDER="1"> ten </TD></TR>
29
29
  <TR><TD BORDER="0"><font color="#505050">1</font></TD><TD BORDER="1" PORT="ref0"> </TD><TD BORDER="1" PORT="ref1"> </TD></TR>
30
30
  </TABLE>
31
31
  > xlabel="Node 2⨯2"]
32
- node124372962549232:ref0 -> node124372960185536:table [style=solid]
33
- node124372962549232:ref1 -> node124372960183936:table [style=solid]
34
- node124372962727920 [label=<
32
+ node130351336425488:ref0 -> node130351332363056:table [style=solid]
33
+ node130351336425488:ref1 -> node130351332361456:table [style=solid]
34
+ node130351334904784 [label=<
35
35
  <TABLE BORDER="1" CELLBORDER="1" CELLSPACING="5" CELLPADDING="0" BGCOLOR="seagreen1" PORT="table">
36
36
  <TR><TD BORDER="1" STYLE="ROUNDED"> _root </TD><TD BORDER="1" STYLE="ROUNDED"> _count </TD></TR>
37
37
  <TR><TD BORDER="1" PORT="ref0"> </TD><TD BORDER="1"> 4 </TD></TR>
38
38
  </TABLE>
39
39
  > xlabel=AVLTree]
40
- node124372962727920:ref0 -> node124372962549232:table [style=solid]
41
- node124372964581056 [label=<
40
+ node130351334904784:ref0 -> node130351336425488:table [style=solid]
41
+ node130351336759104 [label=<
42
42
  <TABLE BORDER="3" CELLBORDER="1" CELLSPACING="5" CELLPADDING="0" BGCOLOR="#60a5ff" PORT="table">
43
43
  <TR><TD BORDER="1" STYLE="ROUNDED"> tree </TD></TR>
44
44
  <TR><TD BORDER="1" PORT="ref0"> </TD></TR>
45
45
  </TABLE>
46
46
  > xlabel=dict]
47
- node124372964581056:ref0 -> node124372962727920:table [style=solid]
48
- subgraph { rank=same; node124372960185536 -> node124372960183936[weight=10, style=invis]; }
47
+ node130351336759104:ref0 -> node130351334904784:table [style=solid]
48
+ subgraph { rank=same; node130351332363056 -> node130351332361456[weight=10, style=invis]; }
49
49
  }