invocation-tree 0.0.14__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.
Files changed (159) hide show
  1. {invocation_tree-0.0.14/invocation_tree.egg-info → invocation_tree-0.0.15}/PKG-INFO +11 -9
  2. {invocation_tree-0.0.14 → invocation_tree-0.0.15}/README.md +2 -1
  3. {invocation_tree-0.0.14 → invocation_tree-0.0.15}/images/compute1.png +0 -0
  4. {invocation_tree-0.0.14 → invocation_tree-0.0.15}/images/compute2.png +0 -0
  5. {invocation_tree-0.0.14 → invocation_tree-0.0.15}/images/compute3.png +0 -0
  6. {invocation_tree-0.0.14 → invocation_tree-0.0.15}/images/compute4.png +0 -0
  7. {invocation_tree-0.0.14 → invocation_tree-0.0.15}/images/compute5.png +0 -0
  8. {invocation_tree-0.0.14 → invocation_tree-0.0.15}/images/compute6.png +0 -0
  9. {invocation_tree-0.0.14 → invocation_tree-0.0.15}/images/compute7.png +0 -0
  10. {invocation_tree-0.0.14 → invocation_tree-0.0.15}/images/compute8.png +0 -0
  11. {invocation_tree-0.0.14 → invocation_tree-0.0.15}/images/compute9.png +0 -0
  12. {invocation_tree-0.0.14 → invocation_tree-0.0.15}/images/factorial1.png +0 -0
  13. {invocation_tree-0.0.14 → invocation_tree-0.0.15}/images/factorial2.png +0 -0
  14. {invocation_tree-0.0.14 → invocation_tree-0.0.15}/images/factorial3.png +0 -0
  15. {invocation_tree-0.0.14 → invocation_tree-0.0.15}/images/factorial4.png +0 -0
  16. {invocation_tree-0.0.14 → invocation_tree-0.0.15}/images/factorial5.png +0 -0
  17. {invocation_tree-0.0.14 → invocation_tree-0.0.15}/images/factorial6.png +0 -0
  18. {invocation_tree-0.0.14 → invocation_tree-0.0.15}/images/factorial7.png +0 -0
  19. {invocation_tree-0.0.14 → invocation_tree-0.0.15}/images/permutations1.png +0 -0
  20. {invocation_tree-0.0.14 → invocation_tree-0.0.15}/images/permutations10.png +0 -0
  21. {invocation_tree-0.0.14 → invocation_tree-0.0.15}/images/permutations11.png +0 -0
  22. {invocation_tree-0.0.14 → invocation_tree-0.0.15}/images/permutations12.png +0 -0
  23. {invocation_tree-0.0.14 → invocation_tree-0.0.15}/images/permutations13.png +0 -0
  24. {invocation_tree-0.0.14 → invocation_tree-0.0.15}/images/permutations2.png +0 -0
  25. {invocation_tree-0.0.14 → invocation_tree-0.0.15}/images/permutations3.png +0 -0
  26. {invocation_tree-0.0.14 → invocation_tree-0.0.15}/images/permutations4.png +0 -0
  27. {invocation_tree-0.0.14 → invocation_tree-0.0.15}/images/permutations5.png +0 -0
  28. {invocation_tree-0.0.14 → invocation_tree-0.0.15}/images/permutations6.png +0 -0
  29. {invocation_tree-0.0.14 → invocation_tree-0.0.15}/images/permutations7.png +0 -0
  30. {invocation_tree-0.0.14 → invocation_tree-0.0.15}/images/permutations8.png +0 -0
  31. {invocation_tree-0.0.14 → invocation_tree-0.0.15}/images/permutations9.png +0 -0
  32. {invocation_tree-0.0.14 → invocation_tree-0.0.15}/images/students1.png +0 -0
  33. {invocation_tree-0.0.14 → invocation_tree-0.0.15}/images/students10.png +0 -0
  34. {invocation_tree-0.0.14 → invocation_tree-0.0.15}/images/students11.png +0 -0
  35. {invocation_tree-0.0.14 → invocation_tree-0.0.15}/images/students12.png +0 -0
  36. {invocation_tree-0.0.14 → invocation_tree-0.0.15}/images/students13.png +0 -0
  37. {invocation_tree-0.0.14 → invocation_tree-0.0.15}/images/students14.png +0 -0
  38. {invocation_tree-0.0.14 → invocation_tree-0.0.15}/images/students15.png +0 -0
  39. {invocation_tree-0.0.14 → invocation_tree-0.0.15}/images/students2.png +0 -0
  40. {invocation_tree-0.0.14 → invocation_tree-0.0.15}/images/students3.png +0 -0
  41. {invocation_tree-0.0.14 → invocation_tree-0.0.15}/images/students4.png +0 -0
  42. {invocation_tree-0.0.14 → invocation_tree-0.0.15}/images/students5.png +0 -0
  43. {invocation_tree-0.0.14 → invocation_tree-0.0.15}/images/students6.png +0 -0
  44. {invocation_tree-0.0.14 → invocation_tree-0.0.15}/images/students7.png +0 -0
  45. {invocation_tree-0.0.14 → invocation_tree-0.0.15}/images/students8.png +0 -0
  46. {invocation_tree-0.0.14 → invocation_tree-0.0.15}/images/students9.png +0 -0
  47. {invocation_tree-0.0.14 → invocation_tree-0.0.15}/invocation_tree/__init__.py +1 -1
  48. {invocation_tree-0.0.14 → invocation_tree-0.0.15/invocation_tree.egg-info}/PKG-INFO +11 -9
  49. {invocation_tree-0.0.14 → invocation_tree-0.0.15}/invocation_tree.egg-info/SOURCES.txt +1 -2
  50. invocation_tree-0.0.15/pyproject.toml +33 -0
  51. invocation_tree-0.0.14/install.txt +0 -31
  52. invocation_tree-0.0.14/setup.py +0 -35
  53. {invocation_tree-0.0.14 → invocation_tree-0.0.15}/LICENSE.txt +0 -0
  54. {invocation_tree-0.0.14 → invocation_tree-0.0.15}/MANIFEST.in +0 -0
  55. {invocation_tree-0.0.14 → invocation_tree-0.0.15}/images/#generator_function.py# +0 -0
  56. {invocation_tree-0.0.14 → invocation_tree-0.0.15}/images/compute.gif +0 -0
  57. {invocation_tree-0.0.14 → invocation_tree-0.0.15}/images/compute.py +0 -0
  58. {invocation_tree-0.0.14 → invocation_tree-0.0.15}/images/compute.py~ +0 -0
  59. {invocation_tree-0.0.14 → invocation_tree-0.0.15}/images/create_gif.sh +0 -0
  60. {invocation_tree-0.0.14 → invocation_tree-0.0.15}/images/create_images.sh +0 -0
  61. {invocation_tree-0.0.14 → invocation_tree-0.0.15}/images/create_images.sh~ +0 -0
  62. {invocation_tree-0.0.14 → invocation_tree-0.0.15}/images/eager_pipeline.py~ +0 -0
  63. {invocation_tree-0.0.14 → invocation_tree-0.0.15}/images/eager_pipeline1.png +0 -0
  64. {invocation_tree-0.0.14 → invocation_tree-0.0.15}/images/eager_pipeline2.png +0 -0
  65. {invocation_tree-0.0.14 → invocation_tree-0.0.15}/images/eager_pipeline3.png +0 -0
  66. {invocation_tree-0.0.14 → invocation_tree-0.0.15}/images/eager_pipeline4.png +0 -0
  67. {invocation_tree-0.0.14 → invocation_tree-0.0.15}/images/eager_pipeline5.png +0 -0
  68. {invocation_tree-0.0.14 → invocation_tree-0.0.15}/images/eager_pipeline6.png +0 -0
  69. {invocation_tree-0.0.14 → invocation_tree-0.0.15}/images/eager_pipeline7.png +0 -0
  70. {invocation_tree-0.0.14 → invocation_tree-0.0.15}/images/factorial.gif +0 -0
  71. {invocation_tree-0.0.14 → invocation_tree-0.0.15}/images/factorial.py +0 -0
  72. {invocation_tree-0.0.14 → invocation_tree-0.0.15}/images/factorial.py~ +0 -0
  73. {invocation_tree-0.0.14 → invocation_tree-0.0.15}/images/generator_expression.py~ +0 -0
  74. {invocation_tree-0.0.14 → invocation_tree-0.0.15}/images/generator_expression1.png +0 -0
  75. {invocation_tree-0.0.14 → invocation_tree-0.0.15}/images/generator_expression2.png +0 -0
  76. {invocation_tree-0.0.14 → invocation_tree-0.0.15}/images/generator_expression3.png +0 -0
  77. {invocation_tree-0.0.14 → invocation_tree-0.0.15}/images/generator_expression4.png +0 -0
  78. {invocation_tree-0.0.14 → invocation_tree-0.0.15}/images/generator_expression5.png +0 -0
  79. {invocation_tree-0.0.14 → invocation_tree-0.0.15}/images/generator_expression6.png +0 -0
  80. {invocation_tree-0.0.14 → invocation_tree-0.0.15}/images/generator_expression7.png +0 -0
  81. {invocation_tree-0.0.14 → invocation_tree-0.0.15}/images/generator_expression8.png +0 -0
  82. {invocation_tree-0.0.14 → invocation_tree-0.0.15}/images/generator_expression9.png +0 -0
  83. {invocation_tree-0.0.14 → invocation_tree-0.0.15}/images/generator_function1.png +0 -0
  84. {invocation_tree-0.0.14 → invocation_tree-0.0.15}/images/generator_function2.png +0 -0
  85. {invocation_tree-0.0.14 → invocation_tree-0.0.15}/images/generator_function3.png +0 -0
  86. {invocation_tree-0.0.14 → invocation_tree-0.0.15}/images/generator_function4.png +0 -0
  87. {invocation_tree-0.0.14 → invocation_tree-0.0.15}/images/generator_function5.png +0 -0
  88. {invocation_tree-0.0.14 → invocation_tree-0.0.15}/images/generator_function6.png +0 -0
  89. {invocation_tree-0.0.14 → invocation_tree-0.0.15}/images/generator_function7.png +0 -0
  90. {invocation_tree-0.0.14 → invocation_tree-0.0.15}/images/generator_function8.png +0 -0
  91. {invocation_tree-0.0.14 → invocation_tree-0.0.15}/images/generator_function9.png +0 -0
  92. {invocation_tree-0.0.14 → invocation_tree-0.0.15}/images/generator_pipeline.py~ +0 -0
  93. {invocation_tree-0.0.14 → invocation_tree-0.0.15}/images/generator_pipeline1.png +0 -0
  94. {invocation_tree-0.0.14 → invocation_tree-0.0.15}/images/generator_pipeline10.png +0 -0
  95. {invocation_tree-0.0.14 → invocation_tree-0.0.15}/images/generator_pipeline11.png +0 -0
  96. {invocation_tree-0.0.14 → invocation_tree-0.0.15}/images/generator_pipeline12.png +0 -0
  97. {invocation_tree-0.0.14 → invocation_tree-0.0.15}/images/generator_pipeline13.png +0 -0
  98. {invocation_tree-0.0.14 → invocation_tree-0.0.15}/images/generator_pipeline14.png +0 -0
  99. {invocation_tree-0.0.14 → invocation_tree-0.0.15}/images/generator_pipeline15.png +0 -0
  100. {invocation_tree-0.0.14 → invocation_tree-0.0.15}/images/generator_pipeline16.png +0 -0
  101. {invocation_tree-0.0.14 → invocation_tree-0.0.15}/images/generator_pipeline17.png +0 -0
  102. {invocation_tree-0.0.14 → invocation_tree-0.0.15}/images/generator_pipeline18.png +0 -0
  103. {invocation_tree-0.0.14 → invocation_tree-0.0.15}/images/generator_pipeline19.png +0 -0
  104. {invocation_tree-0.0.14 → invocation_tree-0.0.15}/images/generator_pipeline2.png +0 -0
  105. {invocation_tree-0.0.14 → invocation_tree-0.0.15}/images/generator_pipeline20.png +0 -0
  106. {invocation_tree-0.0.14 → invocation_tree-0.0.15}/images/generator_pipeline21.png +0 -0
  107. {invocation_tree-0.0.14 → invocation_tree-0.0.15}/images/generator_pipeline22.png +0 -0
  108. {invocation_tree-0.0.14 → invocation_tree-0.0.15}/images/generator_pipeline23.png +0 -0
  109. {invocation_tree-0.0.14 → invocation_tree-0.0.15}/images/generator_pipeline24.png +0 -0
  110. {invocation_tree-0.0.14 → invocation_tree-0.0.15}/images/generator_pipeline25.png +0 -0
  111. {invocation_tree-0.0.14 → invocation_tree-0.0.15}/images/generator_pipeline26.png +0 -0
  112. {invocation_tree-0.0.14 → invocation_tree-0.0.15}/images/generator_pipeline27.png +0 -0
  113. {invocation_tree-0.0.14 → invocation_tree-0.0.15}/images/generator_pipeline3.png +0 -0
  114. {invocation_tree-0.0.14 → invocation_tree-0.0.15}/images/generator_pipeline4.png +0 -0
  115. {invocation_tree-0.0.14 → invocation_tree-0.0.15}/images/generator_pipeline5.png +0 -0
  116. {invocation_tree-0.0.14 → invocation_tree-0.0.15}/images/generator_pipeline6.png +0 -0
  117. {invocation_tree-0.0.14 → invocation_tree-0.0.15}/images/generator_pipeline7.png +0 -0
  118. {invocation_tree-0.0.14 → invocation_tree-0.0.15}/images/generator_pipeline8.png +0 -0
  119. {invocation_tree-0.0.14 → invocation_tree-0.0.15}/images/generator_pipeline9.png +0 -0
  120. {invocation_tree-0.0.14 → invocation_tree-0.0.15}/images/invocation_tree.pdf +0 -0
  121. {invocation_tree-0.0.14 → invocation_tree-0.0.15}/images/invocation_tree0.pdf +0 -0
  122. {invocation_tree-0.0.14 → invocation_tree-0.0.15}/images/iterable.py +0 -0
  123. {invocation_tree-0.0.14 → invocation_tree-0.0.15}/images/iterable.py~ +0 -0
  124. {invocation_tree-0.0.14 → invocation_tree-0.0.15}/images/my_list.py +0 -0
  125. {invocation_tree-0.0.14 → invocation_tree-0.0.15}/images/my_list.py~ +0 -0
  126. {invocation_tree-0.0.14 → invocation_tree-0.0.15}/images/my_range.py~ +0 -0
  127. {invocation_tree-0.0.14 → invocation_tree-0.0.15}/images/my_range0.png +0 -0
  128. {invocation_tree-0.0.14 → invocation_tree-0.0.15}/images/my_range1.png +0 -0
  129. {invocation_tree-0.0.14 → invocation_tree-0.0.15}/images/my_range10.png +0 -0
  130. {invocation_tree-0.0.14 → invocation_tree-0.0.15}/images/my_range11.png +0 -0
  131. {invocation_tree-0.0.14 → invocation_tree-0.0.15}/images/my_range12.png +0 -0
  132. {invocation_tree-0.0.14 → invocation_tree-0.0.15}/images/my_range13.png +0 -0
  133. {invocation_tree-0.0.14 → invocation_tree-0.0.15}/images/my_range14.png +0 -0
  134. {invocation_tree-0.0.14 → invocation_tree-0.0.15}/images/my_range15.png +0 -0
  135. {invocation_tree-0.0.14 → invocation_tree-0.0.15}/images/my_range2.png +0 -0
  136. {invocation_tree-0.0.14 → invocation_tree-0.0.15}/images/my_range3.png +0 -0
  137. {invocation_tree-0.0.14 → invocation_tree-0.0.15}/images/my_range4.png +0 -0
  138. {invocation_tree-0.0.14 → invocation_tree-0.0.15}/images/my_range5.png +0 -0
  139. {invocation_tree-0.0.14 → invocation_tree-0.0.15}/images/my_range6.png +0 -0
  140. {invocation_tree-0.0.14 → invocation_tree-0.0.15}/images/my_range7.png +0 -0
  141. {invocation_tree-0.0.14 → invocation_tree-0.0.15}/images/my_range8.png +0 -0
  142. {invocation_tree-0.0.14 → invocation_tree-0.0.15}/images/my_range9.png +0 -0
  143. {invocation_tree-0.0.14 → invocation_tree-0.0.15}/images/out.txt +0 -0
  144. {invocation_tree-0.0.14 → invocation_tree-0.0.15}/images/permutations.gif +0 -0
  145. {invocation_tree-0.0.14 → invocation_tree-0.0.15}/images/permutations.py +0 -0
  146. {invocation_tree-0.0.14 → invocation_tree-0.0.15}/images/permutations.py~ +0 -0
  147. {invocation_tree-0.0.14 → invocation_tree-0.0.15}/images/permutations22.png~ +0 -0
  148. {invocation_tree-0.0.14 → invocation_tree-0.0.15}/images/student.gif +0 -0
  149. {invocation_tree-0.0.14 → invocation_tree-0.0.15}/images/students.gif +0 -0
  150. {invocation_tree-0.0.14 → invocation_tree-0.0.15}/images/students.py +0 -0
  151. {invocation_tree-0.0.14 → invocation_tree-0.0.15}/images/students.py~ +0 -0
  152. {invocation_tree-0.0.14 → invocation_tree-0.0.15}/images/test.py +0 -0
  153. {invocation_tree-0.0.14 → invocation_tree-0.0.15}/images/tree.gv~ +0 -0
  154. {invocation_tree-0.0.14 → invocation_tree-0.0.15}/images/tree.pdf +0 -0
  155. {invocation_tree-0.0.14 → invocation_tree-0.0.15}/images/vscode.png +0 -0
  156. {invocation_tree-0.0.14 → invocation_tree-0.0.15}/invocation_tree.egg-info/dependency_links.txt +0 -0
  157. {invocation_tree-0.0.14 → invocation_tree-0.0.15}/invocation_tree.egg-info/requires.txt +0 -0
  158. {invocation_tree-0.0.14 → invocation_tree-0.0.15}/invocation_tree.egg-info/top_level.txt +0 -0
  159. {invocation_tree-0.0.14 → invocation_tree-0.0.15}/setup.cfg +0 -0
@@ -1,21 +1,22 @@
1
- Metadata-Version: 2.1
1
+ Metadata-Version: 2.4
2
2
  Name: invocation_tree
3
- Version: 0.0.14
4
- Summary: Generate an invocation tree of functions calls.
5
- Home-page: https://github.com/bterwijn/invocation_tree
6
- Author: Bas Terwijn
7
- Author-email: bterwijn@gmail.com
8
- License: BSD 2-clause
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:
@@ -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://superuser.com/questions/337011/windows-pdf-viewer-that-auto-refreshes-pdf-when-compiling-with-pdflatex) 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 ([Evince](https://www.fosshub.com/Evince.html), [Okular](https://okular.kde.org/), [SumatraPDF](https://www.sumatrapdfreader.org/), ...) and set it as the default PDF reader. Another solution is to save the tree to a different [Graphviz Output Format](https://graphviz.org/docs/outputs/).
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.
@@ -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://superuser.com/questions/337011/windows-pdf-viewer-that-auto-refreshes-pdf-when-compiling-with-pdflatex) 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 ([Evince](https://www.fosshub.com/Evince.html), [Okular](https://okular.kde.org/), [SumatraPDF](https://www.sumatrapdfreader.org/), ...) and set it as the default PDF reader. Another solution is to save the tree to a different [Graphviz Output Format](https://graphviz.org/docs/outputs/).
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.
@@ -7,7 +7,7 @@ import html
7
7
  import sys
8
8
  import difflib
9
9
 
10
- __version__ = "0.0.14"
10
+ __version__ = "0.0.15"
11
11
  __author__ = 'Bas Terwijn'
12
12
 
13
13
  def highlight_diff(str1, str2):
@@ -1,21 +1,22 @@
1
- Metadata-Version: 2.1
1
+ Metadata-Version: 2.4
2
2
  Name: invocation_tree
3
- Version: 0.0.14
4
- Summary: Generate an invocation tree of functions calls.
5
- Home-page: https://github.com/bterwijn/invocation_tree
6
- Author: Bas Terwijn
7
- Author-email: bterwijn@gmail.com
8
- License: BSD 2-clause
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:
@@ -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://superuser.com/questions/337011/windows-pdf-viewer-that-auto-refreshes-pdf-when-compiling-with-pdflatex) 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 ([Evince](https://www.fosshub.com/Evince.html), [Okular](https://okular.kde.org/), [SumatraPDF](https://www.sumatrapdfreader.org/), ...) and set it as the default PDF reader. Another solution is to save the tree to a different [Graphviz Output Format](https://graphviz.org/docs/outputs/).
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.
@@ -1,8 +1,7 @@
1
1
  LICENSE.txt
2
2
  MANIFEST.in
3
3
  README.md
4
- install.txt
5
- setup.py
4
+ pyproject.toml
6
5
  images/#generator_function.py#
7
6
  images/compute.gif
8
7
  images/compute.py
@@ -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/*
@@ -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.14',
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
- )