memory-graph 0.3.37__tar.gz → 0.3.38__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 (257) hide show
  1. {memory_graph-0.3.37/memory_graph.egg-info → memory_graph-0.3.38}/PKG-INFO +66 -10
  2. {memory_graph-0.3.37 → memory_graph-0.3.38}/README.md +65 -9
  3. memory_graph-0.3.38/images/.idea/.gitignore +8 -0
  4. memory_graph-0.3.38/images/.idea/images.iml +12 -0
  5. memory_graph-0.3.38/images/.idea/inspectionProfiles/profiles_settings.xml +6 -0
  6. memory_graph-0.3.38/images/.idea/misc.xml +7 -0
  7. memory_graph-0.3.38/images/.idea/modules.xml +8 -0
  8. memory_graph-0.3.38/images/.idea/vcs.xml +6 -0
  9. memory_graph-0.3.38/images/.idea/workspace.xml +83 -0
  10. {memory_graph-0.3.37 → memory_graph-0.3.38}/images/add_one.gv +18 -18
  11. {memory_graph-0.3.37 → memory_graph-0.3.38}/images/avltree_key_value.gv +12 -12
  12. {memory_graph-0.3.37 → memory_graph-0.3.38}/images/avltree_leaf.gv +5 -5
  13. {memory_graph-0.3.37 → memory_graph-0.3.38}/images/avltree_linear.gv +12 -12
  14. {memory_graph-0.3.37 → memory_graph-0.3.38}/images/avltree_table.gv +12 -12
  15. memory_graph-0.3.38/images/bin_search.gv +119 -0
  16. memory_graph-0.3.38/images/bin_search.png +0 -0
  17. memory_graph-0.3.38/images/bin_search.py +40 -0
  18. memory_graph-0.3.38/images/bin_search.py~ +42 -0
  19. memory_graph-0.3.38/images/bin_search2.png +0 -0
  20. memory_graph-0.3.38/images/bin_search_linear.gv +133 -0
  21. memory_graph-0.3.38/images/bin_search_linear.png +0 -0
  22. memory_graph-0.3.38/images/bin_search_linear.py +40 -0
  23. memory_graph-0.3.38/images/bin_search_linear.py~ +42 -0
  24. {memory_graph-0.3.37 → memory_graph-0.3.38}/images/bin_tree.gv +35 -35
  25. {memory_graph-0.3.37 → memory_graph-0.3.38}/images/copies.gv +20 -20
  26. {memory_graph-0.3.37 → memory_graph-0.3.38}/images/copy_method.gv +16 -16
  27. {memory_graph-0.3.37 → memory_graph-0.3.38}/images/create_images.sh +2 -0
  28. {memory_graph-0.3.37 → memory_graph-0.3.38}/images/debugging01.gv +8 -8
  29. {memory_graph-0.3.37 → memory_graph-0.3.38}/images/debugging01.png +0 -0
  30. {memory_graph-0.3.37 → memory_graph-0.3.38}/images/debugging02.gv +11 -11
  31. {memory_graph-0.3.37 → memory_graph-0.3.38}/images/debugging02.png +0 -0
  32. {memory_graph-0.3.37 → memory_graph-0.3.38}/images/debugging03.gv +13 -13
  33. {memory_graph-0.3.37 → memory_graph-0.3.38}/images/debugging03.png +0 -0
  34. {memory_graph-0.3.37 → memory_graph-0.3.38}/images/debugging04.gv +15 -15
  35. {memory_graph-0.3.37 → memory_graph-0.3.38}/images/debugging04.png +0 -0
  36. {memory_graph-0.3.37 → memory_graph-0.3.38}/images/debugging05.gv +17 -17
  37. {memory_graph-0.3.37 → memory_graph-0.3.38}/images/debugging05.png +0 -0
  38. {memory_graph-0.3.37 → memory_graph-0.3.38}/images/debugging06.gv +17 -17
  39. {memory_graph-0.3.37 → memory_graph-0.3.38}/images/debugging06.png +0 -0
  40. {memory_graph-0.3.37 → memory_graph-0.3.38}/images/extension_numpy.gv +8 -8
  41. {memory_graph-0.3.37 → memory_graph-0.3.38}/images/extension_pandas.gv +8 -8
  42. {memory_graph-0.3.37 → memory_graph-0.3.38}/images/factorial0.gv +3 -3
  43. {memory_graph-0.3.37 → memory_graph-0.3.38}/images/factorial0.png +0 -0
  44. {memory_graph-0.3.37 → memory_graph-0.3.38}/images/factorial1.gv +6 -6
  45. {memory_graph-0.3.37 → memory_graph-0.3.38}/images/factorial1.png +0 -0
  46. {memory_graph-0.3.37 → memory_graph-0.3.38}/images/factorial2.gv +8 -8
  47. {memory_graph-0.3.37 → memory_graph-0.3.38}/images/factorial2.png +0 -0
  48. {memory_graph-0.3.37 → memory_graph-0.3.38}/images/factorial3.gv +10 -10
  49. {memory_graph-0.3.37 → memory_graph-0.3.38}/images/factorial3.png +0 -0
  50. {memory_graph-0.3.37 → memory_graph-0.3.38}/images/factorial4.gv +10 -10
  51. {memory_graph-0.3.37 → memory_graph-0.3.38}/images/factorial4.png +0 -0
  52. {memory_graph-0.3.37 → memory_graph-0.3.38}/images/factorial5.gv +8 -8
  53. {memory_graph-0.3.37 → memory_graph-0.3.38}/images/factorial5.png +0 -0
  54. {memory_graph-0.3.37 → memory_graph-0.3.38}/images/factorial6.gv +6 -6
  55. {memory_graph-0.3.37 → memory_graph-0.3.38}/images/factorial6.png +0 -0
  56. {memory_graph-0.3.37 → memory_graph-0.3.38}/images/hash_set.gv +29 -29
  57. {memory_graph-0.3.37 → memory_graph-0.3.38}/images/highlight.gv +16 -16
  58. {memory_graph-0.3.37 → memory_graph-0.3.38}/images/immutable1.gv +4 -4
  59. {memory_graph-0.3.37 → memory_graph-0.3.38}/images/immutable2.gv +6 -6
  60. {memory_graph-0.3.37 → memory_graph-0.3.38}/images/introspect_depth.gv +56 -56
  61. {memory_graph-0.3.37 → memory_graph-0.3.38}/images/linked_list.gv +20 -20
  62. {memory_graph-0.3.37 → memory_graph-0.3.38}/images/many_types.gv +12 -12
  63. memory_graph-0.3.38/images/memory_graph.gv +43 -0
  64. memory_graph-0.3.38/images/memory_graph.pdf +0 -0
  65. {memory_graph-0.3.37 → memory_graph-0.3.38}/images/mutable1.gv +4 -4
  66. {memory_graph-0.3.37 → memory_graph-0.3.38}/images/mutable2.gv +4 -4
  67. {memory_graph-0.3.37 → memory_graph-0.3.38}/images/not_node_types1.gv +6 -6
  68. {memory_graph-0.3.37 → memory_graph-0.3.38}/images/not_node_types2.gv +14 -14
  69. {memory_graph-0.3.37 → memory_graph-0.3.38}/images/power_set0.gv +11 -11
  70. {memory_graph-0.3.37 → memory_graph-0.3.38}/images/power_set0.png +0 -0
  71. {memory_graph-0.3.37 → memory_graph-0.3.38}/images/power_set1.gv +17 -17
  72. {memory_graph-0.3.37 → memory_graph-0.3.38}/images/power_set1.png +0 -0
  73. {memory_graph-0.3.37 → memory_graph-0.3.38}/images/power_set10.gv +36 -36
  74. {memory_graph-0.3.37 → memory_graph-0.3.38}/images/power_set10.png +0 -0
  75. {memory_graph-0.3.37 → memory_graph-0.3.38}/images/power_set11.gv +31 -31
  76. {memory_graph-0.3.37 → memory_graph-0.3.38}/images/power_set11.png +0 -0
  77. {memory_graph-0.3.37 → memory_graph-0.3.38}/images/power_set12.gv +31 -31
  78. {memory_graph-0.3.37 → memory_graph-0.3.38}/images/power_set12.png +0 -0
  79. {memory_graph-0.3.37 → memory_graph-0.3.38}/images/power_set13.gv +36 -36
  80. {memory_graph-0.3.37 → memory_graph-0.3.38}/images/power_set13.png +0 -0
  81. {memory_graph-0.3.37 → memory_graph-0.3.38}/images/power_set14.gv +41 -41
  82. {memory_graph-0.3.37 → memory_graph-0.3.38}/images/power_set14.png +0 -0
  83. {memory_graph-0.3.37 → memory_graph-0.3.38}/images/power_set15.gv +43 -43
  84. {memory_graph-0.3.37 → memory_graph-0.3.38}/images/power_set15.png +0 -0
  85. {memory_graph-0.3.37 → memory_graph-0.3.38}/images/power_set16.gv +40 -40
  86. {memory_graph-0.3.37 → memory_graph-0.3.38}/images/power_set16.png +0 -0
  87. {memory_graph-0.3.37 → memory_graph-0.3.38}/images/power_set17.gv +40 -40
  88. {memory_graph-0.3.37 → memory_graph-0.3.38}/images/power_set17.png +0 -0
  89. {memory_graph-0.3.37 → memory_graph-0.3.38}/images/power_set18.gv +45 -45
  90. {memory_graph-0.3.37 → memory_graph-0.3.38}/images/power_set18.png +0 -0
  91. {memory_graph-0.3.37 → memory_graph-0.3.38}/images/power_set19.gv +47 -47
  92. {memory_graph-0.3.37 → memory_graph-0.3.38}/images/power_set19.png +0 -0
  93. {memory_graph-0.3.37 → memory_graph-0.3.38}/images/power_set2.gv +22 -22
  94. {memory_graph-0.3.37 → memory_graph-0.3.38}/images/power_set2.png +0 -0
  95. {memory_graph-0.3.37 → memory_graph-0.3.38}/images/power_set20.gv +44 -44
  96. {memory_graph-0.3.37 → memory_graph-0.3.38}/images/power_set20.png +0 -0
  97. {memory_graph-0.3.37 → memory_graph-0.3.38}/images/power_set21.gv +39 -39
  98. {memory_graph-0.3.37 → memory_graph-0.3.38}/images/power_set21.png +0 -0
  99. {memory_graph-0.3.37 → memory_graph-0.3.38}/images/power_set22.gv +34 -34
  100. {memory_graph-0.3.37 → memory_graph-0.3.38}/images/power_set22.png +0 -0
  101. {memory_graph-0.3.37 → memory_graph-0.3.38}/images/power_set23.gv +28 -28
  102. {memory_graph-0.3.37 → memory_graph-0.3.38}/images/power_set23.png +0 -0
  103. {memory_graph-0.3.37 → memory_graph-0.3.38}/images/power_set3.gv +27 -27
  104. {memory_graph-0.3.37 → memory_graph-0.3.38}/images/power_set3.png +0 -0
  105. {memory_graph-0.3.37 → memory_graph-0.3.38}/images/power_set4.gv +32 -32
  106. {memory_graph-0.3.37 → memory_graph-0.3.38}/images/power_set4.png +0 -0
  107. {memory_graph-0.3.37 → memory_graph-0.3.38}/images/power_set5.gv +34 -34
  108. {memory_graph-0.3.37 → memory_graph-0.3.38}/images/power_set5.png +0 -0
  109. {memory_graph-0.3.37 → memory_graph-0.3.38}/images/power_set6.gv +32 -32
  110. {memory_graph-0.3.37 → memory_graph-0.3.38}/images/power_set6.png +0 -0
  111. {memory_graph-0.3.37 → memory_graph-0.3.38}/images/power_set7.gv +32 -32
  112. {memory_graph-0.3.37 → memory_graph-0.3.38}/images/power_set7.png +0 -0
  113. {memory_graph-0.3.37 → memory_graph-0.3.38}/images/power_set8.gv +37 -37
  114. {memory_graph-0.3.37 → memory_graph-0.3.38}/images/power_set8.png +0 -0
  115. {memory_graph-0.3.37 → memory_graph-0.3.38}/images/power_set9.gv +39 -39
  116. {memory_graph-0.3.37 → memory_graph-0.3.38}/images/power_set9.png +0 -0
  117. {memory_graph-0.3.37 → memory_graph-0.3.38}/images/rebinding1.gv +4 -4
  118. {memory_graph-0.3.37 → memory_graph-0.3.38}/images/rebinding2.gv +6 -6
  119. memory_graph-0.3.38/images/stack.txt +24 -0
  120. memory_graph-0.3.38/images/vsc.py +42 -0
  121. {memory_graph-0.3.37 → memory_graph-0.3.38}/memory_graph/__init__.py +11 -13
  122. {memory_graph-0.3.37 → memory_graph-0.3.38}/memory_graph/config.py +4 -0
  123. memory_graph-0.3.38/memory_graph/config_default.py +122 -0
  124. {memory_graph-0.3.37 → memory_graph-0.3.38/memory_graph.egg-info}/PKG-INFO +66 -10
  125. {memory_graph-0.3.37 → memory_graph-0.3.38}/memory_graph.egg-info/SOURCES.txt +15 -1
  126. {memory_graph-0.3.37 → memory_graph-0.3.38}/pyproject.toml +1 -1
  127. memory_graph-0.3.37/images/bin_search.py +0 -31
  128. memory_graph-0.3.37/images/memory_graph.gv +0 -22
  129. memory_graph-0.3.37/images/memory_graph.pdf +0 -0
  130. memory_graph-0.3.37/images/stack.txt +0 -21
  131. memory_graph-0.3.37/images/vsc.py +0 -23
  132. memory_graph-0.3.37/images/vsc.py~ +0 -22
  133. memory_graph-0.3.37/memory_graph/config_default.py +0 -108
  134. {memory_graph-0.3.37 → memory_graph-0.3.38}/LICENSE.txt +0 -0
  135. {memory_graph-0.3.37 → memory_graph-0.3.38}/MANIFEST.in +0 -0
  136. {memory_graph-0.3.37 → memory_graph-0.3.38}/images/-0 +0 -0
  137. {memory_graph-0.3.37 → memory_graph-0.3.38}/images/.gif +0 -0
  138. {memory_graph-0.3.37 → memory_graph-0.3.38}/images/add_one.png +0 -0
  139. {memory_graph-0.3.37 → memory_graph-0.3.38}/images/add_one.py +0 -0
  140. {memory_graph-0.3.37 → memory_graph-0.3.38}/images/avltree.py +0 -0
  141. {memory_graph-0.3.37 → memory_graph-0.3.38}/images/avltree.py~ +0 -0
  142. {memory_graph-0.3.37 → memory_graph-0.3.38}/images/avltree_dir.gv +0 -0
  143. {memory_graph-0.3.37 → memory_graph-0.3.38}/images/avltree_dir.png +0 -0
  144. {memory_graph-0.3.37 → memory_graph-0.3.38}/images/avltree_fail.gv +0 -0
  145. {memory_graph-0.3.37 → memory_graph-0.3.38}/images/avltree_fail.png +0 -0
  146. {memory_graph-0.3.37 → memory_graph-0.3.38}/images/avltree_key_value.png +0 -0
  147. {memory_graph-0.3.37 → memory_graph-0.3.38}/images/avltree_leaf.png +0 -0
  148. {memory_graph-0.3.37 → memory_graph-0.3.38}/images/avltree_linear.png +0 -0
  149. {memory_graph-0.3.37 → memory_graph-0.3.38}/images/avltree_table.png +0 -0
  150. {memory_graph-0.3.37 → memory_graph-0.3.38}/images/bin_tree.gif +0 -0
  151. {memory_graph-0.3.37 → memory_graph-0.3.38}/images/bin_tree.png +0 -0
  152. {memory_graph-0.3.37 → memory_graph-0.3.38}/images/bin_tree.py +0 -0
  153. {memory_graph-0.3.37 → memory_graph-0.3.38}/images/bin_tree2.py +0 -0
  154. {memory_graph-0.3.37 → memory_graph-0.3.38}/images/bin_tree2.py~ +0 -0
  155. {memory_graph-0.3.37 → memory_graph-0.3.38}/images/call_stack.txt +0 -0
  156. {memory_graph-0.3.37 → memory_graph-0.3.38}/images/colab_example.png +0 -0
  157. {memory_graph-0.3.37 → memory_graph-0.3.38}/images/copies.png +0 -0
  158. {memory_graph-0.3.37 → memory_graph-0.3.38}/images/copies.py +0 -0
  159. {memory_graph-0.3.37 → memory_graph-0.3.38}/images/copy_method.png +0 -0
  160. {memory_graph-0.3.37 → memory_graph-0.3.38}/images/copy_method.py +0 -0
  161. {memory_graph-0.3.37 → memory_graph-0.3.38}/images/create_gif.sh +0 -0
  162. {memory_graph-0.3.37 → memory_graph-0.3.38}/images/debug.gv +0 -0
  163. {memory_graph-0.3.37 → memory_graph-0.3.38}/images/debug.pdf +0 -0
  164. {memory_graph-0.3.37 → memory_graph-0.3.38}/images/debug_vscode.png +0 -0
  165. {memory_graph-0.3.37 → memory_graph-0.3.38}/images/debugging.gif +0 -0
  166. {memory_graph-0.3.37 → memory_graph-0.3.38}/images/debugging.py +0 -0
  167. {memory_graph-0.3.37 → memory_graph-0.3.38}/images/depth.gv +0 -0
  168. {memory_graph-0.3.37 → memory_graph-0.3.38}/images/depth.png +0 -0
  169. {memory_graph-0.3.37 → memory_graph-0.3.38}/images/extension_numpy.png +0 -0
  170. {memory_graph-0.3.37 → memory_graph-0.3.38}/images/extension_numpy.py +0 -0
  171. {memory_graph-0.3.37 → memory_graph-0.3.38}/images/extension_pandas.png +0 -0
  172. {memory_graph-0.3.37 → memory_graph-0.3.38}/images/extension_pandas.py +0 -0
  173. {memory_graph-0.3.37 → memory_graph-0.3.38}/images/factorial.gif +0 -0
  174. {memory_graph-0.3.37 → memory_graph-0.3.38}/images/factorial.py +0 -0
  175. {memory_graph-0.3.37 → memory_graph-0.3.38}/images/factorial01.gv +0 -0
  176. {memory_graph-0.3.37 → memory_graph-0.3.38}/images/factorial02.gv +0 -0
  177. {memory_graph-0.3.37 → memory_graph-0.3.38}/images/factorial03.gv +0 -0
  178. {memory_graph-0.3.37 → memory_graph-0.3.38}/images/factorial04.gv +0 -0
  179. {memory_graph-0.3.37 → memory_graph-0.3.38}/images/factorial05.gv +0 -0
  180. {memory_graph-0.3.37 → memory_graph-0.3.38}/images/factorial06.gv +0 -0
  181. {memory_graph-0.3.37 → memory_graph-0.3.38}/images/factorial07.gv +0 -0
  182. {memory_graph-0.3.37 → memory_graph-0.3.38}/images/hash_set.gif +0 -0
  183. {memory_graph-0.3.37 → memory_graph-0.3.38}/images/hash_set.png +0 -0
  184. {memory_graph-0.3.37 → memory_graph-0.3.38}/images/hash_set.py +0 -0
  185. {memory_graph-0.3.37 → memory_graph-0.3.38}/images/hidden_edges.gv +0 -0
  186. {memory_graph-0.3.37 → memory_graph-0.3.38}/images/hidden_edges.png +0 -0
  187. {memory_graph-0.3.37 → memory_graph-0.3.38}/images/hidden_edges.py +0 -0
  188. {memory_graph-0.3.37 → memory_graph-0.3.38}/images/hidden_edges.py~ +0 -0
  189. {memory_graph-0.3.37 → memory_graph-0.3.38}/images/highlight.png +0 -0
  190. {memory_graph-0.3.37 → memory_graph-0.3.38}/images/highlight.py +0 -0
  191. {memory_graph-0.3.37 → memory_graph-0.3.38}/images/immutable.py +0 -0
  192. {memory_graph-0.3.37 → memory_graph-0.3.38}/images/immutable1.png +0 -0
  193. {memory_graph-0.3.37 → memory_graph-0.3.38}/images/immutable2.png +0 -0
  194. {memory_graph-0.3.37 → memory_graph-0.3.38}/images/introspect_depth.png +0 -0
  195. {memory_graph-0.3.37 → memory_graph-0.3.38}/images/introspect_depth.py +0 -0
  196. {memory_graph-0.3.37 → memory_graph-0.3.38}/images/introspect_depth.py~ +0 -0
  197. {memory_graph-0.3.37 → memory_graph-0.3.38}/images/ipython.png +0 -0
  198. {memory_graph-0.3.37 → memory_graph-0.3.38}/images/jupyter_example.png +0 -0
  199. {memory_graph-0.3.37 → memory_graph-0.3.38}/images/linked_list.gif +0 -0
  200. {memory_graph-0.3.37 → memory_graph-0.3.38}/images/linked_list.png +0 -0
  201. {memory_graph-0.3.37 → memory_graph-0.3.38}/images/linked_list.py +0 -0
  202. {memory_graph-0.3.37 → memory_graph-0.3.38}/images/log.txt +0 -0
  203. {memory_graph-0.3.37 → memory_graph-0.3.38}/images/many_types.png +0 -0
  204. {memory_graph-0.3.37 → memory_graph-0.3.38}/images/many_types.py +0 -0
  205. {memory_graph-0.3.37 → memory_graph-0.3.38}/images/memory_graph.gv.pdf +0 -0
  206. {memory_graph-0.3.37 → memory_graph-0.3.38}/images/mutable.py +0 -0
  207. {memory_graph-0.3.37 → memory_graph-0.3.38}/images/mutable1.png +0 -0
  208. {memory_graph-0.3.37 → memory_graph-0.3.38}/images/mutable2.png +0 -0
  209. {memory_graph-0.3.37 → memory_graph-0.3.38}/images/my_graph.gv +0 -0
  210. {memory_graph-0.3.37 → memory_graph-0.3.38}/images/my_graph.pdf +0 -0
  211. {memory_graph-0.3.37 → memory_graph-0.3.38}/images/name_rebinding.py +0 -0
  212. {memory_graph-0.3.37 → memory_graph-0.3.38}/images/not_node_types.py +0 -0
  213. {memory_graph-0.3.37 → memory_graph-0.3.38}/images/not_node_types.py~ +0 -0
  214. {memory_graph-0.3.37 → memory_graph-0.3.38}/images/not_node_types1.png +0 -0
  215. {memory_graph-0.3.37 → memory_graph-0.3.38}/images/not_node_types2.png +0 -0
  216. {memory_graph-0.3.37 → memory_graph-0.3.38}/images/power_set.gif +0 -0
  217. {memory_graph-0.3.37 → memory_graph-0.3.38}/images/power_set.py +0 -0
  218. {memory_graph-0.3.37 → memory_graph-0.3.38}/images/power_set19.png~ +0 -0
  219. {memory_graph-0.3.37 → memory_graph-0.3.38}/images/power_set8.png~ +0 -0
  220. {memory_graph-0.3.37 → memory_graph-0.3.38}/images/pyodide.png +0 -0
  221. {memory_graph-0.3.37 → memory_graph-0.3.38}/images/rebinding1.png +0 -0
  222. {memory_graph-0.3.37 → memory_graph-0.3.38}/images/rebinding2.png +0 -0
  223. {memory_graph-0.3.37 → memory_graph-0.3.38}/images/test.py +0 -0
  224. {memory_graph-0.3.37 → memory_graph-0.3.38}/images/test.py~ +0 -0
  225. {memory_graph-0.3.37 → memory_graph-0.3.38}/images/uva.png +0 -0
  226. {memory_graph-0.3.37 → memory_graph-0.3.38}/images/vscode_copying.gif +0 -0
  227. {memory_graph-0.3.37 → memory_graph-0.3.38}/memory_graph/call_stack.py +0 -0
  228. {memory_graph-0.3.37 → memory_graph-0.3.38}/memory_graph/config_helpers.py +0 -0
  229. {memory_graph-0.3.37 → memory_graph-0.3.38}/memory_graph/extension_numpy.py +0 -0
  230. {memory_graph-0.3.37 → memory_graph-0.3.38}/memory_graph/extension_pandas.py +0 -0
  231. {memory_graph-0.3.37 → memory_graph-0.3.38}/memory_graph/html_table.py +0 -0
  232. {memory_graph-0.3.37 → memory_graph-0.3.38}/memory_graph/list_view.py +0 -0
  233. {memory_graph-0.3.37 → memory_graph-0.3.38}/memory_graph/memory_to_nodes.py +0 -0
  234. {memory_graph-0.3.37 → memory_graph-0.3.38}/memory_graph/node_base.py +0 -0
  235. {memory_graph-0.3.37 → memory_graph-0.3.38}/memory_graph/node_key_value.py +0 -0
  236. {memory_graph-0.3.37 → memory_graph-0.3.38}/memory_graph/node_leaf.py +0 -0
  237. {memory_graph-0.3.37 → memory_graph-0.3.38}/memory_graph/node_linear.py +0 -0
  238. {memory_graph-0.3.37 → memory_graph-0.3.38}/memory_graph/node_table.py +0 -0
  239. {memory_graph-0.3.37 → memory_graph-0.3.38}/memory_graph/sequence.py +0 -0
  240. {memory_graph-0.3.37 → memory_graph-0.3.38}/memory_graph/slicer.py +0 -0
  241. {memory_graph-0.3.37 → memory_graph-0.3.38}/memory_graph/slices.py +0 -0
  242. {memory_graph-0.3.37 → memory_graph-0.3.38}/memory_graph/slices_iterator.py +0 -0
  243. {memory_graph-0.3.37 → memory_graph-0.3.38}/memory_graph/slices_table_iterator.py +0 -0
  244. {memory_graph-0.3.37 → memory_graph-0.3.38}/memory_graph/test.py +0 -0
  245. {memory_graph-0.3.37 → memory_graph-0.3.38}/memory_graph/test_max_graph_depth.py +0 -0
  246. {memory_graph-0.3.37 → memory_graph-0.3.38}/memory_graph/test_memory_graph.py +0 -0
  247. {memory_graph-0.3.37 → memory_graph-0.3.38}/memory_graph/test_memory_to_nodes.py +0 -0
  248. {memory_graph-0.3.37 → memory_graph-0.3.38}/memory_graph/test_sequence.py +0 -0
  249. {memory_graph-0.3.37 → memory_graph-0.3.38}/memory_graph/test_slicer.py +0 -0
  250. {memory_graph-0.3.37 → memory_graph-0.3.38}/memory_graph/test_slices.py +0 -0
  251. {memory_graph-0.3.37 → memory_graph-0.3.38}/memory_graph/test_slices_iterator.py +0 -0
  252. {memory_graph-0.3.37 → memory_graph-0.3.38}/memory_graph/utils.py +0 -0
  253. {memory_graph-0.3.37 → memory_graph-0.3.38}/memory_graph.egg-info/dependency_links.txt +0 -0
  254. {memory_graph-0.3.37 → memory_graph-0.3.38}/memory_graph.egg-info/requires.txt +0 -0
  255. {memory_graph-0.3.37 → memory_graph-0.3.38}/memory_graph.egg-info/top_level.txt +0 -0
  256. {memory_graph-0.3.37 → memory_graph-0.3.38}/setup.cfg +0 -0
  257. {memory_graph-0.3.37 → memory_graph-0.3.38}/setup.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: memory_graph
3
- Version: 0.3.37
3
+ Version: 0.3.38
4
4
  Summary: Teaching tool and debugging aid in context of references, mutable data types, and shallow and deep copy.
5
5
  Author-email: Bas Terwijn <bterwijn@gmail.com>
6
6
  License-Expression: BSD-2-Clause
@@ -57,7 +57,7 @@ mg.render(data, "my_graph.pdf")
57
57
  mg.render(data, "my_graph.svg")
58
58
  mg.render(data, "my_graph.png")
59
59
  mg.render(data, "my_graph.gv") # Graphviz DOT file
60
- mg.render(data) # renders to 'mg.render_filename' with default value: 'memory_graph.pdf'
60
+ mg.render(data) # renders to default: 'memory_graph.pdf'
61
61
  ```
62
62
 
63
63
  # Sharing Values #
@@ -300,10 +300,6 @@ This function:
300
300
  * then blocks execution until the &lt;Enter&gt; key is pressed
301
301
  * finally returns the value of the `fun()` call
302
302
 
303
- To change its behavior:
304
- * Set `mg.block_prints_location = False` to skip printing the source location.
305
- * Set `mg.press_enter_message = None` to skip printing "Press &lt;Enter&gt; to continue...".
306
-
307
303
  ## Recursion ##
308
304
  The call stack is also helpful to visualize how recursion works. Here we use `mg.block()` to show each step of how recursively ```factorial(3)``` is computed:
309
305
 
@@ -375,6 +371,7 @@ The ```mg.stack()``` doesn't work well in *watch* context in most debuggers beca
375
371
  | [Wing](https://wingware.com/) | `mg.stack_wing()` |
376
372
 
377
373
  ![vscode_copying.gif](https://raw.githubusercontent.com/bterwijn/memory_graph/main/images/vscode_copying.gif)
374
+ See the [Quick Intro (3:49)](https://www.youtube.com/watch?v=23_bHcr7hqo) video for the setup.
378
375
 
379
376
  ## Other Debuggers ##
380
377
  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.
@@ -549,9 +546,17 @@ for i in range(n):
549
546
  Here we show values being inserted in a HashSet in PyCharm. When inserting the last value '44' we "Step Into" the code to show more of the details.
550
547
  ![images/hash_set.gif](https://raw.githubusercontent.com/bterwijn/memory_graph/main/images/hash_set.gif)
551
548
 
552
-
553
549
  # Configuration #
554
- Different aspects of memory_graph can be configured. The default configuration is reset by importing 'memory_graph.config_default'.
550
+ Different aspects of memory_graph can be configured. The default configuration can be reset by calling 'mg.config_default.reset()'.
551
+
552
+ - ***mg.config.render_filename*** : str
553
+ - The default filename to render to, default 'memory_graph.pdf'.
554
+
555
+ - ***mg.config.block_prints_location*** : bool
556
+ - If True the source location is printed in block(), default True.
557
+
558
+ - ***mg.config.press_enter_message*** : str
559
+ - Message to ask user to press &lt;Enter&gt; in block(), set to None to disable.
555
560
 
556
561
  - ***mg.config.max_string_length*** : int
557
562
  - The maximum length of strings shown in the graph. Longer strings will be truncated.
@@ -795,11 +800,62 @@ mg.config.type_to_node[bintrees.avltree.Node] = lambda data: mg.node_table.Node_
795
800
  [[data.key, data.value],
796
801
  [data.left, data.right]] )
797
802
 
798
-
799
803
  mg.show(locals())
800
804
  ```
801
805
  ![extension_numpy.png](https://raw.githubusercontent.com/bterwijn/memory_graph/main/images/avltree_table.png)
802
806
 
807
+ ## Binary Search ##
808
+ For binary search we can use a List_View class to represent a particular sublist without making a list copy.
809
+
810
+ ```python
811
+ import memory_graph as mg
812
+ import random
813
+ random.seed(2) # same random numbers each run
814
+
815
+ class List_View:
816
+
817
+ def __init__(self, lst, begin, end):
818
+ self.lst = lst
819
+ self.begin = begin
820
+ self.end = end
821
+
822
+ def __getitem__(self, index):
823
+ return self.lst[index]
824
+
825
+ def get_mid(self):
826
+ return (self.begin + self.end) // 2
827
+
828
+ def bin_search(view, value):
829
+ mid = view.get_mid()
830
+ if view.begin == mid:
831
+ mg.show(mg.stack()) # <--- show stack
832
+ return view.begin
833
+ if value < view[mid]:
834
+ return bin_search(List_View(view.lst, view.begin, mid), value)
835
+ else:
836
+ return bin_search(List_View(view.lst, mid, view.end), value)
837
+
838
+ # create sorted list
839
+ n = 15
840
+ data = [random.randrange(1000) for _ in range(n)]
841
+ data.sort()
842
+
843
+ # search 'value'
844
+ value = data[random.randrange(n)]
845
+ index = bin_search(List_View(data, 0, len(data)), value)
846
+ print(f'{index=} {data[index]=}')
847
+ ```
848
+ ![bin_search.png](https://raw.githubusercontent.com/bterwijn/memory_graph/main/images/bin_search.png)
849
+
850
+ Arguably the visualization is then more clear when we show a List_View object as an actual sublist using a Node_linear node:
851
+
852
+ ```python
853
+ mg.config.type_to_color[List_View] = 'hotpink'
854
+ mg.config.type_to_node[List_View] = lambda data: mg.node_linear.Node_Linear(data,
855
+ data.lst[data.begin:data.end])
856
+ ```
857
+ ![bin_search_linear.png](https://raw.githubusercontent.com/bterwijn/memory_graph/main/images/bin_search_linear.png)
858
+
803
859
 
804
860
  # Graph Depth #
805
861
  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`.
@@ -823,7 +879,7 @@ class Base:
823
879
  while len(iter)>1:
824
880
  iter = iter[-1]
825
881
  return iter
826
-
882
+
827
883
  class A(Base):
828
884
 
829
885
  def __init__(self, n):
@@ -37,7 +37,7 @@ mg.render(data, "my_graph.pdf")
37
37
  mg.render(data, "my_graph.svg")
38
38
  mg.render(data, "my_graph.png")
39
39
  mg.render(data, "my_graph.gv") # Graphviz DOT file
40
- mg.render(data) # renders to 'mg.render_filename' with default value: 'memory_graph.pdf'
40
+ mg.render(data) # renders to default: 'memory_graph.pdf'
41
41
  ```
42
42
 
43
43
  # Sharing Values #
@@ -280,10 +280,6 @@ This function:
280
280
  * then blocks execution until the &lt;Enter&gt; key is pressed
281
281
  * finally returns the value of the `fun()` call
282
282
 
283
- To change its behavior:
284
- * Set `mg.block_prints_location = False` to skip printing the source location.
285
- * Set `mg.press_enter_message = None` to skip printing "Press &lt;Enter&gt; to continue...".
286
-
287
283
  ## Recursion ##
288
284
  The call stack is also helpful to visualize how recursion works. Here we use `mg.block()` to show each step of how recursively ```factorial(3)``` is computed:
289
285
 
@@ -355,6 +351,7 @@ The ```mg.stack()``` doesn't work well in *watch* context in most debuggers beca
355
351
  | [Wing](https://wingware.com/) | `mg.stack_wing()` |
356
352
 
357
353
  ![vscode_copying.gif](https://raw.githubusercontent.com/bterwijn/memory_graph/main/images/vscode_copying.gif)
354
+ See the [Quick Intro (3:49)](https://www.youtube.com/watch?v=23_bHcr7hqo) video for the setup.
358
355
 
359
356
  ## Other Debuggers ##
360
357
  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.
@@ -529,9 +526,17 @@ for i in range(n):
529
526
  Here we show values being inserted in a HashSet in PyCharm. When inserting the last value '44' we "Step Into" the code to show more of the details.
530
527
  ![images/hash_set.gif](https://raw.githubusercontent.com/bterwijn/memory_graph/main/images/hash_set.gif)
531
528
 
532
-
533
529
  # Configuration #
534
- Different aspects of memory_graph can be configured. The default configuration is reset by importing 'memory_graph.config_default'.
530
+ Different aspects of memory_graph can be configured. The default configuration can be reset by calling 'mg.config_default.reset()'.
531
+
532
+ - ***mg.config.render_filename*** : str
533
+ - The default filename to render to, default 'memory_graph.pdf'.
534
+
535
+ - ***mg.config.block_prints_location*** : bool
536
+ - If True the source location is printed in block(), default True.
537
+
538
+ - ***mg.config.press_enter_message*** : str
539
+ - Message to ask user to press &lt;Enter&gt; in block(), set to None to disable.
535
540
 
536
541
  - ***mg.config.max_string_length*** : int
537
542
  - The maximum length of strings shown in the graph. Longer strings will be truncated.
@@ -775,11 +780,62 @@ mg.config.type_to_node[bintrees.avltree.Node] = lambda data: mg.node_table.Node_
775
780
  [[data.key, data.value],
776
781
  [data.left, data.right]] )
777
782
 
778
-
779
783
  mg.show(locals())
780
784
  ```
781
785
  ![extension_numpy.png](https://raw.githubusercontent.com/bterwijn/memory_graph/main/images/avltree_table.png)
782
786
 
787
+ ## Binary Search ##
788
+ For binary search we can use a List_View class to represent a particular sublist without making a list copy.
789
+
790
+ ```python
791
+ import memory_graph as mg
792
+ import random
793
+ random.seed(2) # same random numbers each run
794
+
795
+ class List_View:
796
+
797
+ def __init__(self, lst, begin, end):
798
+ self.lst = lst
799
+ self.begin = begin
800
+ self.end = end
801
+
802
+ def __getitem__(self, index):
803
+ return self.lst[index]
804
+
805
+ def get_mid(self):
806
+ return (self.begin + self.end) // 2
807
+
808
+ def bin_search(view, value):
809
+ mid = view.get_mid()
810
+ if view.begin == mid:
811
+ mg.show(mg.stack()) # <--- show stack
812
+ return view.begin
813
+ if value < view[mid]:
814
+ return bin_search(List_View(view.lst, view.begin, mid), value)
815
+ else:
816
+ return bin_search(List_View(view.lst, mid, view.end), value)
817
+
818
+ # create sorted list
819
+ n = 15
820
+ data = [random.randrange(1000) for _ in range(n)]
821
+ data.sort()
822
+
823
+ # search 'value'
824
+ value = data[random.randrange(n)]
825
+ index = bin_search(List_View(data, 0, len(data)), value)
826
+ print(f'{index=} {data[index]=}')
827
+ ```
828
+ ![bin_search.png](https://raw.githubusercontent.com/bterwijn/memory_graph/main/images/bin_search.png)
829
+
830
+ Arguably the visualization is then more clear when we show a List_View object as an actual sublist using a Node_linear node:
831
+
832
+ ```python
833
+ mg.config.type_to_color[List_View] = 'hotpink'
834
+ mg.config.type_to_node[List_View] = lambda data: mg.node_linear.Node_Linear(data,
835
+ data.lst[data.begin:data.end])
836
+ ```
837
+ ![bin_search_linear.png](https://raw.githubusercontent.com/bterwijn/memory_graph/main/images/bin_search_linear.png)
838
+
783
839
 
784
840
  # Graph Depth #
785
841
  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`.
@@ -803,7 +859,7 @@ class Base:
803
859
  while len(iter)>1:
804
860
  iter = iter[-1]
805
861
  return iter
806
-
862
+
807
863
  class A(Base):
808
864
 
809
865
  def __init__(self, n):
@@ -0,0 +1,8 @@
1
+ # Default ignored files
2
+ /shelf/
3
+ /workspace.xml
4
+ # Editor-based HTTP Client requests
5
+ /httpRequests/
6
+ # Datasource local storage ignored files
7
+ /dataSources/
8
+ /dataSources.local.xml
@@ -0,0 +1,12 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <module type="PYTHON_MODULE" version="4">
3
+ <component name="NewModuleRootManager">
4
+ <content url="file://$MODULE_DIR$" />
5
+ <orderEntry type="jdk" jdkName="Python 3.13 virtualenv at ~/python3.13_env" jdkType="Python SDK" />
6
+ <orderEntry type="sourceFolder" forTests="false" />
7
+ </component>
8
+ <component name="PyDocumentationSettings">
9
+ <option name="format" value="PLAIN" />
10
+ <option name="myDocStringFormat" value="Plain" />
11
+ </component>
12
+ </module>
@@ -0,0 +1,6 @@
1
+ <component name="InspectionProjectProfileManager">
2
+ <settings>
3
+ <option name="USE_PROJECT_PROFILE" value="false" />
4
+ <version value="1.0" />
5
+ </settings>
6
+ </component>
@@ -0,0 +1,7 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <project version="4">
3
+ <component name="Black">
4
+ <option name="sdkName" value="Python 3.13 virtualenv at ~/python3.13_env" />
5
+ </component>
6
+ <component name="ProjectRootManager" version="2" project-jdk-name="Python 3.13 virtualenv at ~/python3.13_env" project-jdk-type="Python SDK" />
7
+ </project>
@@ -0,0 +1,8 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <project version="4">
3
+ <component name="ProjectModuleManager">
4
+ <modules>
5
+ <module fileurl="file://$PROJECT_DIR$/.idea/images.iml" filepath="$PROJECT_DIR$/.idea/images.iml" />
6
+ </modules>
7
+ </component>
8
+ </project>
@@ -0,0 +1,6 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <project version="4">
3
+ <component name="VcsDirectoryMappings">
4
+ <mapping directory="$PROJECT_DIR$/.." vcs="Git" />
5
+ </component>
6
+ </project>
@@ -0,0 +1,83 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <project version="4">
3
+ <component name="AutoImportSettings">
4
+ <option name="autoReloadType" value="SELECTIVE" />
5
+ </component>
6
+ <component name="ChangeListManager">
7
+ <list default="true" id="6720a3cc-6c0b-46cb-bb85-b452407a2980" name="Changes" comment="" />
8
+ <option name="SHOW_DIALOG" value="false" />
9
+ <option name="HIGHLIGHT_CONFLICTS" value="true" />
10
+ <option name="HIGHLIGHT_NON_ACTIVE_CHANGELIST" value="false" />
11
+ <option name="LAST_RESOLUTION" value="IGNORE" />
12
+ </component>
13
+ <component name="Git.Settings">
14
+ <option name="RECENT_GIT_ROOT_PATH" value="$PROJECT_DIR$/.." />
15
+ </component>
16
+ <component name="ProjectColorInfo">{
17
+ &quot;associatedIndex&quot;: 5
18
+ }</component>
19
+ <component name="ProjectId" id="2yB9ZteNF5pFmuhrHRsT32pNxbW" />
20
+ <component name="ProjectViewState">
21
+ <option name="hideEmptyMiddlePackages" value="true" />
22
+ <option name="showLibraryContents" value="true" />
23
+ </component>
24
+ <component name="PropertiesComponent">{
25
+ &quot;keyToString&quot;: {
26
+ &quot;ModuleVcsDetector.initialDetectionPerformed&quot;: &quot;true&quot;,
27
+ &quot;Python.vsc.executor&quot;: &quot;Debug&quot;,
28
+ &quot;RunOnceActivity.ShowReadmeOnStart&quot;: &quot;true&quot;,
29
+ &quot;RunOnceActivity.git.unshallow&quot;: &quot;true&quot;,
30
+ &quot;git-widget-placeholder&quot;: &quot;main&quot;,
31
+ &quot;node.js.detected.package.eslint&quot;: &quot;true&quot;,
32
+ &quot;node.js.detected.package.tslint&quot;: &quot;true&quot;,
33
+ &quot;node.js.selected.package.eslint&quot;: &quot;(autodetect)&quot;,
34
+ &quot;node.js.selected.package.tslint&quot;: &quot;(autodetect)&quot;,
35
+ &quot;nodejs_package_manager_path&quot;: &quot;npm&quot;,
36
+ &quot;vue.rearranger.settings.migration&quot;: &quot;true&quot;
37
+ }
38
+ }</component>
39
+ <component name="SharedIndexes">
40
+ <attachedChunks>
41
+ <set>
42
+ <option value="bundled-js-predefined-d6986cc7102b-6a121458b545-JavaScript-PY-251.25410.159" />
43
+ <option value="bundled-python-sdk-e0ed3721d81e-36ea0e71a18c-com.jetbrains.pycharm.pro.sharedIndexes.bundled-PY-251.25410.159" />
44
+ </set>
45
+ </attachedChunks>
46
+ </component>
47
+ <component name="TaskManager">
48
+ <task active="true" id="Default" summary="Default task">
49
+ <changelist id="6720a3cc-6c0b-46cb-bb85-b452407a2980" name="Changes" comment="" />
50
+ <created>1749297161293</created>
51
+ <option name="number" value="Default" />
52
+ <option name="presentableId" value="Default" />
53
+ <updated>1749297161293</updated>
54
+ <workItem from="1749297163364" duration="1155000" />
55
+ <workItem from="1749298804721" duration="147000" />
56
+ <workItem from="1749299658479" duration="919000" />
57
+ </task>
58
+ <servers />
59
+ </component>
60
+ <component name="TypeScriptGeneratedFilesManager">
61
+ <option name="version" value="3" />
62
+ </component>
63
+ <component name="XDebuggerManager">
64
+ <breakpoint-manager>
65
+ <breakpoints>
66
+ <line-breakpoint enabled="true" suspend="THREAD" type="python-line">
67
+ <url>file://$PROJECT_DIR$/vsc.py</url>
68
+ <line>26</line>
69
+ <option name="timeStamp" value="3" />
70
+ </line-breakpoint>
71
+ </breakpoints>
72
+ </breakpoint-manager>
73
+ <watches-manager>
74
+ <configuration name="PythonConfigurationType">
75
+ <watch expression="mg.save_call_stack('stack.txt')" language="Python" />
76
+ <watch expression="mg.render(mg.stack_pycharm())" language="Python" />
77
+ </configuration>
78
+ </watches-manager>
79
+ </component>
80
+ <component name="com.intellij.coverage.CoverageDataManagerImpl">
81
+ <SUITE FILE_PATH="coverage/images$vsc.coverage" NAME="vsc Coverage Results" MODIFIED="1749300268269" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="coverage.py" COVERAGE_BY_TEST_ENABLED="false" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$" />
82
+ </component>
83
+ </project>
@@ -1,6 +1,6 @@
1
1
  digraph memory_graph {
2
2
  node [shape=plaintext]
3
- node126503066881600 [label=<
3
+ node124959625924160 [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
- node126503065613888 [label=<
11
+ node124959624625536 [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
- node126503064970368 [label=<
18
+ node124959624012928 [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
- node126503065529024 [label=<
25
+ node124959624571648 [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
- node126503065529024:ref0 -> node126503066881600:table [style=solid]
32
- node126503065529024:ref1 -> node126503065613888:table [style=solid]
33
- node126503065529024:ref2 -> node126503064970368:table [style=solid]
34
- node126503066824560 [label=<
31
+ node124959624571648:ref0 -> node124959625924160:table [style=solid]
32
+ node124959624571648:ref1 -> node124959624625536:table [style=solid]
33
+ node124959624571648:ref2 -> node124959624012928:table [style=solid]
34
+ node124959625867120 [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
- node126503065613120 [label=<
42
+ node124959624624768 [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
- node126503065983488 [label=<
50
+ node124959625014912 [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
- node126503065983488:ref0 -> node126503066881600:table [style=solid]
57
- node126503065983488:ref1 -> node126503066824560:table [style=solid]
58
- node126503065983488:ref2 -> node126503065613120:table [style=solid]
59
- node126503061091136 [label=<
56
+ node124959625014912:ref0 -> node124959625924160:table [style=solid]
57
+ node124959625014912:ref1 -> node124959625867120:table [style=solid]
58
+ node124959625014912:ref2 -> node124959624624768:table [style=solid]
59
+ node124959620219600 [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
- node126503061091136:ref0 -> node126503065529024:table [style=solid]
66
- node126503061091136:ref1 -> node126503065983488:table [style=solid]
67
- subgraph { rank=same; node126503065529024 -> node126503065983488[weight=10, style=invis]; }
68
- subgraph { rank=same; node126503066881600 -> node126503065613888 -> node126503064970368 -> node126503066824560 -> node126503065613120[weight=10, style=invis]; }
65
+ node124959620219600:ref0 -> node124959624571648:table [style=solid]
66
+ node124959620219600:ref1 -> node124959625014912:table [style=solid]
67
+ subgraph { rank=same; node124959624571648 -> node124959625014912[weight=10, style=invis]; }
68
+ subgraph { rank=same; node124959625924160 -> node124959624625536 -> node124959624012928 -> node124959625867120 -> node124959624624768[weight=10, style=invis]; }
69
69
  }
@@ -1,6 +1,6 @@
1
1
  digraph memory_graph {
2
2
  node [shape=plaintext]
3
- node139179812243952 [label=<
3
+ node123343309412432 [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
- node139179812423696 [label=<
11
+ node123343309608640 [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
- node139179812423776 [label=<
19
+ node123343309608720 [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
- node139179812423776:ref0 -> node139179812423696:table [style=solid]
26
- node139179817987952 [label=<
25
+ node123343309608720:ref0 -> node123343309608640:table [style=solid]
26
+ node123343315169136 [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
- node139179817987952:ref0 -> node139179812243952:table [style=solid]
33
- node139179817987952:ref1 -> node139179812423776:table [style=solid]
34
- node139179813620768 [label=<
32
+ node123343315169136:ref0 -> node123343309412432:table [style=solid]
33
+ node123343315169136:ref1 -> node123343309608720:table [style=solid]
34
+ node123343310801952 [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
- node139179813620768:ref0 -> node139179817987952:table [style=solid]
41
- node139179816339328 [label=<
40
+ node123343310801952:ref0 -> node123343315169136:table [style=solid]
41
+ node123343313520512 [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
- node139179816339328:ref0 -> node139179813620768:table [style=solid]
48
- subgraph { rank=same; node139179812243952 -> node139179812423776[weight=10, style=invis]; }
47
+ node123343313520512:ref0 -> node123343310801952:table [style=solid]
48
+ subgraph { rank=same; node123343309412432 -> node123343309608720[weight=10, style=invis]; }
49
49
  }
@@ -1,22 +1,22 @@
1
1
  digraph memory_graph {
2
2
  node [shape=plaintext]
3
- node139179817987952 [label=<
3
+ node123343315169136 [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
- node139179813620768 [label=<
8
+ node123343310801952 [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
- node139179813620768:ref0 -> node139179817987952:table [style=solid]
15
- node139179816339328 [label=<
14
+ node123343310801952:ref0 -> node123343315169136:table [style=solid]
15
+ node123343313520512 [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
- node139179816339328:ref0 -> node139179813620768:table [style=solid]
21
+ node123343313520512:ref0 -> node123343310801952:table [style=solid]
22
22
  }
@@ -1,6 +1,6 @@
1
1
  digraph memory_graph {
2
2
  node [shape=plaintext]
3
- node139179812243952 [label=<
3
+ node123343309412432 [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
- node139179812423696 [label=<
15
+ node123343309608640 [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
- node139179812423776 [label=<
27
+ node123343309608720 [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
- node139179812423776:ref0 -> node139179812423696:table [style=solid]
34
- node139179817987952 [label=<
33
+ node123343309608720:ref0 -> node123343309608640:table [style=solid]
34
+ node123343315169136 [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
- node139179817987952:ref0 -> node139179812243952:table [style=solid]
41
- node139179817987952:ref1 -> node139179812423776:table [style=solid]
42
- node139179813620768 [label=<
40
+ node123343315169136:ref0 -> node123343309412432:table [style=solid]
41
+ node123343315169136:ref1 -> node123343309608720:table [style=solid]
42
+ node123343310801952 [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
- node139179813620768:ref0 -> node139179817987952:table [style=solid]
49
- node139179816339328 [label=<
48
+ node123343310801952:ref0 -> node123343315169136:table [style=solid]
49
+ node123343313520512 [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
- node139179816339328:ref0 -> node139179813620768:table [style=solid]
56
- subgraph { rank=same; node139179812243952 -> node139179812423776[weight=10, style=invis]; }
55
+ node123343313520512:ref0 -> node123343310801952:table [style=solid]
56
+ subgraph { rank=same; node123343309412432 -> node123343309608720[weight=10, style=invis]; }
57
57
  }