codegreen 0.4.3__tar.gz → 0.4.4__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 (219) hide show
  1. {codegreen-0.4.3/codegreen.egg-info → codegreen-0.4.4}/PKG-INFO +1 -1
  2. {codegreen-0.4.3 → codegreen-0.4.4}/codegreen/__init__.py +1 -1
  3. {codegreen-0.4.3 → codegreen-0.4.4}/codegreen/cli/cli.py +123 -12
  4. {codegreen-0.4.3 → codegreen-0.4.4/codegreen.egg-info}/PKG-INFO +1 -1
  5. {codegreen-0.4.3 → codegreen-0.4.4}/pyproject.toml +1 -1
  6. {codegreen-0.4.3 → codegreen-0.4.4}/CMakeLists.txt +0 -0
  7. {codegreen-0.4.3 → codegreen-0.4.4}/LICENSE +0 -0
  8. {codegreen-0.4.3 → codegreen-0.4.4}/MANIFEST.in +0 -0
  9. {codegreen-0.4.3 → codegreen-0.4.4}/README.md +0 -0
  10. {codegreen-0.4.3 → codegreen-0.4.4}/benchmark/__init__.py +0 -0
  11. {codegreen-0.4.3 → codegreen-0.4.4}/benchmark/__main__.py +0 -0
  12. {codegreen-0.4.3 → codegreen-0.4.4}/benchmark/_workload_gpt2.py +0 -0
  13. {codegreen-0.4.3 → codegreen-0.4.4}/benchmark/_workload_gpt2_session.py +0 -0
  14. {codegreen-0.4.3 → codegreen-0.4.4}/benchmark/cg_modes_compare.py +0 -0
  15. {codegreen-0.4.3 → codegreen-0.4.4}/benchmark/compilers.py +0 -0
  16. {codegreen-0.4.3 → codegreen-0.4.4}/benchmark/config.py +0 -0
  17. {codegreen-0.4.3 → codegreen-0.4.4}/benchmark/harness.py +0 -0
  18. {codegreen-0.4.3 → codegreen-0.4.4}/benchmark/profilers.py +0 -0
  19. {codegreen-0.4.3 → codegreen-0.4.4}/benchmark/results.py +0 -0
  20. {codegreen-0.4.3 → codegreen-0.4.4}/benchmark/suites/__init__.py +0 -0
  21. {codegreen-0.4.3 → codegreen-0.4.4}/benchmark/suites/base.py +0 -0
  22. {codegreen-0.4.3 → codegreen-0.4.4}/benchmark/suites/benchmarksgame.py +0 -0
  23. {codegreen-0.4.3 → codegreen-0.4.4}/benchmark/suites/dacapo.py +0 -0
  24. {codegreen-0.4.3 → codegreen-0.4.4}/benchmark/suites/perfopt.py +0 -0
  25. {codegreen-0.4.3 → codegreen-0.4.4}/benchmark/suites/renaissance.py +0 -0
  26. {codegreen-0.4.3 → codegreen-0.4.4}/benchmark/validation/__init__.py +0 -0
  27. {codegreen-0.4.3 → codegreen-0.4.4}/benchmark/validation/analysis.py +0 -0
  28. {codegreen-0.4.3 → codegreen-0.4.4}/benchmark/validation/experiments.py +0 -0
  29. {codegreen-0.4.3 → codegreen-0.4.4}/benchmark/validation/reporting.py +0 -0
  30. {codegreen-0.4.3 → codegreen-0.4.4}/codegreen/analysis/__init__.py +0 -0
  31. {codegreen-0.4.3 → codegreen-0.4.4}/codegreen/analysis/_ts_java.py +0 -0
  32. {codegreen-0.4.3 → codegreen-0.4.4}/codegreen/analysis/cfg/__init__.py +0 -0
  33. {codegreen-0.4.3 → codegreen-0.4.4}/codegreen/analysis/cfg/builder.py +0 -0
  34. {codegreen-0.4.3 → codegreen-0.4.4}/codegreen/analysis/cfg/callgraph.py +0 -0
  35. {codegreen-0.4.3 → codegreen-0.4.4}/codegreen/analysis/cfg/dataflow.py +0 -0
  36. {codegreen-0.4.3 → codegreen-0.4.4}/codegreen/analysis/cfg/energy_flow.py +0 -0
  37. {codegreen-0.4.3 → codegreen-0.4.4}/codegreen/analysis/cfg/features.py +0 -0
  38. {codegreen-0.4.3 → codegreen-0.4.4}/codegreen/analysis/cfg/pdg.py +0 -0
  39. {codegreen-0.4.3 → codegreen-0.4.4}/codegreen/analysis/cfg/types.py +0 -0
  40. {codegreen-0.4.3 → codegreen-0.4.4}/codegreen/analysis/cfg/visualization.py +0 -0
  41. {codegreen-0.4.3 → codegreen-0.4.4}/codegreen/analyzer/__init__.py +0 -0
  42. {codegreen-0.4.3 → codegreen-0.4.4}/codegreen/analyzer/plot.py +0 -0
  43. {codegreen-0.4.3 → codegreen-0.4.4}/codegreen/cli/__init__.py +0 -0
  44. {codegreen-0.4.3 → codegreen-0.4.4}/codegreen/cli/entrypoint.py +0 -0
  45. {codegreen-0.4.3 → codegreen-0.4.4}/codegreen/config.json +0 -0
  46. {codegreen-0.4.3 → codegreen-0.4.4}/codegreen/instrumentation/__init__.py +0 -0
  47. {codegreen-0.4.3 → codegreen-0.4.4}/codegreen/instrumentation/ast_processor.py +0 -0
  48. {codegreen-0.4.3 → codegreen-0.4.4}/codegreen/instrumentation/bridge_analyze.py +0 -0
  49. {codegreen-0.4.3 → codegreen-0.4.4}/codegreen/instrumentation/bridge_instrument.py +0 -0
  50. {codegreen-0.4.3 → codegreen-0.4.4}/codegreen/instrumentation/config.py +0 -0
  51. {codegreen-0.4.3 → codegreen-0.4.4}/codegreen/instrumentation/configs/TEMPLATE.json +0 -0
  52. {codegreen-0.4.3 → codegreen-0.4.4}/codegreen/instrumentation/configs/c.json +0 -0
  53. {codegreen-0.4.3 → codegreen-0.4.4}/codegreen/instrumentation/configs/cpp.json +0 -0
  54. {codegreen-0.4.3 → codegreen-0.4.4}/codegreen/instrumentation/configs/java.json +0 -0
  55. {codegreen-0.4.3 → codegreen-0.4.4}/codegreen/instrumentation/configs/javascript.json +0 -0
  56. {codegreen-0.4.3 → codegreen-0.4.4}/codegreen/instrumentation/configs/python.json +0 -0
  57. {codegreen-0.4.3 → codegreen-0.4.4}/codegreen/instrumentation/engine.py +0 -0
  58. {codegreen-0.4.3 → codegreen-0.4.4}/codegreen/instrumentation/language_configs.py +0 -0
  59. {codegreen-0.4.3 → codegreen-0.4.4}/codegreen/instrumentation/language_engine.py +0 -0
  60. {codegreen-0.4.3 → codegreen-0.4.4}/codegreen/instrumentation/language_runtimes/c/codegreen_runtime.h +0 -0
  61. {codegreen-0.4.3 → codegreen-0.4.4}/codegreen/instrumentation/language_runtimes/cpp/codegreen/runtime.hpp +0 -0
  62. {codegreen-0.4.3 → codegreen-0.4.4}/codegreen/instrumentation/language_runtimes/java/codegreen/runtime/CodeGreenRuntime.java +0 -0
  63. {codegreen-0.4.3 → codegreen-0.4.4}/codegreen/instrumentation/language_runtimes/java/codegreen/runtime/CodeGreenStandaloneRuntime.java +0 -0
  64. {codegreen-0.4.3 → codegreen-0.4.4}/codegreen/instrumentation/language_runtimes/python/codegreen_runtime.py +0 -0
  65. {codegreen-0.4.3 → codegreen-0.4.4}/codegreen/utils/__init__.py +0 -0
  66. {codegreen-0.4.3 → codegreen-0.4.4}/codegreen/utils/binary.py +0 -0
  67. {codegreen-0.4.3 → codegreen-0.4.4}/codegreen/utils/platform.py +0 -0
  68. {codegreen-0.4.3 → codegreen-0.4.4}/codegreen.egg-info/SOURCES.txt +0 -0
  69. {codegreen-0.4.3 → codegreen-0.4.4}/codegreen.egg-info/dependency_links.txt +0 -0
  70. {codegreen-0.4.3 → codegreen-0.4.4}/codegreen.egg-info/entry_points.txt +0 -0
  71. {codegreen-0.4.3 → codegreen-0.4.4}/codegreen.egg-info/not-zip-safe +0 -0
  72. {codegreen-0.4.3 → codegreen-0.4.4}/codegreen.egg-info/requires.txt +0 -0
  73. {codegreen-0.4.3 → codegreen-0.4.4}/codegreen.egg-info/top_level.txt +0 -0
  74. {codegreen-0.4.3 → codegreen-0.4.4}/requirements.txt +0 -0
  75. {codegreen-0.4.3 → codegreen-0.4.4}/setup.cfg +0 -0
  76. {codegreen-0.4.3 → codegreen-0.4.4}/setup.py +0 -0
  77. {codegreen-0.4.3 → codegreen-0.4.4}/tests/test_instrumentation.py +0 -0
  78. {codegreen-0.4.3 → codegreen-0.4.4}/third_party/Programming-Language-Benchmarks/bench/algorithm/binarytrees/2.c +0 -0
  79. {codegreen-0.4.3 → codegreen-0.4.4}/third_party/Programming-Language-Benchmarks/bench/algorithm/helloworld/1.c +0 -0
  80. {codegreen-0.4.3 → codegreen-0.4.4}/third_party/Programming-Language-Benchmarks/bench/algorithm/knucleotide/1.c +0 -0
  81. {codegreen-0.4.3 → codegreen-0.4.4}/third_party/Programming-Language-Benchmarks/bench/algorithm/mandelbrot/1-ffi.c +0 -0
  82. {codegreen-0.4.3 → codegreen-0.4.4}/third_party/Programming-Language-Benchmarks/bench/algorithm/mandelbrot/1-mffi.c +0 -0
  83. {codegreen-0.4.3 → codegreen-0.4.4}/third_party/Programming-Language-Benchmarks/bench/algorithm/nbody/2.c +0 -0
  84. {codegreen-0.4.3 → codegreen-0.4.4}/third_party/Programming-Language-Benchmarks/bench/algorithm/nbody/5.c +0 -0
  85. {codegreen-0.4.3 → codegreen-0.4.4}/third_party/Programming-Language-Benchmarks/bench/algorithm/nbody/8-i.c +0 -0
  86. {codegreen-0.4.3 → codegreen-0.4.4}/third_party/Programming-Language-Benchmarks/bench/algorithm/nsieve/1.c +0 -0
  87. {codegreen-0.4.3 → codegreen-0.4.4}/third_party/Programming-Language-Benchmarks/bench/algorithm/spectral-norm/3.c +0 -0
  88. {codegreen-0.4.3 → codegreen-0.4.4}/third_party/Programming-Language-Benchmarks/bench/algorithm/spectral-norm/4.c +0 -0
  89. {codegreen-0.4.3 → codegreen-0.4.4}/third_party/Programming-Language-Benchmarks/bench/algorithm/spectral-norm/5-im.c +0 -0
  90. {codegreen-0.4.3 → codegreen-0.4.4}/third_party/Programming-Language-Benchmarks/bench/algorithm/spectral-norm/6-im.c +0 -0
  91. {codegreen-0.4.3 → codegreen-0.4.4}/third_party/nvim-treesitter/tests/indent/c/aligned_indent.c +0 -0
  92. {codegreen-0.4.3 → codegreen-0.4.4}/third_party/nvim-treesitter/tests/indent/c/array.c +0 -0
  93. {codegreen-0.4.3 → codegreen-0.4.4}/third_party/nvim-treesitter/tests/indent/c/comment.c +0 -0
  94. {codegreen-0.4.3 → codegreen-0.4.4}/third_party/nvim-treesitter/tests/indent/c/compound_lit.c +0 -0
  95. {codegreen-0.4.3 → codegreen-0.4.4}/third_party/nvim-treesitter/tests/indent/c/cond.c +0 -0
  96. {codegreen-0.4.3 → codegreen-0.4.4}/third_party/nvim-treesitter/tests/indent/c/enum.c +0 -0
  97. {codegreen-0.4.3 → codegreen-0.4.4}/third_party/nvim-treesitter/tests/indent/c/expr.c +0 -0
  98. {codegreen-0.4.3 → codegreen-0.4.4}/third_party/nvim-treesitter/tests/indent/c/func.c +0 -0
  99. {codegreen-0.4.3 → codegreen-0.4.4}/third_party/nvim-treesitter/tests/indent/c/if_else.c +0 -0
  100. {codegreen-0.4.3 → codegreen-0.4.4}/third_party/nvim-treesitter/tests/indent/c/issue-1568.c +0 -0
  101. {codegreen-0.4.3 → codegreen-0.4.4}/third_party/nvim-treesitter/tests/indent/c/issue-2086.c +0 -0
  102. {codegreen-0.4.3 → codegreen-0.4.4}/third_party/nvim-treesitter/tests/indent/c/issue-4079.c +0 -0
  103. {codegreen-0.4.3 → codegreen-0.4.4}/third_party/nvim-treesitter/tests/indent/c/issue-4117.c +0 -0
  104. {codegreen-0.4.3 → codegreen-0.4.4}/third_party/nvim-treesitter/tests/indent/c/issue-4525.c +0 -0
  105. {codegreen-0.4.3 → codegreen-0.4.4}/third_party/nvim-treesitter/tests/indent/c/label.c +0 -0
  106. {codegreen-0.4.3 → codegreen-0.4.4}/third_party/nvim-treesitter/tests/indent/c/loop.c +0 -0
  107. {codegreen-0.4.3 → codegreen-0.4.4}/third_party/nvim-treesitter/tests/indent/c/no_braces.c +0 -0
  108. {codegreen-0.4.3 → codegreen-0.4.4}/third_party/nvim-treesitter/tests/indent/c/preproc_cond.c +0 -0
  109. {codegreen-0.4.3 → codegreen-0.4.4}/third_party/nvim-treesitter/tests/indent/c/preproc_func.c +0 -0
  110. {codegreen-0.4.3 → codegreen-0.4.4}/third_party/nvim-treesitter/tests/indent/c/string.c +0 -0
  111. {codegreen-0.4.3 → codegreen-0.4.4}/third_party/nvim-treesitter/tests/indent/c/struct.c +0 -0
  112. {codegreen-0.4.3 → codegreen-0.4.4}/third_party/nvim-treesitter/tests/indent/c/switch.c +0 -0
  113. {codegreen-0.4.3 → codegreen-0.4.4}/third_party/nvim-treesitter/tests/indent/c/ternary.c +0 -0
  114. {codegreen-0.4.3 → codegreen-0.4.4}/third_party/nvim-treesitter/tests/indent/c/unfinished_comment.c +0 -0
  115. {codegreen-0.4.3 → codegreen-0.4.4}/third_party/nvim-treesitter/tests/query/highlights/c/enums-as-constants.c +0 -0
  116. {codegreen-0.4.3 → codegreen-0.4.4}/third_party/tree-sitter/crates/cli/src/templates/PARSER_NAME.h +0 -0
  117. {codegreen-0.4.3 → codegreen-0.4.4}/third_party/tree-sitter/crates/cli/src/templates/py-binding.c +0 -0
  118. {codegreen-0.4.3 → codegreen-0.4.4}/third_party/tree-sitter/crates/generate/src/templates/alloc.h +0 -0
  119. {codegreen-0.4.3 → codegreen-0.4.4}/third_party/tree-sitter/crates/generate/src/templates/array.h +0 -0
  120. {codegreen-0.4.3 → codegreen-0.4.4}/third_party/tree-sitter/crates/highlight/include/tree_sitter/highlight.h +0 -0
  121. {codegreen-0.4.3 → codegreen-0.4.4}/third_party/tree-sitter/crates/tags/include/tree_sitter/tags.h +0 -0
  122. {codegreen-0.4.3 → codegreen-0.4.4}/third_party/tree-sitter/lib/CMakeLists.txt +0 -0
  123. {codegreen-0.4.3 → codegreen-0.4.4}/third_party/tree-sitter/lib/binding_web/lib/tree-sitter.c +0 -0
  124. {codegreen-0.4.3 → codegreen-0.4.4}/third_party/tree-sitter/lib/include/tree_sitter/api.h +0 -0
  125. {codegreen-0.4.3 → codegreen-0.4.4}/third_party/tree-sitter/lib/src/alloc.c +0 -0
  126. {codegreen-0.4.3 → codegreen-0.4.4}/third_party/tree-sitter/lib/src/alloc.h +0 -0
  127. {codegreen-0.4.3 → codegreen-0.4.4}/third_party/tree-sitter/lib/src/array.h +0 -0
  128. {codegreen-0.4.3 → codegreen-0.4.4}/third_party/tree-sitter/lib/src/atomic.h +0 -0
  129. {codegreen-0.4.3 → codegreen-0.4.4}/third_party/tree-sitter/lib/src/clock.h +0 -0
  130. {codegreen-0.4.3 → codegreen-0.4.4}/third_party/tree-sitter/lib/src/error_costs.h +0 -0
  131. {codegreen-0.4.3 → codegreen-0.4.4}/third_party/tree-sitter/lib/src/get_changed_ranges.c +0 -0
  132. {codegreen-0.4.3 → codegreen-0.4.4}/third_party/tree-sitter/lib/src/get_changed_ranges.h +0 -0
  133. {codegreen-0.4.3 → codegreen-0.4.4}/third_party/tree-sitter/lib/src/host.h +0 -0
  134. {codegreen-0.4.3 → codegreen-0.4.4}/third_party/tree-sitter/lib/src/language.c +0 -0
  135. {codegreen-0.4.3 → codegreen-0.4.4}/third_party/tree-sitter/lib/src/language.h +0 -0
  136. {codegreen-0.4.3 → codegreen-0.4.4}/third_party/tree-sitter/lib/src/length.h +0 -0
  137. {codegreen-0.4.3 → codegreen-0.4.4}/third_party/tree-sitter/lib/src/lexer.c +0 -0
  138. {codegreen-0.4.3 → codegreen-0.4.4}/third_party/tree-sitter/lib/src/lexer.h +0 -0
  139. {codegreen-0.4.3 → codegreen-0.4.4}/third_party/tree-sitter/lib/src/lib.c +0 -0
  140. {codegreen-0.4.3 → codegreen-0.4.4}/third_party/tree-sitter/lib/src/node.c +0 -0
  141. {codegreen-0.4.3 → codegreen-0.4.4}/third_party/tree-sitter/lib/src/parser.c +0 -0
  142. {codegreen-0.4.3 → codegreen-0.4.4}/third_party/tree-sitter/lib/src/parser.h +0 -0
  143. {codegreen-0.4.3 → codegreen-0.4.4}/third_party/tree-sitter/lib/src/point.h +0 -0
  144. {codegreen-0.4.3 → codegreen-0.4.4}/third_party/tree-sitter/lib/src/portable/endian.h +0 -0
  145. {codegreen-0.4.3 → codegreen-0.4.4}/third_party/tree-sitter/lib/src/query.c +0 -0
  146. {codegreen-0.4.3 → codegreen-0.4.4}/third_party/tree-sitter/lib/src/reduce_action.h +0 -0
  147. {codegreen-0.4.3 → codegreen-0.4.4}/third_party/tree-sitter/lib/src/reusable_node.h +0 -0
  148. {codegreen-0.4.3 → codegreen-0.4.4}/third_party/tree-sitter/lib/src/stack.c +0 -0
  149. {codegreen-0.4.3 → codegreen-0.4.4}/third_party/tree-sitter/lib/src/stack.h +0 -0
  150. {codegreen-0.4.3 → codegreen-0.4.4}/third_party/tree-sitter/lib/src/subtree.c +0 -0
  151. {codegreen-0.4.3 → codegreen-0.4.4}/third_party/tree-sitter/lib/src/subtree.h +0 -0
  152. {codegreen-0.4.3 → codegreen-0.4.4}/third_party/tree-sitter/lib/src/tree.c +0 -0
  153. {codegreen-0.4.3 → codegreen-0.4.4}/third_party/tree-sitter/lib/src/tree.h +0 -0
  154. {codegreen-0.4.3 → codegreen-0.4.4}/third_party/tree-sitter/lib/src/tree_cursor.c +0 -0
  155. {codegreen-0.4.3 → codegreen-0.4.4}/third_party/tree-sitter/lib/src/tree_cursor.h +0 -0
  156. {codegreen-0.4.3 → codegreen-0.4.4}/third_party/tree-sitter/lib/src/ts_assert.h +0 -0
  157. {codegreen-0.4.3 → codegreen-0.4.4}/third_party/tree-sitter/lib/src/unicode/ptypes.h +0 -0
  158. {codegreen-0.4.3 → codegreen-0.4.4}/third_party/tree-sitter/lib/src/unicode/umachine.h +0 -0
  159. {codegreen-0.4.3 → codegreen-0.4.4}/third_party/tree-sitter/lib/src/unicode/urename.h +0 -0
  160. {codegreen-0.4.3 → codegreen-0.4.4}/third_party/tree-sitter/lib/src/unicode/utf.h +0 -0
  161. {codegreen-0.4.3 → codegreen-0.4.4}/third_party/tree-sitter/lib/src/unicode/utf16.h +0 -0
  162. {codegreen-0.4.3 → codegreen-0.4.4}/third_party/tree-sitter/lib/src/unicode/utf8.h +0 -0
  163. {codegreen-0.4.3 → codegreen-0.4.4}/third_party/tree-sitter/lib/src/unicode.h +0 -0
  164. {codegreen-0.4.3 → codegreen-0.4.4}/third_party/tree-sitter/lib/src/wasm/stdlib.c +0 -0
  165. {codegreen-0.4.3 → codegreen-0.4.4}/third_party/tree-sitter/lib/src/wasm/wasm-stdlib.h +0 -0
  166. {codegreen-0.4.3 → codegreen-0.4.4}/third_party/tree-sitter/lib/src/wasm_store.c +0 -0
  167. {codegreen-0.4.3 → codegreen-0.4.4}/third_party/tree-sitter/lib/src/wasm_store.h +0 -0
  168. {codegreen-0.4.3 → codegreen-0.4.4}/third_party/tree-sitter/test/fixtures/test_grammars/depends_on_column/scanner.c +0 -0
  169. {codegreen-0.4.3 → codegreen-0.4.4}/third_party/tree-sitter/test/fixtures/test_grammars/epsilon_external_extra_tokens/scanner.c +0 -0
  170. {codegreen-0.4.3 → codegreen-0.4.4}/third_party/tree-sitter/test/fixtures/test_grammars/epsilon_external_tokens/scanner.c +0 -0
  171. {codegreen-0.4.3 → codegreen-0.4.4}/third_party/tree-sitter/test/fixtures/test_grammars/external_and_internal_anonymous_tokens/scanner.c +0 -0
  172. {codegreen-0.4.3 → codegreen-0.4.4}/third_party/tree-sitter/test/fixtures/test_grammars/external_and_internal_tokens/scanner.c +0 -0
  173. {codegreen-0.4.3 → codegreen-0.4.4}/third_party/tree-sitter/test/fixtures/test_grammars/external_extra_tokens/scanner.c +0 -0
  174. {codegreen-0.4.3 → codegreen-0.4.4}/third_party/tree-sitter/test/fixtures/test_grammars/external_tokens/scanner.c +0 -0
  175. {codegreen-0.4.3 → codegreen-0.4.4}/third_party/tree-sitter/test/fixtures/test_grammars/external_unicode_column_alignment/scanner.c +0 -0
  176. {codegreen-0.4.3 → codegreen-0.4.4}/third_party/tree-sitter/test/fixtures/test_grammars/get_col_eof/scanner.c +0 -0
  177. {codegreen-0.4.3 → codegreen-0.4.4}/third_party/tree-sitter/test/fixtures/test_grammars/get_col_should_hang_not_crash/scanner.c +0 -0
  178. {codegreen-0.4.3 → codegreen-0.4.4}/third_party/tree-sitter/test/fixtures/test_grammars/inverted_external_token/scanner.c +0 -0
  179. {codegreen-0.4.3 → codegreen-0.4.4}/third_party/tree-sitter/test/fixtures/test_grammars/uses_current_column/scanner.c +0 -0
  180. {codegreen-0.4.3 → codegreen-0.4.4}/third_party/tree-sitter-c/CMakeLists.txt +0 -0
  181. {codegreen-0.4.3 → codegreen-0.4.4}/third_party/tree-sitter-c/bindings/c/tree_sitter/tree-sitter-c.h +0 -0
  182. {codegreen-0.4.3 → codegreen-0.4.4}/third_party/tree-sitter-c/bindings/python/tree_sitter_c/binding.c +0 -0
  183. {codegreen-0.4.3 → codegreen-0.4.4}/third_party/tree-sitter-c/bindings/swift/TreeSitterC/c.h +0 -0
  184. {codegreen-0.4.3 → codegreen-0.4.4}/third_party/tree-sitter-c/examples/cluster.c +0 -0
  185. {codegreen-0.4.3 → codegreen-0.4.4}/third_party/tree-sitter-c/examples/malloc.c +0 -0
  186. {codegreen-0.4.3 → codegreen-0.4.4}/third_party/tree-sitter-c/examples/parser.c +0 -0
  187. {codegreen-0.4.3 → codegreen-0.4.4}/third_party/tree-sitter-c/src/parser.c +0 -0
  188. {codegreen-0.4.3 → codegreen-0.4.4}/third_party/tree-sitter-c/src/tree_sitter/alloc.h +0 -0
  189. {codegreen-0.4.3 → codegreen-0.4.4}/third_party/tree-sitter-c/src/tree_sitter/array.h +0 -0
  190. {codegreen-0.4.3 → codegreen-0.4.4}/third_party/tree-sitter-c/src/tree_sitter/parser.h +0 -0
  191. {codegreen-0.4.3 → codegreen-0.4.4}/third_party/tree-sitter-c/test/highlight/keywords.c +0 -0
  192. {codegreen-0.4.3 → codegreen-0.4.4}/third_party/tree-sitter-c/test/highlight/names.c +0 -0
  193. {codegreen-0.4.3 → codegreen-0.4.4}/third_party/tree-sitter-cpp/CMakeLists.txt +0 -0
  194. {codegreen-0.4.3 → codegreen-0.4.4}/third_party/tree-sitter-cpp/bindings/c/tree-sitter-cpp.h +0 -0
  195. {codegreen-0.4.3 → codegreen-0.4.4}/third_party/tree-sitter-cpp/bindings/python/tree_sitter_cpp/binding.c +0 -0
  196. {codegreen-0.4.3 → codegreen-0.4.4}/third_party/tree-sitter-cpp/bindings/swift/TreeSitterCPP/cpp.h +0 -0
  197. {codegreen-0.4.3 → codegreen-0.4.4}/third_party/tree-sitter-cpp/examples/marker-index.h +0 -0
  198. {codegreen-0.4.3 → codegreen-0.4.4}/third_party/tree-sitter-cpp/src/parser.c +0 -0
  199. {codegreen-0.4.3 → codegreen-0.4.4}/third_party/tree-sitter-cpp/src/scanner.c +0 -0
  200. {codegreen-0.4.3 → codegreen-0.4.4}/third_party/tree-sitter-cpp/src/tree_sitter/alloc.h +0 -0
  201. {codegreen-0.4.3 → codegreen-0.4.4}/third_party/tree-sitter-cpp/src/tree_sitter/array.h +0 -0
  202. {codegreen-0.4.3 → codegreen-0.4.4}/third_party/tree-sitter-cpp/src/tree_sitter/parser.h +0 -0
  203. {codegreen-0.4.3 → codegreen-0.4.4}/third_party/tree-sitter-java/CMakeLists.txt +0 -0
  204. {codegreen-0.4.3 → codegreen-0.4.4}/third_party/tree-sitter-java/bindings/c/tree-sitter-java.h +0 -0
  205. {codegreen-0.4.3 → codegreen-0.4.4}/third_party/tree-sitter-java/bindings/python/tree_sitter_java/binding.c +0 -0
  206. {codegreen-0.4.3 → codegreen-0.4.4}/third_party/tree-sitter-java/bindings/swift/TreeSitterJava/java.h +0 -0
  207. {codegreen-0.4.3 → codegreen-0.4.4}/third_party/tree-sitter-java/src/parser.c +0 -0
  208. {codegreen-0.4.3 → codegreen-0.4.4}/third_party/tree-sitter-java/src/tree_sitter/alloc.h +0 -0
  209. {codegreen-0.4.3 → codegreen-0.4.4}/third_party/tree-sitter-java/src/tree_sitter/array.h +0 -0
  210. {codegreen-0.4.3 → codegreen-0.4.4}/third_party/tree-sitter-java/src/tree_sitter/parser.h +0 -0
  211. {codegreen-0.4.3 → codegreen-0.4.4}/third_party/tree-sitter-python/CMakeLists.txt +0 -0
  212. {codegreen-0.4.3 → codegreen-0.4.4}/third_party/tree-sitter-python/bindings/c/tree-sitter-python.h +0 -0
  213. {codegreen-0.4.3 → codegreen-0.4.4}/third_party/tree-sitter-python/bindings/python/tree_sitter_python/binding.c +0 -0
  214. {codegreen-0.4.3 → codegreen-0.4.4}/third_party/tree-sitter-python/bindings/swift/TreeSitterPython/python.h +0 -0
  215. {codegreen-0.4.3 → codegreen-0.4.4}/third_party/tree-sitter-python/src/parser.c +0 -0
  216. {codegreen-0.4.3 → codegreen-0.4.4}/third_party/tree-sitter-python/src/scanner.c +0 -0
  217. {codegreen-0.4.3 → codegreen-0.4.4}/third_party/tree-sitter-python/src/tree_sitter/alloc.h +0 -0
  218. {codegreen-0.4.3 → codegreen-0.4.4}/third_party/tree-sitter-python/src/tree_sitter/array.h +0 -0
  219. {codegreen-0.4.3 → codegreen-0.4.4}/third_party/tree-sitter-python/src/tree_sitter/parser.h +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: codegreen
3
- Version: 0.4.3
3
+ Version: 0.4.4
4
4
  Summary: Know the true energy cost of your code
5
5
  Author-email: Saurabhsingh Rajput <saurabh@dal.ca>
6
6
  Maintainer-email: Saurabhsingh Rajput <saurabh@dal.ca>
@@ -12,7 +12,7 @@ try:
12
12
  from importlib.metadata import version as _pkg_version
13
13
  __version__ = _pkg_version("codegreen")
14
14
  except Exception:
15
- __version__ = "0.4.3" # fallback for dev/editable installs
15
+ __version__ = "0.4.4" # fallback for dev/editable installs
16
16
  __author__ = "Saurabhsingh Rajput"
17
17
  __email__ = "saurabh@dal.ca"
18
18
  __description__ = "Know the true energy cost of your code"
@@ -165,6 +165,116 @@ def load_config(config_path: Optional[Path] = None) -> Dict[str, Any]:
165
165
  }
166
166
  }
167
167
 
168
+
169
+ # Hotspot taxonomy. OCP-compliant: each verdict is a *rule* declared as
170
+ # data, evaluated in priority order. Adding a new category is a single
171
+ # entry in HOTSPOT_RULES (and optionally a corresponding block in
172
+ # config.json) -- no change to the dispatch logic. The current rule set
173
+ # matches the historical thresholds at the original cli.py:3424-3435
174
+ # block prior to extraction.
175
+ #
176
+ # Each rule: (verdict, priority, predicate, default-thresholds).
177
+ # Predicate is a callable taking the metrics dict + the resolved
178
+ # threshold dict; lower priority wins when multiple rules match.
179
+ HotspotMetrics = Dict[str, float]
180
+ HotspotThresholds = Dict[str, float]
181
+ HotspotRule = Dict[str, Any]
182
+
183
+ _HOTSPOT_RULES: List[HotspotRule] = [
184
+ {
185
+ "verdict": "wrapper",
186
+ "priority": 10, # filter rule: fires before any actionable type
187
+ "thresholds": {"self_ratio_max": 0.2, "inclusive_pct_min": 5.0},
188
+ "predicate": lambda m, t: (m["self_ratio"] < t["self_ratio_max"]
189
+ and m["inc_pct"] >= t["inclusive_pct_min"]),
190
+ "doc": "Function attributes inclusive energy but body does little work.",
191
+ },
192
+ {
193
+ "verdict": "TYPE_2_INEFFICIENT",
194
+ "priority": 20,
195
+ "thresholds": {"exclusive_pct_min": 5.0, "efficiency_ratio_min": 3.0},
196
+ "predicate": lambda m, t: (m["exc_pct"] >= t["exclusive_pct_min"]
197
+ and m["efficiency_ratio"] > t["efficiency_ratio_min"]),
198
+ "doc": "Energy-per-call >> median: microarchitectural inefficiency.",
199
+ },
200
+ {
201
+ "verdict": "TYPE_1_DIRECT",
202
+ "priority": 30,
203
+ "thresholds": {"exclusive_pct_min": 10.0},
204
+ "predicate": lambda m, t: m["exc_pct"] >= t["exclusive_pct_min"],
205
+ "doc": "High exclusive energy: optimise the function body itself.",
206
+ },
207
+ {
208
+ "verdict": "TYPE_5_FREQUENCY",
209
+ "priority": 40,
210
+ "thresholds": {"calls_min": 100000, "exclusive_pct_min": 3.0,
211
+ "efficiency_ratio_max": 1.5},
212
+ "predicate": lambda m, t: (m["calls"] > t["calls_min"]
213
+ and m["exc_pct"] >= t["exclusive_pct_min"]
214
+ and m["efficiency_ratio"] < t["efficiency_ratio_max"]),
215
+ "doc": "High call count, low per-call cost: batch or cache.",
216
+ },
217
+ {
218
+ "verdict": "TYPE_1_DIRECT",
219
+ "priority": 50, # relaxed fallback below the strict 10% bar
220
+ "thresholds": {"exclusive_pct_min": 3.0},
221
+ "predicate": lambda m, t: m["exc_pct"] >= t["exclusive_pct_min"],
222
+ "doc": "Relaxed Type-1 fallback for moderate exclusive shares.",
223
+ },
224
+ ]
225
+
226
+
227
+ def _resolved_thresholds(rule: HotspotRule, config: Optional[Dict[str, Any]]) -> HotspotThresholds:
228
+ """Merge rule's defaults with the user's overrides under
229
+ ``config["hotspot_taxonomy"]["<verdict>"]``. Per-verdict block keeps
230
+ name collisions safe across rule additions."""
231
+ base = dict(rule["thresholds"])
232
+ if config:
233
+ tax = config.get("hotspot_taxonomy", {}) or {}
234
+ # Per-verdict block (preferred, OCP-friendly): tax["<verdict>"]
235
+ per_verdict = tax.get(rule["verdict"], {})
236
+ if isinstance(per_verdict, dict):
237
+ base.update({k: float(v) for k, v in per_verdict.items()
238
+ if k in rule["thresholds"]})
239
+ return base
240
+
241
+
242
+ def _classify_hotspot_verdict(self_ratio: float, inc_pct: float, exc_pct: float,
243
+ calls: int, efficiency_ratio: float,
244
+ config: Optional[Dict[str, Any]] = None,
245
+ rules: Optional[List[HotspotRule]] = None) -> str:
246
+ """Return the verdict for the given per-function metrics. Rules are
247
+ evaluated in ascending priority order; first match wins. CodeGreen
248
+ detects ``wrapper`` / ``TYPE_1_DIRECT`` / ``TYPE_2_INEFFICIENT`` /
249
+ ``TYPE_5_FREQUENCY`` / ``minor``; ``TYPE_3_INDIRECT`` and
250
+ ``TYPE_4_STRUCTURAL`` require callgraph analysis and are agent-side.
251
+
252
+ OCP: pass a custom ``rules`` list to extend without modifying this
253
+ function. config[hotspot_taxonomy][<verdict>] = {threshold: value}
254
+ overrides per-verdict thresholds without code change."""
255
+ metrics: HotspotMetrics = {
256
+ "self_ratio": self_ratio, "inc_pct": inc_pct, "exc_pct": exc_pct,
257
+ "calls": calls, "efficiency_ratio": efficiency_ratio,
258
+ }
259
+ active_rules = sorted(rules or _HOTSPOT_RULES, key=lambda r: r["priority"])
260
+ for rule in active_rules:
261
+ thresholds = _resolved_thresholds(rule, config)
262
+ try:
263
+ if rule["predicate"](metrics, thresholds):
264
+ return rule["verdict"]
265
+ except (KeyError, TypeError):
266
+ continue
267
+ return "minor"
268
+
269
+
270
+ # Backwards-compat: callers reading individual threshold values can still
271
+ # query a flat default map.
272
+ _DEFAULT_HOTSPOT_TAXONOMY = {
273
+ f"{r['verdict'].lower()}_{k}": v
274
+ for r in _HOTSPOT_RULES for k, v in r["thresholds"].items()
275
+ }
276
+
277
+
168
278
  # ============================================================================
169
279
  # Comprehensive Detection Functions for Init Command
170
280
  # ============================================================================
@@ -2651,6 +2761,13 @@ def run_command(
2651
2761
  cv = (e_stats.std / e_stats.mean * 100) if e_stats.mean > 0 else 0.0
2652
2762
  avg_power = e_stats.mean / t_stats.mean if t_stats.mean > 0 else 0.0
2653
2763
 
2764
+ # Per-domain power: joules / mean wall time. Same time-base as the
2765
+ # scalar `power_watts` so the two are comparable (sum of domain powers
2766
+ # equals total power up to RAPL's overlapping-domain accounting).
2767
+ avg_domains_power = {}
2768
+ if avg_domains and t_stats.mean > 0:
2769
+ avg_domains_power = {d: j / t_stats.mean for d, j in avg_domains.items()}
2770
+
2654
2771
  if json_output:
2655
2772
  out = {
2656
2773
  "command": command, "backend": backend.name,
@@ -2663,6 +2780,8 @@ def run_command(
2663
2780
  }
2664
2781
  if avg_domains:
2665
2782
  out["domains"] = {d: round(j, 6) for d, j in sorted(avg_domains.items(), key=lambda x: -x[1])}
2783
+ out["domains_power_watts"] = {d: round(w, 4) for d, w in
2784
+ sorted(avg_domains_power.items(), key=lambda x: -x[1])}
2666
2785
  print(json.dumps(out, indent=2))
2667
2786
  if budget_exceeded:
2668
2787
  raise typer.Exit(1)
@@ -3421,18 +3540,10 @@ def project_energy(
3421
3540
  med_epc = median_epc[len(median_epc) // 2] if median_epc else 1
3422
3541
  epc = data["inclusive_uj"] / calls if calls > 0 else 0
3423
3542
  efficiency_ratio = epc / med_epc if med_epc > 0 else 0
3424
- if self_ratio < 0.2 and inc_pct >= 5.0:
3425
- verdict = "wrapper"
3426
- elif exc_pct >= 5.0 and efficiency_ratio > 3.0:
3427
- verdict = "TYPE_2_INEFFICIENT"
3428
- elif exc_pct >= 10.0:
3429
- verdict = "TYPE_1_DIRECT"
3430
- elif calls > 100000 and exc_pct >= 3.0 and efficiency_ratio < 1.5:
3431
- verdict = "TYPE_5_FREQUENCY"
3432
- elif exc_pct >= 3.0:
3433
- verdict = "TYPE_1_DIRECT"
3434
- else:
3435
- verdict = "minor"
3543
+ verdict = _classify_hotspot_verdict(
3544
+ self_ratio=self_ratio, inc_pct=inc_pct, exc_pct=exc_pct,
3545
+ calls=calls, efficiency_ratio=efficiency_ratio,
3546
+ config=load_config())
3436
3547
  func_energy[name] = {
3437
3548
  "energy_j": round(inc_j, 6),
3438
3549
  "energy_pct": round(inc_pct, 2),
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: codegreen
3
- Version: 0.4.3
3
+ Version: 0.4.4
4
4
  Summary: Know the true energy cost of your code
5
5
  Author-email: Saurabhsingh Rajput <saurabh@dal.ca>
6
6
  Maintainer-email: Saurabhsingh Rajput <saurabh@dal.ca>
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "codegreen"
7
- version = "0.4.3"
7
+ version = "0.4.4"
8
8
  description = "Know the true energy cost of your code"
9
9
  readme = "README.md"
10
10
  license = {file = "LICENSE"}
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes