memory-graph 0.3.28__tar.gz → 0.3.30__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 (225) hide show
  1. {memory_graph-0.3.28/memory_graph.egg-info → memory_graph-0.3.30}/PKG-INFO +17 -13
  2. {memory_graph-0.3.28 → memory_graph-0.3.30}/README.md +8 -5
  3. memory_graph-0.3.30/images/.ipynb_checkpoints/jupyter_example-checkpoint.ipynb +85 -0
  4. {memory_graph-0.3.28 → memory_graph-0.3.30}/images/add_one.gv +18 -18
  5. memory_graph-0.3.30/images/avltree.py~ +41 -0
  6. {memory_graph-0.3.28 → memory_graph-0.3.30}/images/avltree_dir.gv +5 -5
  7. memory_graph-0.3.30/images/avltree_fail.gv +22 -0
  8. {memory_graph-0.3.28 → memory_graph-0.3.30}/images/avltree_key_value.gv +12 -12
  9. {memory_graph-0.3.28 → memory_graph-0.3.30}/images/avltree_leaf.gv +5 -5
  10. {memory_graph-0.3.28 → memory_graph-0.3.30}/images/avltree_linear.gv +12 -12
  11. {memory_graph-0.3.28 → memory_graph-0.3.30}/images/avltree_table.gv +12 -12
  12. {memory_graph-0.3.28 → memory_graph-0.3.30}/images/bin_tree.gv +35 -35
  13. memory_graph-0.3.30/images/bin_tree2.py +31 -0
  14. memory_graph-0.3.30/images/bin_tree2.py~ +31 -0
  15. {memory_graph-0.3.28 → memory_graph-0.3.30}/images/copies.gv +20 -20
  16. {memory_graph-0.3.28 → memory_graph-0.3.30}/images/copy_method.gv +16 -16
  17. {memory_graph-0.3.28 → memory_graph-0.3.30}/images/create_gif.sh +1 -0
  18. {memory_graph-0.3.28 → memory_graph-0.3.30}/images/debugging01.gv +8 -8
  19. {memory_graph-0.3.28 → memory_graph-0.3.30}/images/debugging01.png +0 -0
  20. {memory_graph-0.3.28 → memory_graph-0.3.30}/images/debugging02.gv +11 -11
  21. {memory_graph-0.3.28 → memory_graph-0.3.30}/images/debugging02.png +0 -0
  22. {memory_graph-0.3.28 → memory_graph-0.3.30}/images/debugging03.gv +13 -13
  23. {memory_graph-0.3.28 → memory_graph-0.3.30}/images/debugging03.png +0 -0
  24. {memory_graph-0.3.28 → memory_graph-0.3.30}/images/debugging04.gv +15 -15
  25. {memory_graph-0.3.28 → memory_graph-0.3.30}/images/debugging04.png +0 -0
  26. {memory_graph-0.3.28 → memory_graph-0.3.30}/images/debugging05.gv +17 -17
  27. {memory_graph-0.3.28 → memory_graph-0.3.30}/images/debugging05.png +0 -0
  28. {memory_graph-0.3.28 → memory_graph-0.3.30}/images/debugging06.gv +17 -17
  29. {memory_graph-0.3.28 → memory_graph-0.3.30}/images/debugging06.png +0 -0
  30. memory_graph-0.3.30/images/depth.gv +178 -0
  31. {memory_graph-0.3.28 → memory_graph-0.3.30}/images/extension_numpy.gv +8 -8
  32. {memory_graph-0.3.28 → memory_graph-0.3.30}/images/extension_pandas.gv +8 -8
  33. {memory_graph-0.3.28 → memory_graph-0.3.30}/images/factorial0.gv +3 -3
  34. {memory_graph-0.3.28 → memory_graph-0.3.30}/images/factorial0.png +0 -0
  35. memory_graph-0.3.30/images/factorial01.gv +15 -0
  36. memory_graph-0.3.30/images/factorial02.gv +22 -0
  37. memory_graph-0.3.30/images/factorial03.gv +28 -0
  38. memory_graph-0.3.30/images/factorial04.gv +34 -0
  39. memory_graph-0.3.30/images/factorial05.gv +35 -0
  40. memory_graph-0.3.30/images/factorial06.gv +29 -0
  41. memory_graph-0.3.30/images/factorial07.gv +23 -0
  42. {memory_graph-0.3.28 → memory_graph-0.3.30}/images/factorial1.gv +6 -6
  43. {memory_graph-0.3.28 → memory_graph-0.3.30}/images/factorial1.png +0 -0
  44. {memory_graph-0.3.28 → memory_graph-0.3.30}/images/factorial2.gv +8 -8
  45. {memory_graph-0.3.28 → memory_graph-0.3.30}/images/factorial2.png +0 -0
  46. {memory_graph-0.3.28 → memory_graph-0.3.30}/images/factorial3.gv +10 -10
  47. {memory_graph-0.3.28 → memory_graph-0.3.30}/images/factorial3.png +0 -0
  48. {memory_graph-0.3.28 → memory_graph-0.3.30}/images/factorial4.gv +10 -10
  49. {memory_graph-0.3.28 → memory_graph-0.3.30}/images/factorial4.png +0 -0
  50. {memory_graph-0.3.28 → memory_graph-0.3.30}/images/factorial5.gv +8 -8
  51. {memory_graph-0.3.28 → memory_graph-0.3.30}/images/factorial5.png +0 -0
  52. {memory_graph-0.3.28 → memory_graph-0.3.30}/images/factorial6.gv +6 -6
  53. {memory_graph-0.3.28 → memory_graph-0.3.30}/images/factorial6.png +0 -0
  54. {memory_graph-0.3.28 → memory_graph-0.3.30}/images/hash_set.gv +29 -29
  55. memory_graph-0.3.30/images/hidden_edges.gv +37 -0
  56. memory_graph-0.3.30/images/hidden_edges.py +8 -0
  57. memory_graph-0.3.30/images/hidden_edges.py~ +9 -0
  58. {memory_graph-0.3.28 → memory_graph-0.3.30}/images/highlight.gv +16 -16
  59. {memory_graph-0.3.28 → memory_graph-0.3.30}/images/immutable1.gv +4 -4
  60. {memory_graph-0.3.28 → memory_graph-0.3.30}/images/immutable2.gv +6 -6
  61. {memory_graph-0.3.28 → memory_graph-0.3.30}/images/introspect_depth.gv +56 -56
  62. memory_graph-0.3.30/images/introspect_depth.png +0 -0
  63. memory_graph-0.3.30/images/introspect_depth.py~ +26 -0
  64. {memory_graph-0.3.28 → memory_graph-0.3.30}/images/linked_list.gv +20 -20
  65. memory_graph-0.3.30/images/log.txt +186 -0
  66. {memory_graph-0.3.28 → memory_graph-0.3.30}/images/many_types.gv +12 -12
  67. memory_graph-0.3.30/images/memory_graph.gv +70 -0
  68. memory_graph-0.3.30/images/memory_graph.gv.pdf +0 -0
  69. memory_graph-0.3.30/images/memory_graph.pdf +0 -0
  70. {memory_graph-0.3.28 → memory_graph-0.3.30}/images/mutable1.gv +4 -4
  71. {memory_graph-0.3.28 → memory_graph-0.3.30}/images/mutable2.gv +4 -4
  72. memory_graph-0.3.30/images/my_graph.gv +31 -0
  73. memory_graph-0.3.30/images/my_graph.pdf +0 -0
  74. memory_graph-0.3.30/images/not_node_types.py~ +9 -0
  75. {memory_graph-0.3.28 → memory_graph-0.3.30}/images/not_node_types1.gv +6 -6
  76. {memory_graph-0.3.28 → memory_graph-0.3.30}/images/not_node_types2.gv +14 -14
  77. {memory_graph-0.3.28 → memory_graph-0.3.30}/images/power_set0.gv +11 -11
  78. {memory_graph-0.3.28 → memory_graph-0.3.30}/images/power_set0.png +0 -0
  79. {memory_graph-0.3.28 → memory_graph-0.3.30}/images/power_set1.gv +17 -17
  80. {memory_graph-0.3.28 → memory_graph-0.3.30}/images/power_set1.png +0 -0
  81. {memory_graph-0.3.28 → memory_graph-0.3.30}/images/power_set10.gv +36 -36
  82. {memory_graph-0.3.28 → memory_graph-0.3.30}/images/power_set10.png +0 -0
  83. {memory_graph-0.3.28 → memory_graph-0.3.30}/images/power_set11.gv +31 -31
  84. {memory_graph-0.3.28 → memory_graph-0.3.30}/images/power_set11.png +0 -0
  85. {memory_graph-0.3.28 → memory_graph-0.3.30}/images/power_set12.gv +31 -31
  86. {memory_graph-0.3.28 → memory_graph-0.3.30}/images/power_set12.png +0 -0
  87. {memory_graph-0.3.28 → memory_graph-0.3.30}/images/power_set13.gv +36 -36
  88. {memory_graph-0.3.28 → memory_graph-0.3.30}/images/power_set13.png +0 -0
  89. {memory_graph-0.3.28 → memory_graph-0.3.30}/images/power_set14.gv +41 -41
  90. {memory_graph-0.3.28 → memory_graph-0.3.30}/images/power_set14.png +0 -0
  91. {memory_graph-0.3.28 → memory_graph-0.3.30}/images/power_set15.gv +43 -43
  92. {memory_graph-0.3.28 → memory_graph-0.3.30}/images/power_set15.png +0 -0
  93. {memory_graph-0.3.28 → memory_graph-0.3.30}/images/power_set16.gv +40 -40
  94. {memory_graph-0.3.28 → memory_graph-0.3.30}/images/power_set16.png +0 -0
  95. {memory_graph-0.3.28 → memory_graph-0.3.30}/images/power_set17.gv +40 -40
  96. {memory_graph-0.3.28 → memory_graph-0.3.30}/images/power_set17.png +0 -0
  97. {memory_graph-0.3.28 → memory_graph-0.3.30}/images/power_set18.gv +45 -45
  98. {memory_graph-0.3.28 → memory_graph-0.3.30}/images/power_set18.png +0 -0
  99. {memory_graph-0.3.28 → memory_graph-0.3.30}/images/power_set19.gv +47 -47
  100. {memory_graph-0.3.28 → memory_graph-0.3.30}/images/power_set19.png +0 -0
  101. {memory_graph-0.3.28 → memory_graph-0.3.30}/images/power_set2.gv +22 -22
  102. {memory_graph-0.3.28 → memory_graph-0.3.30}/images/power_set2.png +0 -0
  103. {memory_graph-0.3.28 → memory_graph-0.3.30}/images/power_set20.gv +44 -44
  104. {memory_graph-0.3.28 → memory_graph-0.3.30}/images/power_set20.png +0 -0
  105. {memory_graph-0.3.28 → memory_graph-0.3.30}/images/power_set21.gv +39 -39
  106. {memory_graph-0.3.28 → memory_graph-0.3.30}/images/power_set21.png +0 -0
  107. {memory_graph-0.3.28 → memory_graph-0.3.30}/images/power_set22.gv +34 -34
  108. {memory_graph-0.3.28 → memory_graph-0.3.30}/images/power_set22.png +0 -0
  109. {memory_graph-0.3.28 → memory_graph-0.3.30}/images/power_set23.gv +28 -28
  110. {memory_graph-0.3.28 → memory_graph-0.3.30}/images/power_set23.png +0 -0
  111. {memory_graph-0.3.28 → memory_graph-0.3.30}/images/power_set3.gv +27 -27
  112. {memory_graph-0.3.28 → memory_graph-0.3.30}/images/power_set3.png +0 -0
  113. {memory_graph-0.3.28 → memory_graph-0.3.30}/images/power_set4.gv +32 -32
  114. {memory_graph-0.3.28 → memory_graph-0.3.30}/images/power_set4.png +0 -0
  115. {memory_graph-0.3.28 → memory_graph-0.3.30}/images/power_set5.gv +34 -34
  116. {memory_graph-0.3.28 → memory_graph-0.3.30}/images/power_set5.png +0 -0
  117. {memory_graph-0.3.28 → memory_graph-0.3.30}/images/power_set6.gv +32 -32
  118. {memory_graph-0.3.28 → memory_graph-0.3.30}/images/power_set6.png +0 -0
  119. {memory_graph-0.3.28 → memory_graph-0.3.30}/images/power_set7.gv +32 -32
  120. {memory_graph-0.3.28 → memory_graph-0.3.30}/images/power_set7.png +0 -0
  121. {memory_graph-0.3.28 → memory_graph-0.3.30}/images/power_set8.gv +37 -37
  122. {memory_graph-0.3.28 → memory_graph-0.3.30}/images/power_set8.png +0 -0
  123. {memory_graph-0.3.28 → memory_graph-0.3.30}/images/power_set9.gv +39 -39
  124. {memory_graph-0.3.28 → memory_graph-0.3.30}/images/power_set9.png +0 -0
  125. {memory_graph-0.3.28 → memory_graph-0.3.30}/images/rebinding1.gv +4 -4
  126. {memory_graph-0.3.28 → memory_graph-0.3.30}/images/rebinding2.gv +6 -6
  127. {memory_graph-0.3.28 → memory_graph-0.3.30}/memory_graph/__init__.py +45 -33
  128. {memory_graph-0.3.28 → memory_graph-0.3.30}/memory_graph/utils.py +1 -1
  129. {memory_graph-0.3.28 → memory_graph-0.3.30/memory_graph.egg-info}/PKG-INFO +17 -13
  130. {memory_graph-0.3.28 → memory_graph-0.3.30}/memory_graph.egg-info/SOURCES.txt +26 -4
  131. memory_graph-0.3.30/pyproject.toml +32 -0
  132. memory_graph-0.3.30/setup.py +7 -0
  133. memory_graph-0.3.28/images/cmp.sh +0 -3
  134. memory_graph-0.3.28/images/cmp.sh~ +0 -1
  135. memory_graph-0.3.28/images/name_rebinding.py~ +0 -7
  136. memory_graph-0.3.28/memory_graph/t.py +0 -6
  137. memory_graph-0.3.28/setup.py +0 -35
  138. {memory_graph-0.3.28 → memory_graph-0.3.30}/LICENSE.txt +0 -0
  139. {memory_graph-0.3.28 → memory_graph-0.3.30}/MANIFEST.in +0 -0
  140. {memory_graph-0.3.28 → memory_graph-0.3.30}/images/add_one.png +0 -0
  141. {memory_graph-0.3.28 → memory_graph-0.3.30}/images/add_one.py +0 -0
  142. {memory_graph-0.3.28 → memory_graph-0.3.30}/images/avltree.py +0 -0
  143. {memory_graph-0.3.28 → memory_graph-0.3.30}/images/avltree_dir.png +0 -0
  144. {memory_graph-0.3.28 → memory_graph-0.3.30}/images/avltree_fail.png +0 -0
  145. {memory_graph-0.3.28 → memory_graph-0.3.30}/images/avltree_key_value.png +0 -0
  146. {memory_graph-0.3.28 → memory_graph-0.3.30}/images/avltree_leaf.png +0 -0
  147. {memory_graph-0.3.28 → memory_graph-0.3.30}/images/avltree_linear.png +0 -0
  148. {memory_graph-0.3.28 → memory_graph-0.3.30}/images/avltree_table.png +0 -0
  149. {memory_graph-0.3.28 → memory_graph-0.3.30}/images/bin_tree.png +0 -0
  150. {memory_graph-0.3.28 → memory_graph-0.3.30}/images/bin_tree.py +0 -0
  151. {memory_graph-0.3.28 → memory_graph-0.3.30}/images/copies.png +0 -0
  152. {memory_graph-0.3.28 → memory_graph-0.3.30}/images/copies.py +0 -0
  153. {memory_graph-0.3.28 → memory_graph-0.3.30}/images/copy_method.png +0 -0
  154. {memory_graph-0.3.28 → memory_graph-0.3.30}/images/copy_method.py +0 -0
  155. {memory_graph-0.3.28 → memory_graph-0.3.30}/images/create_images.sh +0 -0
  156. {memory_graph-0.3.28 → memory_graph-0.3.30}/images/debug_vscode.png +0 -0
  157. {memory_graph-0.3.28 → memory_graph-0.3.30}/images/debugging.gif +0 -0
  158. {memory_graph-0.3.28 → memory_graph-0.3.30}/images/debugging.py +0 -0
  159. /memory_graph-0.3.28/images/introspect_depth.png → /memory_graph-0.3.30/images/depth.png +0 -0
  160. {memory_graph-0.3.28 → memory_graph-0.3.30}/images/extension_numpy.png +0 -0
  161. {memory_graph-0.3.28 → memory_graph-0.3.30}/images/extension_numpy.py +0 -0
  162. {memory_graph-0.3.28 → memory_graph-0.3.30}/images/extension_pandas.png +0 -0
  163. {memory_graph-0.3.28 → memory_graph-0.3.30}/images/extension_pandas.py +0 -0
  164. {memory_graph-0.3.28 → memory_graph-0.3.30}/images/factorial.gif +0 -0
  165. {memory_graph-0.3.28 → memory_graph-0.3.30}/images/factorial.py +0 -0
  166. {memory_graph-0.3.28 → memory_graph-0.3.30}/images/hash_set.png +0 -0
  167. {memory_graph-0.3.28 → memory_graph-0.3.30}/images/hash_set.py +0 -0
  168. {memory_graph-0.3.28 → memory_graph-0.3.30}/images/hidden_edges.png +0 -0
  169. {memory_graph-0.3.28 → memory_graph-0.3.30}/images/highlight.png +0 -0
  170. {memory_graph-0.3.28 → memory_graph-0.3.30}/images/highlight.py +0 -0
  171. {memory_graph-0.3.28 → memory_graph-0.3.30}/images/immutable.py +0 -0
  172. {memory_graph-0.3.28 → memory_graph-0.3.30}/images/immutable1.png +0 -0
  173. {memory_graph-0.3.28 → memory_graph-0.3.30}/images/immutable2.png +0 -0
  174. {memory_graph-0.3.28 → memory_graph-0.3.30}/images/introspect_depth.py +0 -0
  175. {memory_graph-0.3.28 → memory_graph-0.3.30}/images/ipython.png +0 -0
  176. {memory_graph-0.3.28 → memory_graph-0.3.30}/images/jupyter_example.png +0 -0
  177. {memory_graph-0.3.28 → memory_graph-0.3.30}/images/linked_list.png +0 -0
  178. {memory_graph-0.3.28 → memory_graph-0.3.30}/images/linked_list.py +0 -0
  179. {memory_graph-0.3.28 → memory_graph-0.3.30}/images/many_types.png +0 -0
  180. {memory_graph-0.3.28 → memory_graph-0.3.30}/images/many_types.py +0 -0
  181. {memory_graph-0.3.28 → memory_graph-0.3.30}/images/mutable.py +0 -0
  182. {memory_graph-0.3.28 → memory_graph-0.3.30}/images/mutable1.png +0 -0
  183. {memory_graph-0.3.28 → memory_graph-0.3.30}/images/mutable2.png +0 -0
  184. {memory_graph-0.3.28 → memory_graph-0.3.30}/images/name_rebinding.py +0 -0
  185. {memory_graph-0.3.28 → memory_graph-0.3.30}/images/not_node_types.py +0 -0
  186. {memory_graph-0.3.28 → memory_graph-0.3.30}/images/not_node_types1.png +0 -0
  187. {memory_graph-0.3.28 → memory_graph-0.3.30}/images/not_node_types2.png +0 -0
  188. {memory_graph-0.3.28 → memory_graph-0.3.30}/images/power_set.gif +0 -0
  189. {memory_graph-0.3.28 → memory_graph-0.3.30}/images/power_set.py +0 -0
  190. {memory_graph-0.3.28 → memory_graph-0.3.30}/images/pyodide.png +0 -0
  191. {memory_graph-0.3.28 → memory_graph-0.3.30}/images/rebinding1.png +0 -0
  192. {memory_graph-0.3.28 → memory_graph-0.3.30}/images/rebinding2.png +0 -0
  193. {memory_graph-0.3.28 → memory_graph-0.3.30}/images/uva.png +0 -0
  194. {memory_graph-0.3.28 → memory_graph-0.3.30}/images/vscode_copying.gif +0 -0
  195. {memory_graph-0.3.28 → memory_graph-0.3.30}/memory_graph/call_stack.py +0 -0
  196. {memory_graph-0.3.28 → memory_graph-0.3.30}/memory_graph/config.py +0 -0
  197. {memory_graph-0.3.28 → memory_graph-0.3.30}/memory_graph/config_default.py +0 -0
  198. {memory_graph-0.3.28 → memory_graph-0.3.30}/memory_graph/config_helpers.py +0 -0
  199. {memory_graph-0.3.28 → memory_graph-0.3.30}/memory_graph/extension_numpy.py +0 -0
  200. {memory_graph-0.3.28 → memory_graph-0.3.30}/memory_graph/extension_pandas.py +0 -0
  201. {memory_graph-0.3.28 → memory_graph-0.3.30}/memory_graph/html_table.py +0 -0
  202. {memory_graph-0.3.28 → memory_graph-0.3.30}/memory_graph/list_view.py +0 -0
  203. {memory_graph-0.3.28 → memory_graph-0.3.30}/memory_graph/memory_to_nodes.py +0 -0
  204. {memory_graph-0.3.28 → memory_graph-0.3.30}/memory_graph/node_base.py +0 -0
  205. {memory_graph-0.3.28 → memory_graph-0.3.30}/memory_graph/node_key_value.py +0 -0
  206. {memory_graph-0.3.28 → memory_graph-0.3.30}/memory_graph/node_leaf.py +0 -0
  207. {memory_graph-0.3.28 → memory_graph-0.3.30}/memory_graph/node_linear.py +0 -0
  208. {memory_graph-0.3.28 → memory_graph-0.3.30}/memory_graph/node_table.py +0 -0
  209. {memory_graph-0.3.28 → memory_graph-0.3.30}/memory_graph/sequence.py +0 -0
  210. {memory_graph-0.3.28 → memory_graph-0.3.30}/memory_graph/slicer.py +0 -0
  211. {memory_graph-0.3.28 → memory_graph-0.3.30}/memory_graph/slices.py +0 -0
  212. {memory_graph-0.3.28 → memory_graph-0.3.30}/memory_graph/slices_iterator.py +0 -0
  213. {memory_graph-0.3.28 → memory_graph-0.3.30}/memory_graph/slices_table_iterator.py +0 -0
  214. {memory_graph-0.3.28 → memory_graph-0.3.30}/memory_graph/test.py +0 -0
  215. {memory_graph-0.3.28 → memory_graph-0.3.30}/memory_graph/test_max_graph_depth.py +0 -0
  216. {memory_graph-0.3.28 → memory_graph-0.3.30}/memory_graph/test_memory_graph.py +0 -0
  217. {memory_graph-0.3.28 → memory_graph-0.3.30}/memory_graph/test_memory_to_nodes.py +0 -0
  218. {memory_graph-0.3.28 → memory_graph-0.3.30}/memory_graph/test_sequence.py +0 -0
  219. {memory_graph-0.3.28 → memory_graph-0.3.30}/memory_graph/test_slicer.py +0 -0
  220. {memory_graph-0.3.28 → memory_graph-0.3.30}/memory_graph/test_slices.py +0 -0
  221. {memory_graph-0.3.28 → memory_graph-0.3.30}/memory_graph/test_slices_iterator.py +0 -0
  222. {memory_graph-0.3.28 → memory_graph-0.3.30}/memory_graph.egg-info/dependency_links.txt +0 -0
  223. {memory_graph-0.3.28 → memory_graph-0.3.30}/memory_graph.egg-info/requires.txt +0 -0
  224. {memory_graph-0.3.28 → memory_graph-0.3.30}/memory_graph.egg-info/top_level.txt +0 -0
  225. {memory_graph-0.3.28 → memory_graph-0.3.30}/setup.cfg +0 -0
@@ -1,21 +1,22 @@
1
- Metadata-Version: 2.1
2
- Name: memory_graph
3
- Version: 0.3.28
1
+ Metadata-Version: 2.4
2
+ Name: memory-graph
3
+ Version: 0.3.30
4
4
  Summary: Teaching tool and debugging aid in context of references, mutable data types, and shallow and deep copy.
5
- Home-page: https://github.com/bterwijn/memory_graph
6
- Author: Bas Terwijn
7
- Author-email: bterwijn@gmail.com
8
- License: BSD 2-clause
5
+ Author-email: Bas Terwijn <bterwijn@gmail.com>
6
+ License-Expression: BSD-2-Clause
7
+ Project-URL: Homepage, https://github.com/bterwijn/memory_graph
8
+ Project-URL: Repository, https://github.com/bterwijn/memory_graph.git
9
9
  Classifier: Development Status :: 4 - Beta
10
10
  Classifier: Intended Audience :: Education
11
11
  Classifier: Intended Audience :: Developers
12
- Classifier: License :: OSI Approved :: BSD License
13
12
  Classifier: Programming Language :: Python :: 3
14
13
  Classifier: Topic :: Education
15
14
  Classifier: Topic :: Software Development :: Debuggers
15
+ Requires-Python: >=3.7
16
16
  Description-Content-Type: text/markdown
17
17
  License-File: LICENSE.txt
18
18
  Requires-Dist: graphviz
19
+ Dynamic: license-file
19
20
 
20
21
  # Installation #
21
22
  Install (or upgrade) `memory_graph` using pip:
@@ -104,7 +105,9 @@ A better way to understand what data is shared is to draw a graph of the data us
104
105
 
105
106
  [Call Stack](#call-stack)
106
107
 
107
- [Debugging](#Debugging)
108
+ [Global Import Trick](#global-import-trick)
109
+
110
+ [Debugging](#debugging)
108
111
 
109
112
  [Data Structure Examples](#data-structure-examples)
110
113
 
@@ -362,18 +365,19 @@ The ```mg.stack()``` doesn't work well in *watch* context in most debuggers beca
362
365
  |:---|:---|
363
366
  | **pdb, pudb** | `mg.stack_pdb()` |
364
367
  | **Visual Studio Code** | `mg.stack_vscode()` |
365
- | **Pycharm** | `mg.stack_pycharm()` |
368
+ | **Cursor AI** | `mg.stack_cursor()` |
369
+ | **PyCharm** | `mg.stack_pycharm()` |
366
370
 
367
371
  ![vscode_copying.gif](https://raw.githubusercontent.com/bterwijn/memory_graph/main/images/vscode_copying.gif)
368
372
 
369
373
  ## Other Debuggers ##
370
- For other debuggers, invoke this function within the *watch* context. Then, in the "call_stack.txt" file, identify the slice of functions you wish to include in the call stack.
374
+ For other debuggers, invoke this function within the *watch* context. Then, in the "call_stack.txt" file, identify the slice of functions you wish to include as stack frames in the call stack.
371
375
  ```
372
376
  mg.save_call_stack("call_stack.txt")
373
377
  ```
374
- Choose 'after' and 'up_to' what function you want to slice and then call this function to get the desired call stack:
378
+ Choose 'after' and 'through' what function you want to slice and then call this function to get the desired call stack. The `drop` argument can optionally be used to drop a number of stack frames after the `after_function`:
375
379
  ```
376
- mg.stack_after_up_to(after_function, up_to_function="<module>")
380
+ mg.stack_after_through(after_function, through_function="<module>", drop=0)
377
381
  ```
378
382
 
379
383
  ## Debugging without Debugger Tool ##
@@ -85,7 +85,9 @@ A better way to understand what data is shared is to draw a graph of the data us
85
85
 
86
86
  [Call Stack](#call-stack)
87
87
 
88
- [Debugging](#Debugging)
88
+ [Global Import Trick](#global-import-trick)
89
+
90
+ [Debugging](#debugging)
89
91
 
90
92
  [Data Structure Examples](#data-structure-examples)
91
93
 
@@ -343,18 +345,19 @@ The ```mg.stack()``` doesn't work well in *watch* context in most debuggers beca
343
345
  |:---|:---|
344
346
  | **pdb, pudb** | `mg.stack_pdb()` |
345
347
  | **Visual Studio Code** | `mg.stack_vscode()` |
346
- | **Pycharm** | `mg.stack_pycharm()` |
348
+ | **Cursor AI** | `mg.stack_cursor()` |
349
+ | **PyCharm** | `mg.stack_pycharm()` |
347
350
 
348
351
  ![vscode_copying.gif](https://raw.githubusercontent.com/bterwijn/memory_graph/main/images/vscode_copying.gif)
349
352
 
350
353
  ## Other Debuggers ##
351
- For other debuggers, invoke this function within the *watch* context. Then, in the "call_stack.txt" file, identify the slice of functions you wish to include in the call stack.
354
+ For other debuggers, invoke this function within the *watch* context. Then, in the "call_stack.txt" file, identify the slice of functions you wish to include as stack frames in the call stack.
352
355
  ```
353
356
  mg.save_call_stack("call_stack.txt")
354
357
  ```
355
- Choose 'after' and 'up_to' what function you want to slice and then call this function to get the desired call stack:
358
+ Choose 'after' and 'through' what function you want to slice and then call this function to get the desired call stack. The `drop` argument can optionally be used to drop a number of stack frames after the `after_function`:
356
359
  ```
357
- mg.stack_after_up_to(after_function, up_to_function="<module>")
360
+ mg.stack_after_through(after_function, through_function="<module>", drop=0)
358
361
  ```
359
362
 
360
363
  ## Debugging without Debugger Tool ##
@@ -0,0 +1,85 @@
1
+ {
2
+ "cells": [
3
+ {
4
+ "cell_type": "markdown",
5
+ "id": "23f6d43f-dd17-4020-971e-5bb8a5b1e30b",
6
+ "metadata": {},
7
+ "source": [
8
+ "# test: locals_jupyter()\n",
9
+ "Show a graph build with the filtered Jupyter locals using function `mg.locals_jupyter()`. Just adding integers to a list:"
10
+ ]
11
+ },
12
+ {
13
+ "cell_type": "code",
14
+ "execution_count": null,
15
+ "id": "e8913787-bbef-4adb-b027-ac0f28500233",
16
+ "metadata": {},
17
+ "outputs": [],
18
+ "source": [
19
+ "import memory_graph as mg\n",
20
+ "\n",
21
+ "data = []\n",
22
+ "for i in range(5):\n",
23
+ " data.append(i)\n",
24
+ " display(mg.create_graph(mg.locals_jupyter())) # display in jupyter notebook\n",
25
+ " mg.block(mg.show, mg.locals_jupyter()) # display in PDF reader\n",
26
+ " "
27
+ ]
28
+ },
29
+ {
30
+ "cell_type": "markdown",
31
+ "id": "f66d9b8d-0937-4ad0-97b4-a7459e84c4f2",
32
+ "metadata": {},
33
+ "source": [
34
+ "# test: get_call_stack_jupyter()\n",
35
+ "Show a graph build the filterd Jupyter call stack from function `mg.get_call_stack_jupyter()`. Recursively filling a list with all permutation of elements with resampling:"
36
+ ]
37
+ },
38
+ {
39
+ "cell_type": "code",
40
+ "execution_count": null,
41
+ "id": "15d0c443-7cc6-4b4f-a9db-598aaf261364",
42
+ "metadata": {},
43
+ "outputs": [],
44
+ "source": [
45
+ "import memory_graph as mg\n",
46
+ "\n",
47
+ "def get_all_permutations(permutations, elements, data, max_length):\n",
48
+ " if len(data) == max_length: # recursive stop condition\n",
49
+ " permutations.append(data.copy())\n",
50
+ " else:\n",
51
+ " for i in elements:\n",
52
+ " data.append(i)\n",
53
+ " mg.block(mg.show, mg.get_call_stack_jupyter())\n",
54
+ " get_all_permutations(permutations, elements, data, max_length)\n",
55
+ " data.pop()\n",
56
+ " mg.block(mg.show, mg.get_call_stack_jupyter())\n",
57
+ "\n",
58
+ "permutations = []\n",
59
+ "get_all_permutations(permutations, ['L','R'], [], 3)\n",
60
+ "print(permutations)"
61
+ ]
62
+ }
63
+ ],
64
+ "metadata": {
65
+ "kernelspec": {
66
+ "display_name": "Python 3 (ipykernel)",
67
+ "language": "python",
68
+ "name": "python3"
69
+ },
70
+ "language_info": {
71
+ "codemirror_mode": {
72
+ "name": "ipython",
73
+ "version": 3
74
+ },
75
+ "file_extension": ".py",
76
+ "mimetype": "text/x-python",
77
+ "name": "python",
78
+ "nbconvert_exporter": "python",
79
+ "pygments_lexer": "ipython3",
80
+ "version": "3.12.3"
81
+ }
82
+ },
83
+ "nbformat": 4,
84
+ "nbformat_minor": 5
85
+ }
@@ -1,6 +1,6 @@
1
1
  digraph memory_graph {
2
2
  node [shape=plaintext]
3
- node136650744844864 [label=<
3
+ node128148841714240 [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
- node136650743234112 [label=<
11
+ node128148831943744 [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
- node136650744843072 [label=<
18
+ node128148841712448 [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
- node136650743230144 [label=<
25
+ node128148831944448 [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
- node136650743230144:ref0 -> node136650744844864:table [style=solid]
32
- node136650743230144:ref1 -> node136650743234112:table [style=solid]
33
- node136650743230144:ref2 -> node136650744843072:table [style=solid]
34
- node136650744825872 [label=<
31
+ node128148831944448:ref0 -> node128148841714240:table [style=solid]
32
+ node128148831944448:ref1 -> node128148831943744:table [style=solid]
33
+ node128148831944448:ref2 -> node128148841712448:table [style=solid]
34
+ node128148841695248 [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
- node136650743119168 [label=<
42
+ node128148831823552 [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
- node136650743113856 [label=<
50
+ node128148831249536 [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
- node136650743113856:ref0 -> node136650744844864:table [style=solid]
57
- node136650743113856:ref1 -> node136650744825872:table [style=solid]
58
- node136650743113856:ref2 -> node136650743119168:table [style=solid]
59
- node136650740772896 [label=<
56
+ node128148831249536:ref0 -> node128148841714240:table [style=solid]
57
+ node128148831249536:ref1 -> node128148841695248:table [style=solid]
58
+ node128148831249536:ref2 -> node128148831823552:table [style=solid]
59
+ node128148828831440 [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
- 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]; }
65
+ node128148828831440:ref0 -> node128148831944448:table [style=solid]
66
+ node128148828831440:ref1 -> node128148831249536:table [style=solid]
67
+ subgraph { rank=same; node128148831944448 -> node128148831249536[weight=10, style=invis]; }
68
+ subgraph { rank=same; node128148841714240 -> node128148831943744 -> node128148841712448 -> node128148841695248 -> node128148831823552[weight=10, style=invis]; }
69
69
  }
@@ -0,0 +1,41 @@
1
+ import memory_graph as mg
2
+ import bintrees
3
+
4
+ # Create an AVL tree
5
+ tree = bintrees.AVLTree()
6
+ tree.insert(10, "ten")
7
+ tree.insert(5, "five")
8
+ tree.insert(20, "twenty")
9
+ tree.insert(15, "fifteen")
10
+
11
+ mg.render(locals(), 'avltree_fail.png')
12
+
13
+ mg.config.type_to_color[bintrees.avltree.Node] = "sandybrown"
14
+ mg.render(locals(), 'avltree_color.png')
15
+
16
+ mg.config.type_to_node[bintrees.avltree.Node] = lambda data: mg.node_linear.Node_Linear(data, dir(data))
17
+ mg.config.type_to_slicer[bintrees.avltree.Node] = mg.slicer.Slicer()
18
+ mg.render(locals(), 'avltree_dir.png')
19
+
20
+ mg.config.type_to_node[bintrees.avltree.Node] = lambda data: mg.node_base.Node_Base(f"key:{data.key} value:{data.value}")
21
+ mg.render(locals(), 'avltree_base.png')
22
+
23
+ mg.config.type_to_node[bintrees.avltree.Node] = lambda data: mg.node_linear.Node_Linear(data,
24
+ ['left', data.left,
25
+ 'key', data.key,
26
+ 'value', data.value,
27
+ 'right', data.right])
28
+ mg.render(locals(), 'avltree_linear.png')
29
+
30
+ mg.config.type_to_node[bintrees.avltree.Node] = lambda data: mg.node_key_value.Node_Key_Value(data,
31
+ {'left': data.left,
32
+ 'key': data.key,
33
+ 'value': data.value,
34
+ 'right': data.right}.items())
35
+ mg.render(locals(), 'avltree_key_value.png')
36
+
37
+ mg.config.type_to_node[bintrees.avltree.Node] = lambda data: mg.node_table.Node_Table(data,
38
+ [[data.key, data.value],
39
+ [data.left, data.right]]
40
+ )
41
+ mg.render(locals(), 'avltree_table.png')
@@ -1,6 +1,6 @@
1
1
  digraph memory_graph {
2
2
  node [shape=plaintext]
3
- node130351336425488 [label=<
3
+ node131821402228752 [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
- node130351334904784 [label=<
41
+ node131821401230896 [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
- node130351334904784:ref0 -> node130351336425488:table [style=solid]
48
- node130351336759104 [label=<
47
+ node131821401230896:ref0 -> node131821402228752:table [style=solid]
48
+ node131821402562240 [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
- node130351336759104:ref0 -> node130351334904784:table [style=solid]
54
+ node131821402562240:ref0 -> node131821401230896:table [style=solid]
55
55
  }
@@ -0,0 +1,22 @@
1
+ digraph memory_graph {
2
+ node [shape=plaintext]
3
+ node124172493692400 [label=<
4
+ <TABLE BORDER="1" CELLBORDER="1" CELLSPACING="5" CELLPADDING="0" BGCOLOR="white" PORT="table">
5
+ <TR><TD BORDER="1"> &lt;bintrees.avltree.Node object at 0x70ef296... </TD></TR>
6
+ </TABLE>
7
+ > xlabel="Node"]
8
+ node124172492521984 [label=<
9
+ <TABLE BORDER="1" CELLBORDER="1" CELLSPACING="5" CELLPADDING="0" BGCOLOR="seagreen1" PORT="table">
10
+ <TR><TD BORDER="1" STYLE="ROUNDED"> _root </TD><TD BORDER="1" STYLE="ROUNDED"> _count </TD></TR>
11
+ <TR><TD BORDER="1" PORT="ref0"> </TD><TD BORDER="1"> 4 </TD></TR>
12
+ </TABLE>
13
+ > xlabel=AVLTree]
14
+ node124172492521984:ref0 -> node124172493692400:table [style=solid]
15
+ node124172495724224 [label=<
16
+ <TABLE BORDER="3" CELLBORDER="1" CELLSPACING="5" CELLPADDING="0" BGCOLOR="#60a5ff" PORT="table">
17
+ <TR><TD BORDER="1" STYLE="ROUNDED"> tree </TD></TR>
18
+ <TR><TD BORDER="1" PORT="ref0"> </TD></TR>
19
+ </TABLE>
20
+ > xlabel=dict]
21
+ node124172495724224:ref0 -> node124172492521984:table [style=solid]
22
+ }
@@ -1,6 +1,6 @@
1
1
  digraph memory_graph {
2
2
  node [shape=plaintext]
3
- node130351332363056 [label=<
3
+ node131821398109904 [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
- node130351332361296 [label=<
11
+ node131821398108144 [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
- node130351332361456 [label=<
19
+ node131821398108304 [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
- node130351332361456:ref0 -> node130351332361296:table [style=solid]
26
- node130351336425488 [label=<
25
+ node131821398108304:ref0 -> node131821398108144:table [style=solid]
26
+ node131821402228752 [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
- node130351336425488:ref0 -> node130351332363056:table [style=solid]
33
- node130351336425488:ref1 -> node130351332361456:table [style=solid]
34
- node130351334904784 [label=<
32
+ node131821402228752:ref0 -> node131821398109904:table [style=solid]
33
+ node131821402228752:ref1 -> node131821398108304:table [style=solid]
34
+ node131821401230896 [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
- node130351334904784:ref0 -> node130351336425488:table [style=solid]
41
- node130351336759104 [label=<
40
+ node131821401230896:ref0 -> node131821402228752:table [style=solid]
41
+ node131821402562240 [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
- node130351336759104:ref0 -> node130351334904784:table [style=solid]
48
- subgraph { rank=same; node130351332363056 -> node130351332361456[weight=10, style=invis]; }
47
+ node131821402562240:ref0 -> node131821401230896:table [style=solid]
48
+ subgraph { rank=same; node131821398109904 -> node131821398108304[weight=10, style=invis]; }
49
49
  }
@@ -1,22 +1,22 @@
1
1
  digraph memory_graph {
2
2
  node [shape=plaintext]
3
- node130351336425488 [label=<
3
+ node131821402228752 [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
- node130351334904784 [label=<
8
+ node131821401230896 [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
- node130351334904784:ref0 -> node130351336425488:table [style=solid]
15
- node130351336759104 [label=<
14
+ node131821401230896:ref0 -> node131821402228752:table [style=solid]
15
+ node131821402562240 [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
- node130351336759104:ref0 -> node130351334904784:table [style=solid]
21
+ node131821402562240:ref0 -> node131821401230896:table [style=solid]
22
22
  }
@@ -1,6 +1,6 @@
1
1
  digraph memory_graph {
2
2
  node [shape=plaintext]
3
- node130351332363056 [label=<
3
+ node131821398109904 [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
- node130351332361296 [label=<
15
+ node131821398108144 [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
- node130351332361456 [label=<
27
+ node131821398108304 [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
- node130351332361456:ref0 -> node130351332361296:table [style=solid]
34
- node130351336425488 [label=<
33
+ node131821398108304:ref0 -> node131821398108144:table [style=solid]
34
+ node131821402228752 [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
- node130351336425488:ref0 -> node130351332363056:table [style=solid]
41
- node130351336425488:ref1 -> node130351332361456:table [style=solid]
42
- node130351334904784 [label=<
40
+ node131821402228752:ref0 -> node131821398109904:table [style=solid]
41
+ node131821402228752:ref1 -> node131821398108304:table [style=solid]
42
+ node131821401230896 [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
- node130351334904784:ref0 -> node130351336425488:table [style=solid]
49
- node130351336759104 [label=<
48
+ node131821401230896:ref0 -> node131821402228752:table [style=solid]
49
+ node131821402562240 [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
- node130351336759104:ref0 -> node130351334904784:table [style=solid]
56
- subgraph { rank=same; node130351332363056 -> node130351332361456[weight=10, style=invis]; }
55
+ node131821402562240:ref0 -> node131821401230896:table [style=solid]
56
+ subgraph { rank=same; node131821398109904 -> node131821398108304[weight=10, style=invis]; }
57
57
  }
@@ -1,49 +1,49 @@
1
1
  digraph memory_graph {
2
2
  node [shape=plaintext]
3
- node130351332363056 [label=<
3
+ node131821398109904 [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
- node130351332361296 [label=<
10
+ node131821398108144 [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
- node130351332361456 [label=<
17
+ node131821398108304 [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
- node130351332361456:ref0 -> node130351332361296:table [style=solid]
25
- node130351336425488 [label=<
24
+ node131821398108304:ref0 -> node131821398108144:table [style=solid]
25
+ node131821402228752 [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
- node130351336425488:ref0 -> node130351332363056:table [style=solid]
33
- node130351336425488:ref1 -> node130351332361456:table [style=solid]
34
- node130351334904784 [label=<
32
+ node131821402228752:ref0 -> node131821398109904:table [style=solid]
33
+ node131821402228752:ref1 -> node131821398108304:table [style=solid]
34
+ node131821401230896 [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
- node130351334904784:ref0 -> node130351336425488:table [style=solid]
41
- node130351336759104 [label=<
40
+ node131821401230896:ref0 -> node131821402228752:table [style=solid]
41
+ node131821402562240 [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
- node130351336759104:ref0 -> node130351334904784:table [style=solid]
48
- subgraph { rank=same; node130351332363056 -> node130351332361456[weight=10, style=invis]; }
47
+ node131821402562240:ref0 -> node131821401230896:table [style=solid]
48
+ subgraph { rank=same; node131821398109904 -> node131821398108304[weight=10, style=invis]; }
49
49
  }