coderadar-rs 0.9.2__tar.gz → 0.9.3__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/Cargo.lock +1 -1
- {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/Cargo.toml +1 -1
- {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/PKG-INFO +1 -1
- {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/py_agent/src/coderadar/__init__.py +1 -1
- {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/py_agent/src/coderadar/visualizers/call_graph.py +35 -4
- {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/py_agent/src/coderadar/visualizers/graphviz_viz.py +10 -9
- {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/py_agent/src/coderadar/visualizers/mermaid.py +28 -28
- {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/pyproject.toml +1 -1
- {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/LICENSE +0 -0
- {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/README.md +0 -0
- {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/core_indexer/Cargo.toml +0 -0
- {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/core_indexer/queries/bash.scm +0 -0
- {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/core_indexer/queries/c.scm +0 -0
- {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/core_indexer/queries/clojure.scm +0 -0
- {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/core_indexer/queries/cmake.scm +0 -0
- {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/core_indexer/queries/cpp.scm +0 -0
- {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/core_indexer/queries/csharp.scm +0 -0
- {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/core_indexer/queries/dart.scm +0 -0
- {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/core_indexer/queries/dockerfile.scm +0 -0
- {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/core_indexer/queries/elisp.scm +0 -0
- {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/core_indexer/queries/elixir.scm +0 -0
- {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/core_indexer/queries/erlang.scm +0 -0
- {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/core_indexer/queries/fsharp.scm +0 -0
- {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/core_indexer/queries/go.scm +0 -0
- {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/core_indexer/queries/graphql.scm +0 -0
- {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/core_indexer/queries/groovy.scm +0 -0
- {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/core_indexer/queries/haskell.scm +0 -0
- {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/core_indexer/queries/hcl.scm +0 -0
- {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/core_indexer/queries/java.scm +0 -0
- {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/core_indexer/queries/javascript.scm +0 -0
- {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/core_indexer/queries/julia.scm +0 -0
- {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/core_indexer/queries/kotlin.scm +0 -0
- {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/core_indexer/queries/lua.scm +0 -0
- {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/core_indexer/queries/nix.scm +0 -0
- {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/core_indexer/queries/objc.scm +0 -0
- {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/core_indexer/queries/ocaml.scm +0 -0
- {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/core_indexer/queries/perl.scm +0 -0
- {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/core_indexer/queries/php.scm +0 -0
- {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/core_indexer/queries/powershell.scm +0 -0
- {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/core_indexer/queries/protobuf.scm +0 -0
- {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/core_indexer/queries/python.scm +0 -0
- {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/core_indexer/queries/r.scm +0 -0
- {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/core_indexer/queries/ruby.scm +0 -0
- {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/core_indexer/queries/rust.scm +0 -0
- {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/core_indexer/queries/scala.scm +0 -0
- {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/core_indexer/queries/shell.scm +0 -0
- {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/core_indexer/queries/sql.scm +0 -0
- {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/core_indexer/queries/swift.scm +0 -0
- {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/core_indexer/queries/systemverilog.scm +0 -0
- {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/core_indexer/queries/typescript.scm +0 -0
- {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/core_indexer/queries/verilog.scm +0 -0
- {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/core_indexer/queries/zig.scm +0 -0
- {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/core_indexer/src/clones/apted.rs +0 -0
- {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/core_indexer/src/clones/lsh_index.rs +0 -0
- {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/core_indexer/src/clones/minhash.rs +0 -0
- {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/core_indexer/src/clones/mod.rs +0 -0
- {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/core_indexer/src/clones/tokens.rs +0 -0
- {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/core_indexer/src/extract/decorators.rs +0 -0
- {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/core_indexer/src/extract/docstring.rs +0 -0
- {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/core_indexer/src/extract/mod.rs +0 -0
- {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/core_indexer/src/extract/single_pass.rs +0 -0
- {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/core_indexer/src/extract/spans.rs +0 -0
- {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/core_indexer/src/extract/tagger.rs +0 -0
- {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/core_indexer/src/extract/walker.rs +0 -0
- {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/core_indexer/src/fs/git.rs +0 -0
- {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/core_indexer/src/fs/mod.rs +0 -0
- {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/core_indexer/src/fs/watcher.rs +0 -0
- {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/core_indexer/src/graph/call_graph.rs +0 -0
- {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/core_indexer/src/graph/centrality.rs +0 -0
- {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/core_indexer/src/graph/cfg.rs +0 -0
- {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/core_indexer/src/graph/cold_start.rs +0 -0
- {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/core_indexer/src/graph/config.rs +0 -0
- {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/core_indexer/src/graph/deadcode/entry_points.rs +0 -0
- {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/core_indexer/src/graph/deadcode/mod.rs +0 -0
- {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/core_indexer/src/graph/deadcode/reachability.rs +0 -0
- {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/core_indexer/src/graph/embeddings.rs +0 -0
- {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/core_indexer/src/graph/import_graph.rs +0 -0
- {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/core_indexer/src/graph/indexing.rs +0 -0
- {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/core_indexer/src/graph/inheritance.rs +0 -0
- {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/core_indexer/src/graph/mod.rs +0 -0
- {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/core_indexer/src/graph/module_resolution.rs +0 -0
- {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/core_indexer/src/graph/mro.rs +0 -0
- {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/core_indexer/src/graph/persistence.rs +0 -0
- {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/core_indexer/src/graph/projection_ops.rs +0 -0
- {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/core_indexer/src/graph/resolve_calls.rs +0 -0
- {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/core_indexer/src/graph/rta_lite.rs +0 -0
- {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/core_indexer/src/graph/tests/call_graph_tests.rs +0 -0
- {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/core_indexer/src/graph/tests/embedding_tests.rs +0 -0
- {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/core_indexer/src/graph/tests/import_graph_tests.rs +0 -0
- {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/core_indexer/src/graph/tests/indexing_tests.rs +0 -0
- {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/core_indexer/src/graph/tests/inheritance_tests.rs +0 -0
- {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/core_indexer/src/graph/tests/mod.rs +0 -0
- {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/core_indexer/src/graph/tests/mro_tests.rs +0 -0
- {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/core_indexer/src/graph/tests/persistence_tests.rs +0 -0
- {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/core_indexer/src/graph/tests/projection_tests.rs +0 -0
- {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/core_indexer/src/graph/tests/query_compile_tests.rs +0 -0
- {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/core_indexer/src/graph/tests/traversal_tests.rs +0 -0
- {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/core_indexer/src/graph/traversal.rs +0 -0
- {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/core_indexer/src/lib.rs +0 -0
- {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/core_indexer/src/mutation/edit.rs +0 -0
- {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/core_indexer/src/mutation/indent.rs +0 -0
- {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/core_indexer/src/mutation/mod.rs +0 -0
- {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/core_indexer/src/mutation/write_guard.rs +0 -0
- {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/core_indexer/src/query/exec.rs +0 -0
- {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/core_indexer/src/query/grammar.pest +0 -0
- {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/core_indexer/src/query/grammar.rs +0 -0
- {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/core_indexer/src/query/mod.rs +0 -0
- {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/core_indexer/src/resolve/cache.rs +0 -0
- {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/core_indexer/src/resolve/import_graph.rs +0 -0
- {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/core_indexer/src/resolve/mod.rs +0 -0
- {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/core_indexer/src/resolve/orchestrator.rs +0 -0
- {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/core_indexer/src/resolve/signature.rs +0 -0
- {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/core_indexer/src/scaffold/mod.rs +0 -0
- {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/core_indexer/src/scaffold/secrets.rs +0 -0
- {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/core_indexer/src/scoring/mod.rs +0 -0
- {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/core_indexer/src/smells/const_eval.rs +0 -0
- {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/core_indexer/src/smells/engine.rs +0 -0
- {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/core_indexer/src/smells/metrics.rs +0 -0
- {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/core_indexer/src/smells/mod.rs +0 -0
- {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/core_indexer/src/smells/profile.rs +0 -0
- {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/core_indexer/src/smells/rule.rs +0 -0
- {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/core_indexer/src/smells/rules/brain_method.rs +0 -0
- {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/core_indexer/src/smells/rules/data_class.rs +0 -0
- {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/core_indexer/src/smells/rules/dead_branch.rs +0 -0
- {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/core_indexer/src/smells/rules/dead_code.rs +0 -0
- {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/core_indexer/src/smells/rules/deep_nesting.rs +0 -0
- {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/core_indexer/src/smells/rules/excessive_returns.rs +0 -0
- {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/core_indexer/src/smells/rules/god_class.rs +0 -0
- {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/core_indexer/src/smells/rules/high_cyclomatic_complexity.rs +0 -0
- {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/core_indexer/src/smells/rules/intra_dead_statements.rs +0 -0
- {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/core_indexer/src/smells/rules/long_method.rs +0 -0
- {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/core_indexer/src/smells/rules/long_parameter_list.rs +0 -0
- {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/core_indexer/src/smells/rules/mod.rs +0 -0
- {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/core_indexer/src/smells/rules/too_many_fields.rs +0 -0
- {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/core_indexer/src/smells/types.rs +0 -0
- {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/core_indexer/src/storage.rs +0 -0
- {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/core_indexer/src/types.rs +0 -0
- {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/core_indexer/src/update/wal.rs +0 -0
- {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/py_agent/src/coderadar/agent/__init__.py +0 -0
- {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/py_agent/src/coderadar/agent/graphrag.py +0 -0
- {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/py_agent/src/coderadar/cli.py +0 -0
- {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/py_agent/src/coderadar/coldstart.py +0 -0
- {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/py_agent/src/coderadar/config.py +0 -0
- {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/py_agent/src/coderadar/embedding/__init__.py +0 -0
- {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/py_agent/src/coderadar/embedding/dedup.py +0 -0
- {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/py_agent/src/coderadar/excludes.py +0 -0
- {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/py_agent/src/coderadar/lsp/__init__.py +0 -0
- {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/py_agent/src/coderadar/lsp/pool.py +0 -0
- {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/py_agent/src/coderadar/mcp/__init__.py +0 -0
- {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/py_agent/src/coderadar/mcp/lazy.py +0 -0
- {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/py_agent/src/coderadar/mcp/lifecycle.py +0 -0
- {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/py_agent/src/coderadar/mcp/roots.py +0 -0
- {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/py_agent/src/coderadar/mcp/server.py +0 -0
- {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/py_agent/src/coderadar/mcp/startup.py +0 -0
- {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/py_agent/src/coderadar/mutation/__init__.py +0 -0
- {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/py_agent/src/coderadar/mutation/tool_router.py +0 -0
- {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/py_agent/src/coderadar/project_state.py +0 -0
- {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/py_agent/src/coderadar/query/__init__.py +0 -0
- {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/py_agent/src/coderadar/query/cache.py +0 -0
- {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/py_agent/src/coderadar/query/executor.py +0 -0
- {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/py_agent/src/coderadar/query/planner.py +0 -0
- {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/py_agent/src/coderadar/resolvers/__init__.py +0 -0
- {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/py_agent/src/coderadar/resolvers/actix.py +0 -0
- {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/py_agent/src/coderadar/resolvers/aspnet.py +0 -0
- {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/py_agent/src/coderadar/resolvers/base.py +0 -0
- {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/py_agent/src/coderadar/resolvers/django.py +0 -0
- {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/py_agent/src/coderadar/resolvers/exports.py +0 -0
- {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/py_agent/src/coderadar/resolvers/express.py +0 -0
- {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/py_agent/src/coderadar/resolvers/fastapi.py +0 -0
- {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/py_agent/src/coderadar/resolvers/flask.py +0 -0
- {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/py_agent/src/coderadar/resolvers/go.py +0 -0
- {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/py_agent/src/coderadar/resolvers/laravel.py +0 -0
- {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/py_agent/src/coderadar/resolvers/nestjs.py +0 -0
- {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/py_agent/src/coderadar/resolvers/rails.py +0 -0
- {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/py_agent/src/coderadar/resolvers/reactrouter.py +0 -0
- {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/py_agent/src/coderadar/resolvers/resolution.py +0 -0
- {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/py_agent/src/coderadar/resolvers/springboot.py +0 -0
- {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/py_agent/src/coderadar/resolvers/vuerouter.py +0 -0
- {coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/py_agent/src/coderadar/visualizers/__init__.py +0 -0
|
@@ -19,7 +19,7 @@ from __future__ import annotations
|
|
|
19
19
|
#: installed wheel/sdist reports its own version) and falls back to the
|
|
20
20
|
#: release constant below, which MUST be kept in sync with pyproject.toml
|
|
21
21
|
#: and Cargo.toml [workspace.package] on every bump.
|
|
22
|
-
_FALLBACK_VERSION = "0.9.
|
|
22
|
+
_FALLBACK_VERSION = "0.9.3"
|
|
23
23
|
|
|
24
24
|
|
|
25
25
|
def _resolve_version() -> str:
|
|
@@ -22,7 +22,16 @@ def generate_call_graph(args: list, graph: Any | None = None) -> str:
|
|
|
22
22
|
Returns:
|
|
23
23
|
Mermaid flowchart source.
|
|
24
24
|
"""
|
|
25
|
-
|
|
25
|
+
if args:
|
|
26
|
+
func_name = args[0]
|
|
27
|
+
else:
|
|
28
|
+
# Bare `visualize call-graph` used to assume a function named
|
|
29
|
+
# `main` exists; projects without one got "No call edges from
|
|
30
|
+
# `main`", which reads as an empty index rather than a missing
|
|
31
|
+
# argument. Keep `main` when it is really there, otherwise say
|
|
32
|
+
# what to pass (with an id from this index so it can be retried
|
|
33
|
+
# verbatim).
|
|
34
|
+
func_name = _default_entry_point(graph)
|
|
26
35
|
direction = args[1] if len(args) > 1 else "out"
|
|
27
36
|
max_depth = int(args[2]) if len(args) > 2 else 5
|
|
28
37
|
min_confidence = float(args[3]) if len(args) > 3 else 0.7
|
|
@@ -70,9 +79,31 @@ def generate_call_graph(args: list, graph: Any | None = None) -> str:
|
|
|
70
79
|
"No graph was provided to the call-graph renderer.")
|
|
71
80
|
raise NothingToVisualize(
|
|
72
81
|
f"No call edges found {'from' if direction == 'out' else 'to'} "
|
|
73
|
-
f"`{func_name}`. Either the index is empty (run `coderadar
|
|
74
|
-
f"
|
|
75
|
-
f"
|
|
82
|
+
f"`{func_name}`. Either the index is empty (run `coderadar init` "
|
|
83
|
+
f"or `coderadar analyze` in the project first) or that function "
|
|
84
|
+
f"neither calls nor is called by anything indexed."
|
|
85
|
+
)
|
|
86
|
+
|
|
87
|
+
|
|
88
|
+
def _default_entry_point(graph: Any | None) -> str:
|
|
89
|
+
"""The no-argument root for `visualize call-graph`."""
|
|
90
|
+
from . import NothingToVisualize
|
|
91
|
+
|
|
92
|
+
if graph is not None:
|
|
93
|
+
try:
|
|
94
|
+
from coderadar._core import search_entities
|
|
95
|
+
for cand in search_entities("main", 10):
|
|
96
|
+
if cand.get("name", "") == "main":
|
|
97
|
+
return cand.get("id", "main")
|
|
98
|
+
first = search_entities("", 1, "function")
|
|
99
|
+
hint = first[0].get("id", "?") if first else "?"
|
|
100
|
+
except Exception: # noqa: BLE001 - a hint is nice-to-have, not load-bearing
|
|
101
|
+
hint = "?"
|
|
102
|
+
else:
|
|
103
|
+
hint = "?"
|
|
104
|
+
raise NothingToVisualize(
|
|
105
|
+
"No function given and no `main` in the index — pass a function "
|
|
106
|
+
f"name or entity id (e.g. `{hint}`)."
|
|
76
107
|
)
|
|
77
108
|
|
|
78
109
|
|
{coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/py_agent/src/coderadar/visualizers/graphviz_viz.py
RENAMED
|
@@ -113,9 +113,8 @@ def _dot_dependency_graph(args: list, graph: Any | None = None) -> str:
|
|
|
113
113
|
|
|
114
114
|
if not edges:
|
|
115
115
|
raise NothingToVisualize(
|
|
116
|
-
"No module dependencies in the index. Run `coderadar
|
|
117
|
-
"
|
|
118
|
-
"graph."
|
|
116
|
+
"No module dependencies in the index. Run `coderadar init` or "
|
|
117
|
+
"`coderadar analyze` in the project first."
|
|
119
118
|
)
|
|
120
119
|
|
|
121
120
|
# Find SCCs and highlight cycles
|
|
@@ -224,8 +223,8 @@ def _dot_class_hierarchy(args: list, graph: Any | None = None) -> str:
|
|
|
224
223
|
|
|
225
224
|
if len(lines) == 4:
|
|
226
225
|
raise NothingToVisualize(
|
|
227
|
-
"No classes in the index. Run `coderadar
|
|
228
|
-
"
|
|
226
|
+
"No classes in the index. Run `coderadar init` or "
|
|
227
|
+
"`coderadar analyze` in the project first."
|
|
229
228
|
)
|
|
230
229
|
|
|
231
230
|
lines.append("}")
|
|
@@ -304,13 +303,15 @@ def _dot_call_graph(args: list, graph: Any | None = None) -> str:
|
|
|
304
303
|
reuses that walk so the two formats cannot disagree about the edges,
|
|
305
304
|
and only the rendering differs.
|
|
306
305
|
"""
|
|
307
|
-
from .call_graph import _gather_fan_in, _gather_fan_out
|
|
306
|
+
from .call_graph import _default_entry_point, _gather_fan_in, _gather_fan_out
|
|
308
307
|
|
|
309
308
|
if graph is None:
|
|
310
309
|
raise NothingToVisualize(
|
|
311
310
|
"No graph was provided to the call-graph renderer.")
|
|
312
311
|
|
|
313
|
-
|
|
312
|
+
# No arg: resolve a real `main` when the index has one, else the same
|
|
313
|
+
# actionable error the Mermaid renderer raises (formats must agree).
|
|
314
|
+
func_name = args[0] if args else _default_entry_point(graph)
|
|
314
315
|
direction = args[1] if len(args) > 1 else "out"
|
|
315
316
|
max_depth = int(args[2]) if len(args) > 2 else 5
|
|
316
317
|
|
|
@@ -338,8 +339,8 @@ def _dot_call_graph(args: list, graph: Any | None = None) -> str:
|
|
|
338
339
|
raise NothingToVisualize(
|
|
339
340
|
f"No call edges found {'from' if direction == 'out' else 'to'} "
|
|
340
341
|
f"`{func_name}`. Either the index is empty (run `coderadar "
|
|
341
|
-
f"analyze` in
|
|
342
|
-
f"calls nor is called by anything indexed."
|
|
342
|
+
f"init` or `coderadar analyze` in the project first) or that "
|
|
343
|
+
f"function neither calls nor is called by anything indexed."
|
|
343
344
|
)
|
|
344
345
|
|
|
345
346
|
lines = [
|
|
@@ -92,8 +92,8 @@ def _mermaid_class_hierarchy(args: list[str],
|
|
|
92
92
|
f"Could not read the class hierarchy: {exc}") from exc
|
|
93
93
|
|
|
94
94
|
raise NothingToVisualize(
|
|
95
|
-
"No classes in the index. Run `coderadar
|
|
96
|
-
"
|
|
95
|
+
"No classes in the index. Run `coderadar init` or "
|
|
96
|
+
"`coderadar analyze` in the project first."
|
|
97
97
|
)
|
|
98
98
|
|
|
99
99
|
|
|
@@ -128,8 +128,8 @@ def _mermaid_call_graph(args: list[str],
|
|
|
128
128
|
|
|
129
129
|
raise NothingToVisualize(
|
|
130
130
|
"No call edges found for that entity. Either the index is empty "
|
|
131
|
-
"(run `coderadar
|
|
132
|
-
"calls it and it calls nothing indexed."
|
|
131
|
+
"(run `coderadar init` or `coderadar analyze` in the project "
|
|
132
|
+
"first) or nothing indexed calls it and it calls nothing indexed."
|
|
133
133
|
)
|
|
134
134
|
|
|
135
135
|
|
|
@@ -166,28 +166,28 @@ def _mermaid_dependency_graph(args: list[str],
|
|
|
166
166
|
|
|
167
167
|
if graph:
|
|
168
168
|
try:
|
|
169
|
-
|
|
170
|
-
#
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
if
|
|
169
|
+
# Same resolved module→module edges the DOT renderer draws:
|
|
170
|
+
# `search_entities("module")` is a *text* search for the word
|
|
171
|
+
# "module", so it enumerated nothing unless a module was
|
|
172
|
+
# literally named that; and `callees_of(module)` follows CALLS,
|
|
173
|
+
# not IMPORTS. The shared helper reads the importer index via a
|
|
174
|
+
# depth-1 `imports` traversal instead.
|
|
175
|
+
from .graphviz_viz import _entities_of_kind, _extract_module_edges
|
|
176
|
+
modules = {m.get("id", ""): m.get("name", m.get("id", "?"))
|
|
177
|
+
for m in _entities_of_kind("module")}
|
|
178
|
+
edges = _extract_module_edges(graph)
|
|
179
|
+
seen: set[str] = set()
|
|
180
|
+
for src, dst in edges:
|
|
181
|
+
seen.add(src)
|
|
182
|
+
seen.add(dst)
|
|
183
|
+
for mod_id in sorted(seen):
|
|
184
|
+
label = _truncated_label(modules.get(mod_id, mod_id))
|
|
185
|
+
lines.append(f" {_safe_id(mod_id)}[\"{label}\"]")
|
|
186
|
+
for src, dst in edges:
|
|
187
|
+
lines.append(
|
|
188
|
+
f" {_safe_id(src)} --> {_safe_id(dst)}"
|
|
189
|
+
)
|
|
190
|
+
if seen:
|
|
191
191
|
return "\n".join(lines)
|
|
192
192
|
except NothingToVisualize:
|
|
193
193
|
raise
|
|
@@ -195,8 +195,8 @@ def _mermaid_dependency_graph(args: list[str],
|
|
|
195
195
|
raise NothingToVisualize(f"Could not read the graph: {exc}") from exc
|
|
196
196
|
|
|
197
197
|
raise NothingToVisualize(
|
|
198
|
-
"No module dependencies in the index. Run `coderadar
|
|
199
|
-
"
|
|
198
|
+
"No module dependencies in the index. Run `coderadar init` or "
|
|
199
|
+
"`coderadar analyze` in the project first."
|
|
200
200
|
)
|
|
201
201
|
|
|
202
202
|
|
|
@@ -4,7 +4,7 @@ build-backend = "maturin"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "coderadar-rs"
|
|
7
|
-
version = "0.9.
|
|
7
|
+
version = "0.9.3"
|
|
8
8
|
description = "Live semantic graph of your codebase — incremental, queryable, LLM-writable"
|
|
9
9
|
|
|
10
10
|
# The architecture is defined by spec v3.3 (see specs/CodeRadar v3.3 Consolidated.md).
|
|
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
|
{coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/core_indexer/src/graph/tests/import_graph_tests.rs
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/core_indexer/src/graph/tests/query_compile_tests.rs
RENAMED
|
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
|
{coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/core_indexer/src/smells/rules/excessive_returns.rs
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/core_indexer/src/smells/rules/intra_dead_statements.rs
RENAMED
|
File without changes
|
|
File without changes
|
{coderadar_rs-0.9.2 → coderadar_rs-0.9.3}/core_indexer/src/smells/rules/long_parameter_list.rs
RENAMED
|
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
|