codeboarding 0.13.7__tar.gz → 0.13.8__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 (209) hide show
  1. {codeboarding-0.13.7/codeboarding.egg-info → codeboarding-0.13.8}/PKG-INFO +1 -1
  2. {codeboarding-0.13.7 → codeboarding-0.13.8/codeboarding.egg-info}/PKG-INFO +1 -1
  3. {codeboarding-0.13.7 → codeboarding-0.13.8}/codeboarding.egg-info/SOURCES.txt +1 -0
  4. {codeboarding-0.13.7 → codeboarding-0.13.8}/constants.py +12 -0
  5. {codeboarding-0.13.7 → codeboarding-0.13.8}/pyproject.toml +1 -1
  6. {codeboarding-0.13.7 → codeboarding-0.13.8}/static_analyzer/analysis_cache.py +2 -3
  7. {codeboarding-0.13.7 → codeboarding-0.13.8}/static_analyzer/language_results.py +18 -1
  8. codeboarding-0.13.8/tests/test_persisted_analysis_artifacts.py +29 -0
  9. {codeboarding-0.13.7 → codeboarding-0.13.8}/utils.py +1 -3
  10. {codeboarding-0.13.7 → codeboarding-0.13.8}/LICENSE +0 -0
  11. {codeboarding-0.13.7 → codeboarding-0.13.8}/PYPI.md +0 -0
  12. {codeboarding-0.13.7 → codeboarding-0.13.8}/README.md +0 -0
  13. {codeboarding-0.13.7 → codeboarding-0.13.8}/agents/__init__.py +0 -0
  14. {codeboarding-0.13.7 → codeboarding-0.13.8}/agents/abstraction_agent.py +0 -0
  15. {codeboarding-0.13.7 → codeboarding-0.13.8}/agents/agent.py +0 -0
  16. {codeboarding-0.13.7 → codeboarding-0.13.8}/agents/agent_responses.py +0 -0
  17. {codeboarding-0.13.7 → codeboarding-0.13.8}/agents/change_status.py +0 -0
  18. {codeboarding-0.13.7 → codeboarding-0.13.8}/agents/cluster_ids.py +0 -0
  19. {codeboarding-0.13.7 → codeboarding-0.13.8}/agents/cluster_methods_mixin.py +0 -0
  20. {codeboarding-0.13.7 → codeboarding-0.13.8}/agents/constants.py +0 -0
  21. {codeboarding-0.13.7 → codeboarding-0.13.8}/agents/content_hash.py +0 -0
  22. {codeboarding-0.13.7 → codeboarding-0.13.8}/agents/dependency_discovery.py +0 -0
  23. {codeboarding-0.13.7 → codeboarding-0.13.8}/agents/details_agent.py +0 -0
  24. {codeboarding-0.13.7 → codeboarding-0.13.8}/agents/file_index_models.py +0 -0
  25. {codeboarding-0.13.7 → codeboarding-0.13.8}/agents/incremental_agent.py +0 -0
  26. {codeboarding-0.13.7 → codeboarding-0.13.8}/agents/incremental_results.py +0 -0
  27. {codeboarding-0.13.7 → codeboarding-0.13.8}/agents/llm_config.py +0 -0
  28. {codeboarding-0.13.7 → codeboarding-0.13.8}/agents/llm_errors.py +0 -0
  29. {codeboarding-0.13.7 → codeboarding-0.13.8}/agents/meta_agent.py +0 -0
  30. {codeboarding-0.13.7 → codeboarding-0.13.8}/agents/model_capabilities.py +0 -0
  31. {codeboarding-0.13.7 → codeboarding-0.13.8}/agents/planner_agent.py +0 -0
  32. {codeboarding-0.13.7 → codeboarding-0.13.8}/agents/prompts/__init__.py +0 -0
  33. {codeboarding-0.13.7 → codeboarding-0.13.8}/agents/prompts/abstract_prompt_factory.py +0 -0
  34. {codeboarding-0.13.7 → codeboarding-0.13.8}/agents/prompts/claude_prompts.py +0 -0
  35. {codeboarding-0.13.7 → codeboarding-0.13.8}/agents/prompts/deepseek_prompts.py +0 -0
  36. {codeboarding-0.13.7 → codeboarding-0.13.8}/agents/prompts/gemini_flash_prompts.py +0 -0
  37. {codeboarding-0.13.7 → codeboarding-0.13.8}/agents/prompts/glm_prompts.py +0 -0
  38. {codeboarding-0.13.7 → codeboarding-0.13.8}/agents/prompts/gpt_prompts.py +0 -0
  39. {codeboarding-0.13.7 → codeboarding-0.13.8}/agents/prompts/kimi_prompts.py +0 -0
  40. {codeboarding-0.13.7 → codeboarding-0.13.8}/agents/prompts/prompt_factory.py +0 -0
  41. {codeboarding-0.13.7 → codeboarding-0.13.8}/agents/relation_edges.py +0 -0
  42. {codeboarding-0.13.7 → codeboarding-0.13.8}/agents/repair.py +0 -0
  43. {codeboarding-0.13.7 → codeboarding-0.13.8}/agents/retry.py +0 -0
  44. {codeboarding-0.13.7 → codeboarding-0.13.8}/agents/scope_ids.py +0 -0
  45. {codeboarding-0.13.7 → codeboarding-0.13.8}/agents/tools/__init__.py +0 -0
  46. {codeboarding-0.13.7 → codeboarding-0.13.8}/agents/tools/base.py +0 -0
  47. {codeboarding-0.13.7 → codeboarding-0.13.8}/agents/tools/component_bridge_edges.py +0 -0
  48. {codeboarding-0.13.7 → codeboarding-0.13.8}/agents/tools/get_external_deps.py +0 -0
  49. {codeboarding-0.13.7 → codeboarding-0.13.8}/agents/tools/get_method_invocations.py +0 -0
  50. {codeboarding-0.13.7 → codeboarding-0.13.8}/agents/tools/list_git_changes.py +0 -0
  51. {codeboarding-0.13.7 → codeboarding-0.13.8}/agents/tools/read_cfg.py +0 -0
  52. {codeboarding-0.13.7 → codeboarding-0.13.8}/agents/tools/read_docs.py +0 -0
  53. {codeboarding-0.13.7 → codeboarding-0.13.8}/agents/tools/read_file.py +0 -0
  54. {codeboarding-0.13.7 → codeboarding-0.13.8}/agents/tools/read_file_structure.py +0 -0
  55. {codeboarding-0.13.7 → codeboarding-0.13.8}/agents/tools/read_packages.py +0 -0
  56. {codeboarding-0.13.7 → codeboarding-0.13.8}/agents/tools/read_source.py +0 -0
  57. {codeboarding-0.13.7 → codeboarding-0.13.8}/agents/tools/read_structure.py +0 -0
  58. {codeboarding-0.13.7 → codeboarding-0.13.8}/agents/tools/toolkit.py +0 -0
  59. {codeboarding-0.13.7 → codeboarding-0.13.8}/agents/validation.py +0 -0
  60. {codeboarding-0.13.7 → codeboarding-0.13.8}/caching/__init__.py +0 -0
  61. {codeboarding-0.13.7 → codeboarding-0.13.8}/caching/cache.py +0 -0
  62. {codeboarding-0.13.7 → codeboarding-0.13.8}/caching/details_cache.py +0 -0
  63. {codeboarding-0.13.7 → codeboarding-0.13.8}/caching/meta_cache.py +0 -0
  64. {codeboarding-0.13.7 → codeboarding-0.13.8}/codeboarding.egg-info/dependency_links.txt +0 -0
  65. {codeboarding-0.13.7 → codeboarding-0.13.8}/codeboarding.egg-info/entry_points.txt +0 -0
  66. {codeboarding-0.13.7 → codeboarding-0.13.8}/codeboarding.egg-info/requires.txt +0 -0
  67. {codeboarding-0.13.7 → codeboarding-0.13.8}/codeboarding.egg-info/top_level.txt +0 -0
  68. {codeboarding-0.13.7 → codeboarding-0.13.8}/codeboarding_cli/__init__.py +0 -0
  69. {codeboarding-0.13.7 → codeboarding-0.13.8}/codeboarding_cli/bootstrap.py +0 -0
  70. {codeboarding-0.13.7 → codeboarding-0.13.8}/codeboarding_cli/commands/__init__.py +0 -0
  71. {codeboarding-0.13.7 → codeboarding-0.13.8}/codeboarding_cli/commands/full_analysis.py +0 -0
  72. {codeboarding-0.13.7 → codeboarding-0.13.8}/codeboarding_cli/commands/incremental_analysis.py +0 -0
  73. {codeboarding-0.13.7 → codeboarding-0.13.8}/codeboarding_cli/commands/partial_analysis.py +0 -0
  74. {codeboarding-0.13.7 → codeboarding-0.13.8}/codeboarding_cli/view_instructions.py +0 -0
  75. {codeboarding-0.13.7 → codeboarding-0.13.8}/codeboarding_workflows/__init__.py +0 -0
  76. {codeboarding-0.13.7 → codeboarding-0.13.8}/codeboarding_workflows/analysis.py +0 -0
  77. {codeboarding-0.13.7 → codeboarding-0.13.8}/codeboarding_workflows/orchestration.py +0 -0
  78. {codeboarding-0.13.7 → codeboarding-0.13.8}/codeboarding_workflows/rendering.py +0 -0
  79. {codeboarding-0.13.7 → codeboarding-0.13.8}/codeboarding_workflows/sources/__init__.py +0 -0
  80. {codeboarding-0.13.7 → codeboarding-0.13.8}/codeboarding_workflows/sources/local.py +0 -0
  81. {codeboarding-0.13.7 → codeboarding-0.13.8}/codeboarding_workflows/sources/remote.py +0 -0
  82. {codeboarding-0.13.7 → codeboarding-0.13.8}/core/__init__.py +0 -0
  83. {codeboarding-0.13.7 → codeboarding-0.13.8}/core/plugin_loader.py +0 -0
  84. {codeboarding-0.13.7 → codeboarding-0.13.8}/core/protocols.py +0 -0
  85. {codeboarding-0.13.7 → codeboarding-0.13.8}/core/registry.py +0 -0
  86. {codeboarding-0.13.7 → codeboarding-0.13.8}/diagram_analysis/__init__.py +0 -0
  87. {codeboarding-0.13.7 → codeboarding-0.13.8}/diagram_analysis/analysis_json.py +0 -0
  88. {codeboarding-0.13.7 → codeboarding-0.13.8}/diagram_analysis/cluster_delta.py +0 -0
  89. {codeboarding-0.13.7 → codeboarding-0.13.8}/diagram_analysis/cluster_snapshot.py +0 -0
  90. {codeboarding-0.13.7 → codeboarding-0.13.8}/diagram_analysis/diagram_generator.py +0 -0
  91. {codeboarding-0.13.7 → codeboarding-0.13.8}/diagram_analysis/exceptions.py +0 -0
  92. {codeboarding-0.13.7 → codeboarding-0.13.8}/diagram_analysis/file_coverage.py +0 -0
  93. {codeboarding-0.13.7 → codeboarding-0.13.8}/diagram_analysis/file_index.py +0 -0
  94. {codeboarding-0.13.7 → codeboarding-0.13.8}/diagram_analysis/io_utils.py +0 -0
  95. {codeboarding-0.13.7 → codeboarding-0.13.8}/diagram_analysis/run_context.py +0 -0
  96. {codeboarding-0.13.7 → codeboarding-0.13.8}/diagram_analysis/run_mode.py +0 -0
  97. {codeboarding-0.13.7 → codeboarding-0.13.8}/diagram_analysis/scope_plan.py +0 -0
  98. {codeboarding-0.13.7 → codeboarding-0.13.8}/diagram_analysis/tree_shape.py +0 -0
  99. {codeboarding-0.13.7 → codeboarding-0.13.8}/github_action.py +0 -0
  100. {codeboarding-0.13.7 → codeboarding-0.13.8}/health/__init__.py +0 -0
  101. {codeboarding-0.13.7 → codeboarding-0.13.8}/health/checks/__init__.py +0 -0
  102. {codeboarding-0.13.7 → codeboarding-0.13.8}/health/checks/circular_deps.py +0 -0
  103. {codeboarding-0.13.7 → codeboarding-0.13.8}/health/checks/cohesion.py +0 -0
  104. {codeboarding-0.13.7 → codeboarding-0.13.8}/health/checks/coupling.py +0 -0
  105. {codeboarding-0.13.7 → codeboarding-0.13.8}/health/checks/function_size.py +0 -0
  106. {codeboarding-0.13.7 → codeboarding-0.13.8}/health/checks/god_class.py +0 -0
  107. {codeboarding-0.13.7 → codeboarding-0.13.8}/health/checks/inheritance.py +0 -0
  108. {codeboarding-0.13.7 → codeboarding-0.13.8}/health/checks/instability.py +0 -0
  109. {codeboarding-0.13.7 → codeboarding-0.13.8}/health/checks/unused_code_diagnostics.py +0 -0
  110. {codeboarding-0.13.7 → codeboarding-0.13.8}/health/config.py +0 -0
  111. {codeboarding-0.13.7 → codeboarding-0.13.8}/health/models.py +0 -0
  112. {codeboarding-0.13.7 → codeboarding-0.13.8}/health/runner.py +0 -0
  113. {codeboarding-0.13.7 → codeboarding-0.13.8}/install.py +0 -0
  114. {codeboarding-0.13.7 → codeboarding-0.13.8}/logging_config.py +0 -0
  115. {codeboarding-0.13.7 → codeboarding-0.13.8}/main.py +0 -0
  116. {codeboarding-0.13.7 → codeboarding-0.13.8}/monitoring/__init__.py +0 -0
  117. {codeboarding-0.13.7 → codeboarding-0.13.8}/monitoring/callbacks.py +0 -0
  118. {codeboarding-0.13.7 → codeboarding-0.13.8}/monitoring/context.py +0 -0
  119. {codeboarding-0.13.7 → codeboarding-0.13.8}/monitoring/mixin.py +0 -0
  120. {codeboarding-0.13.7 → codeboarding-0.13.8}/monitoring/paths.py +0 -0
  121. {codeboarding-0.13.7 → codeboarding-0.13.8}/monitoring/stats.py +0 -0
  122. {codeboarding-0.13.7 → codeboarding-0.13.8}/monitoring/writers.py +0 -0
  123. {codeboarding-0.13.7 → codeboarding-0.13.8}/output_generators/__init__.py +0 -0
  124. {codeboarding-0.13.7 → codeboarding-0.13.8}/output_generators/html.py +0 -0
  125. {codeboarding-0.13.7 → codeboarding-0.13.8}/output_generators/html_template.py +0 -0
  126. {codeboarding-0.13.7 → codeboarding-0.13.8}/output_generators/markdown.py +0 -0
  127. {codeboarding-0.13.7 → codeboarding-0.13.8}/output_generators/mdx.py +0 -0
  128. {codeboarding-0.13.7 → codeboarding-0.13.8}/output_generators/sphinx.py +0 -0
  129. {codeboarding-0.13.7 → codeboarding-0.13.8}/repo_utils/__init__.py +0 -0
  130. {codeboarding-0.13.7 → codeboarding-0.13.8}/repo_utils/change_detector.py +0 -0
  131. {codeboarding-0.13.7 → codeboarding-0.13.8}/repo_utils/errors.py +0 -0
  132. {codeboarding-0.13.7 → codeboarding-0.13.8}/repo_utils/fingerprint_diff.py +0 -0
  133. {codeboarding-0.13.7 → codeboarding-0.13.8}/repo_utils/git_ops.py +0 -0
  134. {codeboarding-0.13.7 → codeboarding-0.13.8}/repo_utils/ignore.py +0 -0
  135. {codeboarding-0.13.7 → codeboarding-0.13.8}/repo_utils/path_utils.py +0 -0
  136. {codeboarding-0.13.7 → codeboarding-0.13.8}/setup.cfg +0 -0
  137. {codeboarding-0.13.7 → codeboarding-0.13.8}/static_analyzer/__init__.py +0 -0
  138. {codeboarding-0.13.7 → codeboarding-0.13.8}/static_analyzer/analysis_result.py +0 -0
  139. {codeboarding-0.13.7 → codeboarding-0.13.8}/static_analyzer/cluster_helpers.py +0 -0
  140. {codeboarding-0.13.7 → codeboarding-0.13.8}/static_analyzer/cluster_relations.py +0 -0
  141. {codeboarding-0.13.7 → codeboarding-0.13.8}/static_analyzer/constants.py +0 -0
  142. {codeboarding-0.13.7 → codeboarding-0.13.8}/static_analyzer/csharp_config_scanner.py +0 -0
  143. {codeboarding-0.13.7 → codeboarding-0.13.8}/static_analyzer/dotnet_sdk.py +0 -0
  144. {codeboarding-0.13.7 → codeboarding-0.13.8}/static_analyzer/engine/__init__.py +0 -0
  145. {codeboarding-0.13.7 → codeboarding-0.13.8}/static_analyzer/engine/adapters/__init__.py +0 -0
  146. {codeboarding-0.13.7 → codeboarding-0.13.8}/static_analyzer/engine/adapters/csharp_adapter.py +0 -0
  147. {codeboarding-0.13.7 → codeboarding-0.13.8}/static_analyzer/engine/adapters/go_adapter.py +0 -0
  148. {codeboarding-0.13.7 → codeboarding-0.13.8}/static_analyzer/engine/adapters/java_adapter.py +0 -0
  149. {codeboarding-0.13.7 → codeboarding-0.13.8}/static_analyzer/engine/adapters/php_adapter.py +0 -0
  150. {codeboarding-0.13.7 → codeboarding-0.13.8}/static_analyzer/engine/adapters/python_adapter.py +0 -0
  151. {codeboarding-0.13.7 → codeboarding-0.13.8}/static_analyzer/engine/adapters/rust_adapter.py +0 -0
  152. {codeboarding-0.13.7 → codeboarding-0.13.8}/static_analyzer/engine/adapters/typescript_adapter.py +0 -0
  153. {codeboarding-0.13.7 → codeboarding-0.13.8}/static_analyzer/engine/call_graph_builder.py +0 -0
  154. {codeboarding-0.13.7 → codeboarding-0.13.8}/static_analyzer/engine/edge_build_context.py +0 -0
  155. {codeboarding-0.13.7 → codeboarding-0.13.8}/static_analyzer/engine/edge_builder.py +0 -0
  156. {codeboarding-0.13.7 → codeboarding-0.13.8}/static_analyzer/engine/hierarchy_builder.py +0 -0
  157. {codeboarding-0.13.7 → codeboarding-0.13.8}/static_analyzer/engine/language_adapter.py +0 -0
  158. {codeboarding-0.13.7 → codeboarding-0.13.8}/static_analyzer/engine/lsp_client.py +0 -0
  159. {codeboarding-0.13.7 → codeboarding-0.13.8}/static_analyzer/engine/lsp_constants.py +0 -0
  160. {codeboarding-0.13.7 → codeboarding-0.13.8}/static_analyzer/engine/lsp_recycler.py +0 -0
  161. {codeboarding-0.13.7 → codeboarding-0.13.8}/static_analyzer/engine/models.py +0 -0
  162. {codeboarding-0.13.7 → codeboarding-0.13.8}/static_analyzer/engine/process_memory.py +0 -0
  163. {codeboarding-0.13.7 → codeboarding-0.13.8}/static_analyzer/engine/progress.py +0 -0
  164. {codeboarding-0.13.7 → codeboarding-0.13.8}/static_analyzer/engine/protocols.py +0 -0
  165. {codeboarding-0.13.7 → codeboarding-0.13.8}/static_analyzer/engine/result_converter.py +0 -0
  166. {codeboarding-0.13.7 → codeboarding-0.13.8}/static_analyzer/engine/source_inspector.py +0 -0
  167. {codeboarding-0.13.7 → codeboarding-0.13.8}/static_analyzer/engine/symbol_table.py +0 -0
  168. {codeboarding-0.13.7 → codeboarding-0.13.8}/static_analyzer/engine/utils.py +0 -0
  169. {codeboarding-0.13.7 → codeboarding-0.13.8}/static_analyzer/graph.py +0 -0
  170. {codeboarding-0.13.7 → codeboarding-0.13.8}/static_analyzer/incremental_orchestrator.py +0 -0
  171. {codeboarding-0.13.7 → codeboarding-0.13.8}/static_analyzer/internal_references.py +0 -0
  172. {codeboarding-0.13.7 → codeboarding-0.13.8}/static_analyzer/java_config_scanner.py +0 -0
  173. {codeboarding-0.13.7 → codeboarding-0.13.8}/static_analyzer/java_utils.py +0 -0
  174. {codeboarding-0.13.7 → codeboarding-0.13.8}/static_analyzer/leiden_utils.py +0 -0
  175. {codeboarding-0.13.7 → codeboarding-0.13.8}/static_analyzer/lsp_client/__init__.py +0 -0
  176. {codeboarding-0.13.7 → codeboarding-0.13.8}/static_analyzer/lsp_client/diagnostics.py +0 -0
  177. {codeboarding-0.13.7 → codeboarding-0.13.8}/static_analyzer/method_cluster_paths.py +0 -0
  178. {codeboarding-0.13.7 → codeboarding-0.13.8}/static_analyzer/node.py +0 -0
  179. {codeboarding-0.13.7 → codeboarding-0.13.8}/static_analyzer/programming_language.py +0 -0
  180. {codeboarding-0.13.7 → codeboarding-0.13.8}/static_analyzer/reference_resolver.py +0 -0
  181. {codeboarding-0.13.7 → codeboarding-0.13.8}/static_analyzer/scanner.py +0 -0
  182. {codeboarding-0.13.7 → codeboarding-0.13.8}/static_analyzer/typescript_config_scanner.py +0 -0
  183. {codeboarding-0.13.7 → codeboarding-0.13.8}/telemetry/__init__.py +0 -0
  184. {codeboarding-0.13.7 → codeboarding-0.13.8}/telemetry/device_id.py +0 -0
  185. {codeboarding-0.13.7 → codeboarding-0.13.8}/telemetry/events.py +0 -0
  186. {codeboarding-0.13.7 → codeboarding-0.13.8}/telemetry/schemas.py +0 -0
  187. {codeboarding-0.13.7 → codeboarding-0.13.8}/telemetry/service.py +0 -0
  188. {codeboarding-0.13.7 → codeboarding-0.13.8}/tests/test_cli_parser.py +0 -0
  189. {codeboarding-0.13.7 → codeboarding-0.13.8}/tests/test_github_action.py +0 -0
  190. {codeboarding-0.13.7 → codeboarding-0.13.8}/tests/test_install.py +0 -0
  191. {codeboarding-0.13.7 → codeboarding-0.13.8}/tests/test_logging_config.py +0 -0
  192. {codeboarding-0.13.7 → codeboarding-0.13.8}/tests/test_main.py +0 -0
  193. {codeboarding-0.13.7 → codeboarding-0.13.8}/tests/test_pyproject_packages.py +0 -0
  194. {codeboarding-0.13.7 → codeboarding-0.13.8}/tests/test_registry_coverage.py +0 -0
  195. {codeboarding-0.13.7 → codeboarding-0.13.8}/tests/test_telemetry_events.py +0 -0
  196. {codeboarding-0.13.7 → codeboarding-0.13.8}/tests/test_telemetry_service.py +0 -0
  197. {codeboarding-0.13.7 → codeboarding-0.13.8}/tests/test_tool_registry.py +0 -0
  198. {codeboarding-0.13.7 → codeboarding-0.13.8}/tests/test_user_config.py +0 -0
  199. {codeboarding-0.13.7 → codeboarding-0.13.8}/tests/test_view_instructions.py +0 -0
  200. {codeboarding-0.13.7 → codeboarding-0.13.8}/tests/test_vscode_constants.py +0 -0
  201. {codeboarding-0.13.7 → codeboarding-0.13.8}/tests/test_windows_compatibility.py +0 -0
  202. {codeboarding-0.13.7 → codeboarding-0.13.8}/tests/test_windows_encoding.py +0 -0
  203. {codeboarding-0.13.7 → codeboarding-0.13.8}/tool_registry/__init__.py +0 -0
  204. {codeboarding-0.13.7 → codeboarding-0.13.8}/tool_registry/installers.py +0 -0
  205. {codeboarding-0.13.7 → codeboarding-0.13.8}/tool_registry/manifest.py +0 -0
  206. {codeboarding-0.13.7 → codeboarding-0.13.8}/tool_registry/paths.py +0 -0
  207. {codeboarding-0.13.7 → codeboarding-0.13.8}/tool_registry/registry.py +0 -0
  208. {codeboarding-0.13.7 → codeboarding-0.13.8}/user_config.py +0 -0
  209. {codeboarding-0.13.7 → codeboarding-0.13.8}/vscode_constants.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: codeboarding
3
- Version: 0.13.7
3
+ Version: 0.13.8
4
4
  Summary: Interactive Diagrams for Code
5
5
  Author: CodeBoarding Team
6
6
  License-Expression: MIT
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: codeboarding
3
- Version: 0.13.7
3
+ Version: 0.13.8
4
4
  Summary: Interactive Diagrams for Code
5
5
  Author: CodeBoarding Team
6
6
  License-Expression: MIT
@@ -189,6 +189,7 @@ tests/test_github_action.py
189
189
  tests/test_install.py
190
190
  tests/test_logging_config.py
191
191
  tests/test_main.py
192
+ tests/test_persisted_analysis_artifacts.py
192
193
  tests/test_pyproject_packages.py
193
194
  tests/test_registry_coverage.py
194
195
  tests/test_telemetry_events.py
@@ -1,6 +1,18 @@
1
1
  """Application-level constants for CodeBoarding."""
2
2
 
3
3
  CODEBOARDING_DIR_NAME = ".codeboarding"
4
+ ANALYSIS_FILENAME = "analysis.json"
5
+ FINGERPRINT_FILENAME = "fingerprint.json"
6
+ STATIC_ANALYSIS_PKL = "static_analysis.pkl"
7
+ STATIC_ANALYSIS_SHA = "static_analysis.sha"
8
+ CODEBOARDING_VERSION_FILENAME = "codeboarding_version.json"
9
+ PERSISTED_ANALYSIS_ARTIFACT_FILENAMES = (
10
+ ANALYSIS_FILENAME,
11
+ FINGERPRINT_FILENAME,
12
+ STATIC_ANALYSIS_PKL,
13
+ STATIC_ANALYSIS_SHA,
14
+ CODEBOARDING_VERSION_FILENAME,
15
+ )
4
16
  # Ignore-file names read from a repo (``.gitignore`` at the repo root,
5
17
  # ``.codeboardingignore`` under ``CODEBOARDING_DIR_NAME``).
6
18
  GITIGNORE_FILENAME = ".gitignore"
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "codeboarding"
7
- version = "0.13.7"
7
+ version = "0.13.8"
8
8
  description = "Interactive Diagrams for Code"
9
9
  readme = "PYPI.md"
10
10
  license = "MIT"
@@ -29,11 +29,12 @@ from typing import TYPE_CHECKING, Any
29
29
 
30
30
  from filelock import FileLock
31
31
 
32
+ from constants import STATIC_ANALYSIS_PKL, STATIC_ANALYSIS_SHA
33
+ from repo_utils.path_utils import to_absolute_path, to_relative_path
32
34
  from static_analyzer.analysis_result import AnalysisData, InvalidatedAnalysis, InvalidatedEdge
33
35
  from static_analyzer.graph import CallGraph, Edge, EdgeKind
34
36
  from static_analyzer.lsp_client.diagnostics import FileDiagnosticsMap
35
37
  from static_analyzer.node import Node
36
- from repo_utils.path_utils import to_absolute_path, to_relative_path
37
38
 
38
39
  if TYPE_CHECKING:
39
40
  from static_analyzer.analysis_result import StaticAnalysisResults
@@ -44,8 +45,6 @@ logger = logging.getLogger(__name__)
44
45
  # Run-artifact filenames. Stored in ``<repo>/.codeboarding/`` (sibling of
45
46
  # ``analysis.json``), not under ``cache/`` — losing them costs a full LSP
46
47
  # re-index, so they're not safe to wipe with the rest of the cache.
47
- STATIC_ANALYSIS_PKL = "static_analysis.pkl"
48
- STATIC_ANALYSIS_SHA = "static_analysis.sha"
49
48
  STATIC_ANALYSIS_LOCK = "static_analysis.lock"
50
49
  # Legacy location ``StaticAnalysisCache`` wrote to before the run-artifact
51
50
  # split. Kept for one-time read fallback so CLI users transition smoothly.
@@ -25,6 +25,11 @@ class ControlFlowGraph:
25
25
  if self.graph is None:
26
26
  self.graph = other
27
27
  return
28
+ if self.graph is other:
29
+ # Why: two engine configs can share a language (two tsconfig projects give
30
+ # two TypeScript engines) and warm-start hands both the same cached graph.
31
+ # Iterating a container while adding to it is unbounded, not just wasteful.
32
+ return
28
33
  for node in other.nodes.values():
29
34
  self.graph.add_node(node)
30
35
  for edge in other.edges:
@@ -55,6 +60,11 @@ class ControlFlowGraph:
55
60
  # Re-added via the API so alias-resolution and node-existence guards apply post-merge.
56
61
  for src, dst, kind in getattr(other, "reference_edges", ()):
57
62
  self.graph.add_reference_edge(src, dst, EdgeKind(kind))
63
+ # Nodes and call edges are keyed, reference edges are appended, so only they
64
+ # survive a repeat merge. Dedup after the loop rather than per-add: the stored
65
+ # tuple is post-alias-resolution, and a membership scan per edge is quadratic.
66
+ # getattr for the same reason as above: pre-reference-edge caches lack the field.
67
+ self.graph.reference_edges = list(dict.fromkeys(getattr(self.graph, "reference_edges", ())))
58
68
  self.graph.method_cluster_paths.merge(other.method_cluster_paths)
59
69
 
60
70
  def visit_paths(self, fn: Callable[[str], str]) -> None:
@@ -126,9 +136,16 @@ class SourceFiles:
126
136
  paths: list[str] | None = None
127
137
 
128
138
  def extend(self, files: list[str]) -> None:
139
+ # Why: called once per engine config, and two engines of one language are
140
+ # handed the same cached list on warm-start. Duplicates persist into the pkl,
141
+ # so an undeduped extend doubles the list on every subsequent run.
129
142
  if self.paths is None:
130
143
  self.paths = []
131
- self.paths.extend(files)
144
+ known = set(self.paths)
145
+ for path in files:
146
+ if path not in known:
147
+ known.add(path)
148
+ self.paths.append(path)
132
149
 
133
150
  def visit_paths(self, fn: Callable[[str], str]) -> None:
134
151
  if self.paths is None:
@@ -0,0 +1,29 @@
1
+ from constants import (
2
+ ANALYSIS_FILENAME,
3
+ CODEBOARDING_VERSION_FILENAME,
4
+ FINGERPRINT_FILENAME,
5
+ PERSISTED_ANALYSIS_ARTIFACT_FILENAMES,
6
+ STATIC_ANALYSIS_PKL,
7
+ STATIC_ANALYSIS_SHA,
8
+ )
9
+ from static_analyzer.analysis_cache import (
10
+ STATIC_ANALYSIS_PKL as COMPAT_STATIC_ANALYSIS_PKL,
11
+ STATIC_ANALYSIS_SHA as COMPAT_STATIC_ANALYSIS_SHA,
12
+ )
13
+ from utils import ANALYSIS_FILENAME as COMPAT_ANALYSIS_FILENAME
14
+ from utils import FINGERPRINT_FILENAME as COMPAT_FINGERPRINT_FILENAME
15
+
16
+
17
+ def test_persisted_analysis_artifact_manifest_and_compatibility_imports():
18
+ assert PERSISTED_ANALYSIS_ARTIFACT_FILENAMES == (
19
+ "analysis.json",
20
+ "fingerprint.json",
21
+ "static_analysis.pkl",
22
+ "static_analysis.sha",
23
+ "codeboarding_version.json",
24
+ )
25
+ assert CODEBOARDING_VERSION_FILENAME == "codeboarding_version.json"
26
+ assert COMPAT_ANALYSIS_FILENAME == ANALYSIS_FILENAME
27
+ assert COMPAT_FINGERPRINT_FILENAME == FINGERPRINT_FILENAME
28
+ assert COMPAT_STATIC_ANALYSIS_PKL == STATIC_ANALYSIS_PKL
29
+ assert COMPAT_STATIC_ANALYSIS_SHA == STATIC_ANALYSIS_SHA
@@ -7,14 +7,12 @@ import uuid
7
7
  from collections.abc import Iterable
8
8
  from pathlib import Path
9
9
 
10
- from constants import CODEBOARDING_DIR_NAME
10
+ from constants import ANALYSIS_FILENAME, CODEBOARDING_DIR_NAME, FINGERPRINT_FILENAME
11
11
  from repo_utils.path_utils import to_absolute_path, to_relative_path
12
12
 
13
13
  logger = logging.getLogger(__name__)
14
14
 
15
15
  RUN_OUTPUT_DIR_NAME = "run-output"
16
- ANALYSIS_FILENAME = "analysis.json"
17
- FINGERPRINT_FILENAME = "fingerprint.json"
18
16
 
19
17
 
20
18
  class CFGGenerationError(Exception):
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes