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.
- {memory_graph-0.3.37/memory_graph.egg-info → memory_graph-0.3.38}/PKG-INFO +66 -10
- {memory_graph-0.3.37 → memory_graph-0.3.38}/README.md +65 -9
- memory_graph-0.3.38/images/.idea/.gitignore +8 -0
- memory_graph-0.3.38/images/.idea/images.iml +12 -0
- memory_graph-0.3.38/images/.idea/inspectionProfiles/profiles_settings.xml +6 -0
- memory_graph-0.3.38/images/.idea/misc.xml +7 -0
- memory_graph-0.3.38/images/.idea/modules.xml +8 -0
- memory_graph-0.3.38/images/.idea/vcs.xml +6 -0
- memory_graph-0.3.38/images/.idea/workspace.xml +83 -0
- {memory_graph-0.3.37 → memory_graph-0.3.38}/images/add_one.gv +18 -18
- {memory_graph-0.3.37 → memory_graph-0.3.38}/images/avltree_key_value.gv +12 -12
- {memory_graph-0.3.37 → memory_graph-0.3.38}/images/avltree_leaf.gv +5 -5
- {memory_graph-0.3.37 → memory_graph-0.3.38}/images/avltree_linear.gv +12 -12
- {memory_graph-0.3.37 → memory_graph-0.3.38}/images/avltree_table.gv +12 -12
- memory_graph-0.3.38/images/bin_search.gv +119 -0
- memory_graph-0.3.38/images/bin_search.png +0 -0
- memory_graph-0.3.38/images/bin_search.py +40 -0
- memory_graph-0.3.38/images/bin_search.py~ +42 -0
- memory_graph-0.3.38/images/bin_search2.png +0 -0
- memory_graph-0.3.38/images/bin_search_linear.gv +133 -0
- memory_graph-0.3.38/images/bin_search_linear.png +0 -0
- memory_graph-0.3.38/images/bin_search_linear.py +40 -0
- memory_graph-0.3.38/images/bin_search_linear.py~ +42 -0
- {memory_graph-0.3.37 → memory_graph-0.3.38}/images/bin_tree.gv +35 -35
- {memory_graph-0.3.37 → memory_graph-0.3.38}/images/copies.gv +20 -20
- {memory_graph-0.3.37 → memory_graph-0.3.38}/images/copy_method.gv +16 -16
- {memory_graph-0.3.37 → memory_graph-0.3.38}/images/create_images.sh +2 -0
- {memory_graph-0.3.37 → memory_graph-0.3.38}/images/debugging01.gv +8 -8
- {memory_graph-0.3.37 → memory_graph-0.3.38}/images/debugging01.png +0 -0
- {memory_graph-0.3.37 → memory_graph-0.3.38}/images/debugging02.gv +11 -11
- {memory_graph-0.3.37 → memory_graph-0.3.38}/images/debugging02.png +0 -0
- {memory_graph-0.3.37 → memory_graph-0.3.38}/images/debugging03.gv +13 -13
- {memory_graph-0.3.37 → memory_graph-0.3.38}/images/debugging03.png +0 -0
- {memory_graph-0.3.37 → memory_graph-0.3.38}/images/debugging04.gv +15 -15
- {memory_graph-0.3.37 → memory_graph-0.3.38}/images/debugging04.png +0 -0
- {memory_graph-0.3.37 → memory_graph-0.3.38}/images/debugging05.gv +17 -17
- {memory_graph-0.3.37 → memory_graph-0.3.38}/images/debugging05.png +0 -0
- {memory_graph-0.3.37 → memory_graph-0.3.38}/images/debugging06.gv +17 -17
- {memory_graph-0.3.37 → memory_graph-0.3.38}/images/debugging06.png +0 -0
- {memory_graph-0.3.37 → memory_graph-0.3.38}/images/extension_numpy.gv +8 -8
- {memory_graph-0.3.37 → memory_graph-0.3.38}/images/extension_pandas.gv +8 -8
- {memory_graph-0.3.37 → memory_graph-0.3.38}/images/factorial0.gv +3 -3
- {memory_graph-0.3.37 → memory_graph-0.3.38}/images/factorial0.png +0 -0
- {memory_graph-0.3.37 → memory_graph-0.3.38}/images/factorial1.gv +6 -6
- {memory_graph-0.3.37 → memory_graph-0.3.38}/images/factorial1.png +0 -0
- {memory_graph-0.3.37 → memory_graph-0.3.38}/images/factorial2.gv +8 -8
- {memory_graph-0.3.37 → memory_graph-0.3.38}/images/factorial2.png +0 -0
- {memory_graph-0.3.37 → memory_graph-0.3.38}/images/factorial3.gv +10 -10
- {memory_graph-0.3.37 → memory_graph-0.3.38}/images/factorial3.png +0 -0
- {memory_graph-0.3.37 → memory_graph-0.3.38}/images/factorial4.gv +10 -10
- {memory_graph-0.3.37 → memory_graph-0.3.38}/images/factorial4.png +0 -0
- {memory_graph-0.3.37 → memory_graph-0.3.38}/images/factorial5.gv +8 -8
- {memory_graph-0.3.37 → memory_graph-0.3.38}/images/factorial5.png +0 -0
- {memory_graph-0.3.37 → memory_graph-0.3.38}/images/factorial6.gv +6 -6
- {memory_graph-0.3.37 → memory_graph-0.3.38}/images/factorial6.png +0 -0
- {memory_graph-0.3.37 → memory_graph-0.3.38}/images/hash_set.gv +29 -29
- {memory_graph-0.3.37 → memory_graph-0.3.38}/images/highlight.gv +16 -16
- {memory_graph-0.3.37 → memory_graph-0.3.38}/images/immutable1.gv +4 -4
- {memory_graph-0.3.37 → memory_graph-0.3.38}/images/immutable2.gv +6 -6
- {memory_graph-0.3.37 → memory_graph-0.3.38}/images/introspect_depth.gv +56 -56
- {memory_graph-0.3.37 → memory_graph-0.3.38}/images/linked_list.gv +20 -20
- {memory_graph-0.3.37 → memory_graph-0.3.38}/images/many_types.gv +12 -12
- memory_graph-0.3.38/images/memory_graph.gv +43 -0
- memory_graph-0.3.38/images/memory_graph.pdf +0 -0
- {memory_graph-0.3.37 → memory_graph-0.3.38}/images/mutable1.gv +4 -4
- {memory_graph-0.3.37 → memory_graph-0.3.38}/images/mutable2.gv +4 -4
- {memory_graph-0.3.37 → memory_graph-0.3.38}/images/not_node_types1.gv +6 -6
- {memory_graph-0.3.37 → memory_graph-0.3.38}/images/not_node_types2.gv +14 -14
- {memory_graph-0.3.37 → memory_graph-0.3.38}/images/power_set0.gv +11 -11
- {memory_graph-0.3.37 → memory_graph-0.3.38}/images/power_set0.png +0 -0
- {memory_graph-0.3.37 → memory_graph-0.3.38}/images/power_set1.gv +17 -17
- {memory_graph-0.3.37 → memory_graph-0.3.38}/images/power_set1.png +0 -0
- {memory_graph-0.3.37 → memory_graph-0.3.38}/images/power_set10.gv +36 -36
- {memory_graph-0.3.37 → memory_graph-0.3.38}/images/power_set10.png +0 -0
- {memory_graph-0.3.37 → memory_graph-0.3.38}/images/power_set11.gv +31 -31
- {memory_graph-0.3.37 → memory_graph-0.3.38}/images/power_set11.png +0 -0
- {memory_graph-0.3.37 → memory_graph-0.3.38}/images/power_set12.gv +31 -31
- {memory_graph-0.3.37 → memory_graph-0.3.38}/images/power_set12.png +0 -0
- {memory_graph-0.3.37 → memory_graph-0.3.38}/images/power_set13.gv +36 -36
- {memory_graph-0.3.37 → memory_graph-0.3.38}/images/power_set13.png +0 -0
- {memory_graph-0.3.37 → memory_graph-0.3.38}/images/power_set14.gv +41 -41
- {memory_graph-0.3.37 → memory_graph-0.3.38}/images/power_set14.png +0 -0
- {memory_graph-0.3.37 → memory_graph-0.3.38}/images/power_set15.gv +43 -43
- {memory_graph-0.3.37 → memory_graph-0.3.38}/images/power_set15.png +0 -0
- {memory_graph-0.3.37 → memory_graph-0.3.38}/images/power_set16.gv +40 -40
- {memory_graph-0.3.37 → memory_graph-0.3.38}/images/power_set16.png +0 -0
- {memory_graph-0.3.37 → memory_graph-0.3.38}/images/power_set17.gv +40 -40
- {memory_graph-0.3.37 → memory_graph-0.3.38}/images/power_set17.png +0 -0
- {memory_graph-0.3.37 → memory_graph-0.3.38}/images/power_set18.gv +45 -45
- {memory_graph-0.3.37 → memory_graph-0.3.38}/images/power_set18.png +0 -0
- {memory_graph-0.3.37 → memory_graph-0.3.38}/images/power_set19.gv +47 -47
- {memory_graph-0.3.37 → memory_graph-0.3.38}/images/power_set19.png +0 -0
- {memory_graph-0.3.37 → memory_graph-0.3.38}/images/power_set2.gv +22 -22
- {memory_graph-0.3.37 → memory_graph-0.3.38}/images/power_set2.png +0 -0
- {memory_graph-0.3.37 → memory_graph-0.3.38}/images/power_set20.gv +44 -44
- {memory_graph-0.3.37 → memory_graph-0.3.38}/images/power_set20.png +0 -0
- {memory_graph-0.3.37 → memory_graph-0.3.38}/images/power_set21.gv +39 -39
- {memory_graph-0.3.37 → memory_graph-0.3.38}/images/power_set21.png +0 -0
- {memory_graph-0.3.37 → memory_graph-0.3.38}/images/power_set22.gv +34 -34
- {memory_graph-0.3.37 → memory_graph-0.3.38}/images/power_set22.png +0 -0
- {memory_graph-0.3.37 → memory_graph-0.3.38}/images/power_set23.gv +28 -28
- {memory_graph-0.3.37 → memory_graph-0.3.38}/images/power_set23.png +0 -0
- {memory_graph-0.3.37 → memory_graph-0.3.38}/images/power_set3.gv +27 -27
- {memory_graph-0.3.37 → memory_graph-0.3.38}/images/power_set3.png +0 -0
- {memory_graph-0.3.37 → memory_graph-0.3.38}/images/power_set4.gv +32 -32
- {memory_graph-0.3.37 → memory_graph-0.3.38}/images/power_set4.png +0 -0
- {memory_graph-0.3.37 → memory_graph-0.3.38}/images/power_set5.gv +34 -34
- {memory_graph-0.3.37 → memory_graph-0.3.38}/images/power_set5.png +0 -0
- {memory_graph-0.3.37 → memory_graph-0.3.38}/images/power_set6.gv +32 -32
- {memory_graph-0.3.37 → memory_graph-0.3.38}/images/power_set6.png +0 -0
- {memory_graph-0.3.37 → memory_graph-0.3.38}/images/power_set7.gv +32 -32
- {memory_graph-0.3.37 → memory_graph-0.3.38}/images/power_set7.png +0 -0
- {memory_graph-0.3.37 → memory_graph-0.3.38}/images/power_set8.gv +37 -37
- {memory_graph-0.3.37 → memory_graph-0.3.38}/images/power_set8.png +0 -0
- {memory_graph-0.3.37 → memory_graph-0.3.38}/images/power_set9.gv +39 -39
- {memory_graph-0.3.37 → memory_graph-0.3.38}/images/power_set9.png +0 -0
- {memory_graph-0.3.37 → memory_graph-0.3.38}/images/rebinding1.gv +4 -4
- {memory_graph-0.3.37 → memory_graph-0.3.38}/images/rebinding2.gv +6 -6
- memory_graph-0.3.38/images/stack.txt +24 -0
- memory_graph-0.3.38/images/vsc.py +42 -0
- {memory_graph-0.3.37 → memory_graph-0.3.38}/memory_graph/__init__.py +11 -13
- {memory_graph-0.3.37 → memory_graph-0.3.38}/memory_graph/config.py +4 -0
- memory_graph-0.3.38/memory_graph/config_default.py +122 -0
- {memory_graph-0.3.37 → memory_graph-0.3.38/memory_graph.egg-info}/PKG-INFO +66 -10
- {memory_graph-0.3.37 → memory_graph-0.3.38}/memory_graph.egg-info/SOURCES.txt +15 -1
- {memory_graph-0.3.37 → memory_graph-0.3.38}/pyproject.toml +1 -1
- memory_graph-0.3.37/images/bin_search.py +0 -31
- memory_graph-0.3.37/images/memory_graph.gv +0 -22
- memory_graph-0.3.37/images/memory_graph.pdf +0 -0
- memory_graph-0.3.37/images/stack.txt +0 -21
- memory_graph-0.3.37/images/vsc.py +0 -23
- memory_graph-0.3.37/images/vsc.py~ +0 -22
- memory_graph-0.3.37/memory_graph/config_default.py +0 -108
- {memory_graph-0.3.37 → memory_graph-0.3.38}/LICENSE.txt +0 -0
- {memory_graph-0.3.37 → memory_graph-0.3.38}/MANIFEST.in +0 -0
- {memory_graph-0.3.37 → memory_graph-0.3.38}/images/-0 +0 -0
- {memory_graph-0.3.37 → memory_graph-0.3.38}/images/.gif +0 -0
- {memory_graph-0.3.37 → memory_graph-0.3.38}/images/add_one.png +0 -0
- {memory_graph-0.3.37 → memory_graph-0.3.38}/images/add_one.py +0 -0
- {memory_graph-0.3.37 → memory_graph-0.3.38}/images/avltree.py +0 -0
- {memory_graph-0.3.37 → memory_graph-0.3.38}/images/avltree.py~ +0 -0
- {memory_graph-0.3.37 → memory_graph-0.3.38}/images/avltree_dir.gv +0 -0
- {memory_graph-0.3.37 → memory_graph-0.3.38}/images/avltree_dir.png +0 -0
- {memory_graph-0.3.37 → memory_graph-0.3.38}/images/avltree_fail.gv +0 -0
- {memory_graph-0.3.37 → memory_graph-0.3.38}/images/avltree_fail.png +0 -0
- {memory_graph-0.3.37 → memory_graph-0.3.38}/images/avltree_key_value.png +0 -0
- {memory_graph-0.3.37 → memory_graph-0.3.38}/images/avltree_leaf.png +0 -0
- {memory_graph-0.3.37 → memory_graph-0.3.38}/images/avltree_linear.png +0 -0
- {memory_graph-0.3.37 → memory_graph-0.3.38}/images/avltree_table.png +0 -0
- {memory_graph-0.3.37 → memory_graph-0.3.38}/images/bin_tree.gif +0 -0
- {memory_graph-0.3.37 → memory_graph-0.3.38}/images/bin_tree.png +0 -0
- {memory_graph-0.3.37 → memory_graph-0.3.38}/images/bin_tree.py +0 -0
- {memory_graph-0.3.37 → memory_graph-0.3.38}/images/bin_tree2.py +0 -0
- {memory_graph-0.3.37 → memory_graph-0.3.38}/images/bin_tree2.py~ +0 -0
- {memory_graph-0.3.37 → memory_graph-0.3.38}/images/call_stack.txt +0 -0
- {memory_graph-0.3.37 → memory_graph-0.3.38}/images/colab_example.png +0 -0
- {memory_graph-0.3.37 → memory_graph-0.3.38}/images/copies.png +0 -0
- {memory_graph-0.3.37 → memory_graph-0.3.38}/images/copies.py +0 -0
- {memory_graph-0.3.37 → memory_graph-0.3.38}/images/copy_method.png +0 -0
- {memory_graph-0.3.37 → memory_graph-0.3.38}/images/copy_method.py +0 -0
- {memory_graph-0.3.37 → memory_graph-0.3.38}/images/create_gif.sh +0 -0
- {memory_graph-0.3.37 → memory_graph-0.3.38}/images/debug.gv +0 -0
- {memory_graph-0.3.37 → memory_graph-0.3.38}/images/debug.pdf +0 -0
- {memory_graph-0.3.37 → memory_graph-0.3.38}/images/debug_vscode.png +0 -0
- {memory_graph-0.3.37 → memory_graph-0.3.38}/images/debugging.gif +0 -0
- {memory_graph-0.3.37 → memory_graph-0.3.38}/images/debugging.py +0 -0
- {memory_graph-0.3.37 → memory_graph-0.3.38}/images/depth.gv +0 -0
- {memory_graph-0.3.37 → memory_graph-0.3.38}/images/depth.png +0 -0
- {memory_graph-0.3.37 → memory_graph-0.3.38}/images/extension_numpy.png +0 -0
- {memory_graph-0.3.37 → memory_graph-0.3.38}/images/extension_numpy.py +0 -0
- {memory_graph-0.3.37 → memory_graph-0.3.38}/images/extension_pandas.png +0 -0
- {memory_graph-0.3.37 → memory_graph-0.3.38}/images/extension_pandas.py +0 -0
- {memory_graph-0.3.37 → memory_graph-0.3.38}/images/factorial.gif +0 -0
- {memory_graph-0.3.37 → memory_graph-0.3.38}/images/factorial.py +0 -0
- {memory_graph-0.3.37 → memory_graph-0.3.38}/images/factorial01.gv +0 -0
- {memory_graph-0.3.37 → memory_graph-0.3.38}/images/factorial02.gv +0 -0
- {memory_graph-0.3.37 → memory_graph-0.3.38}/images/factorial03.gv +0 -0
- {memory_graph-0.3.37 → memory_graph-0.3.38}/images/factorial04.gv +0 -0
- {memory_graph-0.3.37 → memory_graph-0.3.38}/images/factorial05.gv +0 -0
- {memory_graph-0.3.37 → memory_graph-0.3.38}/images/factorial06.gv +0 -0
- {memory_graph-0.3.37 → memory_graph-0.3.38}/images/factorial07.gv +0 -0
- {memory_graph-0.3.37 → memory_graph-0.3.38}/images/hash_set.gif +0 -0
- {memory_graph-0.3.37 → memory_graph-0.3.38}/images/hash_set.png +0 -0
- {memory_graph-0.3.37 → memory_graph-0.3.38}/images/hash_set.py +0 -0
- {memory_graph-0.3.37 → memory_graph-0.3.38}/images/hidden_edges.gv +0 -0
- {memory_graph-0.3.37 → memory_graph-0.3.38}/images/hidden_edges.png +0 -0
- {memory_graph-0.3.37 → memory_graph-0.3.38}/images/hidden_edges.py +0 -0
- {memory_graph-0.3.37 → memory_graph-0.3.38}/images/hidden_edges.py~ +0 -0
- {memory_graph-0.3.37 → memory_graph-0.3.38}/images/highlight.png +0 -0
- {memory_graph-0.3.37 → memory_graph-0.3.38}/images/highlight.py +0 -0
- {memory_graph-0.3.37 → memory_graph-0.3.38}/images/immutable.py +0 -0
- {memory_graph-0.3.37 → memory_graph-0.3.38}/images/immutable1.png +0 -0
- {memory_graph-0.3.37 → memory_graph-0.3.38}/images/immutable2.png +0 -0
- {memory_graph-0.3.37 → memory_graph-0.3.38}/images/introspect_depth.png +0 -0
- {memory_graph-0.3.37 → memory_graph-0.3.38}/images/introspect_depth.py +0 -0
- {memory_graph-0.3.37 → memory_graph-0.3.38}/images/introspect_depth.py~ +0 -0
- {memory_graph-0.3.37 → memory_graph-0.3.38}/images/ipython.png +0 -0
- {memory_graph-0.3.37 → memory_graph-0.3.38}/images/jupyter_example.png +0 -0
- {memory_graph-0.3.37 → memory_graph-0.3.38}/images/linked_list.gif +0 -0
- {memory_graph-0.3.37 → memory_graph-0.3.38}/images/linked_list.png +0 -0
- {memory_graph-0.3.37 → memory_graph-0.3.38}/images/linked_list.py +0 -0
- {memory_graph-0.3.37 → memory_graph-0.3.38}/images/log.txt +0 -0
- {memory_graph-0.3.37 → memory_graph-0.3.38}/images/many_types.png +0 -0
- {memory_graph-0.3.37 → memory_graph-0.3.38}/images/many_types.py +0 -0
- {memory_graph-0.3.37 → memory_graph-0.3.38}/images/memory_graph.gv.pdf +0 -0
- {memory_graph-0.3.37 → memory_graph-0.3.38}/images/mutable.py +0 -0
- {memory_graph-0.3.37 → memory_graph-0.3.38}/images/mutable1.png +0 -0
- {memory_graph-0.3.37 → memory_graph-0.3.38}/images/mutable2.png +0 -0
- {memory_graph-0.3.37 → memory_graph-0.3.38}/images/my_graph.gv +0 -0
- {memory_graph-0.3.37 → memory_graph-0.3.38}/images/my_graph.pdf +0 -0
- {memory_graph-0.3.37 → memory_graph-0.3.38}/images/name_rebinding.py +0 -0
- {memory_graph-0.3.37 → memory_graph-0.3.38}/images/not_node_types.py +0 -0
- {memory_graph-0.3.37 → memory_graph-0.3.38}/images/not_node_types.py~ +0 -0
- {memory_graph-0.3.37 → memory_graph-0.3.38}/images/not_node_types1.png +0 -0
- {memory_graph-0.3.37 → memory_graph-0.3.38}/images/not_node_types2.png +0 -0
- {memory_graph-0.3.37 → memory_graph-0.3.38}/images/power_set.gif +0 -0
- {memory_graph-0.3.37 → memory_graph-0.3.38}/images/power_set.py +0 -0
- {memory_graph-0.3.37 → memory_graph-0.3.38}/images/power_set19.png~ +0 -0
- {memory_graph-0.3.37 → memory_graph-0.3.38}/images/power_set8.png~ +0 -0
- {memory_graph-0.3.37 → memory_graph-0.3.38}/images/pyodide.png +0 -0
- {memory_graph-0.3.37 → memory_graph-0.3.38}/images/rebinding1.png +0 -0
- {memory_graph-0.3.37 → memory_graph-0.3.38}/images/rebinding2.png +0 -0
- {memory_graph-0.3.37 → memory_graph-0.3.38}/images/test.py +0 -0
- {memory_graph-0.3.37 → memory_graph-0.3.38}/images/test.py~ +0 -0
- {memory_graph-0.3.37 → memory_graph-0.3.38}/images/uva.png +0 -0
- {memory_graph-0.3.37 → memory_graph-0.3.38}/images/vscode_copying.gif +0 -0
- {memory_graph-0.3.37 → memory_graph-0.3.38}/memory_graph/call_stack.py +0 -0
- {memory_graph-0.3.37 → memory_graph-0.3.38}/memory_graph/config_helpers.py +0 -0
- {memory_graph-0.3.37 → memory_graph-0.3.38}/memory_graph/extension_numpy.py +0 -0
- {memory_graph-0.3.37 → memory_graph-0.3.38}/memory_graph/extension_pandas.py +0 -0
- {memory_graph-0.3.37 → memory_graph-0.3.38}/memory_graph/html_table.py +0 -0
- {memory_graph-0.3.37 → memory_graph-0.3.38}/memory_graph/list_view.py +0 -0
- {memory_graph-0.3.37 → memory_graph-0.3.38}/memory_graph/memory_to_nodes.py +0 -0
- {memory_graph-0.3.37 → memory_graph-0.3.38}/memory_graph/node_base.py +0 -0
- {memory_graph-0.3.37 → memory_graph-0.3.38}/memory_graph/node_key_value.py +0 -0
- {memory_graph-0.3.37 → memory_graph-0.3.38}/memory_graph/node_leaf.py +0 -0
- {memory_graph-0.3.37 → memory_graph-0.3.38}/memory_graph/node_linear.py +0 -0
- {memory_graph-0.3.37 → memory_graph-0.3.38}/memory_graph/node_table.py +0 -0
- {memory_graph-0.3.37 → memory_graph-0.3.38}/memory_graph/sequence.py +0 -0
- {memory_graph-0.3.37 → memory_graph-0.3.38}/memory_graph/slicer.py +0 -0
- {memory_graph-0.3.37 → memory_graph-0.3.38}/memory_graph/slices.py +0 -0
- {memory_graph-0.3.37 → memory_graph-0.3.38}/memory_graph/slices_iterator.py +0 -0
- {memory_graph-0.3.37 → memory_graph-0.3.38}/memory_graph/slices_table_iterator.py +0 -0
- {memory_graph-0.3.37 → memory_graph-0.3.38}/memory_graph/test.py +0 -0
- {memory_graph-0.3.37 → memory_graph-0.3.38}/memory_graph/test_max_graph_depth.py +0 -0
- {memory_graph-0.3.37 → memory_graph-0.3.38}/memory_graph/test_memory_graph.py +0 -0
- {memory_graph-0.3.37 → memory_graph-0.3.38}/memory_graph/test_memory_to_nodes.py +0 -0
- {memory_graph-0.3.37 → memory_graph-0.3.38}/memory_graph/test_sequence.py +0 -0
- {memory_graph-0.3.37 → memory_graph-0.3.38}/memory_graph/test_slicer.py +0 -0
- {memory_graph-0.3.37 → memory_graph-0.3.38}/memory_graph/test_slices.py +0 -0
- {memory_graph-0.3.37 → memory_graph-0.3.38}/memory_graph/test_slices_iterator.py +0 -0
- {memory_graph-0.3.37 → memory_graph-0.3.38}/memory_graph/utils.py +0 -0
- {memory_graph-0.3.37 → memory_graph-0.3.38}/memory_graph.egg-info/dependency_links.txt +0 -0
- {memory_graph-0.3.37 → memory_graph-0.3.38}/memory_graph.egg-info/requires.txt +0 -0
- {memory_graph-0.3.37 → memory_graph-0.3.38}/memory_graph.egg-info/top_level.txt +0 -0
- {memory_graph-0.3.37 → memory_graph-0.3.38}/setup.cfg +0 -0
- {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.
|
|
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
|
|
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 <Enter> 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 <Enter> 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
|

|
|
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
|

|
|
551
548
|
|
|
552
|
-
|
|
553
549
|
# Configuration #
|
|
554
|
-
Different aspects of memory_graph can be configured. The default configuration
|
|
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 <Enter> 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
|

|
|
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
|
+

|
|
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
|
+

|
|
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
|
|
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 <Enter> 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 <Enter> 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
|

|
|
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
|

|
|
531
528
|
|
|
532
|
-
|
|
533
529
|
# Configuration #
|
|
534
|
-
Different aspects of memory_graph can be configured. The default configuration
|
|
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 <Enter> 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
|

|
|
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
|
+

|
|
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
|
+

|
|
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,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,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,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
|
+
"associatedIndex": 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
|
+
"keyToString": {
|
|
26
|
+
"ModuleVcsDetector.initialDetectionPerformed": "true",
|
|
27
|
+
"Python.vsc.executor": "Debug",
|
|
28
|
+
"RunOnceActivity.ShowReadmeOnStart": "true",
|
|
29
|
+
"RunOnceActivity.git.unshallow": "true",
|
|
30
|
+
"git-widget-placeholder": "main",
|
|
31
|
+
"node.js.detected.package.eslint": "true",
|
|
32
|
+
"node.js.detected.package.tslint": "true",
|
|
33
|
+
"node.js.selected.package.eslint": "(autodetect)",
|
|
34
|
+
"node.js.selected.package.tslint": "(autodetect)",
|
|
35
|
+
"nodejs_package_manager_path": "npm",
|
|
36
|
+
"vue.rearranger.settings.migration": "true"
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
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: <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
|
+
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
26
|
-
|
|
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
|
-
|
|
33
|
-
|
|
34
|
-
|
|
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
|
-
|
|
41
|
-
|
|
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
|
-
|
|
48
|
-
subgraph { rank=same;
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
15
|
-
|
|
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
|
-
|
|
21
|
+
node123343313520512:ref0 -> node123343310801952:table [style=solid]
|
|
22
22
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
digraph memory_graph {
|
|
2
2
|
node [shape=plaintext]
|
|
3
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
34
|
-
|
|
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
|
-
|
|
41
|
-
|
|
42
|
-
|
|
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
|
-
|
|
49
|
-
|
|
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
|
-
|
|
56
|
-
subgraph { rank=same;
|
|
55
|
+
node123343313520512:ref0 -> node123343310801952:table [style=solid]
|
|
56
|
+
subgraph { rank=same; node123343309412432 -> node123343309608720[weight=10, style=invis]; }
|
|
57
57
|
}
|