invocation-tree 0.0.13__tar.gz → 0.0.15__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.
- {invocation_tree-0.0.13/invocation_tree.egg-info → invocation_tree-0.0.15}/PKG-INFO +12 -10
- {invocation_tree-0.0.13 → invocation_tree-0.0.15}/README.md +3 -2
- {invocation_tree-0.0.13 → invocation_tree-0.0.15}/images/compute1.png +0 -0
- {invocation_tree-0.0.13 → invocation_tree-0.0.15}/images/compute2.png +0 -0
- {invocation_tree-0.0.13 → invocation_tree-0.0.15}/images/compute3.png +0 -0
- {invocation_tree-0.0.13 → invocation_tree-0.0.15}/images/compute4.png +0 -0
- {invocation_tree-0.0.13 → invocation_tree-0.0.15}/images/compute5.png +0 -0
- {invocation_tree-0.0.13 → invocation_tree-0.0.15}/images/compute6.png +0 -0
- {invocation_tree-0.0.13 → invocation_tree-0.0.15}/images/compute7.png +0 -0
- {invocation_tree-0.0.13 → invocation_tree-0.0.15}/images/compute8.png +0 -0
- {invocation_tree-0.0.13 → invocation_tree-0.0.15}/images/compute9.png +0 -0
- {invocation_tree-0.0.13 → invocation_tree-0.0.15}/images/factorial1.png +0 -0
- {invocation_tree-0.0.13 → invocation_tree-0.0.15}/images/factorial2.png +0 -0
- {invocation_tree-0.0.13 → invocation_tree-0.0.15}/images/factorial3.png +0 -0
- {invocation_tree-0.0.13 → invocation_tree-0.0.15}/images/factorial4.png +0 -0
- {invocation_tree-0.0.13 → invocation_tree-0.0.15}/images/factorial5.png +0 -0
- {invocation_tree-0.0.13 → invocation_tree-0.0.15}/images/factorial6.png +0 -0
- {invocation_tree-0.0.13 → invocation_tree-0.0.15}/images/factorial7.png +0 -0
- {invocation_tree-0.0.13 → invocation_tree-0.0.15}/images/permutations1.png +0 -0
- {invocation_tree-0.0.13 → invocation_tree-0.0.15}/images/permutations10.png +0 -0
- {invocation_tree-0.0.13 → invocation_tree-0.0.15}/images/permutations11.png +0 -0
- {invocation_tree-0.0.13 → invocation_tree-0.0.15}/images/permutations12.png +0 -0
- {invocation_tree-0.0.13 → invocation_tree-0.0.15}/images/permutations13.png +0 -0
- {invocation_tree-0.0.13 → invocation_tree-0.0.15}/images/permutations2.png +0 -0
- {invocation_tree-0.0.13 → invocation_tree-0.0.15}/images/permutations3.png +0 -0
- {invocation_tree-0.0.13 → invocation_tree-0.0.15}/images/permutations4.png +0 -0
- {invocation_tree-0.0.13 → invocation_tree-0.0.15}/images/permutations5.png +0 -0
- {invocation_tree-0.0.13 → invocation_tree-0.0.15}/images/permutations6.png +0 -0
- {invocation_tree-0.0.13 → invocation_tree-0.0.15}/images/permutations7.png +0 -0
- {invocation_tree-0.0.13 → invocation_tree-0.0.15}/images/permutations8.png +0 -0
- {invocation_tree-0.0.13 → invocation_tree-0.0.15}/images/permutations9.png +0 -0
- {invocation_tree-0.0.13 → invocation_tree-0.0.15}/images/students1.png +0 -0
- {invocation_tree-0.0.13 → invocation_tree-0.0.15}/images/students10.png +0 -0
- {invocation_tree-0.0.13 → invocation_tree-0.0.15}/images/students11.png +0 -0
- {invocation_tree-0.0.13 → invocation_tree-0.0.15}/images/students12.png +0 -0
- {invocation_tree-0.0.13 → invocation_tree-0.0.15}/images/students13.png +0 -0
- {invocation_tree-0.0.13 → invocation_tree-0.0.15}/images/students14.png +0 -0
- {invocation_tree-0.0.13 → invocation_tree-0.0.15}/images/students15.png +0 -0
- {invocation_tree-0.0.13 → invocation_tree-0.0.15}/images/students2.png +0 -0
- {invocation_tree-0.0.13 → invocation_tree-0.0.15}/images/students3.png +0 -0
- {invocation_tree-0.0.13 → invocation_tree-0.0.15}/images/students4.png +0 -0
- {invocation_tree-0.0.13 → invocation_tree-0.0.15}/images/students5.png +0 -0
- {invocation_tree-0.0.13 → invocation_tree-0.0.15}/images/students6.png +0 -0
- {invocation_tree-0.0.13 → invocation_tree-0.0.15}/images/students7.png +0 -0
- {invocation_tree-0.0.13 → invocation_tree-0.0.15}/images/students8.png +0 -0
- {invocation_tree-0.0.13 → invocation_tree-0.0.15}/images/students9.png +0 -0
- {invocation_tree-0.0.13 → invocation_tree-0.0.15}/invocation_tree/__init__.py +1 -1
- {invocation_tree-0.0.13 → invocation_tree-0.0.15/invocation_tree.egg-info}/PKG-INFO +12 -10
- {invocation_tree-0.0.13 → invocation_tree-0.0.15}/invocation_tree.egg-info/SOURCES.txt +1 -2
- invocation_tree-0.0.15/pyproject.toml +33 -0
- invocation_tree-0.0.13/install.txt +0 -31
- invocation_tree-0.0.13/setup.py +0 -35
- {invocation_tree-0.0.13 → invocation_tree-0.0.15}/LICENSE.txt +0 -0
- {invocation_tree-0.0.13 → invocation_tree-0.0.15}/MANIFEST.in +0 -0
- {invocation_tree-0.0.13 → invocation_tree-0.0.15}/images/#generator_function.py# +0 -0
- {invocation_tree-0.0.13 → invocation_tree-0.0.15}/images/compute.gif +0 -0
- {invocation_tree-0.0.13 → invocation_tree-0.0.15}/images/compute.py +0 -0
- {invocation_tree-0.0.13 → invocation_tree-0.0.15}/images/compute.py~ +0 -0
- {invocation_tree-0.0.13 → invocation_tree-0.0.15}/images/create_gif.sh +0 -0
- {invocation_tree-0.0.13 → invocation_tree-0.0.15}/images/create_images.sh +0 -0
- {invocation_tree-0.0.13 → invocation_tree-0.0.15}/images/create_images.sh~ +0 -0
- {invocation_tree-0.0.13 → invocation_tree-0.0.15}/images/eager_pipeline.py~ +0 -0
- {invocation_tree-0.0.13 → invocation_tree-0.0.15}/images/eager_pipeline1.png +0 -0
- {invocation_tree-0.0.13 → invocation_tree-0.0.15}/images/eager_pipeline2.png +0 -0
- {invocation_tree-0.0.13 → invocation_tree-0.0.15}/images/eager_pipeline3.png +0 -0
- {invocation_tree-0.0.13 → invocation_tree-0.0.15}/images/eager_pipeline4.png +0 -0
- {invocation_tree-0.0.13 → invocation_tree-0.0.15}/images/eager_pipeline5.png +0 -0
- {invocation_tree-0.0.13 → invocation_tree-0.0.15}/images/eager_pipeline6.png +0 -0
- {invocation_tree-0.0.13 → invocation_tree-0.0.15}/images/eager_pipeline7.png +0 -0
- {invocation_tree-0.0.13 → invocation_tree-0.0.15}/images/factorial.gif +0 -0
- {invocation_tree-0.0.13 → invocation_tree-0.0.15}/images/factorial.py +0 -0
- {invocation_tree-0.0.13 → invocation_tree-0.0.15}/images/factorial.py~ +0 -0
- {invocation_tree-0.0.13 → invocation_tree-0.0.15}/images/generator_expression.py~ +0 -0
- {invocation_tree-0.0.13 → invocation_tree-0.0.15}/images/generator_expression1.png +0 -0
- {invocation_tree-0.0.13 → invocation_tree-0.0.15}/images/generator_expression2.png +0 -0
- {invocation_tree-0.0.13 → invocation_tree-0.0.15}/images/generator_expression3.png +0 -0
- {invocation_tree-0.0.13 → invocation_tree-0.0.15}/images/generator_expression4.png +0 -0
- {invocation_tree-0.0.13 → invocation_tree-0.0.15}/images/generator_expression5.png +0 -0
- {invocation_tree-0.0.13 → invocation_tree-0.0.15}/images/generator_expression6.png +0 -0
- {invocation_tree-0.0.13 → invocation_tree-0.0.15}/images/generator_expression7.png +0 -0
- {invocation_tree-0.0.13 → invocation_tree-0.0.15}/images/generator_expression8.png +0 -0
- {invocation_tree-0.0.13 → invocation_tree-0.0.15}/images/generator_expression9.png +0 -0
- {invocation_tree-0.0.13 → invocation_tree-0.0.15}/images/generator_function1.png +0 -0
- {invocation_tree-0.0.13 → invocation_tree-0.0.15}/images/generator_function2.png +0 -0
- {invocation_tree-0.0.13 → invocation_tree-0.0.15}/images/generator_function3.png +0 -0
- {invocation_tree-0.0.13 → invocation_tree-0.0.15}/images/generator_function4.png +0 -0
- {invocation_tree-0.0.13 → invocation_tree-0.0.15}/images/generator_function5.png +0 -0
- {invocation_tree-0.0.13 → invocation_tree-0.0.15}/images/generator_function6.png +0 -0
- {invocation_tree-0.0.13 → invocation_tree-0.0.15}/images/generator_function7.png +0 -0
- {invocation_tree-0.0.13 → invocation_tree-0.0.15}/images/generator_function8.png +0 -0
- {invocation_tree-0.0.13 → invocation_tree-0.0.15}/images/generator_function9.png +0 -0
- {invocation_tree-0.0.13 → invocation_tree-0.0.15}/images/generator_pipeline.py~ +0 -0
- {invocation_tree-0.0.13 → invocation_tree-0.0.15}/images/generator_pipeline1.png +0 -0
- {invocation_tree-0.0.13 → invocation_tree-0.0.15}/images/generator_pipeline10.png +0 -0
- {invocation_tree-0.0.13 → invocation_tree-0.0.15}/images/generator_pipeline11.png +0 -0
- {invocation_tree-0.0.13 → invocation_tree-0.0.15}/images/generator_pipeline12.png +0 -0
- {invocation_tree-0.0.13 → invocation_tree-0.0.15}/images/generator_pipeline13.png +0 -0
- {invocation_tree-0.0.13 → invocation_tree-0.0.15}/images/generator_pipeline14.png +0 -0
- {invocation_tree-0.0.13 → invocation_tree-0.0.15}/images/generator_pipeline15.png +0 -0
- {invocation_tree-0.0.13 → invocation_tree-0.0.15}/images/generator_pipeline16.png +0 -0
- {invocation_tree-0.0.13 → invocation_tree-0.0.15}/images/generator_pipeline17.png +0 -0
- {invocation_tree-0.0.13 → invocation_tree-0.0.15}/images/generator_pipeline18.png +0 -0
- {invocation_tree-0.0.13 → invocation_tree-0.0.15}/images/generator_pipeline19.png +0 -0
- {invocation_tree-0.0.13 → invocation_tree-0.0.15}/images/generator_pipeline2.png +0 -0
- {invocation_tree-0.0.13 → invocation_tree-0.0.15}/images/generator_pipeline20.png +0 -0
- {invocation_tree-0.0.13 → invocation_tree-0.0.15}/images/generator_pipeline21.png +0 -0
- {invocation_tree-0.0.13 → invocation_tree-0.0.15}/images/generator_pipeline22.png +0 -0
- {invocation_tree-0.0.13 → invocation_tree-0.0.15}/images/generator_pipeline23.png +0 -0
- {invocation_tree-0.0.13 → invocation_tree-0.0.15}/images/generator_pipeline24.png +0 -0
- {invocation_tree-0.0.13 → invocation_tree-0.0.15}/images/generator_pipeline25.png +0 -0
- {invocation_tree-0.0.13 → invocation_tree-0.0.15}/images/generator_pipeline26.png +0 -0
- {invocation_tree-0.0.13 → invocation_tree-0.0.15}/images/generator_pipeline27.png +0 -0
- {invocation_tree-0.0.13 → invocation_tree-0.0.15}/images/generator_pipeline3.png +0 -0
- {invocation_tree-0.0.13 → invocation_tree-0.0.15}/images/generator_pipeline4.png +0 -0
- {invocation_tree-0.0.13 → invocation_tree-0.0.15}/images/generator_pipeline5.png +0 -0
- {invocation_tree-0.0.13 → invocation_tree-0.0.15}/images/generator_pipeline6.png +0 -0
- {invocation_tree-0.0.13 → invocation_tree-0.0.15}/images/generator_pipeline7.png +0 -0
- {invocation_tree-0.0.13 → invocation_tree-0.0.15}/images/generator_pipeline8.png +0 -0
- {invocation_tree-0.0.13 → invocation_tree-0.0.15}/images/generator_pipeline9.png +0 -0
- {invocation_tree-0.0.13 → invocation_tree-0.0.15}/images/invocation_tree.pdf +0 -0
- {invocation_tree-0.0.13 → invocation_tree-0.0.15}/images/invocation_tree0.pdf +0 -0
- {invocation_tree-0.0.13 → invocation_tree-0.0.15}/images/iterable.py +0 -0
- {invocation_tree-0.0.13 → invocation_tree-0.0.15}/images/iterable.py~ +0 -0
- {invocation_tree-0.0.13 → invocation_tree-0.0.15}/images/my_list.py +0 -0
- {invocation_tree-0.0.13 → invocation_tree-0.0.15}/images/my_list.py~ +0 -0
- {invocation_tree-0.0.13 → invocation_tree-0.0.15}/images/my_range.py~ +0 -0
- {invocation_tree-0.0.13 → invocation_tree-0.0.15}/images/my_range0.png +0 -0
- {invocation_tree-0.0.13 → invocation_tree-0.0.15}/images/my_range1.png +0 -0
- {invocation_tree-0.0.13 → invocation_tree-0.0.15}/images/my_range10.png +0 -0
- {invocation_tree-0.0.13 → invocation_tree-0.0.15}/images/my_range11.png +0 -0
- {invocation_tree-0.0.13 → invocation_tree-0.0.15}/images/my_range12.png +0 -0
- {invocation_tree-0.0.13 → invocation_tree-0.0.15}/images/my_range13.png +0 -0
- {invocation_tree-0.0.13 → invocation_tree-0.0.15}/images/my_range14.png +0 -0
- {invocation_tree-0.0.13 → invocation_tree-0.0.15}/images/my_range15.png +0 -0
- {invocation_tree-0.0.13 → invocation_tree-0.0.15}/images/my_range2.png +0 -0
- {invocation_tree-0.0.13 → invocation_tree-0.0.15}/images/my_range3.png +0 -0
- {invocation_tree-0.0.13 → invocation_tree-0.0.15}/images/my_range4.png +0 -0
- {invocation_tree-0.0.13 → invocation_tree-0.0.15}/images/my_range5.png +0 -0
- {invocation_tree-0.0.13 → invocation_tree-0.0.15}/images/my_range6.png +0 -0
- {invocation_tree-0.0.13 → invocation_tree-0.0.15}/images/my_range7.png +0 -0
- {invocation_tree-0.0.13 → invocation_tree-0.0.15}/images/my_range8.png +0 -0
- {invocation_tree-0.0.13 → invocation_tree-0.0.15}/images/my_range9.png +0 -0
- {invocation_tree-0.0.13 → invocation_tree-0.0.15}/images/out.txt +0 -0
- {invocation_tree-0.0.13 → invocation_tree-0.0.15}/images/permutations.gif +0 -0
- {invocation_tree-0.0.13 → invocation_tree-0.0.15}/images/permutations.py +0 -0
- {invocation_tree-0.0.13 → invocation_tree-0.0.15}/images/permutations.py~ +0 -0
- {invocation_tree-0.0.13 → invocation_tree-0.0.15}/images/permutations22.png~ +0 -0
- {invocation_tree-0.0.13 → invocation_tree-0.0.15}/images/student.gif +0 -0
- {invocation_tree-0.0.13 → invocation_tree-0.0.15}/images/students.gif +0 -0
- {invocation_tree-0.0.13 → invocation_tree-0.0.15}/images/students.py +0 -0
- {invocation_tree-0.0.13 → invocation_tree-0.0.15}/images/students.py~ +0 -0
- {invocation_tree-0.0.13 → invocation_tree-0.0.15}/images/test.py +0 -0
- {invocation_tree-0.0.13 → invocation_tree-0.0.15}/images/tree.gv~ +0 -0
- {invocation_tree-0.0.13 → invocation_tree-0.0.15}/images/tree.pdf +0 -0
- {invocation_tree-0.0.13 → invocation_tree-0.0.15}/images/vscode.png +0 -0
- {invocation_tree-0.0.13 → invocation_tree-0.0.15}/invocation_tree.egg-info/dependency_links.txt +0 -0
- {invocation_tree-0.0.13 → invocation_tree-0.0.15}/invocation_tree.egg-info/requires.txt +0 -0
- {invocation_tree-0.0.13 → invocation_tree-0.0.15}/invocation_tree.egg-info/top_level.txt +0 -0
- {invocation_tree-0.0.13 → invocation_tree-0.0.15}/setup.cfg +0 -0
|
@@ -1,21 +1,22 @@
|
|
|
1
|
-
Metadata-Version: 2.
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
2
|
Name: invocation_tree
|
|
3
|
-
Version: 0.0.
|
|
4
|
-
Summary:
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
3
|
+
Version: 0.0.15
|
|
4
|
+
Summary: Generates an invocation tree of functions calls.
|
|
5
|
+
Author-email: Bas Terwijn <bterwijn@gmail.com>
|
|
6
|
+
License-Expression: BSD-2-Clause
|
|
7
|
+
Project-URL: Homepage, https://github.com/bterwijn/invocation-tree
|
|
8
|
+
Project-URL: Repository, https://github.com/bterwijn/invocation-tree.git
|
|
9
9
|
Classifier: Development Status :: 4 - Beta
|
|
10
10
|
Classifier: Intended Audience :: Education
|
|
11
11
|
Classifier: Intended Audience :: Developers
|
|
12
|
-
Classifier: License :: OSI Approved :: BSD License
|
|
13
12
|
Classifier: Programming Language :: Python :: 3
|
|
14
13
|
Classifier: Topic :: Education
|
|
15
14
|
Classifier: Topic :: Software Development :: Debuggers
|
|
15
|
+
Requires-Python: >=3.7
|
|
16
16
|
Description-Content-Type: text/markdown
|
|
17
17
|
License-File: LICENSE.txt
|
|
18
18
|
Requires-Dist: graphviz
|
|
19
|
+
Dynamic: license-file
|
|
19
20
|
|
|
20
21
|
# Installation #
|
|
21
22
|
Install (or upgrade) `invocation_tree` using pip:
|
|
@@ -157,7 +158,7 @@ import invocation_tree as ivt
|
|
|
157
158
|
def factorial(n):
|
|
158
159
|
if n <= 1:
|
|
159
160
|
return 1
|
|
160
|
-
|
|
161
|
+
prev_result = factorial(n - 1)
|
|
161
162
|
return n * prev_result
|
|
162
163
|
|
|
163
164
|
tree = ivt.blocking()
|
|
@@ -168,6 +169,7 @@ print( tree(factorial, 4) ) # show invocation tree of calling factorial(4)
|
|
|
168
169
|
24
|
|
169
170
|
```
|
|
170
171
|
|
|
172
|
+
## Permutations ##
|
|
171
173
|
This `permutations()` example shows the depth-first nature of recursive execution:
|
|
172
174
|
|
|
173
175
|
```python
|
|
@@ -244,7 +246,7 @@ For convenience we provide these functions to set common configurations:
|
|
|
244
246
|
- **ivt.non_blocking(filename)**, non-blocking on each function call and return
|
|
245
247
|
|
|
246
248
|
# Troubleshooting #
|
|
247
|
-
- Adobe Acrobat Reader [doesn't refresh a PDF file](https://
|
|
249
|
+
- Adobe Acrobat Reader [doesn't refresh a PDF file](https://community.adobe.com/t5/acrobat-reader-discussions/reload-refresh-pdfs/td-p/9632292) when it changes on disk and blocks updates which results in an `Could not open 'somefile.pdf' for writing : Permission denied` error. One solution is to install a PDF reader that does refresh ([SumatraPDF](https://www.sumatrapdfreader.org/), [Okular](https://okular.kde.org/), ...) and set it as the default PDF reader. Another solution is to `render()` the graph to a different output format and to open it manually.
|
|
248
250
|
|
|
249
251
|
## Memory_Graph Package ##
|
|
250
252
|
The [invocation_tree](https://pypi.org/project/invocation-tree/) package visualizes function calls at different moments in time. If instead you want a detailed visualization of your data at the current time, check out the [memory_graph](https://pypi.org/project/memory-graph/) package.
|
|
@@ -138,7 +138,7 @@ import invocation_tree as ivt
|
|
|
138
138
|
def factorial(n):
|
|
139
139
|
if n <= 1:
|
|
140
140
|
return 1
|
|
141
|
-
|
|
141
|
+
prev_result = factorial(n - 1)
|
|
142
142
|
return n * prev_result
|
|
143
143
|
|
|
144
144
|
tree = ivt.blocking()
|
|
@@ -149,6 +149,7 @@ print( tree(factorial, 4) ) # show invocation tree of calling factorial(4)
|
|
|
149
149
|
24
|
|
150
150
|
```
|
|
151
151
|
|
|
152
|
+
## Permutations ##
|
|
152
153
|
This `permutations()` example shows the depth-first nature of recursive execution:
|
|
153
154
|
|
|
154
155
|
```python
|
|
@@ -225,7 +226,7 @@ For convenience we provide these functions to set common configurations:
|
|
|
225
226
|
- **ivt.non_blocking(filename)**, non-blocking on each function call and return
|
|
226
227
|
|
|
227
228
|
# Troubleshooting #
|
|
228
|
-
- Adobe Acrobat Reader [doesn't refresh a PDF file](https://
|
|
229
|
+
- Adobe Acrobat Reader [doesn't refresh a PDF file](https://community.adobe.com/t5/acrobat-reader-discussions/reload-refresh-pdfs/td-p/9632292) when it changes on disk and blocks updates which results in an `Could not open 'somefile.pdf' for writing : Permission denied` error. One solution is to install a PDF reader that does refresh ([SumatraPDF](https://www.sumatrapdfreader.org/), [Okular](https://okular.kde.org/), ...) and set it as the default PDF reader. Another solution is to `render()` the graph to a different output format and to open it manually.
|
|
229
230
|
|
|
230
231
|
## Memory_Graph Package ##
|
|
231
232
|
The [invocation_tree](https://pypi.org/project/invocation-tree/) package visualizes function calls at different moments in time. If instead you want a detailed visualization of your data at the current time, check out the [memory_graph](https://pypi.org/project/memory-graph/) package.
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -1,21 +1,22 @@
|
|
|
1
|
-
Metadata-Version: 2.
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
2
|
Name: invocation_tree
|
|
3
|
-
Version: 0.0.
|
|
4
|
-
Summary:
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
3
|
+
Version: 0.0.15
|
|
4
|
+
Summary: Generates an invocation tree of functions calls.
|
|
5
|
+
Author-email: Bas Terwijn <bterwijn@gmail.com>
|
|
6
|
+
License-Expression: BSD-2-Clause
|
|
7
|
+
Project-URL: Homepage, https://github.com/bterwijn/invocation-tree
|
|
8
|
+
Project-URL: Repository, https://github.com/bterwijn/invocation-tree.git
|
|
9
9
|
Classifier: Development Status :: 4 - Beta
|
|
10
10
|
Classifier: Intended Audience :: Education
|
|
11
11
|
Classifier: Intended Audience :: Developers
|
|
12
|
-
Classifier: License :: OSI Approved :: BSD License
|
|
13
12
|
Classifier: Programming Language :: Python :: 3
|
|
14
13
|
Classifier: Topic :: Education
|
|
15
14
|
Classifier: Topic :: Software Development :: Debuggers
|
|
15
|
+
Requires-Python: >=3.7
|
|
16
16
|
Description-Content-Type: text/markdown
|
|
17
17
|
License-File: LICENSE.txt
|
|
18
18
|
Requires-Dist: graphviz
|
|
19
|
+
Dynamic: license-file
|
|
19
20
|
|
|
20
21
|
# Installation #
|
|
21
22
|
Install (or upgrade) `invocation_tree` using pip:
|
|
@@ -157,7 +158,7 @@ import invocation_tree as ivt
|
|
|
157
158
|
def factorial(n):
|
|
158
159
|
if n <= 1:
|
|
159
160
|
return 1
|
|
160
|
-
|
|
161
|
+
prev_result = factorial(n - 1)
|
|
161
162
|
return n * prev_result
|
|
162
163
|
|
|
163
164
|
tree = ivt.blocking()
|
|
@@ -168,6 +169,7 @@ print( tree(factorial, 4) ) # show invocation tree of calling factorial(4)
|
|
|
168
169
|
24
|
|
169
170
|
```
|
|
170
171
|
|
|
172
|
+
## Permutations ##
|
|
171
173
|
This `permutations()` example shows the depth-first nature of recursive execution:
|
|
172
174
|
|
|
173
175
|
```python
|
|
@@ -244,7 +246,7 @@ For convenience we provide these functions to set common configurations:
|
|
|
244
246
|
- **ivt.non_blocking(filename)**, non-blocking on each function call and return
|
|
245
247
|
|
|
246
248
|
# Troubleshooting #
|
|
247
|
-
- Adobe Acrobat Reader [doesn't refresh a PDF file](https://
|
|
249
|
+
- Adobe Acrobat Reader [doesn't refresh a PDF file](https://community.adobe.com/t5/acrobat-reader-discussions/reload-refresh-pdfs/td-p/9632292) when it changes on disk and blocks updates which results in an `Could not open 'somefile.pdf' for writing : Permission denied` error. One solution is to install a PDF reader that does refresh ([SumatraPDF](https://www.sumatrapdfreader.org/), [Okular](https://okular.kde.org/), ...) and set it as the default PDF reader. Another solution is to `render()` the graph to a different output format and to open it manually.
|
|
248
250
|
|
|
249
251
|
## Memory_Graph Package ##
|
|
250
252
|
The [invocation_tree](https://pypi.org/project/invocation-tree/) package visualizes function calls at different moments in time. If instead you want a detailed visualization of your data at the current time, check out the [memory_graph](https://pypi.org/project/memory-graph/) package.
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
[build-system]
|
|
2
|
+
requires = ["setuptools>=61.0", "wheel"]
|
|
3
|
+
build-backend = "setuptools.build_meta"
|
|
4
|
+
|
|
5
|
+
[project]
|
|
6
|
+
name = "invocation_tree"
|
|
7
|
+
version = "0.0.15"
|
|
8
|
+
description = "Generates an invocation tree of functions calls."
|
|
9
|
+
authors = [
|
|
10
|
+
{name = "Bas Terwijn", email = "bterwijn@gmail.com"}
|
|
11
|
+
]
|
|
12
|
+
#license = { text = "BSD-2-Clause" } # needed for python <=3.8
|
|
13
|
+
license = "BSD-2-Clause"
|
|
14
|
+
readme = "README.md"
|
|
15
|
+
requires-python = ">=3.7"
|
|
16
|
+
classifiers = [
|
|
17
|
+
"Development Status :: 4 - Beta",
|
|
18
|
+
"Intended Audience :: Education",
|
|
19
|
+
"Intended Audience :: Developers",
|
|
20
|
+
"Programming Language :: Python :: 3",
|
|
21
|
+
"Topic :: Education",
|
|
22
|
+
"Topic :: Software Development :: Debuggers",
|
|
23
|
+
]
|
|
24
|
+
dependencies = [
|
|
25
|
+
"graphviz",
|
|
26
|
+
]
|
|
27
|
+
|
|
28
|
+
[project.urls]
|
|
29
|
+
Homepage = "https://github.com/bterwijn/invocation-tree"
|
|
30
|
+
Repository = "https://github.com/bterwijn/invocation-tree.git"
|
|
31
|
+
|
|
32
|
+
[tool.setuptools]
|
|
33
|
+
packages = ["invocation_tree"]
|
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
# just some notes about how to deal with Python modules and pip packages
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
# ===== pip install
|
|
5
|
-
pip install setuptools
|
|
6
|
-
pip install wheel
|
|
7
|
-
pip install twine
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
# ===== (un)install current module
|
|
11
|
-
pip uninstall invocation_tree
|
|
12
|
-
pip install .
|
|
13
|
-
pip install --upgrade .
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
# ===== prepare packages for upload
|
|
17
|
-
# - increase version number in: setup.py invocation_tree/__init__.py
|
|
18
|
-
# - update images:
|
|
19
|
-
cd images; bash create_images.sh; cd ..
|
|
20
|
-
# - git commit -am "version X.X.X" && git push
|
|
21
|
-
rm -f ./dist/*
|
|
22
|
-
python setup.py check
|
|
23
|
-
python setup.py sdist
|
|
24
|
-
python setup.py bdist_wheel --universal
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
# ===== upload packages to pypi for 'pip install' purposes
|
|
28
|
-
# - upload to test url:
|
|
29
|
-
twine upload --repository-url https://test.pypi.org/legacy/ dist/*
|
|
30
|
-
# - upload to pypi for real:
|
|
31
|
-
twine upload dist/*
|
invocation_tree-0.0.13/setup.py
DELETED
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
# This file is part of invocation_tree.
|
|
2
|
-
# Copyright (c) 2023, Bas Terwijn.
|
|
3
|
-
# SPDX-License-Identifier: BSD-2-Clause
|
|
4
|
-
|
|
5
|
-
from setuptools import setup
|
|
6
|
-
|
|
7
|
-
# read the contents of your README file
|
|
8
|
-
from pathlib import Path
|
|
9
|
-
this_directory = Path(__file__).parent
|
|
10
|
-
long_description_from_readme = (this_directory / "README.md").read_text()
|
|
11
|
-
|
|
12
|
-
setup(
|
|
13
|
-
name = 'invocation_tree',
|
|
14
|
-
version = '0.0.13',
|
|
15
|
-
description = 'Generate an invocation tree of functions calls.',
|
|
16
|
-
long_description = long_description_from_readme,
|
|
17
|
-
long_description_content_type = 'text/markdown',
|
|
18
|
-
readme = 'README.md',
|
|
19
|
-
url = 'https://github.com/bterwijn/invocation_tree',
|
|
20
|
-
author = 'Bas Terwijn',
|
|
21
|
-
author_email = 'bterwijn@gmail.com',
|
|
22
|
-
license = 'BSD 2-clause',
|
|
23
|
-
packages = ['invocation_tree'],
|
|
24
|
-
install_requires = ['graphviz'],
|
|
25
|
-
|
|
26
|
-
classifiers = [
|
|
27
|
-
'Development Status :: 4 - Beta',
|
|
28
|
-
'Intended Audience :: Education',
|
|
29
|
-
'Intended Audience :: Developers',
|
|
30
|
-
'License :: OSI Approved :: BSD License',
|
|
31
|
-
'Programming Language :: Python :: 3',
|
|
32
|
-
'Topic :: Education',
|
|
33
|
-
'Topic :: Software Development :: Debuggers',
|
|
34
|
-
],
|
|
35
|
-
)
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
{invocation_tree-0.0.13 → invocation_tree-0.0.15}/invocation_tree.egg-info/dependency_links.txt
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|