code-graph-rag 0.4.19__tar.gz → 0.5.0__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.
- {code_graph_rag-0.4.19/code_graph_rag.egg-info → code_graph_rag-0.5.0}/PKG-INFO +1 -1
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/README.md +3 -4
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0/code_graph_rag.egg-info}/PKG-INFO +1 -1
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/code_graph_rag.egg-info/SOURCES.txt +2 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/cli_help.py +2 -1
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/config.py +17 -2
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/constants/ast_js.py +21 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/constants/cli.py +68 -4
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/constants/core.py +5 -1
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/constants/mcp.py +9 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/constants/security.py +36 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/editing/signature.py +74 -39
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/editing/signature_bind.py +5 -2
- code_graph_rag-0.5.0/codebase_rag/editing/signature_js.py +249 -0
- code_graph_rag-0.5.0/codebase_rag/editing/signature_js_bind.py +265 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/editing/signature_spec.py +50 -7
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/editing/transaction.py +6 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/logs.py +4 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/mcp/server.py +69 -10
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/mcp/tools.py +11 -0
- code_graph_rag-0.5.0/codebase_rag/sensitive_paths.py +164 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/tool_errors.py +11 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/tools/file_editor.py +10 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/tools/file_writer.py +5 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/tools/tool_descriptions.py +2 -1
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/pyproject.toml +3 -3
- code_graph_rag-0.4.19/codebase_rag/sensitive_paths.py +0 -41
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/LICENSE +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/PYPI_README.md +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/cgr/__init__.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/code_graph_rag.egg-info/dependency_links.txt +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/code_graph_rag.egg-info/entry_points.txt +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/code_graph_rag.egg-info/requires.txt +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/code_graph_rag.egg-info/top_level.txt +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/__init__.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/_cli_env.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/analyzers/__init__.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/analyzers/ast_grep_analyzer.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/analyzers/ast_grep_rules/patterns/c.yaml +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/analyzers/ast_grep_rules/patterns/cpp.yaml +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/analyzers/ast_grep_rules/patterns/csharp.yaml +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/analyzers/ast_grep_rules/patterns/dart.yaml +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/analyzers/ast_grep_rules/patterns/go.yaml +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/analyzers/ast_grep_rules/patterns/java.yaml +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/analyzers/ast_grep_rules/patterns/javascript.yaml +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/analyzers/ast_grep_rules/patterns/lua.yaml +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/analyzers/ast_grep_rules/patterns/php.yaml +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/analyzers/ast_grep_rules/patterns/python.yaml +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/analyzers/ast_grep_rules/patterns/ruby.yaml +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/analyzers/ast_grep_rules/patterns/rust.yaml +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/analyzers/ast_grep_rules/patterns/scala.yaml +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/analyzers/ast_grep_rules/patterns/tsx.yaml +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/analyzers/ast_grep_rules/patterns/typescript.yaml +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/analyzers/ast_grep_rules/security/c.yaml +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/analyzers/ast_grep_rules/security/cpp.yaml +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/analyzers/ast_grep_rules/security/csharp.yaml +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/analyzers/ast_grep_rules/security/dart.yaml +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/analyzers/ast_grep_rules/security/go.yaml +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/analyzers/ast_grep_rules/security/java.yaml +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/analyzers/ast_grep_rules/security/javascript.yaml +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/analyzers/ast_grep_rules/security/lua.yaml +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/analyzers/ast_grep_rules/security/php.yaml +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/analyzers/ast_grep_rules/security/python.yaml +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/analyzers/ast_grep_rules/security/ruby.yaml +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/analyzers/ast_grep_rules/security/rust.yaml +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/analyzers/ast_grep_rules/security/scala.yaml +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/analyzers/ast_grep_rules/security/tsx.yaml +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/analyzers/ast_grep_rules/security/typescript.yaml +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/analyzers/ast_grep_rules/smells/c.yaml +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/analyzers/ast_grep_rules/smells/cpp.yaml +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/analyzers/ast_grep_rules/smells/csharp.yaml +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/analyzers/ast_grep_rules/smells/dart.yaml +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/analyzers/ast_grep_rules/smells/go.yaml +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/analyzers/ast_grep_rules/smells/java.yaml +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/analyzers/ast_grep_rules/smells/javascript.yaml +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/analyzers/ast_grep_rules/smells/lua.yaml +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/analyzers/ast_grep_rules/smells/php.yaml +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/analyzers/ast_grep_rules/smells/python.yaml +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/analyzers/ast_grep_rules/smells/ruby.yaml +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/analyzers/ast_grep_rules/smells/rust.yaml +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/analyzers/ast_grep_rules/smells/scala.yaml +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/analyzers/ast_grep_rules/smells/tsx.yaml +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/analyzers/ast_grep_rules/smells/typescript.yaml +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/ast_cache.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/capture.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/check_isolation.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/checkout_state.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/cli.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/cli_runtime.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/console_marks.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/constants/__init__.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/constants/ast_cpp.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/constants/ast_csharp.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/constants/ast_dart.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/constants/ast_go.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/constants/ast_java.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/constants/ast_julia.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/constants/ast_lua.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/constants/ast_nodes.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/constants/ast_php.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/constants/ast_python.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/constants/ast_rust.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/constants/ast_scala.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/constants/ast_sql.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/constants/build.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/constants/deadcode_roots.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/constants/deps.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/constants/duplicates.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/constants/embedded_graph.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/constants/fqn_specs.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/constants/graph.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/constants/health.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/constants/interface.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/constants/lang_tooling.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/constants/languages.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/constants/notebook.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/constants/port.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/constants/providers.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/constants/sqlite_vectors.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/constants/stdlib_types.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/constants/structural.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/constants/trace.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/context_pruning.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/context_slice.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/crash_correlation.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/cypher_queries.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/dead_code.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/decorators.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/docker-compose.yaml +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/duplicates.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/editing/__init__.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/editing/cli.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/editing/contract.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/editing/import_paths.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/editing/imports.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/editing/occurrences.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/editing/patcher.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/editing/rename.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/editing/signature_contract.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/editing/sites.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/editor_links.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/embedded_graph/__init__.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/embedded_graph/compiler.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/embedded_graph/connection.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/embedded_graph/cypher_ast.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/embedded_graph/executor.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/embedded_graph/expressions.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/embedded_graph/extension.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/embedded_graph/functions.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/embedded_graph/lexer.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/embedded_graph/limits.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/embedded_graph/native.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/embedded_graph/parser.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/embedded_graph/procedures.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/embedded_graph/sql.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/embedded_graph/store.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/embedded_graph/types.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/embedder.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/exceptions.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/flow_verdict.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/function_registry.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/gloss.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/gloss_anchor.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/gloss_repair.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/graph_audit.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/graph_cli.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/graph_dialects.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/graph_loader.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/graph_query.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/graph_updater.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/instructions_trust.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/interface_skip.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/language_spec.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/main.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/mcp/__init__.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/mcp/client.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/mgclient_compat.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/mgclient_probe.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/models.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/parser_fingerprint.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/parser_loader.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/parsers/__init__.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/parsers/anchor_hash.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/parsers/ast_fingerprint.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/parsers/ast_grep_patterns/bash.yaml +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/parsers/ast_grep_patterns/elixir.yaml +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/parsers/ast_grep_patterns/haskell.yaml +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/parsers/ast_grep_patterns/kotlin.yaml +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/parsers/ast_grep_patterns/nix.yaml +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/parsers/ast_grep_patterns/ruby.yaml +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/parsers/ast_grep_patterns/solidity.yaml +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/parsers/ast_grep_patterns/swift.yaml +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/parsers/ast_grep_scope.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/parsers/ast_grep_tier.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/parsers/build_lock.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/parsers/call_processor.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/parsers/call_resolver.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/parsers/class_ingest/__init__.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/parsers/class_ingest/base_targets.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/parsers/class_ingest/cpp_modules.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/parsers/class_ingest/identity.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/parsers/class_ingest/method_override.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/parsers/class_ingest/mixin.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/parsers/class_ingest/node_type.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/parsers/class_ingest/parent_extraction.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/parsers/class_ingest/relationships.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/parsers/class_ingest/utils.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/parsers/contract_linking.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/parsers/contracts.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/parsers/cpp/__init__.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/parsers/cpp/class_macro.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/parsers/cpp/function_values.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/parsers/cpp/local_types.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/parsers/cpp/overloads.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/parsers/cpp/preproc_recovery.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/parsers/cpp/trailing_annotation.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/parsers/cpp/type_inference.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/parsers/cpp/utils.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/parsers/cpp_frontend/__init__.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/parsers/cpp_frontend/constants.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/parsers/cpp_frontend/frontend.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/parsers/cpp_frontend/qn.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/parsers/csharp/__init__.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/parsers/csharp/arity.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/parsers/csharp/type_inference.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/parsers/csharp/utils.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/parsers/csharp_frontend/__init__.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/parsers/csharp_frontend/frontend.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/parsers/csharp_frontend/roslyn/Frontend.cs +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/parsers/csharp_frontend/roslyn/Frontend.csproj +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/parsers/csharp_frontend/roslyn/Program.cs +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/parsers/dart/__init__.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/parsers/dart/package_paths.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/parsers/dart/type_inference.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/parsers/dart/utils.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/parsers/definition_docstring.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/parsers/definition_processor.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/parsers/dependency_parser.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/parsers/dispatch_registry.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/parsers/document_tier.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/parsers/endpoint_prefixes.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/parsers/endpoint_routes.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/parsers/endpoints.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/parsers/enum_variants.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/parsers/export_detection.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/parsers/factory.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/parsers/field_nodes.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/parsers/flat_module.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/parsers/flow_access/__init__.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/parsers/flow_access/constants.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/parsers/flow_access/processor.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/parsers/frontend_mode.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/parsers/frontends/__init__.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/parsers/frontends/cpp.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/parsers/frontends/csharp.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/parsers/frontends/go.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/parsers/frontends/java.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/parsers/frontends/protocol.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/parsers/frontends/python.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/parsers/frontends/registry.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/parsers/function_ingest.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/parsers/go/__init__.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/parsers/go/builds.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/parsers/go/interface_ingest.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/parsers/go/interfaces.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/parsers/go/link_state.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/parsers/go/module_paths.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/parsers/go/type_inference.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/parsers/go/utils.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/parsers/go_frontend/__init__.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/parsers/go_frontend/frontend.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/parsers/go_frontend/gotypes/go.mod +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/parsers/go_frontend/gotypes/go.sum +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/parsers/go_frontend/gotypes/main.go +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/parsers/handlers/__init__.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/parsers/handlers/base.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/parsers/handlers/cpp.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/parsers/handlers/java.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/parsers/handlers/js_ts.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/parsers/handlers/julia.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/parsers/handlers/lua.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/parsers/handlers/php.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/parsers/handlers/protocol.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/parsers/handlers/python.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/parsers/handlers/registry.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/parsers/handlers/rust.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/parsers/import_processor.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/parsers/interface_fingerprint.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/parsers/io_access/__init__.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/parsers/io_access/constants.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/parsers/io_access/descriptor.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/parsers/io_access/extract.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/parsers/io_access/models.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/parsers/io_access/processor.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/parsers/io_access/registry.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/parsers/io_access/resource_names.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/parsers/io_access/url_folding.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/parsers/java/__init__.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/parsers/java/method_resolver.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/parsers/java/type_inference.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/parsers/java/type_resolver.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/parsers/java/utils.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/parsers/java/variable_analyzer.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/parsers/java_frontend/__init__.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/parsers/java_frontend/frontend.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/parsers/java_frontend/javac/cgr/Frontend.java +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/parsers/java_generated.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/parsers/java_lombok.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/parsers/js_ts/__init__.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/parsers/js_ts/commonjs_exports.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/parsers/js_ts/ingest.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/parsers/js_ts/module_paths.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/parsers/js_ts/module_system.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/parsers/js_ts/overloads.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/parsers/js_ts/reexports.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/parsers/js_ts/type_inference.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/parsers/js_ts/utils.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/parsers/julia/__init__.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/parsers/julia/utils.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/parsers/lua/__init__.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/parsers/lua/type_inference.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/parsers/lua/utils.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/parsers/module_docstring.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/parsers/native_trees.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/parsers/notebook.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/parsers/parameter_nodes.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/parsers/php/__init__.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/parsers/php/class_names.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/parsers/php/namespaces.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/parsers/php/utils.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/parsers/positional_params.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/parsers/py/__init__.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/parsers/py/ast_analyzer.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/parsers/py/class_aliases.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/parsers/py/definition_index.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/parsers/py/expression_analyzer.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/parsers/py/flow_bindings.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/parsers/py/forward_refs.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/parsers/py/overloads.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/parsers/py/patterns.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/parsers/py/receiver_rebinding.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/parsers/py/type_inference.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/parsers/py/utils.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/parsers/py/variable_analyzer.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/parsers/py/with_analyzer.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/parsers/py_frontend/__init__.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/parsers/py_frontend/frontend.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/parsers/python_source_roots.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/parsers/rpc_exposure.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/parsers/rs/__init__.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/parsers/rs/cargo_semver.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/parsers/rs/type_inference.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/parsers/rs/utils.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/parsers/scala/__init__.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/parsers/scala/utils.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/parsers/semantic_call_join.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/parsers/sql_ddl.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/parsers/sql_recovery.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/parsers/stdlib_extractor.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/parsers/string_call.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/parsers/structure_processor.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/parsers/type_facts.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/parsers/type_inference.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/parsers/utils.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/path_filters.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/port_cli.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/port_parity.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/project_selection.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/prompts.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/providers/__init__.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/providers/base.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/providers/litellm.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/queries/highlights/c_sharp.scm +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/queries/highlights/dart.scm +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/queries/highlights/java.scm +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/queries/highlights/javascript.scm +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/queries/highlights/julia.scm +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/queries/highlights/php.scm +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/queries/highlights/python.scm +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/queries/highlights/rust.scm +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/queries/highlights/typescript.scm +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/readme_sections.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/schema_builder.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/schema_parse.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/schemas.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/services/__init__.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/services/anthropic_token_counter.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/services/cypher_guard.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/services/filtering.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/services/gloss_cleanup.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/services/graph_diff.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/services/graph_service.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/services/llm.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/services/neo4j_driver.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/services/protobuf_service.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/services/provenance.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/services/resource_cleanup.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/services/usage_cost.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/source_checkout.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/sql_names.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/sqlite_vectors.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/stack/__init__.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/stack/cli.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/stack/constants.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/stack/health.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/stack/manager.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/structural_check.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/structural_delta.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/sync_guard.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/sync_lock.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/taint.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/tools/__init__.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/tools/ast_grep_service.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/tools/code_retrieval.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/tools/codebase_query.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/tools/directory_lister.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/tools/duplicate_detection.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/tools/file_reader.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/tools/graph_refresh.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/tools/graph_rerank.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/tools/health_checker.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/tools/language.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/tools/language_catalog.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/tools/research.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/tools/semantic_search.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/tools/shell_command.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/tools/structural_editor.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/tools/structural_search.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/tools/web_search.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/trace/__init__.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/trace/carry.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/trace/cli.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/trace/cpuprofile.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/trace/dispatch_site.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/trace/ebpf_pprof.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/trace/ingest.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/trace/instrumented.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/trace/pprof.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/trace/pytest_plugin.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/trace/records.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/trace/resolution.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/trace/rust_pprof.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/trace/sourcemap.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/trace/speedscope.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/trace/tracer.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/trace/xdebug.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/tree_sitter_point.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/types_defs.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/unixcoder.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/utils/__init__.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/utils/cpp_signatures.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/utils/dependencies.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/utils/endpoints.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/utils/fqn_resolver.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/utils/interruptible_thread.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/utils/json_io.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/utils/path_utils.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/utils/process_owner.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/utils/qn_markers.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/utils/rich_markdown.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/utils/source_encoding.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/utils/source_extraction.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/utils/terminal_console.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/utils/token_utils.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/vector_store.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/watch.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/workspaces/__init__.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/workspaces/cli.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/workspaces/constants.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/workspaces/models.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codebase_rag/workspaces/storage.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codec/__init__.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codec/schema.proto +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codec/schema_pb2.py +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/codec/schema_pb2.pyi +0 -0
- {code_graph_rag-0.4.19 → code_graph_rag-0.5.0}/setup.cfg +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: code-graph-rag
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.5.0
|
|
4
4
|
Summary: The ultimate RAG for your monorepo. Query, understand, and edit multi-language codebases with the power of AI and knowledge graphs
|
|
5
5
|
License-Expression: MIT
|
|
6
6
|
Keywords: rag,retrieval-augmented-generation,knowledge-graph,code-analysis,tree-sitter,mcp,mcp-server,llm,graph-database,semantic-search,codebase,memgraph,developer-tools,monorepo
|
|
@@ -61,10 +61,9 @@ Code-Graph-RAG parses a multi-language codebase with Tree-sitter, sharpened by c
|
|
|
61
61
|
## Latest News 🔥
|
|
62
62
|
|
|
63
63
|
<!-- SECTION:latest_news -->
|
|
64
|
-
- **
|
|
65
|
-
- **
|
|
66
|
-
- **
|
|
67
|
-
- **CGR Prune Feature**: A new `cgr prune` functionality has been added to remove projects where the root no longer exists.
|
|
64
|
+
- **Rust Upgrade**: Updated Rust to version 1.99.1-slim-trixie.
|
|
65
|
+
- **Signature Functionality**: Added support for reading and writing JavaScript headers for change signatures, including the ability to change the signature of JavaScript functions or methods.
|
|
66
|
+
- **macOS Compatibility**: The build now leaves macOS-14 support.
|
|
68
67
|
<!-- /SECTION:latest_news -->
|
|
69
68
|
|
|
70
69
|
See [NEWS.md](NEWS.md) for the full history.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: code-graph-rag
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.5.0
|
|
4
4
|
Summary: The ultimate RAG for your monorepo. Query, understand, and edit multi-language codebases with the power of AI and knowledge graphs
|
|
5
5
|
License-Expression: MIT
|
|
6
6
|
Keywords: rag,retrieval-augmented-generation,knowledge-graph,code-analysis,tree-sitter,mcp,mcp-server,llm,graph-database,semantic-search,codebase,memgraph,developer-tools,monorepo
|
|
@@ -171,6 +171,8 @@ codebase_rag/editing/rename.py
|
|
|
171
171
|
codebase_rag/editing/signature.py
|
|
172
172
|
codebase_rag/editing/signature_bind.py
|
|
173
173
|
codebase_rag/editing/signature_contract.py
|
|
174
|
+
codebase_rag/editing/signature_js.py
|
|
175
|
+
codebase_rag/editing/signature_js_bind.py
|
|
174
176
|
codebase_rag/editing/signature_spec.py
|
|
175
177
|
codebase_rag/editing/sites.py
|
|
176
178
|
codebase_rag/editing/transaction.py
|
|
@@ -201,7 +201,8 @@ HELP_RENAME_ALLOW_HEURISTIC = (
|
|
|
201
201
|
)
|
|
202
202
|
HELP_RENAME_DRY_RUN = "Print the plan and diff without writing anything."
|
|
203
203
|
CMD_CHANGE_SIGNATURE = (
|
|
204
|
-
"Change a Python definition's parameter list and rewrite
|
|
204
|
+
"Change a Python or JavaScript definition's parameter list and rewrite "
|
|
205
|
+
"every call site "
|
|
205
206
|
"the graph knows; sites the mapping cannot complete are listed, not touched; "
|
|
206
207
|
"refuses on a graph a stopped sync left partial."
|
|
207
208
|
)
|
|
@@ -48,8 +48,12 @@ def merge_dotenv(path: Path) -> dict[str, str]:
|
|
|
48
48
|
# value, and a reference to it in the file reads that value too.
|
|
49
49
|
values = DotEnv(path, encoding=cs.ENCODING_UTF8, override=False).dict()
|
|
50
50
|
refused: dict[str, str] = {}
|
|
51
|
+
# The file may not set a waiver in any spelling: settings match names
|
|
52
|
+
# without regard to case, so `cgr_allow_sensitive_reads=true` beside an
|
|
53
|
+
# exported `CGR_ALLOW_SENSITIVE_READS=false` won (see load_settings).
|
|
54
|
+
environment_only = {name.upper() for name in cs.ENVIRONMENT_ONLY_SETTINGS}
|
|
51
55
|
for name, value in values.items():
|
|
52
|
-
if value is None or name in os.environ:
|
|
56
|
+
if value is None or name in os.environ or name.upper() in environment_only:
|
|
53
57
|
continue
|
|
54
58
|
try:
|
|
55
59
|
os.environ[name] = value
|
|
@@ -620,6 +624,14 @@ class AppConfig(BaseSettings):
|
|
|
620
624
|
False, validation_alias="CGR_ALLOW_SENSITIVE_READS"
|
|
621
625
|
)
|
|
622
626
|
|
|
627
|
+
# MCP write_file and surgical_replace_code refuse the same files: an
|
|
628
|
+
# overwrite destroys the secret, and an edit's refusals ("target not
|
|
629
|
+
# found", the lines of each match) let the client guess one character
|
|
630
|
+
# at a time. The CLI agent asks before every write instead.
|
|
631
|
+
ALLOW_SENSITIVE_WRITES: bool = Field(
|
|
632
|
+
False, validation_alias="CGR_ALLOW_SENSITIVE_WRITES"
|
|
633
|
+
)
|
|
634
|
+
|
|
623
635
|
# A repository's .cgr.md loads only once the user approved its content
|
|
624
636
|
# (issue #3456). True trusts every repository's file without asking:
|
|
625
637
|
# for CI on repositories you control, never for code you did not write.
|
|
@@ -780,7 +792,10 @@ def load_settings(
|
|
|
780
792
|
# when the user exported it: `.env` in the working directory is usually the
|
|
781
793
|
# analysed repository's file, and could approve its own .cgr.md (Codex
|
|
782
794
|
# review on PR #3471). Held at its default, silently, like an unset one.
|
|
783
|
-
|
|
795
|
+
# An empty one counts as unset: settings skip an empty variable
|
|
796
|
+
# (env_ignore_empty) and read `.env` in its place, so it let the
|
|
797
|
+
# repository's file decide.
|
|
798
|
+
exported = {name.upper() for name in inherited_env if os.environ.get(name)}
|
|
784
799
|
waivers = {
|
|
785
800
|
name for name in cs.ENVIRONMENT_ONLY_SETTINGS if name.upper() not in exported
|
|
786
801
|
}
|
|
@@ -534,3 +534,24 @@ CAPTURE_MODULE_OBJ = "module_obj"
|
|
|
534
534
|
CAPTURE_EXPORTS_PROP = "exports_prop"
|
|
535
535
|
CAPTURE_EXPORT_NAME = "export_name"
|
|
536
536
|
CAPTURE_EXPORT_FUNCTION = "export_function"
|
|
537
|
+
|
|
538
|
+
# Value nodes a call argument can be without running code, and the methods
|
|
539
|
+
# through which a function is called with an explicit receiver, for
|
|
540
|
+
# change_signature (issue #1908).
|
|
541
|
+
TS_JS_NUMBER = "number"
|
|
542
|
+
TS_JS_NULL = "null"
|
|
543
|
+
TS_JS_UNDEFINED = "undefined"
|
|
544
|
+
TS_JS_ACCESSOR_KEYWORDS = frozenset({"get", "set"})
|
|
545
|
+
JS_RECEIVER_METHODS = frozenset({"call", "apply"})
|
|
546
|
+
# `\u0061` and `\u{61}` both spell the identifier `a`, and a parameter name
|
|
547
|
+
# written with escapes is refused; a direct `eval` reads locals named in a
|
|
548
|
+
# string. For change_signature (issue #1908).
|
|
549
|
+
JS_IDENTIFIER_ESCAPE = r"\\u\{([0-9a-fA-F]+)\}|\\u([0-9a-fA-F]{4})"
|
|
550
|
+
JS_ESCAPE_MARK = "\\"
|
|
551
|
+
JS_EVAL_NAME = "eval"
|
|
552
|
+
# The argument passed for a default a call skips: undefined even where the
|
|
553
|
+
# caller has bound the name `undefined` to something else.
|
|
554
|
+
JS_SKIPPED_ARGUMENT = "void 0"
|
|
555
|
+
# A function body opening with either of these, exactly as written, runs in
|
|
556
|
+
# strict mode, and JavaScript then refuses a default among its parameters.
|
|
557
|
+
JS_USE_STRICT_DIRECTIVES = frozenset({"'use strict'", '"use strict"'})
|
|
@@ -1074,9 +1074,9 @@ SIGNATURE_CLI_WRONG_ROOT = (
|
|
|
1074
1074
|
"Project {project} was not indexed from {root}; "
|
|
1075
1075
|
"pass the --repo-path it was indexed from"
|
|
1076
1076
|
)
|
|
1077
|
-
|
|
1078
|
-
"Cannot change the signature of {qn}: {path} is
|
|
1079
|
-
"
|
|
1077
|
+
SIGNATURE_UNSUPPORTED_LANGUAGE = (
|
|
1078
|
+
"Cannot change the signature of {qn}: {path} is in a language it does not "
|
|
1079
|
+
"support yet; Python and JavaScript are supported (issue #{issue})"
|
|
1080
1080
|
)
|
|
1081
1081
|
SIGNATURE_DEFINITION_UNREADABLE = (
|
|
1082
1082
|
"Cannot change the signature of {qn}: its file {path} cannot be read "
|
|
@@ -1157,7 +1157,7 @@ SIGNATURE_SITE_NO_LOCATION = "site carries no location ({resolution})"
|
|
|
1157
1157
|
SIGNATURE_SITE_GUESSED = (
|
|
1158
1158
|
"site was resolved by {resolution}; pass allow_heuristic to rewrite it"
|
|
1159
1159
|
)
|
|
1160
|
-
|
|
1160
|
+
SIGNATURE_SITE_OTHER_LANGUAGE = "{path} is not in the definition's language"
|
|
1161
1161
|
SIGNATURE_SITE_UNREADABLE_FILE = "file cannot be read ({error})"
|
|
1162
1162
|
SIGNATURE_SITE_NO_CALL = "no call found at the recorded position"
|
|
1163
1163
|
SIGNATURE_SITE_UNREADABLE = "arguments cannot be read positionally: `{text}`"
|
|
@@ -1176,6 +1176,70 @@ SIGNATURE_SITE_EXPLICIT_RECEIVER = (
|
|
|
1176
1176
|
"reaches the method through its class and passes the receiver as an "
|
|
1177
1177
|
"argument (`{text}`); rewrite it by hand"
|
|
1178
1178
|
)
|
|
1179
|
+
SIGNATURE_SITE_REORDERS_EFFECTS = (
|
|
1180
|
+
"its arguments run code, and the new order would run them in another "
|
|
1181
|
+
"order: `{text}`"
|
|
1182
|
+
)
|
|
1183
|
+
SIGNATURE_JS_HEADER_PROBE = "function _{params} {{}}"
|
|
1184
|
+
SIGNATURE_JS_CALL_PROBE = "_({args});"
|
|
1185
|
+
SIGNATURE_JS_BAD_LITERAL = (
|
|
1186
|
+
"The value `{literal}` mapped to {name} is not one JavaScript expression; "
|
|
1187
|
+
"written into a call it would not be exactly one argument"
|
|
1188
|
+
)
|
|
1189
|
+
SIGNATURE_JS_UNSUPPORTED_PARAMS = (
|
|
1190
|
+
"Cannot change the signature of {qn}: `{text}` is not a plain parameter "
|
|
1191
|
+
"(a name, with or without a default), and only those can be remapped"
|
|
1192
|
+
)
|
|
1193
|
+
SIGNATURE_JS_BAD_PARAM = (
|
|
1194
|
+
"Not one plain parameter: `{text}` (expected `name` or `name = default`)"
|
|
1195
|
+
)
|
|
1196
|
+
SIGNATURE_JS_INVALID_HEADER = (
|
|
1197
|
+
"The new parameter list of {qn} is not valid JavaScript: `{text}`"
|
|
1198
|
+
)
|
|
1199
|
+
SIGNATURE_JS_CONSTRUCTOR = (
|
|
1200
|
+
"Cannot change the signature of {qn}: a constructor is called through `new` "
|
|
1201
|
+
"and `super(...)`, which are not listed as its call sites"
|
|
1202
|
+
)
|
|
1203
|
+
SIGNATURE_JS_ACCESSOR = (
|
|
1204
|
+
"Cannot change the signature of {qn}: a getter or setter is read or "
|
|
1205
|
+
"assigned, never called with arguments"
|
|
1206
|
+
)
|
|
1207
|
+
SIGNATURE_JS_CALLS_EVAL = (
|
|
1208
|
+
"Cannot add or drop a parameter of {qn}: its body uses `eval`, which can "
|
|
1209
|
+
"read any parameter through a name written in a string"
|
|
1210
|
+
)
|
|
1211
|
+
SIGNATURE_JS_READS_ARGUMENTS = (
|
|
1212
|
+
"Cannot change the signature of {qn}: its body reads `arguments`, which "
|
|
1213
|
+
"sees every value by position"
|
|
1214
|
+
)
|
|
1215
|
+
SIGNATURE_JS_RENAME = (
|
|
1216
|
+
"Cannot rename parameter {old} of {qn} to {new}: renaming is not supported "
|
|
1217
|
+
"for JavaScript yet (issue #{issue})"
|
|
1218
|
+
)
|
|
1219
|
+
SIGNATURE_JS_DROPPED_STILL_READ = (
|
|
1220
|
+
"Cannot drop parameter {name} of {qn}: its body still uses `{name}`, which "
|
|
1221
|
+
"would then reach an outer name or throw ReferenceError; remove that use by "
|
|
1222
|
+
"hand first"
|
|
1223
|
+
)
|
|
1224
|
+
SIGNATURE_JS_DUPLICATE_PARAM = (
|
|
1225
|
+
"Cannot change the signature of {qn}: it declares parameter {name} more "
|
|
1226
|
+
"than once, and the body sees only the last of them"
|
|
1227
|
+
)
|
|
1228
|
+
SIGNATURE_JS_REORDERS_DEFAULTS = (
|
|
1229
|
+
"Cannot change the signature of {qn}: the defaults of {first} and {second} "
|
|
1230
|
+
"would run in the other order when a call leaves both out, and one of them "
|
|
1231
|
+
"runs code the other can observe"
|
|
1232
|
+
)
|
|
1233
|
+
SIGNATURE_JS_DEFAULT_READS_LATER = (
|
|
1234
|
+
"Cannot change the signature of {qn}: the default of {name} reads `{later}`, "
|
|
1235
|
+
"which is not bound yet when that default runs, so a call leaving {name} "
|
|
1236
|
+
"out would throw ReferenceError"
|
|
1237
|
+
)
|
|
1238
|
+
SIGNATURE_JS_STRICT_DEFAULTS = (
|
|
1239
|
+
"Cannot change the signature of {qn}: its body opens with a 'use strict' "
|
|
1240
|
+
"directive, and JavaScript refuses that directive in a function with a "
|
|
1241
|
+
"default parameter, so the new header would not load"
|
|
1242
|
+
)
|
|
1179
1243
|
SIGNATURE_PLANNED = "{count} site(s) would be rewritten, {skipped} left unmapped"
|
|
1180
1244
|
SIGNATURE_PARSE_FAILED = "Signature change rolled back: {files} would no longer parse"
|
|
1181
1245
|
SIGNATURE_CONTRACT_FAILED = (
|
|
@@ -348,7 +348,11 @@ CGR_INSTRUCTIONS_SEPARATOR = "\n\n---\n\n"
|
|
|
348
348
|
# Read only from the environment cgr starts with, never from `.env` in the
|
|
349
349
|
# working directory, which usually belongs to the repository being analysed.
|
|
350
350
|
ENVIRONMENT_ONLY_SETTINGS = frozenset(
|
|
351
|
-
{
|
|
351
|
+
{
|
|
352
|
+
"CGR_TRUST_PROJECT_INSTRUCTIONS",
|
|
353
|
+
"CGR_ALLOW_SENSITIVE_READS",
|
|
354
|
+
"CGR_ALLOW_SENSITIVE_WRITES",
|
|
355
|
+
}
|
|
352
356
|
)
|
|
353
357
|
# Every file cgr keeps about one checkout. They live in that checkout's
|
|
354
358
|
# directory under CGR_HOME / CGR_STATE_DIRNAME rather than in the working
|
|
@@ -116,6 +116,11 @@ MCP_READ_ONLY_REFUSED = (
|
|
|
116
116
|
)
|
|
117
117
|
|
|
118
118
|
|
|
119
|
+
# The HTTP transport serves plain HTTP; a Host header leaves port 80 out.
|
|
120
|
+
HTTP_SCHEME = "http"
|
|
121
|
+
HTTP_DEFAULT_PORT = 80
|
|
122
|
+
|
|
123
|
+
|
|
119
124
|
class MCPTransport(StrEnum):
|
|
120
125
|
STDIO = "stdio"
|
|
121
126
|
HTTP = "http"
|
|
@@ -217,6 +222,10 @@ MCP_READ_SENSITIVE_REFUSED = (
|
|
|
217
222
|
"{path} looks like a credential file, so it is not served over MCP. "
|
|
218
223
|
"Export CGR_ALLOW_SENSITIVE_READS=true in the server's environment to serve it."
|
|
219
224
|
)
|
|
225
|
+
MCP_WRITE_SENSITIVE_REFUSED = (
|
|
226
|
+
"{path} looks like a credential file, so it is not changed over MCP. "
|
|
227
|
+
"Export CGR_ALLOW_SENSITIVE_WRITES=true in the server's environment to allow it."
|
|
228
|
+
)
|
|
220
229
|
# A `path:line` target whose line no source file can reach; sent on, it
|
|
221
230
|
# overflows the 64-bit Bolt integer in the driver.
|
|
222
231
|
MCP_RESOLVE_LINE_OUT_OF_RANGE = "Line {line} of {path} is out of range."
|
|
@@ -1340,3 +1340,39 @@ SENSITIVE_PARENT_FILES = frozenset(
|
|
|
1340
1340
|
)
|
|
1341
1341
|
# Everything under these directories is key material.
|
|
1342
1342
|
SENSITIVE_DIR_NAMES = frozenset({".ssh", ".gnupg"})
|
|
1343
|
+
# Windows drops trailing dots and spaces from a name, so `.git.` opens `.git`.
|
|
1344
|
+
WINDOWS_IGNORED_NAME_TAIL = ". "
|
|
1345
|
+
# A worktree's git directory names the shared one, which holds the config.
|
|
1346
|
+
GIT_COMMONDIR_FILENAME = "commondir"
|
|
1347
|
+
# What git looks for to take a folder for a git directory: a HEAD file beside
|
|
1348
|
+
# these folders, or beside a `commondir` file.
|
|
1349
|
+
GIT_HEAD_FILENAME = "HEAD"
|
|
1350
|
+
GIT_DIR_SUBDIRS = ("objects", "refs")
|
|
1351
|
+
# Asks git which git directory, and which shared one, it uses for a folder.
|
|
1352
|
+
# `rev-parse` runs nothing a config names, and fsmonitor is switched off on
|
|
1353
|
+
# top. The answer must not hang on settings the project can reach (its
|
|
1354
|
+
# `.env` reaches the environment): bare-repository discovery and the
|
|
1355
|
+
# ownership check are fixed here, on the command line, which outranks every
|
|
1356
|
+
# config file. Needs git 2.31 for `--path-format`; an older git falls back
|
|
1357
|
+
# to the rules that need no git.
|
|
1358
|
+
GIT_LOCATE_DIR_ARGS = (
|
|
1359
|
+
"-c",
|
|
1360
|
+
"core.fsmonitor=false",
|
|
1361
|
+
"-c",
|
|
1362
|
+
"safe.bareRepository=all",
|
|
1363
|
+
"-c",
|
|
1364
|
+
"safe.directory=*",
|
|
1365
|
+
"rev-parse",
|
|
1366
|
+
"--path-format=absolute",
|
|
1367
|
+
"--git-dir",
|
|
1368
|
+
"--git-common-dir",
|
|
1369
|
+
)
|
|
1370
|
+
GIT_LOCATE_DIR_TIMEOUT_S = 5
|
|
1371
|
+
GIT_CEILING_DIRECTORIES_ENV = "GIT_CEILING_DIRECTORIES"
|
|
1372
|
+
# Every variable git reads starts with this; none is passed on, so a
|
|
1373
|
+
# `GIT_DIR` or `GIT_CONFIG_PARAMETERS` the project set cannot steer or break
|
|
1374
|
+
# the answer. Only the repository's own config is read.
|
|
1375
|
+
GIT_ENV_PREFIX = "GIT_"
|
|
1376
|
+
GIT_CONFIG_NOSYSTEM_ENV = "GIT_CONFIG_NOSYSTEM"
|
|
1377
|
+
GIT_CONFIG_GLOBAL_ENV = "GIT_CONFIG_GLOBAL"
|
|
1378
|
+
GIT_ENV_ON = "1"
|
|
@@ -23,9 +23,9 @@ the structural delta and undone when its postcondition contract (issue
|
|
|
23
23
|
#1531) fails: every site of the changed signature must read as mapped or
|
|
24
24
|
be in the unmapped list.
|
|
25
25
|
|
|
26
|
-
|
|
27
|
-
Python
|
|
28
|
-
#1908).
|
|
26
|
+
Headers and argument lists are read and written through a dialect per
|
|
27
|
+
language: Python, and JavaScript (`signature_js.py`, `signature_js_bind.py`). A definition in any
|
|
28
|
+
other language refuses (issue #1908).
|
|
29
29
|
"""
|
|
30
30
|
|
|
31
31
|
from __future__ import annotations
|
|
@@ -49,17 +49,19 @@ from .signature_bind import (
|
|
|
49
49
|
_find_definition,
|
|
50
50
|
_params_of,
|
|
51
51
|
_refuse_body_conflicts,
|
|
52
|
+
_render_arguments,
|
|
52
53
|
_render_site,
|
|
53
54
|
_take_receiver,
|
|
54
55
|
_text,
|
|
55
56
|
)
|
|
56
57
|
from .signature_contract import enforce_contract
|
|
58
|
+
from .signature_js_bind import JAVASCRIPT
|
|
57
59
|
from .signature_spec import (
|
|
58
60
|
_CALL,
|
|
59
61
|
_DEFINITION,
|
|
60
|
-
_IDENTIFIER_RE,
|
|
61
62
|
LANGUAGES_ISSUE,
|
|
62
63
|
ParamSpec,
|
|
64
|
+
SignatureDialect,
|
|
63
65
|
SignatureRefused,
|
|
64
66
|
SignatureReport,
|
|
65
67
|
SignatureSite,
|
|
@@ -69,6 +71,7 @@ from .signature_spec import (
|
|
|
69
71
|
_Edit,
|
|
70
72
|
_Header,
|
|
71
73
|
_new_specs,
|
|
74
|
+
_parse_new_param,
|
|
72
75
|
_resolve_sources,
|
|
73
76
|
_Source,
|
|
74
77
|
_Unmapped,
|
|
@@ -95,8 +98,7 @@ class SignatureChanger:
|
|
|
95
98
|
# transaction undone when the contract fails.
|
|
96
99
|
self.reingest = reingest
|
|
97
100
|
parsers, _queries = load_parsers()
|
|
98
|
-
self._parsers = dict(parsers)
|
|
99
|
-
self._parser: Parser = self._parsers[cs.SupportedLanguage.PYTHON]
|
|
101
|
+
self._parsers: dict[cs.SupportedLanguage, Parser] = dict(parsers)
|
|
100
102
|
|
|
101
103
|
# -- planning --
|
|
102
104
|
|
|
@@ -126,14 +128,17 @@ class SignatureChanger:
|
|
|
126
128
|
patcher = Patcher(self.repo_root, parsers=self._parsers)
|
|
127
129
|
members = hierarchy(self.fetch_all, self.project, qn).members
|
|
128
130
|
headers = [self._header(member, patcher) for member in members]
|
|
131
|
+
dialect = _DIALECTS[headers[0].language]
|
|
129
132
|
old = headers[0].params
|
|
130
133
|
old_names = [p.name for p in old]
|
|
131
134
|
_check_hierarchy(qn, headers, old_names)
|
|
132
|
-
new = _new_specs(
|
|
135
|
+
new = _new_specs(
|
|
136
|
+
new_params, old, dialect.parse_new_param, dialect.defaults_last
|
|
137
|
+
)
|
|
133
138
|
sources = _resolve_sources(new, old, mapping or {})
|
|
134
139
|
for spec, source in zip(new, sources, strict=True):
|
|
135
140
|
if source is not None and source.literal is not None:
|
|
136
|
-
|
|
141
|
+
dialect.check_literal(spec, source.literal)
|
|
137
142
|
# A bare old name carries that parameter's own spelling over (each
|
|
138
143
|
# override keeps its own); spelling a kept parameter out again
|
|
139
144
|
# re-annotates it.
|
|
@@ -143,11 +148,10 @@ class SignatureChanger:
|
|
|
143
148
|
# that happens to match the primary compared equal and counted as
|
|
144
149
|
# carried -- leaving an override declaring `a: str` un-annotated,
|
|
145
150
|
# which is the opposite of what was asked (Copilot, PR #1533).
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
}
|
|
151
|
+
#
|
|
152
|
+
# An old name is a name in every dialect, so membership is the test:
|
|
153
|
+
# a Python identifier pattern would miss JavaScript's `$a`.
|
|
154
|
+
carried = {text.strip() for text in new_params if text.strip() in old_names}
|
|
151
155
|
# An old parameter fed to a new one of another name is renamed, and
|
|
152
156
|
# the body must follow or the definition would be broken.
|
|
153
157
|
renamed = [
|
|
@@ -157,11 +161,11 @@ class SignatureChanger:
|
|
|
157
161
|
and source.index is not None
|
|
158
162
|
and old_names[source.index] != spec.name
|
|
159
163
|
]
|
|
160
|
-
|
|
164
|
+
dialect.refuse_body_conflicts(headers, old_names, new, renamed)
|
|
161
165
|
sites: list[SignatureSite] = []
|
|
162
166
|
edits: list[_Edit] = []
|
|
163
167
|
for header in headers:
|
|
164
|
-
edits.extend(
|
|
168
|
+
edits.extend(dialect.definition_edits(header, new, carried, renamed))
|
|
165
169
|
sites.append(
|
|
166
170
|
SignatureSite(
|
|
167
171
|
_DEFINITION,
|
|
@@ -197,9 +201,13 @@ class SignatureChanger:
|
|
|
197
201
|
path = definition["path"]
|
|
198
202
|
if not definition["found"] or not path:
|
|
199
203
|
raise SignatureRefused(cs.RENAME_UNKNOWN.format(qn=qn))
|
|
200
|
-
|
|
204
|
+
language = get_language_for_extension(Path(path).suffix)
|
|
205
|
+
dialect = _DIALECTS.get(language) if language is not None else None
|
|
206
|
+
if language is None or dialect is None:
|
|
201
207
|
raise SignatureRefused(
|
|
202
|
-
cs.
|
|
208
|
+
cs.SIGNATURE_UNSUPPORTED_LANGUAGE.format(
|
|
209
|
+
qn=qn, path=path, issue=LANGUAGES_ISSUE
|
|
210
|
+
)
|
|
203
211
|
)
|
|
204
212
|
try:
|
|
205
213
|
source = patcher.source(path)
|
|
@@ -210,13 +218,13 @@ class SignatureChanger:
|
|
|
210
218
|
start = definition["start_line"] or 1
|
|
211
219
|
end = definition["end_line"] or start
|
|
212
220
|
name = definition["name"] or qn.rsplit(cs.SEPARATOR_DOT, 1)[-1]
|
|
213
|
-
root = self.
|
|
214
|
-
node =
|
|
221
|
+
root = self._parsers[language].parse(source).root_node
|
|
222
|
+
node = dialect.find_definition(root, name, start, end)
|
|
215
223
|
params = node.child_by_field_name(cs.FIELD_PARAMETERS) if node else None
|
|
216
224
|
if node is None or params is None:
|
|
217
225
|
raise SignatureRefused(cs.SIGNATURE_NO_HEADER.format(qn=qn, path=path))
|
|
218
|
-
specs =
|
|
219
|
-
receiver =
|
|
226
|
+
specs = dialect.params_of(params, source, qn)
|
|
227
|
+
receiver = dialect.take_receiver(qn, definition["label"], specs, node, source)
|
|
220
228
|
return _Header(
|
|
221
229
|
qn,
|
|
222
230
|
path,
|
|
@@ -227,6 +235,7 @@ class SignatureChanger:
|
|
|
227
235
|
specs,
|
|
228
236
|
node,
|
|
229
237
|
source,
|
|
238
|
+
language,
|
|
230
239
|
)
|
|
231
240
|
|
|
232
241
|
def _collect_sites(
|
|
@@ -241,6 +250,7 @@ class SignatureChanger:
|
|
|
241
250
|
edits: list[_Edit],
|
|
242
251
|
) -> list[UnmappedSite]:
|
|
243
252
|
unmapped: list[UnmappedSite] = []
|
|
253
|
+
render = _DIALECTS[headers[0].language].render_arguments
|
|
244
254
|
candidates = self._candidates(headers, old, allow_heuristic, patcher, unmapped)
|
|
245
255
|
# Innermost first, so a site nested in another's arguments (or a
|
|
246
256
|
# body rename inside a recursive call) is already planned when the
|
|
@@ -257,7 +267,7 @@ class SignatureChanger:
|
|
|
257
267
|
for index in order:
|
|
258
268
|
candidate = candidates[index]
|
|
259
269
|
try:
|
|
260
|
-
edit = _render_site(candidate, new, sources, edits)
|
|
270
|
+
edit = _render_site(candidate, new, sources, edits, render)
|
|
261
271
|
except _Unmapped as skip:
|
|
262
272
|
unmapped.append(
|
|
263
273
|
UnmappedSite(
|
|
@@ -350,8 +360,11 @@ class SignatureChanger:
|
|
|
350
360
|
)
|
|
351
361
|
if resolution in AMBIGUOUS and not allow_heuristic:
|
|
352
362
|
raise _Unmapped(cs.SIGNATURE_SITE_GUESSED.format(resolution=resolution))
|
|
353
|
-
|
|
354
|
-
|
|
363
|
+
# A call from another language reaches the definition through some
|
|
364
|
+
# binding layer this operation cannot read.
|
|
365
|
+
if get_language_for_extension(Path(path).suffix) != header.language:
|
|
366
|
+
raise _Unmapped(cs.SIGNATURE_SITE_OTHER_LANGUAGE.format(path=path))
|
|
367
|
+
dialect = _DIALECTS[header.language]
|
|
355
368
|
try:
|
|
356
369
|
source = patcher.source(path)
|
|
357
370
|
except PatcherError as error:
|
|
@@ -364,24 +377,12 @@ class SignatureChanger:
|
|
|
364
377
|
if end_line is not None and end_col is not None
|
|
365
378
|
else None
|
|
366
379
|
)
|
|
367
|
-
root = self.
|
|
380
|
+
root = self._parsers[header.language].parse(source).root_node
|
|
368
381
|
call = call_node_at(root, line, col, recorded_end)
|
|
369
382
|
if call is None:
|
|
370
383
|
raise _Unmapped(cs.SIGNATURE_SITE_NO_CALL)
|
|
371
|
-
args =
|
|
372
|
-
|
|
373
|
-
# `helper(x for x in xs)`: a generator, not a list of values.
|
|
374
|
-
raise _Unmapped(
|
|
375
|
-
cs.SIGNATURE_SITE_UNREADABLE.format(text=_text(args or call, source))
|
|
376
|
-
)
|
|
377
|
-
if _binds_its_receiver(header) and _passes_receiver(call, source, header.qn):
|
|
378
|
-
# `Base.f(obj, a)` passes `self` as its first argument: binding
|
|
379
|
-
# it to the first declared parameter would shift every value
|
|
380
|
-
# one slot. Left as written rather than guessed at.
|
|
381
|
-
raise _Unmapped(
|
|
382
|
-
cs.SIGNATURE_SITE_EXPLICIT_RECEIVER.format(text=_text(call, source))
|
|
383
|
-
)
|
|
384
|
-
bound = _bind_arguments(args, source, old)
|
|
384
|
+
args = dialect.site_arguments(header, call, source)
|
|
385
|
+
bound = dialect.bind_arguments(args, source, old)
|
|
385
386
|
site = SignatureSite(_CALL, path, line, col, row["qualified_name"], resolution)
|
|
386
387
|
return _Candidate(
|
|
387
388
|
site, (args.start_byte, args.end_byte), _text(args, source), bound
|
|
@@ -487,6 +488,23 @@ class SignatureChanger:
|
|
|
487
488
|
return report
|
|
488
489
|
|
|
489
490
|
|
|
491
|
+
def _python_site_arguments(header: _Header, call: Node, source: bytes) -> Node:
|
|
492
|
+
args = call.child_by_field_name(cs.FIELD_ARGUMENTS)
|
|
493
|
+
if args is None or args.type != cs.TS_ARGUMENT_LIST:
|
|
494
|
+
# `helper(x for x in xs)`: a generator, not a list of values.
|
|
495
|
+
raise _Unmapped(
|
|
496
|
+
cs.SIGNATURE_SITE_UNREADABLE.format(text=_text(args or call, source))
|
|
497
|
+
)
|
|
498
|
+
if _binds_its_receiver(header) and _passes_receiver(call, source, header.qn):
|
|
499
|
+
# `Base.f(obj, a)` passes `self` as its first argument: binding
|
|
500
|
+
# it to the first declared parameter would shift every value
|
|
501
|
+
# one slot. Left as written rather than guessed at.
|
|
502
|
+
raise _Unmapped(
|
|
503
|
+
cs.SIGNATURE_SITE_EXPLICIT_RECEIVER.format(text=_text(call, source))
|
|
504
|
+
)
|
|
505
|
+
return args
|
|
506
|
+
|
|
507
|
+
|
|
490
508
|
def _binds_its_receiver(header: _Header) -> bool:
|
|
491
509
|
"""An instance method: called through an instance, `self` is implicit.
|
|
492
510
|
|
|
@@ -566,6 +584,23 @@ def _imported_as(node: Node, source: bytes, alias: str) -> str | None:
|
|
|
566
584
|
return None
|
|
567
585
|
|
|
568
586
|
|
|
587
|
+
_DIALECTS: dict[cs.SupportedLanguage, SignatureDialect] = {
|
|
588
|
+
cs.SupportedLanguage.PYTHON: SignatureDialect(
|
|
589
|
+
find_definition=_find_definition,
|
|
590
|
+
params_of=_params_of,
|
|
591
|
+
take_receiver=_take_receiver,
|
|
592
|
+
parse_new_param=_parse_new_param,
|
|
593
|
+
check_literal=_check_literal,
|
|
594
|
+
refuse_body_conflicts=_refuse_body_conflicts,
|
|
595
|
+
definition_edits=_definition_edits,
|
|
596
|
+
site_arguments=_python_site_arguments,
|
|
597
|
+
bind_arguments=_bind_arguments,
|
|
598
|
+
render_arguments=_render_arguments,
|
|
599
|
+
),
|
|
600
|
+
cs.SupportedLanguage.JS: JAVASCRIPT,
|
|
601
|
+
}
|
|
602
|
+
|
|
603
|
+
|
|
569
604
|
def change_signature(
|
|
570
605
|
repo_root: Path,
|
|
571
606
|
fetch_all: QueryFn,
|
|
@@ -7,7 +7,7 @@ from __future__ import annotations
|
|
|
7
7
|
|
|
8
8
|
import re
|
|
9
9
|
import symtable
|
|
10
|
-
from collections.abc import Iterable, Mapping, Sequence
|
|
10
|
+
from collections.abc import Callable, Iterable, Mapping, Sequence
|
|
11
11
|
from itertools import product
|
|
12
12
|
|
|
13
13
|
from tree_sitter import Node
|
|
@@ -508,6 +508,9 @@ def _render_site(
|
|
|
508
508
|
new: Sequence[ParamSpec],
|
|
509
509
|
sources: Sequence[_Source | None],
|
|
510
510
|
edits: list[_Edit],
|
|
511
|
+
render: Callable[
|
|
512
|
+
[Sequence[ParamSpec], Sequence[_Source | None], Mapping[int, _Binding]], str
|
|
513
|
+
] = _render_arguments,
|
|
511
514
|
) -> _Edit | None:
|
|
512
515
|
"""The site's edit, with any edit planned inside its arguments folded in.
|
|
513
516
|
|
|
@@ -516,7 +519,7 @@ def _render_site(
|
|
|
516
519
|
"""
|
|
517
520
|
bound, consumed = _fold(candidate, edits)
|
|
518
521
|
_refuse_dropped_effects(sources, bound)
|
|
519
|
-
text =
|
|
522
|
+
text = render(new, sources, bound)
|
|
520
523
|
for edit in consumed:
|
|
521
524
|
edits.remove(edit)
|
|
522
525
|
if not consumed and text == candidate.text:
|