memory-graph 0.3.32__tar.gz → 0.3.34__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.
- {memory_graph-0.3.32 → memory_graph-0.3.34}/PKG-INFO +21 -9
- memory_graph-0.3.32/memory_graph.egg-info/PKG-INFO → memory_graph-0.3.34/README.md +19 -27
- {memory_graph-0.3.32 → memory_graph-0.3.34}/images/add_one.gv +18 -18
- {memory_graph-0.3.32 → memory_graph-0.3.34}/images/avltree_key_value.gv +12 -12
- {memory_graph-0.3.32 → memory_graph-0.3.34}/images/avltree_leaf.gv +5 -5
- {memory_graph-0.3.32 → memory_graph-0.3.34}/images/avltree_linear.gv +12 -12
- {memory_graph-0.3.32 → memory_graph-0.3.34}/images/avltree_table.gv +12 -12
- {memory_graph-0.3.32 → memory_graph-0.3.34}/images/bin_tree.gv +35 -35
- memory_graph-0.3.34/images/colab_example.png +0 -0
- {memory_graph-0.3.32 → memory_graph-0.3.34}/images/copies.gv +20 -20
- {memory_graph-0.3.32 → memory_graph-0.3.34}/images/copy_method.gv +16 -16
- {memory_graph-0.3.32 → memory_graph-0.3.34}/images/debugging01.gv +8 -8
- {memory_graph-0.3.32 → memory_graph-0.3.34}/images/debugging01.png +0 -0
- {memory_graph-0.3.32 → memory_graph-0.3.34}/images/debugging02.gv +11 -11
- {memory_graph-0.3.32 → memory_graph-0.3.34}/images/debugging02.png +0 -0
- {memory_graph-0.3.32 → memory_graph-0.3.34}/images/debugging03.gv +13 -13
- {memory_graph-0.3.32 → memory_graph-0.3.34}/images/debugging03.png +0 -0
- {memory_graph-0.3.32 → memory_graph-0.3.34}/images/debugging04.gv +15 -15
- {memory_graph-0.3.32 → memory_graph-0.3.34}/images/debugging04.png +0 -0
- {memory_graph-0.3.32 → memory_graph-0.3.34}/images/debugging05.gv +17 -17
- {memory_graph-0.3.32 → memory_graph-0.3.34}/images/debugging05.png +0 -0
- {memory_graph-0.3.32 → memory_graph-0.3.34}/images/debugging06.gv +17 -17
- {memory_graph-0.3.32 → memory_graph-0.3.34}/images/debugging06.png +0 -0
- {memory_graph-0.3.32 → memory_graph-0.3.34}/images/extension_numpy.gv +8 -8
- {memory_graph-0.3.32 → memory_graph-0.3.34}/images/extension_pandas.gv +8 -8
- {memory_graph-0.3.32 → memory_graph-0.3.34}/images/factorial0.gv +3 -3
- {memory_graph-0.3.32 → memory_graph-0.3.34}/images/factorial0.png +0 -0
- {memory_graph-0.3.32 → memory_graph-0.3.34}/images/factorial1.gv +6 -6
- {memory_graph-0.3.32 → memory_graph-0.3.34}/images/factorial1.png +0 -0
- {memory_graph-0.3.32 → memory_graph-0.3.34}/images/factorial2.gv +8 -8
- {memory_graph-0.3.32 → memory_graph-0.3.34}/images/factorial2.png +0 -0
- {memory_graph-0.3.32 → memory_graph-0.3.34}/images/factorial3.gv +10 -10
- {memory_graph-0.3.32 → memory_graph-0.3.34}/images/factorial3.png +0 -0
- {memory_graph-0.3.32 → memory_graph-0.3.34}/images/factorial4.gv +10 -10
- {memory_graph-0.3.32 → memory_graph-0.3.34}/images/factorial4.png +0 -0
- {memory_graph-0.3.32 → memory_graph-0.3.34}/images/factorial5.gv +8 -8
- {memory_graph-0.3.32 → memory_graph-0.3.34}/images/factorial5.png +0 -0
- {memory_graph-0.3.32 → memory_graph-0.3.34}/images/factorial6.gv +6 -6
- {memory_graph-0.3.32 → memory_graph-0.3.34}/images/factorial6.png +0 -0
- {memory_graph-0.3.32 → memory_graph-0.3.34}/images/hash_set.gv +29 -29
- {memory_graph-0.3.32 → memory_graph-0.3.34}/images/highlight.gv +16 -16
- {memory_graph-0.3.32 → memory_graph-0.3.34}/images/immutable1.gv +4 -4
- {memory_graph-0.3.32 → memory_graph-0.3.34}/images/immutable2.gv +6 -6
- {memory_graph-0.3.32 → memory_graph-0.3.34}/images/introspect_depth.gv +56 -56
- {memory_graph-0.3.32 → memory_graph-0.3.34}/images/linked_list.gv +20 -20
- {memory_graph-0.3.32 → memory_graph-0.3.34}/images/many_types.gv +12 -12
- {memory_graph-0.3.32 → memory_graph-0.3.34}/images/mutable1.gv +4 -4
- {memory_graph-0.3.32 → memory_graph-0.3.34}/images/mutable2.gv +4 -4
- {memory_graph-0.3.32 → memory_graph-0.3.34}/images/not_node_types1.gv +6 -6
- {memory_graph-0.3.32 → memory_graph-0.3.34}/images/not_node_types2.gv +14 -14
- {memory_graph-0.3.32 → memory_graph-0.3.34}/images/power_set0.gv +11 -11
- {memory_graph-0.3.32 → memory_graph-0.3.34}/images/power_set0.png +0 -0
- {memory_graph-0.3.32 → memory_graph-0.3.34}/images/power_set1.gv +17 -17
- {memory_graph-0.3.32 → memory_graph-0.3.34}/images/power_set1.png +0 -0
- {memory_graph-0.3.32 → memory_graph-0.3.34}/images/power_set10.gv +36 -36
- {memory_graph-0.3.32 → memory_graph-0.3.34}/images/power_set10.png +0 -0
- {memory_graph-0.3.32 → memory_graph-0.3.34}/images/power_set11.gv +31 -31
- {memory_graph-0.3.32 → memory_graph-0.3.34}/images/power_set11.png +0 -0
- {memory_graph-0.3.32 → memory_graph-0.3.34}/images/power_set12.gv +31 -31
- {memory_graph-0.3.32 → memory_graph-0.3.34}/images/power_set12.png +0 -0
- {memory_graph-0.3.32 → memory_graph-0.3.34}/images/power_set13.gv +36 -36
- {memory_graph-0.3.32 → memory_graph-0.3.34}/images/power_set13.png +0 -0
- {memory_graph-0.3.32 → memory_graph-0.3.34}/images/power_set14.gv +41 -41
- {memory_graph-0.3.32 → memory_graph-0.3.34}/images/power_set14.png +0 -0
- {memory_graph-0.3.32 → memory_graph-0.3.34}/images/power_set15.gv +43 -43
- {memory_graph-0.3.32 → memory_graph-0.3.34}/images/power_set15.png +0 -0
- {memory_graph-0.3.32 → memory_graph-0.3.34}/images/power_set16.gv +40 -40
- {memory_graph-0.3.32 → memory_graph-0.3.34}/images/power_set16.png +0 -0
- {memory_graph-0.3.32 → memory_graph-0.3.34}/images/power_set17.gv +40 -40
- {memory_graph-0.3.32 → memory_graph-0.3.34}/images/power_set17.png +0 -0
- {memory_graph-0.3.32 → memory_graph-0.3.34}/images/power_set18.gv +45 -45
- {memory_graph-0.3.32 → memory_graph-0.3.34}/images/power_set18.png +0 -0
- {memory_graph-0.3.32 → memory_graph-0.3.34}/images/power_set19.gv +47 -47
- {memory_graph-0.3.32 → memory_graph-0.3.34}/images/power_set19.png +0 -0
- {memory_graph-0.3.32 → memory_graph-0.3.34}/images/power_set2.gv +22 -22
- {memory_graph-0.3.32 → memory_graph-0.3.34}/images/power_set2.png +0 -0
- {memory_graph-0.3.32 → memory_graph-0.3.34}/images/power_set20.gv +44 -44
- {memory_graph-0.3.32 → memory_graph-0.3.34}/images/power_set20.png +0 -0
- {memory_graph-0.3.32 → memory_graph-0.3.34}/images/power_set21.gv +39 -39
- {memory_graph-0.3.32 → memory_graph-0.3.34}/images/power_set21.png +0 -0
- {memory_graph-0.3.32 → memory_graph-0.3.34}/images/power_set22.gv +34 -34
- {memory_graph-0.3.32 → memory_graph-0.3.34}/images/power_set22.png +0 -0
- {memory_graph-0.3.32 → memory_graph-0.3.34}/images/power_set23.gv +28 -28
- {memory_graph-0.3.32 → memory_graph-0.3.34}/images/power_set23.png +0 -0
- {memory_graph-0.3.32 → memory_graph-0.3.34}/images/power_set3.gv +27 -27
- {memory_graph-0.3.32 → memory_graph-0.3.34}/images/power_set3.png +0 -0
- {memory_graph-0.3.32 → memory_graph-0.3.34}/images/power_set4.gv +32 -32
- {memory_graph-0.3.32 → memory_graph-0.3.34}/images/power_set4.png +0 -0
- {memory_graph-0.3.32 → memory_graph-0.3.34}/images/power_set5.gv +34 -34
- {memory_graph-0.3.32 → memory_graph-0.3.34}/images/power_set5.png +0 -0
- {memory_graph-0.3.32 → memory_graph-0.3.34}/images/power_set6.gv +32 -32
- {memory_graph-0.3.32 → memory_graph-0.3.34}/images/power_set6.png +0 -0
- {memory_graph-0.3.32 → memory_graph-0.3.34}/images/power_set7.gv +32 -32
- {memory_graph-0.3.32 → memory_graph-0.3.34}/images/power_set7.png +0 -0
- {memory_graph-0.3.32 → memory_graph-0.3.34}/images/power_set8.gv +37 -37
- {memory_graph-0.3.32 → memory_graph-0.3.34}/images/power_set8.png +0 -0
- {memory_graph-0.3.32 → memory_graph-0.3.34}/images/power_set9.gv +39 -39
- {memory_graph-0.3.32 → memory_graph-0.3.34}/images/power_set9.png +0 -0
- {memory_graph-0.3.32 → memory_graph-0.3.34}/images/rebinding1.gv +4 -4
- {memory_graph-0.3.32 → memory_graph-0.3.34}/images/rebinding2.gv +6 -6
- {memory_graph-0.3.32 → memory_graph-0.3.34}/memory_graph/__init__.py +2 -2
- memory_graph-0.3.32/README.md → memory_graph-0.3.34/memory_graph.egg-info/PKG-INFO +39 -7
- {memory_graph-0.3.32 → memory_graph-0.3.34}/memory_graph.egg-info/SOURCES.txt +1 -0
- {memory_graph-0.3.32 → memory_graph-0.3.34}/pyproject.toml +2 -2
- {memory_graph-0.3.32 → memory_graph-0.3.34}/LICENSE.txt +0 -0
- {memory_graph-0.3.32 → memory_graph-0.3.34}/MANIFEST.in +0 -0
- {memory_graph-0.3.32 → memory_graph-0.3.34}/images/-0 +0 -0
- {memory_graph-0.3.32 → memory_graph-0.3.34}/images/.gif +0 -0
- {memory_graph-0.3.32 → memory_graph-0.3.34}/images/add_one.png +0 -0
- {memory_graph-0.3.32 → memory_graph-0.3.34}/images/add_one.py +0 -0
- {memory_graph-0.3.32 → memory_graph-0.3.34}/images/avltree.py +0 -0
- {memory_graph-0.3.32 → memory_graph-0.3.34}/images/avltree.py~ +0 -0
- {memory_graph-0.3.32 → memory_graph-0.3.34}/images/avltree_dir.gv +0 -0
- {memory_graph-0.3.32 → memory_graph-0.3.34}/images/avltree_dir.png +0 -0
- {memory_graph-0.3.32 → memory_graph-0.3.34}/images/avltree_fail.gv +0 -0
- {memory_graph-0.3.32 → memory_graph-0.3.34}/images/avltree_fail.png +0 -0
- {memory_graph-0.3.32 → memory_graph-0.3.34}/images/avltree_key_value.png +0 -0
- {memory_graph-0.3.32 → memory_graph-0.3.34}/images/avltree_leaf.png +0 -0
- {memory_graph-0.3.32 → memory_graph-0.3.34}/images/avltree_linear.png +0 -0
- {memory_graph-0.3.32 → memory_graph-0.3.34}/images/avltree_table.png +0 -0
- {memory_graph-0.3.32 → memory_graph-0.3.34}/images/bin_tree.png +0 -0
- {memory_graph-0.3.32 → memory_graph-0.3.34}/images/bin_tree.py +0 -0
- {memory_graph-0.3.32 → memory_graph-0.3.34}/images/bin_tree2.py +0 -0
- {memory_graph-0.3.32 → memory_graph-0.3.34}/images/bin_tree2.py~ +0 -0
- {memory_graph-0.3.32 → memory_graph-0.3.34}/images/copies.png +0 -0
- {memory_graph-0.3.32 → memory_graph-0.3.34}/images/copies.py +0 -0
- {memory_graph-0.3.32 → memory_graph-0.3.34}/images/copy_method.png +0 -0
- {memory_graph-0.3.32 → memory_graph-0.3.34}/images/copy_method.py +0 -0
- {memory_graph-0.3.32 → memory_graph-0.3.34}/images/create_gif.sh +0 -0
- {memory_graph-0.3.32 → memory_graph-0.3.34}/images/create_images.sh +0 -0
- {memory_graph-0.3.32 → memory_graph-0.3.34}/images/debug_vscode.png +0 -0
- {memory_graph-0.3.32 → memory_graph-0.3.34}/images/debugging.gif +0 -0
- {memory_graph-0.3.32 → memory_graph-0.3.34}/images/debugging.py +0 -0
- {memory_graph-0.3.32 → memory_graph-0.3.34}/images/depth.gv +0 -0
- {memory_graph-0.3.32 → memory_graph-0.3.34}/images/depth.png +0 -0
- {memory_graph-0.3.32 → memory_graph-0.3.34}/images/extension_numpy.png +0 -0
- {memory_graph-0.3.32 → memory_graph-0.3.34}/images/extension_numpy.py +0 -0
- {memory_graph-0.3.32 → memory_graph-0.3.34}/images/extension_pandas.png +0 -0
- {memory_graph-0.3.32 → memory_graph-0.3.34}/images/extension_pandas.py +0 -0
- {memory_graph-0.3.32 → memory_graph-0.3.34}/images/factorial.gif +0 -0
- {memory_graph-0.3.32 → memory_graph-0.3.34}/images/factorial.py +0 -0
- {memory_graph-0.3.32 → memory_graph-0.3.34}/images/factorial01.gv +0 -0
- {memory_graph-0.3.32 → memory_graph-0.3.34}/images/factorial02.gv +0 -0
- {memory_graph-0.3.32 → memory_graph-0.3.34}/images/factorial03.gv +0 -0
- {memory_graph-0.3.32 → memory_graph-0.3.34}/images/factorial04.gv +0 -0
- {memory_graph-0.3.32 → memory_graph-0.3.34}/images/factorial05.gv +0 -0
- {memory_graph-0.3.32 → memory_graph-0.3.34}/images/factorial06.gv +0 -0
- {memory_graph-0.3.32 → memory_graph-0.3.34}/images/factorial07.gv +0 -0
- {memory_graph-0.3.32 → memory_graph-0.3.34}/images/hash_set.png +0 -0
- {memory_graph-0.3.32 → memory_graph-0.3.34}/images/hash_set.py +0 -0
- {memory_graph-0.3.32 → memory_graph-0.3.34}/images/hidden_edges.gv +0 -0
- {memory_graph-0.3.32 → memory_graph-0.3.34}/images/hidden_edges.png +0 -0
- {memory_graph-0.3.32 → memory_graph-0.3.34}/images/hidden_edges.py +0 -0
- {memory_graph-0.3.32 → memory_graph-0.3.34}/images/hidden_edges.py~ +0 -0
- {memory_graph-0.3.32 → memory_graph-0.3.34}/images/highlight.png +0 -0
- {memory_graph-0.3.32 → memory_graph-0.3.34}/images/highlight.py +0 -0
- {memory_graph-0.3.32 → memory_graph-0.3.34}/images/immutable.py +0 -0
- {memory_graph-0.3.32 → memory_graph-0.3.34}/images/immutable1.png +0 -0
- {memory_graph-0.3.32 → memory_graph-0.3.34}/images/immutable2.png +0 -0
- {memory_graph-0.3.32 → memory_graph-0.3.34}/images/introspect_depth.png +0 -0
- {memory_graph-0.3.32 → memory_graph-0.3.34}/images/introspect_depth.py +0 -0
- {memory_graph-0.3.32 → memory_graph-0.3.34}/images/introspect_depth.py~ +0 -0
- {memory_graph-0.3.32 → memory_graph-0.3.34}/images/ipython.png +0 -0
- {memory_graph-0.3.32 → memory_graph-0.3.34}/images/jupyter_example.png +0 -0
- {memory_graph-0.3.32 → memory_graph-0.3.34}/images/linked_list.png +0 -0
- {memory_graph-0.3.32 → memory_graph-0.3.34}/images/linked_list.py +0 -0
- {memory_graph-0.3.32 → memory_graph-0.3.34}/images/log.txt +0 -0
- {memory_graph-0.3.32 → memory_graph-0.3.34}/images/many_types.png +0 -0
- {memory_graph-0.3.32 → memory_graph-0.3.34}/images/many_types.py +0 -0
- {memory_graph-0.3.32 → memory_graph-0.3.34}/images/memory_graph.gv +0 -0
- {memory_graph-0.3.32 → memory_graph-0.3.34}/images/memory_graph.gv.pdf +0 -0
- {memory_graph-0.3.32 → memory_graph-0.3.34}/images/memory_graph.pdf +0 -0
- {memory_graph-0.3.32 → memory_graph-0.3.34}/images/mutable.py +0 -0
- {memory_graph-0.3.32 → memory_graph-0.3.34}/images/mutable1.png +0 -0
- {memory_graph-0.3.32 → memory_graph-0.3.34}/images/mutable2.png +0 -0
- {memory_graph-0.3.32 → memory_graph-0.3.34}/images/my_graph.gv +0 -0
- {memory_graph-0.3.32 → memory_graph-0.3.34}/images/my_graph.pdf +0 -0
- {memory_graph-0.3.32 → memory_graph-0.3.34}/images/name_rebinding.py +0 -0
- {memory_graph-0.3.32 → memory_graph-0.3.34}/images/not_node_types.py +0 -0
- {memory_graph-0.3.32 → memory_graph-0.3.34}/images/not_node_types.py~ +0 -0
- {memory_graph-0.3.32 → memory_graph-0.3.34}/images/not_node_types1.png +0 -0
- {memory_graph-0.3.32 → memory_graph-0.3.34}/images/not_node_types2.png +0 -0
- {memory_graph-0.3.32 → memory_graph-0.3.34}/images/power_set.gif +0 -0
- {memory_graph-0.3.32 → memory_graph-0.3.34}/images/power_set.py +0 -0
- {memory_graph-0.3.32 → memory_graph-0.3.34}/images/power_set19.png~ +0 -0
- {memory_graph-0.3.32 → memory_graph-0.3.34}/images/power_set8.png~ +0 -0
- {memory_graph-0.3.32 → memory_graph-0.3.34}/images/pyodide.png +0 -0
- {memory_graph-0.3.32 → memory_graph-0.3.34}/images/rebinding1.png +0 -0
- {memory_graph-0.3.32 → memory_graph-0.3.34}/images/rebinding2.png +0 -0
- {memory_graph-0.3.32 → memory_graph-0.3.34}/images/uva.png +0 -0
- {memory_graph-0.3.32 → memory_graph-0.3.34}/images/vscode_copying.gif +0 -0
- {memory_graph-0.3.32 → memory_graph-0.3.34}/memory_graph/call_stack.py +0 -0
- {memory_graph-0.3.32 → memory_graph-0.3.34}/memory_graph/config.py +0 -0
- {memory_graph-0.3.32 → memory_graph-0.3.34}/memory_graph/config_default.py +0 -0
- {memory_graph-0.3.32 → memory_graph-0.3.34}/memory_graph/config_helpers.py +0 -0
- {memory_graph-0.3.32 → memory_graph-0.3.34}/memory_graph/extension_numpy.py +0 -0
- {memory_graph-0.3.32 → memory_graph-0.3.34}/memory_graph/extension_pandas.py +0 -0
- {memory_graph-0.3.32 → memory_graph-0.3.34}/memory_graph/html_table.py +0 -0
- {memory_graph-0.3.32 → memory_graph-0.3.34}/memory_graph/list_view.py +0 -0
- {memory_graph-0.3.32 → memory_graph-0.3.34}/memory_graph/memory_to_nodes.py +0 -0
- {memory_graph-0.3.32 → memory_graph-0.3.34}/memory_graph/node_base.py +0 -0
- {memory_graph-0.3.32 → memory_graph-0.3.34}/memory_graph/node_key_value.py +0 -0
- {memory_graph-0.3.32 → memory_graph-0.3.34}/memory_graph/node_leaf.py +0 -0
- {memory_graph-0.3.32 → memory_graph-0.3.34}/memory_graph/node_linear.py +0 -0
- {memory_graph-0.3.32 → memory_graph-0.3.34}/memory_graph/node_table.py +0 -0
- {memory_graph-0.3.32 → memory_graph-0.3.34}/memory_graph/sequence.py +0 -0
- {memory_graph-0.3.32 → memory_graph-0.3.34}/memory_graph/slicer.py +0 -0
- {memory_graph-0.3.32 → memory_graph-0.3.34}/memory_graph/slices.py +0 -0
- {memory_graph-0.3.32 → memory_graph-0.3.34}/memory_graph/slices_iterator.py +0 -0
- {memory_graph-0.3.32 → memory_graph-0.3.34}/memory_graph/slices_table_iterator.py +0 -0
- {memory_graph-0.3.32 → memory_graph-0.3.34}/memory_graph/test.py +0 -0
- {memory_graph-0.3.32 → memory_graph-0.3.34}/memory_graph/test_max_graph_depth.py +0 -0
- {memory_graph-0.3.32 → memory_graph-0.3.34}/memory_graph/test_memory_graph.py +0 -0
- {memory_graph-0.3.32 → memory_graph-0.3.34}/memory_graph/test_memory_to_nodes.py +0 -0
- {memory_graph-0.3.32 → memory_graph-0.3.34}/memory_graph/test_sequence.py +0 -0
- {memory_graph-0.3.32 → memory_graph-0.3.34}/memory_graph/test_slicer.py +0 -0
- {memory_graph-0.3.32 → memory_graph-0.3.34}/memory_graph/test_slices.py +0 -0
- {memory_graph-0.3.32 → memory_graph-0.3.34}/memory_graph/test_slices_iterator.py +0 -0
- {memory_graph-0.3.32 → memory_graph-0.3.34}/memory_graph/utils.py +0 -0
- {memory_graph-0.3.32 → memory_graph-0.3.34}/memory_graph.egg-info/dependency_links.txt +0 -0
- {memory_graph-0.3.32 → memory_graph-0.3.34}/memory_graph.egg-info/requires.txt +0 -0
- {memory_graph-0.3.32 → memory_graph-0.3.34}/memory_graph.egg-info/top_level.txt +0 -0
- {memory_graph-0.3.32 → memory_graph-0.3.34}/setup.cfg +0 -0
- {memory_graph-0.3.32 → memory_graph-0.3.34}/setup.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
|
-
Name:
|
|
3
|
-
Version: 0.3.
|
|
2
|
+
Name: memory_graph
|
|
3
|
+
Version: 0.3.34
|
|
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
|
|
@@ -25,10 +25,13 @@ pip install --upgrade memory_graph
|
|
|
25
25
|
```
|
|
26
26
|
Additionally [Graphviz](https://graphviz.org/download/) needs to be installed.
|
|
27
27
|
|
|
28
|
+
# Highlight #
|
|
29
|
+

|
|
30
|
+
|
|
28
31
|
# Videos #
|
|
29
32
|
| [](https://www.youtube.com/watch?v=23_bHcr7hqo) | [](https://www.youtube.com/watch?v=pvIJgHCaXhU) |
|
|
30
33
|
|:--:|:--:|
|
|
31
|
-
| [Quick Intro](https://www.youtube.com/watch?v=23_bHcr7hqo) | [Mutability](https://www.youtube.com/watch?v=pvIJgHCaXhU) |
|
|
34
|
+
| [Quick Intro (3:49)](https://www.youtube.com/watch?v=23_bHcr7hqo) | [Mutability (17:29)](https://www.youtube.com/watch?v=pvIJgHCaXhU) |
|
|
32
35
|
|
|
33
36
|
# Memory Graph #
|
|
34
37
|
For program understanding and debugging, the [memory_graph](https://pypi.org/project/memory-graph/) package can visualize your data, supporting many different data types, including but not limited to:
|
|
@@ -123,6 +126,8 @@ A better way to understand what data is shared is to draw a graph of the data us
|
|
|
123
126
|
|
|
124
127
|
[ipython](#ipython)
|
|
125
128
|
|
|
129
|
+
[Google Colab](#google-colab)
|
|
130
|
+
|
|
126
131
|
[In the Browser](#in-the-browser)
|
|
127
132
|
|
|
128
133
|
[Animated GIF](#animated-gif)
|
|
@@ -363,10 +368,11 @@ The ```mg.stack()``` doesn't work well in *watch* context in most debuggers beca
|
|
|
363
368
|
|
|
364
369
|
| debugger | function to get the call stack |
|
|
365
370
|
|:---|:---|
|
|
366
|
-
|
|
|
367
|
-
|
|
|
368
|
-
|
|
|
369
|
-
|
|
|
371
|
+
| [pdb](https://docs.python.org/3/library/pdb.html), [pudb](https://pypi.org/project/pudb/) | `mg.stack_pdb()` |
|
|
372
|
+
| [Visual Studio Code](https://code.visualstudio.com/docs/languages/python) | `mg.stack_vscode()` |
|
|
373
|
+
| [Cursor AI](https://www.cursor.com/) | `mg.stack_cursor()` |
|
|
374
|
+
| [PyCharm](https://www.jetbrains.com/pycharm/) | `mg.stack_pycharm()` |
|
|
375
|
+
| [Wing](https://wingware.com/) | `mg.stack_wing()` |
|
|
370
376
|
|
|
371
377
|

|
|
372
378
|
|
|
@@ -379,7 +385,7 @@ Choose the list of `after_functions` after any of which the slice start. Then ch
|
|
|
379
385
|
```
|
|
380
386
|
mg.stack_after_through(after_functions : list[str],
|
|
381
387
|
through_function : str = "<module>",
|
|
382
|
-
|
|
388
|
+
drop : int = 0)
|
|
383
389
|
```
|
|
384
390
|
|
|
385
391
|
## Debugging without Debugger Tool ##
|
|
@@ -416,7 +422,7 @@ and pressing <Enter> a number of times, results in:
|
|
|
416
422
|

|
|
417
423
|
|
|
418
424
|
# Data Structure Examples #
|
|
419
|
-
|
|
425
|
+
Package memory_graph can be very useful in a data structures course, some examples:
|
|
420
426
|
|
|
421
427
|
## Circular Doubly Linked List ##
|
|
422
428
|
```python
|
|
@@ -869,6 +875,12 @@ Additionally install file [auto_memory_graph.py](https://raw.githubusercontent.c
|
|
|
869
875
|
Then after starting 'ipython' call function `mg_switch()` to turn on/off the automatic visualization of local variables after each command.
|
|
870
876
|

|
|
871
877
|
|
|
878
|
+
# Google Colab #
|
|
879
|
+
In Google Colab `locals()` has additional variables that cause problems in the graph, use `mg.locals_colab()` to get the local variables with these problematic variables filtered out. Use `mg.stack_colab()` to get the whole call stack with these variables filtered out.
|
|
880
|
+
|
|
881
|
+
See for example [colab_example.ipynb](https://raw.githubusercontent.com/bterwijn/memory_graph/main/src/colab_example.ipynb).
|
|
882
|
+

|
|
883
|
+
|
|
872
884
|
# In the Browser #
|
|
873
885
|
We can also run memory_graph in the browser: <a href="https://bterwijn.github.io/memory_graph/src/pyodide.html" target="_blank">Pyodide Example</a>
|
|
874
886
|

|
|
@@ -1,23 +1,3 @@
|
|
|
1
|
-
Metadata-Version: 2.4
|
|
2
|
-
Name: memory-graph
|
|
3
|
-
Version: 0.3.32
|
|
4
|
-
Summary: Teaching tool and debugging aid in context of references, mutable data types, and shallow and deep copy.
|
|
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
|
-
Classifier: Development Status :: 4 - Beta
|
|
10
|
-
Classifier: Intended Audience :: Education
|
|
11
|
-
Classifier: Intended Audience :: Developers
|
|
12
|
-
Classifier: Programming Language :: Python :: 3
|
|
13
|
-
Classifier: Topic :: Education
|
|
14
|
-
Classifier: Topic :: Software Development :: Debuggers
|
|
15
|
-
Requires-Python: >=3.7
|
|
16
|
-
Description-Content-Type: text/markdown
|
|
17
|
-
License-File: LICENSE.txt
|
|
18
|
-
Requires-Dist: graphviz
|
|
19
|
-
Dynamic: license-file
|
|
20
|
-
|
|
21
1
|
# Installation #
|
|
22
2
|
Install (or upgrade) `memory_graph` using pip:
|
|
23
3
|
```
|
|
@@ -25,10 +5,13 @@ pip install --upgrade memory_graph
|
|
|
25
5
|
```
|
|
26
6
|
Additionally [Graphviz](https://graphviz.org/download/) needs to be installed.
|
|
27
7
|
|
|
8
|
+
# Highlight #
|
|
9
|
+

|
|
10
|
+
|
|
28
11
|
# Videos #
|
|
29
12
|
| [](https://www.youtube.com/watch?v=23_bHcr7hqo) | [](https://www.youtube.com/watch?v=pvIJgHCaXhU) |
|
|
30
13
|
|:--:|:--:|
|
|
31
|
-
| [Quick Intro](https://www.youtube.com/watch?v=23_bHcr7hqo) | [Mutability](https://www.youtube.com/watch?v=pvIJgHCaXhU) |
|
|
14
|
+
| [Quick Intro (3:49)](https://www.youtube.com/watch?v=23_bHcr7hqo) | [Mutability (17:29)](https://www.youtube.com/watch?v=pvIJgHCaXhU) |
|
|
32
15
|
|
|
33
16
|
# Memory Graph #
|
|
34
17
|
For program understanding and debugging, the [memory_graph](https://pypi.org/project/memory-graph/) package can visualize your data, supporting many different data types, including but not limited to:
|
|
@@ -123,6 +106,8 @@ A better way to understand what data is shared is to draw a graph of the data us
|
|
|
123
106
|
|
|
124
107
|
[ipython](#ipython)
|
|
125
108
|
|
|
109
|
+
[Google Colab](#google-colab)
|
|
110
|
+
|
|
126
111
|
[In the Browser](#in-the-browser)
|
|
127
112
|
|
|
128
113
|
[Animated GIF](#animated-gif)
|
|
@@ -363,10 +348,11 @@ The ```mg.stack()``` doesn't work well in *watch* context in most debuggers beca
|
|
|
363
348
|
|
|
364
349
|
| debugger | function to get the call stack |
|
|
365
350
|
|:---|:---|
|
|
366
|
-
|
|
|
367
|
-
|
|
|
368
|
-
|
|
|
369
|
-
|
|
|
351
|
+
| [pdb](https://docs.python.org/3/library/pdb.html), [pudb](https://pypi.org/project/pudb/) | `mg.stack_pdb()` |
|
|
352
|
+
| [Visual Studio Code](https://code.visualstudio.com/docs/languages/python) | `mg.stack_vscode()` |
|
|
353
|
+
| [Cursor AI](https://www.cursor.com/) | `mg.stack_cursor()` |
|
|
354
|
+
| [PyCharm](https://www.jetbrains.com/pycharm/) | `mg.stack_pycharm()` |
|
|
355
|
+
| [Wing](https://wingware.com/) | `mg.stack_wing()` |
|
|
370
356
|
|
|
371
357
|

|
|
372
358
|
|
|
@@ -379,7 +365,7 @@ Choose the list of `after_functions` after any of which the slice start. Then ch
|
|
|
379
365
|
```
|
|
380
366
|
mg.stack_after_through(after_functions : list[str],
|
|
381
367
|
through_function : str = "<module>",
|
|
382
|
-
|
|
368
|
+
drop : int = 0)
|
|
383
369
|
```
|
|
384
370
|
|
|
385
371
|
## Debugging without Debugger Tool ##
|
|
@@ -416,7 +402,7 @@ and pressing <Enter> a number of times, results in:
|
|
|
416
402
|

|
|
417
403
|
|
|
418
404
|
# Data Structure Examples #
|
|
419
|
-
|
|
405
|
+
Package memory_graph can be very useful in a data structures course, some examples:
|
|
420
406
|
|
|
421
407
|
## Circular Doubly Linked List ##
|
|
422
408
|
```python
|
|
@@ -869,6 +855,12 @@ Additionally install file [auto_memory_graph.py](https://raw.githubusercontent.c
|
|
|
869
855
|
Then after starting 'ipython' call function `mg_switch()` to turn on/off the automatic visualization of local variables after each command.
|
|
870
856
|

|
|
871
857
|
|
|
858
|
+
# Google Colab #
|
|
859
|
+
In Google Colab `locals()` has additional variables that cause problems in the graph, use `mg.locals_colab()` to get the local variables with these problematic variables filtered out. Use `mg.stack_colab()` to get the whole call stack with these variables filtered out.
|
|
860
|
+
|
|
861
|
+
See for example [colab_example.ipynb](https://raw.githubusercontent.com/bterwijn/memory_graph/main/src/colab_example.ipynb).
|
|
862
|
+

|
|
863
|
+
|
|
872
864
|
# In the Browser #
|
|
873
865
|
We can also run memory_graph in the browser: <a href="https://bterwijn.github.io/memory_graph/src/pyodide.html" target="_blank">Pyodide Example</a>
|
|
874
866
|

|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
digraph memory_graph {
|
|
2
2
|
node [shape=plaintext]
|
|
3
|
-
|
|
3
|
+
node128708527869504 [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
|
-
|
|
11
|
+
node128708517705152 [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
|
-
|
|
18
|
+
node128708517061760 [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
|
-
|
|
25
|
+
node128708517824128 [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
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
31
|
+
node128708517824128:ref0 -> node128708527869504:table [style=solid]
|
|
32
|
+
node128708517824128:ref1 -> node128708517705152:table [style=solid]
|
|
33
|
+
node128708517824128:ref2 -> node128708517061760:table [style=solid]
|
|
34
|
+
node128708527812464 [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
|
-
|
|
42
|
+
node128708513131968 [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
|
-
|
|
50
|
+
node128708517619328 [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
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
56
|
+
node128708517619328:ref0 -> node128708527869504:table [style=solid]
|
|
57
|
+
node128708517619328:ref1 -> node128708527812464:table [style=solid]
|
|
58
|
+
node128708517619328:ref2 -> node128708513131968:table [style=solid]
|
|
59
|
+
node128708513164544 [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: <module> </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
|
-
|
|
66
|
-
|
|
67
|
-
subgraph { rank=same;
|
|
68
|
-
subgraph { rank=same;
|
|
65
|
+
node128708513164544:ref0 -> node128708517824128:table [style=solid]
|
|
66
|
+
node128708513164544:ref1 -> node128708517619328:table [style=solid]
|
|
67
|
+
subgraph { rank=same; node128708517824128 -> node128708517619328[weight=10, style=invis]; }
|
|
68
|
+
subgraph { rank=same; node128708527869504 -> node128708517705152 -> node128708517061760 -> node128708527812464 -> node128708513131968[weight=10, style=invis]; }
|
|
69
69
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
digraph memory_graph {
|
|
2
2
|
node [shape=plaintext]
|
|
3
|
-
|
|
3
|
+
node131165615065344 [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
|
-
|
|
11
|
+
node131165615261552 [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
|
-
|
|
19
|
+
node131165615261632 [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
|
-
|
|
26
|
-
|
|
25
|
+
node131165615261632:ref0 -> node131165615261552:table [style=solid]
|
|
26
|
+
node131165620825968 [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
|
-
|
|
33
|
-
|
|
34
|
-
|
|
32
|
+
node131165620825968:ref0 -> node131165615065344:table [style=solid]
|
|
33
|
+
node131165620825968:ref1 -> node131165615261632:table [style=solid]
|
|
34
|
+
node131165616458784 [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
|
-
|
|
41
|
-
|
|
40
|
+
node131165616458784:ref0 -> node131165620825968:table [style=solid]
|
|
41
|
+
node131165619177344 [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
|
-
|
|
48
|
-
subgraph { rank=same;
|
|
47
|
+
node131165619177344:ref0 -> node131165616458784:table [style=solid]
|
|
48
|
+
subgraph { rank=same; node131165615065344 -> node131165615261632[weight=10, style=invis]; }
|
|
49
49
|
}
|
|
@@ -1,22 +1,22 @@
|
|
|
1
1
|
digraph memory_graph {
|
|
2
2
|
node [shape=plaintext]
|
|
3
|
-
|
|
3
|
+
node131165620825968 [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
|
-
|
|
8
|
+
node131165616458784 [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
|
-
|
|
15
|
-
|
|
14
|
+
node131165616458784:ref0 -> node131165620825968:table [style=solid]
|
|
15
|
+
node131165619177344 [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
|
-
|
|
21
|
+
node131165619177344:ref0 -> node131165616458784:table [style=solid]
|
|
22
22
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
digraph memory_graph {
|
|
2
2
|
node [shape=plaintext]
|
|
3
|
-
|
|
3
|
+
node131165615065344 [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
|
-
|
|
15
|
+
node131165615261552 [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
|
-
|
|
27
|
+
node131165615261632 [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
|
-
|
|
34
|
-
|
|
33
|
+
node131165615261632:ref0 -> node131165615261552:table [style=solid]
|
|
34
|
+
node131165620825968 [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
|
-
|
|
41
|
-
|
|
42
|
-
|
|
40
|
+
node131165620825968:ref0 -> node131165615065344:table [style=solid]
|
|
41
|
+
node131165620825968:ref1 -> node131165615261632:table [style=solid]
|
|
42
|
+
node131165616458784 [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
|
-
|
|
49
|
-
|
|
48
|
+
node131165616458784:ref0 -> node131165620825968:table [style=solid]
|
|
49
|
+
node131165619177344 [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
|
-
|
|
56
|
-
subgraph { rank=same;
|
|
55
|
+
node131165619177344:ref0 -> node131165616458784:table [style=solid]
|
|
56
|
+
subgraph { rank=same; node131165615065344 -> node131165615261632[weight=10, style=invis]; }
|
|
57
57
|
}
|
|
@@ -1,49 +1,49 @@
|
|
|
1
1
|
digraph memory_graph {
|
|
2
2
|
node [shape=plaintext]
|
|
3
|
-
|
|
3
|
+
node131165615065344 [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
|
-
|
|
10
|
+
node131165615261552 [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
|
-
|
|
17
|
+
node131165615261632 [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
|
-
|
|
25
|
-
|
|
24
|
+
node131165615261632:ref0 -> node131165615261552:table [style=solid]
|
|
25
|
+
node131165620825968 [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
|
-
|
|
33
|
-
|
|
34
|
-
|
|
32
|
+
node131165620825968:ref0 -> node131165615065344:table [style=solid]
|
|
33
|
+
node131165620825968:ref1 -> node131165615261632:table [style=solid]
|
|
34
|
+
node131165616458784 [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
|
-
|
|
41
|
-
|
|
40
|
+
node131165616458784:ref0 -> node131165620825968:table [style=solid]
|
|
41
|
+
node131165619177344 [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
|
-
|
|
48
|
-
subgraph { rank=same;
|
|
47
|
+
node131165619177344:ref0 -> node131165616458784:table [style=solid]
|
|
48
|
+
subgraph { rank=same; node131165615065344 -> node131165615261632[weight=10, style=invis]; }
|
|
49
49
|
}
|