memory-graph 0.2.2__tar.gz → 0.2.3__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.2.2 → memory_graph-0.2.3}/PKG-INFO +4 -3
- {memory_graph-0.2.2 → memory_graph-0.2.3}/README.md +3 -2
- {memory_graph-0.2.2 → memory_graph-0.2.3}/memory_graph/Node.py +19 -19
- {memory_graph-0.2.2 → memory_graph-0.2.3}/memory_graph/Node_Key_Value.py +11 -1
- {memory_graph-0.2.2 → memory_graph-0.2.3}/memory_graph/Node_Linear.py +1 -1
- {memory_graph-0.2.2 → memory_graph-0.2.3}/memory_graph/Node_Table.py +7 -1
- {memory_graph-0.2.2 → memory_graph-0.2.3}/memory_graph/Sliced.py +4 -1
- {memory_graph-0.2.2 → memory_graph-0.2.3}/memory_graph/__init__.py +1 -1
- {memory_graph-0.2.2 → memory_graph-0.2.3}/memory_graph.egg-info/PKG-INFO +4 -3
- {memory_graph-0.2.2 → memory_graph-0.2.3}/setup.py +1 -1
- {memory_graph-0.2.2 → memory_graph-0.2.3}/LICENSE.txt +0 -0
- {memory_graph-0.2.2 → memory_graph-0.2.3}/MANIFEST.in +0 -0
- {memory_graph-0.2.2 → memory_graph-0.2.3}/memory_graph/HTML_Table.py +0 -0
- {memory_graph-0.2.2 → memory_graph-0.2.3}/memory_graph/Memory_Graph.py +0 -0
- {memory_graph-0.2.2 → memory_graph-0.2.3}/memory_graph/Memory_Visitor.py +0 -0
- {memory_graph-0.2.2 → memory_graph-0.2.3}/memory_graph/Node_Hidden.py +0 -0
- {memory_graph-0.2.2 → memory_graph-0.2.3}/memory_graph/Slicer.py +0 -0
- {memory_graph-0.2.2 → memory_graph-0.2.3}/memory_graph/config.py +0 -0
- {memory_graph-0.2.2 → memory_graph-0.2.3}/memory_graph/config_default.py +0 -0
- {memory_graph-0.2.2 → memory_graph-0.2.3}/memory_graph/config_helpers.py +0 -0
- {memory_graph-0.2.2 → memory_graph-0.2.3}/memory_graph/extension_numpy.py +0 -0
- {memory_graph-0.2.2 → memory_graph-0.2.3}/memory_graph/extension_pandas.py +0 -0
- {memory_graph-0.2.2 → memory_graph-0.2.3}/memory_graph/special_types.py +0 -0
- {memory_graph-0.2.2 → memory_graph-0.2.3}/memory_graph/test.py +0 -0
- {memory_graph-0.2.2 → memory_graph-0.2.3}/memory_graph/test_memory_graph.py +0 -0
- {memory_graph-0.2.2 → memory_graph-0.2.3}/memory_graph/test_memory_visitor.py +0 -0
- {memory_graph-0.2.2 → memory_graph-0.2.3}/memory_graph/utils.py +0 -0
- {memory_graph-0.2.2 → memory_graph-0.2.3}/memory_graph.egg-info/SOURCES.txt +0 -0
- {memory_graph-0.2.2 → memory_graph-0.2.3}/memory_graph.egg-info/dependency_links.txt +0 -0
- {memory_graph-0.2.2 → memory_graph-0.2.3}/memory_graph.egg-info/requires.txt +0 -0
- {memory_graph-0.2.2 → memory_graph-0.2.3}/memory_graph.egg-info/top_level.txt +0 -0
- {memory_graph-0.2.2 → memory_graph-0.2.3}/setup.cfg +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: memory_graph
|
|
3
|
-
Version: 0.2.
|
|
3
|
+
Version: 0.2.3
|
|
4
4
|
Summary: Draws a graph of your data to analyze its structure.
|
|
5
5
|
Home-page: https://github.com/bterwijn/memory_graph
|
|
6
6
|
Author: Bas Terwijn
|
|
@@ -67,7 +67,7 @@ identical?: True
|
|
|
67
67
|
```
|
|
68
68
|
A better way to understand what data is shared is to draw a graph of the data using the [memory_graph](https://pypi.org/project/memory-graph/) package.
|
|
69
69
|
|
|
70
|
-
# Memory Graph
|
|
70
|
+
# Memory Graph #
|
|
71
71
|
The [memory_graph](https://pypi.org/project/memory-graph/) package can graph many different data types.
|
|
72
72
|
|
|
73
73
|
```python
|
|
@@ -287,7 +287,7 @@ print(f"a:{a} b:{b} c:{c}")
|
|
|
287
287
|
|
|
288
288
|
As `a` is of immutable type 'int' and as we call the function with a copy of `c`, only `b` is shared so only `b` is changed in the calling stack frame as reflected in the printed output:
|
|
289
289
|
```
|
|
290
|
-
a:
|
|
290
|
+
a:10 b:[4, 3, 2, 1] c:[4, 3, 2]
|
|
291
291
|
```
|
|
292
292
|
|
|
293
293
|
### Recursion ###
|
|
@@ -515,6 +515,7 @@ Numpy types `arrray` and `matrix` and `ndarray` can be graphed with the "memory_
|
|
|
515
515
|
from memory_graph import d
|
|
516
516
|
import numpy as np
|
|
517
517
|
import memory_graph.extension_numpy
|
|
518
|
+
np.random.seed(0) # use same random numbers each run
|
|
518
519
|
|
|
519
520
|
array = np.array([1.1, 2, 3, 4, 5])
|
|
520
521
|
matrix = np.matrix([[i*20+j for j in range(20)] for i in range(20)])
|
|
@@ -48,7 +48,7 @@ identical?: True
|
|
|
48
48
|
```
|
|
49
49
|
A better way to understand what data is shared is to draw a graph of the data using the [memory_graph](https://pypi.org/project/memory-graph/) package.
|
|
50
50
|
|
|
51
|
-
# Memory Graph
|
|
51
|
+
# Memory Graph #
|
|
52
52
|
The [memory_graph](https://pypi.org/project/memory-graph/) package can graph many different data types.
|
|
53
53
|
|
|
54
54
|
```python
|
|
@@ -268,7 +268,7 @@ print(f"a:{a} b:{b} c:{c}")
|
|
|
268
268
|
|
|
269
269
|
As `a` is of immutable type 'int' and as we call the function with a copy of `c`, only `b` is shared so only `b` is changed in the calling stack frame as reflected in the printed output:
|
|
270
270
|
```
|
|
271
|
-
a:
|
|
271
|
+
a:10 b:[4, 3, 2, 1] c:[4, 3, 2]
|
|
272
272
|
```
|
|
273
273
|
|
|
274
274
|
### Recursion ###
|
|
@@ -496,6 +496,7 @@ Numpy types `arrray` and `matrix` and `ndarray` can be graphed with the "memory_
|
|
|
496
496
|
from memory_graph import d
|
|
497
497
|
import numpy as np
|
|
498
498
|
import memory_graph.extension_numpy
|
|
499
|
+
np.random.seed(0) # use same random numbers each run
|
|
499
500
|
|
|
500
501
|
array = np.array([1.1, 2, 3, 4, 5])
|
|
501
502
|
matrix = np.matrix([[i*20+j for j in range(20)] for i in range(20)])
|
|
@@ -15,11 +15,10 @@ class Node:
|
|
|
15
15
|
children (list): The children of the node.
|
|
16
16
|
size (string): The size of the node to be shown in the graph.
|
|
17
17
|
"""
|
|
18
|
-
def __init__(self, data, children=None
|
|
18
|
+
def __init__(self, data, children=None):
|
|
19
19
|
self.node_id = Node.node_id
|
|
20
20
|
Node.node_id += 1
|
|
21
21
|
self.data = data
|
|
22
|
-
self.size = size
|
|
23
22
|
self.parent = None
|
|
24
23
|
self.children = children
|
|
25
24
|
|
|
@@ -34,6 +33,18 @@ class Node:
|
|
|
34
33
|
Return the original data represented by the node.
|
|
35
34
|
"""
|
|
36
35
|
return self.data
|
|
36
|
+
|
|
37
|
+
def get_type(self):
|
|
38
|
+
"""
|
|
39
|
+
Return the type of the data represented by the node.
|
|
40
|
+
"""
|
|
41
|
+
return type(self.data)
|
|
42
|
+
|
|
43
|
+
def get_type_name(self):
|
|
44
|
+
"""
|
|
45
|
+
Return the name of the type of the data represented by the node.
|
|
46
|
+
"""
|
|
47
|
+
return utils.get_type_name(self.data)
|
|
37
48
|
|
|
38
49
|
def set_parent(self, parent):
|
|
39
50
|
"""
|
|
@@ -47,12 +58,6 @@ class Node:
|
|
|
47
58
|
"""
|
|
48
59
|
return self.parent
|
|
49
60
|
|
|
50
|
-
def get_size(self):
|
|
51
|
-
"""
|
|
52
|
-
Return the size of the node to be shown in the graph.
|
|
53
|
-
"""
|
|
54
|
-
return self.size
|
|
55
|
-
|
|
56
61
|
def get_children(self):
|
|
57
62
|
"""
|
|
58
63
|
Return the children of the node. Initially the children are raw data, but
|
|
@@ -78,17 +83,6 @@ class Node:
|
|
|
78
83
|
self.fill_html_table(html_table)
|
|
79
84
|
return html_table
|
|
80
85
|
|
|
81
|
-
def get_label(self):
|
|
82
|
-
"""
|
|
83
|
-
Return a label for the node to be shown in the graph next to the HTML table, the size
|
|
84
|
-
is included in the label if available.
|
|
85
|
-
"""
|
|
86
|
-
label = utils.get_type_name(self.data)
|
|
87
|
-
size = self.get_size()
|
|
88
|
-
if not size is None:
|
|
89
|
-
label +=f' ({size})'
|
|
90
|
-
return label
|
|
91
|
-
|
|
92
86
|
# -------------------- Node interface, overriden by subclasses --------------------
|
|
93
87
|
|
|
94
88
|
def do_backtrack_callback(self):
|
|
@@ -109,3 +103,9 @@ class Node:
|
|
|
109
103
|
Fill the HTML_Table object with each child of the node.
|
|
110
104
|
"""
|
|
111
105
|
pass
|
|
106
|
+
|
|
107
|
+
def get_label(self):
|
|
108
|
+
"""
|
|
109
|
+
Return a label for the node to be shown in the graph next to the HTML table.
|
|
110
|
+
"""
|
|
111
|
+
return self.get_type_name()
|
|
@@ -37,9 +37,10 @@ class Node_Key_Value(Node):
|
|
|
37
37
|
"""
|
|
38
38
|
#print('Node_Key_Value children:', children)
|
|
39
39
|
hidden_children = [ Node_Hidden(i,list(i)) for i in children ]
|
|
40
|
+
self.size = len(hidden_children)
|
|
40
41
|
slicer = config_helpers.get_slicer_1d(self, data)
|
|
41
42
|
sliced_children = slicer.slice(hidden_children)
|
|
42
|
-
super().__init__(data, sliced_children
|
|
43
|
+
super().__init__(data, sliced_children)
|
|
43
44
|
|
|
44
45
|
def transform(self, fun):
|
|
45
46
|
"""
|
|
@@ -91,3 +92,12 @@ class Node_Key_Value(Node):
|
|
|
91
92
|
if value is not None:
|
|
92
93
|
key_value = value.get_children() # add the key-value pair of Hidden_Node, not the tuple
|
|
93
94
|
html_table.add_entry(self, key_value[1])
|
|
95
|
+
|
|
96
|
+
def get_label(self):
|
|
97
|
+
"""
|
|
98
|
+
Return a label for the node to be shown in the graph next to the HTML table.
|
|
99
|
+
"""
|
|
100
|
+
if self.get_children().has_all_data():
|
|
101
|
+
return f'{self.get_type_name()}'
|
|
102
|
+
return f'{self.get_type_name()} {self.size}'
|
|
103
|
+
|
|
@@ -16,7 +16,7 @@ class Node_Linear(Node):
|
|
|
16
16
|
"""
|
|
17
17
|
slicer = config_helpers.get_slicer_1d(self, data)
|
|
18
18
|
sliced_children = slicer.slice(children)
|
|
19
|
-
super().__init__(data, sliced_children
|
|
19
|
+
super().__init__(data, sliced_children)
|
|
20
20
|
|
|
21
21
|
def transform(self, fun):
|
|
22
22
|
"""
|
|
@@ -38,7 +38,7 @@ class Node_Table(Node):
|
|
|
38
38
|
|
|
39
39
|
self.row_names = row_names
|
|
40
40
|
self.column_names = column_names
|
|
41
|
-
super().__init__(data, sliced_children
|
|
41
|
+
super().__init__(data, sliced_children)
|
|
42
42
|
|
|
43
43
|
def transform(self, fun):
|
|
44
44
|
"""
|
|
@@ -82,3 +82,9 @@ class Node_Table(Node):
|
|
|
82
82
|
html_table.add_entry(self, value)
|
|
83
83
|
html_table.add_new_line()
|
|
84
84
|
|
|
85
|
+
def get_label(self):
|
|
86
|
+
"""
|
|
87
|
+
Return a label for the node to be shown in the graph next to the HTML table.
|
|
88
|
+
"""
|
|
89
|
+
return f'{self.get_type_name()} {self.data_height}⨯{self.data_width}'
|
|
90
|
+
|
|
@@ -108,4 +108,7 @@ class Sliced:
|
|
|
108
108
|
def last_slice_empty(self):
|
|
109
109
|
""" Return True if the last slice of the Sliced object is empty. """
|
|
110
110
|
return len(self.slices) > 0 and len(self.slices[-1].data) == 0
|
|
111
|
-
|
|
111
|
+
|
|
112
|
+
def has_all_data(self):
|
|
113
|
+
""" Return True if the Sliced object has all the data. """
|
|
114
|
+
return len(self.slices) == 1 and len(self.slices[0].data) == self.original_length
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: memory-graph
|
|
3
|
-
Version: 0.2.
|
|
3
|
+
Version: 0.2.3
|
|
4
4
|
Summary: Draws a graph of your data to analyze its structure.
|
|
5
5
|
Home-page: https://github.com/bterwijn/memory_graph
|
|
6
6
|
Author: Bas Terwijn
|
|
@@ -67,7 +67,7 @@ identical?: True
|
|
|
67
67
|
```
|
|
68
68
|
A better way to understand what data is shared is to draw a graph of the data using the [memory_graph](https://pypi.org/project/memory-graph/) package.
|
|
69
69
|
|
|
70
|
-
# Memory Graph
|
|
70
|
+
# Memory Graph #
|
|
71
71
|
The [memory_graph](https://pypi.org/project/memory-graph/) package can graph many different data types.
|
|
72
72
|
|
|
73
73
|
```python
|
|
@@ -287,7 +287,7 @@ print(f"a:{a} b:{b} c:{c}")
|
|
|
287
287
|
|
|
288
288
|
As `a` is of immutable type 'int' and as we call the function with a copy of `c`, only `b` is shared so only `b` is changed in the calling stack frame as reflected in the printed output:
|
|
289
289
|
```
|
|
290
|
-
a:
|
|
290
|
+
a:10 b:[4, 3, 2, 1] c:[4, 3, 2]
|
|
291
291
|
```
|
|
292
292
|
|
|
293
293
|
### Recursion ###
|
|
@@ -515,6 +515,7 @@ Numpy types `arrray` and `matrix` and `ndarray` can be graphed with the "memory_
|
|
|
515
515
|
from memory_graph import d
|
|
516
516
|
import numpy as np
|
|
517
517
|
import memory_graph.extension_numpy
|
|
518
|
+
np.random.seed(0) # use same random numbers each run
|
|
518
519
|
|
|
519
520
|
array = np.array([1.1, 2, 3, 4, 5])
|
|
520
521
|
matrix = np.matrix([[i*20+j for j in range(20)] for i in range(20)])
|
|
@@ -7,7 +7,7 @@ long_description_from_readme = (this_directory / "README.md").read_text()
|
|
|
7
7
|
|
|
8
8
|
setup(
|
|
9
9
|
name = 'memory_graph',
|
|
10
|
-
version = '0.2.
|
|
10
|
+
version = '0.2.03',
|
|
11
11
|
description = 'Draws a graph of your data to analyze its structure.',
|
|
12
12
|
long_description = long_description_from_readme,
|
|
13
13
|
long_description_content_type = 'text/markdown',
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|