descry-codegraph 1.2.0__tar.gz → 1.2.1__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.
- {descry_codegraph-1.2.0 → descry_codegraph-1.2.1}/AGENTS.md +1 -1
- {descry_codegraph-1.2.0 → descry_codegraph-1.2.1}/CHANGELOG.md +12 -0
- {descry_codegraph-1.2.0 → descry_codegraph-1.2.1}/PKG-INFO +1 -1
- {descry_codegraph-1.2.0 → descry_codegraph-1.2.1}/src/descry/__init__.py +1 -1
- {descry_codegraph-1.2.0 → descry_codegraph-1.2.1}/src/descry/resolver.py +12 -2
- {descry_codegraph-1.2.0 → descry_codegraph-1.2.1}/tests/test_generate.py +54 -0
- {descry_codegraph-1.2.0 → descry_codegraph-1.2.1}/.github/assets/01-landing.png +0 -0
- {descry_codegraph-1.2.0 → descry_codegraph-1.2.1}/.github/workflows/ci.yml +0 -0
- {descry_codegraph-1.2.0 → descry_codegraph-1.2.1}/.github/workflows/release.yml +0 -0
- {descry_codegraph-1.2.0 → descry_codegraph-1.2.1}/.gitignore +0 -0
- {descry_codegraph-1.2.0 → descry_codegraph-1.2.1}/CONTRACT.md +0 -0
- {descry_codegraph-1.2.0 → descry_codegraph-1.2.1}/LICENSE +0 -0
- {descry_codegraph-1.2.0 → descry_codegraph-1.2.1}/README.md +0 -0
- {descry_codegraph-1.2.0 → descry_codegraph-1.2.1}/SECURITY.md +0 -0
- {descry_codegraph-1.2.0 → descry_codegraph-1.2.1}/THIRD-PARTY-NOTICES.md +0 -0
- {descry_codegraph-1.2.0 → descry_codegraph-1.2.1}/claude-skill/README.md +0 -0
- {descry_codegraph-1.2.0 → descry_codegraph-1.2.1}/claude-skill/descry/SKILL.md +0 -0
- {descry_codegraph-1.2.0 → descry_codegraph-1.2.1}/claude-skill/descry/references/cli-reference.md +0 -0
- {descry_codegraph-1.2.0 → descry_codegraph-1.2.1}/claude-skill/descry/references/mcp-tools.md +0 -0
- {descry_codegraph-1.2.0 → descry_codegraph-1.2.1}/claude-skill/descry/references/recipes.md +0 -0
- {descry_codegraph-1.2.0 → descry_codegraph-1.2.1}/docs/CERTAINTY.md +0 -0
- {descry_codegraph-1.2.0 → descry_codegraph-1.2.1}/docs/TOOLS.md +0 -0
- {descry_codegraph-1.2.0 → descry_codegraph-1.2.1}/docs/UPGRADING.md +0 -0
- {descry_codegraph-1.2.0 → descry_codegraph-1.2.1}/justfile +0 -0
- {descry_codegraph-1.2.0 → descry_codegraph-1.2.1}/pi-extension/README.md +0 -0
- {descry_codegraph-1.2.0 → descry_codegraph-1.2.1}/pi-extension/descry-cli.py +0 -0
- {descry_codegraph-1.2.0 → descry_codegraph-1.2.1}/pi-extension/descry-tools.ts +0 -0
- {descry_codegraph-1.2.0 → descry_codegraph-1.2.1}/pyproject.toml +0 -0
- {descry_codegraph-1.2.0 → descry_codegraph-1.2.1}/src/descry/_answers.py +0 -0
- {descry_codegraph-1.2.0 → descry_codegraph-1.2.1}/src/descry/_comments.py +0 -0
- {descry_codegraph-1.2.0 → descry_codegraph-1.2.1}/src/descry/_env.py +0 -0
- {descry_codegraph-1.2.0 → descry_codegraph-1.2.1}/src/descry/_files.py +0 -0
- {descry_codegraph-1.2.0 → descry_codegraph-1.2.1}/src/descry/_graph.py +0 -0
- {descry_codegraph-1.2.0 → descry_codegraph-1.2.1}/src/descry/_parse_cache.py +0 -0
- {descry_codegraph-1.2.0 → descry_codegraph-1.2.1}/src/descry/_parsing.py +0 -0
- {descry_codegraph-1.2.0 → descry_codegraph-1.2.1}/src/descry/_reads.py +0 -0
- {descry_codegraph-1.2.0 → descry_codegraph-1.2.1}/src/descry/_stdlib.py +0 -0
- {descry_codegraph-1.2.0 → descry_codegraph-1.2.1}/src/descry/_streams.py +0 -0
- {descry_codegraph-1.2.0 → descry_codegraph-1.2.1}/src/descry/clang_parser.py +0 -0
- {descry_codegraph-1.2.0 → descry_codegraph-1.2.1}/src/descry/cli.py +0 -0
- {descry_codegraph-1.2.0 → descry_codegraph-1.2.1}/src/descry/cross_lang.py +0 -0
- {descry_codegraph-1.2.0 → descry_codegraph-1.2.1}/src/descry/dart_parser.py +0 -0
- {descry_codegraph-1.2.0 → descry_codegraph-1.2.1}/src/descry/dotnet_parser.py +0 -0
- {descry_codegraph-1.2.0 → descry_codegraph-1.2.1}/src/descry/embeddings.py +0 -0
- {descry_codegraph-1.2.0 → descry_codegraph-1.2.1}/src/descry/generate.py +0 -0
- {descry_codegraph-1.2.0 → descry_codegraph-1.2.1}/src/descry/git_history.py +0 -0
- {descry_codegraph-1.2.0 → descry_codegraph-1.2.1}/src/descry/go_parser.py +0 -0
- {descry_codegraph-1.2.0 → descry_codegraph-1.2.1}/src/descry/handlers.py +0 -0
- {descry_codegraph-1.2.0 → descry_codegraph-1.2.1}/src/descry/java_parser.py +0 -0
- {descry_codegraph-1.2.0 → descry_codegraph-1.2.1}/src/descry/mcp_server.py +0 -0
- {descry_codegraph-1.2.0 → descry_codegraph-1.2.1}/src/descry/php_parser.py +0 -0
- {descry_codegraph-1.2.0 → descry_codegraph-1.2.1}/src/descry/proto_parser.py +0 -0
- {descry_codegraph-1.2.0 → descry_codegraph-1.2.1}/src/descry/python_parser.py +0 -0
- {descry_codegraph-1.2.0 → descry_codegraph-1.2.1}/src/descry/query.py +0 -0
- {descry_codegraph-1.2.0 → descry_codegraph-1.2.1}/src/descry/ruby_parser.py +0 -0
- {descry_codegraph-1.2.0 → descry_codegraph-1.2.1}/src/descry/rust_parser.py +0 -0
- {descry_codegraph-1.2.0 → descry_codegraph-1.2.1}/src/descry/scip/__init__.py +0 -0
- {descry_codegraph-1.2.0 → descry_codegraph-1.2.1}/src/descry/scip/adapter.py +0 -0
- {descry_codegraph-1.2.0 → descry_codegraph-1.2.1}/src/descry/scip/adapters/__init__.py +0 -0
- {descry_codegraph-1.2.0 → descry_codegraph-1.2.1}/src/descry/scip/adapters/_empty_environment.json +0 -0
- {descry_codegraph-1.2.0 → descry_codegraph-1.2.1}/src/descry/scip/adapters/_java_compat.init.gradle +0 -0
- {descry_codegraph-1.2.0 → descry_codegraph-1.2.1}/src/descry/scip/adapters/clang.py +0 -0
- {descry_codegraph-1.2.0 → descry_codegraph-1.2.1}/src/descry/scip/adapters/dart.py +0 -0
- {descry_codegraph-1.2.0 → descry_codegraph-1.2.1}/src/descry/scip/adapters/dotnet.py +0 -0
- {descry_codegraph-1.2.0 → descry_codegraph-1.2.1}/src/descry/scip/adapters/go.py +0 -0
- {descry_codegraph-1.2.0 → descry_codegraph-1.2.1}/src/descry/scip/adapters/java.py +0 -0
- {descry_codegraph-1.2.0 → descry_codegraph-1.2.1}/src/descry/scip/adapters/php.py +0 -0
- {descry_codegraph-1.2.0 → descry_codegraph-1.2.1}/src/descry/scip/adapters/python.py +0 -0
- {descry_codegraph-1.2.0 → descry_codegraph-1.2.1}/src/descry/scip/adapters/ruby.py +0 -0
- {descry_codegraph-1.2.0 → descry_codegraph-1.2.1}/src/descry/scip/adapters/rust.py +0 -0
- {descry_codegraph-1.2.0 → descry_codegraph-1.2.1}/src/descry/scip/adapters/typescript.py +0 -0
- {descry_codegraph-1.2.0 → descry_codegraph-1.2.1}/src/descry/scip/cache.py +0 -0
- {descry_codegraph-1.2.0 → descry_codegraph-1.2.1}/src/descry/scip/parser.py +0 -0
- {descry_codegraph-1.2.0 → descry_codegraph-1.2.1}/src/descry/scip/pb2.py +0 -0
- {descry_codegraph-1.2.0 → descry_codegraph-1.2.1}/src/descry/scip/support.py +0 -0
- {descry_codegraph-1.2.0 → descry_codegraph-1.2.1}/src/descry/stdlib/c.json +0 -0
- {descry_codegraph-1.2.0 → descry_codegraph-1.2.1}/src/descry/stdlib/cpp.json +0 -0
- {descry_codegraph-1.2.0 → descry_codegraph-1.2.1}/src/descry/stdlib/dart.json +0 -0
- {descry_codegraph-1.2.0 → descry_codegraph-1.2.1}/src/descry/stdlib/dotnet.json +0 -0
- {descry_codegraph-1.2.0 → descry_codegraph-1.2.1}/src/descry/stdlib/go.json +0 -0
- {descry_codegraph-1.2.0 → descry_codegraph-1.2.1}/src/descry/stdlib/java.json +0 -0
- {descry_codegraph-1.2.0 → descry_codegraph-1.2.1}/src/descry/stdlib/node.json +0 -0
- {descry_codegraph-1.2.0 → descry_codegraph-1.2.1}/src/descry/stdlib/php.json +0 -0
- {descry_codegraph-1.2.0 → descry_codegraph-1.2.1}/src/descry/stdlib/python.json +0 -0
- {descry_codegraph-1.2.0 → descry_codegraph-1.2.1}/src/descry/stdlib/ruby.json +0 -0
- {descry_codegraph-1.2.0 → descry_codegraph-1.2.1}/src/descry/stdlib/rust.json +0 -0
- {descry_codegraph-1.2.0 → descry_codegraph-1.2.1}/src/descry/stdlib/typescript.json +0 -0
- {descry_codegraph-1.2.0 → descry_codegraph-1.2.1}/src/descry/ts_parser.py +0 -0
- {descry_codegraph-1.2.0 → descry_codegraph-1.2.1}/src/descry/web/__init__.py +0 -0
- {descry_codegraph-1.2.0 → descry_codegraph-1.2.1}/src/descry/web/server.py +0 -0
- {descry_codegraph-1.2.0 → descry_codegraph-1.2.1}/src/descry/web/web/index.html +0 -0
- {descry_codegraph-1.2.0 → descry_codegraph-1.2.1}/src/descry/web/web/style.css +0 -0
- {descry_codegraph-1.2.0 → descry_codegraph-1.2.1}/tests/__init__.py +0 -0
- {descry_codegraph-1.2.0 → descry_codegraph-1.2.1}/tests/conftest.py +0 -0
- {descry_codegraph-1.2.0 → descry_codegraph-1.2.1}/tests/eval/README.md +0 -0
- {descry_codegraph-1.2.0 → descry_codegraph-1.2.1}/tests/eval/__init__.py +0 -0
- {descry_codegraph-1.2.0 → descry_codegraph-1.2.1}/tests/eval/compare.py +0 -0
- {descry_codegraph-1.2.0 → descry_codegraph-1.2.1}/tests/eval/corpus.py +0 -0
- {descry_codegraph-1.2.0 → descry_codegraph-1.2.1}/tests/eval/metrics.py +0 -0
- {descry_codegraph-1.2.0 → descry_codegraph-1.2.1}/tests/eval/registry.py +0 -0
- {descry_codegraph-1.2.0 → descry_codegraph-1.2.1}/tests/eval/results/results-descry.json +0 -0
- {descry_codegraph-1.2.0 → descry_codegraph-1.2.1}/tests/eval/results/results-ripgrep.json +0 -0
- {descry_codegraph-1.2.0 → descry_codegraph-1.2.1}/tests/eval/results/search-after.json +0 -0
- {descry_codegraph-1.2.0 → descry_codegraph-1.2.1}/tests/eval/results/search-before.json +0 -0
- {descry_codegraph-1.2.0 → descry_codegraph-1.2.1}/tests/eval/search_eval.py +0 -0
- {descry_codegraph-1.2.0 → descry_codegraph-1.2.1}/tests/eval/search_questions.json +0 -0
- {descry_codegraph-1.2.0 → descry_codegraph-1.2.1}/tests/fixtures/small_graph.json +0 -0
- {descry_codegraph-1.2.0 → descry_codegraph-1.2.1}/tests/ground_truth/c/Makefile +0 -0
- {descry_codegraph-1.2.0 → descry_codegraph-1.2.1}/tests/ground_truth/c/expected.json +0 -0
- {descry_codegraph-1.2.0 → descry_codegraph-1.2.1}/tests/ground_truth/c/io.c +0 -0
- {descry_codegraph-1.2.0 → descry_codegraph-1.2.1}/tests/ground_truth/c/io.h +0 -0
- {descry_codegraph-1.2.0 → descry_codegraph-1.2.1}/tests/ground_truth/c/main.c +0 -0
- {descry_codegraph-1.2.0 → descry_codegraph-1.2.1}/tests/ground_truth/c/order.c +0 -0
- {descry_codegraph-1.2.0 → descry_codegraph-1.2.1}/tests/ground_truth/cpp/Makefile +0 -0
- {descry_codegraph-1.2.0 → descry_codegraph-1.2.1}/tests/ground_truth/cpp/expected.json +0 -0
- {descry_codegraph-1.2.0 → descry_codegraph-1.2.1}/tests/ground_truth/cpp/main.cpp +0 -0
- {descry_codegraph-1.2.0 → descry_codegraph-1.2.1}/tests/ground_truth/cpp/models.hpp +0 -0
- {descry_codegraph-1.2.0 → descry_codegraph-1.2.1}/tests/ground_truth/cpp/reader.hpp +0 -0
- {descry_codegraph-1.2.0 → descry_codegraph-1.2.1}/tests/ground_truth/csharp/Gt.csproj +0 -0
- {descry_codegraph-1.2.0 → descry_codegraph-1.2.1}/tests/ground_truth/csharp/Io.cs +0 -0
- {descry_codegraph-1.2.0 → descry_codegraph-1.2.1}/tests/ground_truth/csharp/Models.cs +0 -0
- {descry_codegraph-1.2.0 → descry_codegraph-1.2.1}/tests/ground_truth/csharp/Program.cs +0 -0
- {descry_codegraph-1.2.0 → descry_codegraph-1.2.1}/tests/ground_truth/csharp/expected.json +0 -0
- {descry_codegraph-1.2.0 → descry_codegraph-1.2.1}/tests/ground_truth/dart/bin/main.dart +0 -0
- {descry_codegraph-1.2.0 → descry_codegraph-1.2.1}/tests/ground_truth/dart/expected.json +0 -0
- {descry_codegraph-1.2.0 → descry_codegraph-1.2.1}/tests/ground_truth/dart/lib/io.dart +0 -0
- {descry_codegraph-1.2.0 → descry_codegraph-1.2.1}/tests/ground_truth/dart/lib/models.dart +0 -0
- {descry_codegraph-1.2.0 → descry_codegraph-1.2.1}/tests/ground_truth/dart/pubspec.yaml +0 -0
- {descry_codegraph-1.2.0 → descry_codegraph-1.2.1}/tests/ground_truth/go/expected.json +0 -0
- {descry_codegraph-1.2.0 → descry_codegraph-1.2.1}/tests/ground_truth/go/go.mod +0 -0
- {descry_codegraph-1.2.0 → descry_codegraph-1.2.1}/tests/ground_truth/go/io.go +0 -0
- {descry_codegraph-1.2.0 → descry_codegraph-1.2.1}/tests/ground_truth/go/main.go +0 -0
- {descry_codegraph-1.2.0 → descry_codegraph-1.2.1}/tests/ground_truth/go/models.go +0 -0
- {descry_codegraph-1.2.0 → descry_codegraph-1.2.1}/tests/ground_truth/java/expected.json +0 -0
- {descry_codegraph-1.2.0 → descry_codegraph-1.2.1}/tests/ground_truth/java/src/gt/Base.java +0 -0
- {descry_codegraph-1.2.0 → descry_codegraph-1.2.1}/tests/ground_truth/java/src/gt/Io.java +0 -0
- {descry_codegraph-1.2.0 → descry_codegraph-1.2.1}/tests/ground_truth/java/src/gt/Main.java +0 -0
- {descry_codegraph-1.2.0 → descry_codegraph-1.2.1}/tests/ground_truth/java/src/gt/Order.java +0 -0
- {descry_codegraph-1.2.0 → descry_codegraph-1.2.1}/tests/ground_truth/java/src/gt/Reader.java +0 -0
- {descry_codegraph-1.2.0 → descry_codegraph-1.2.1}/tests/ground_truth/java/src/gt/User.java +0 -0
- {descry_codegraph-1.2.0 → descry_codegraph-1.2.1}/tests/ground_truth/javascript/expected.json +0 -0
- {descry_codegraph-1.2.0 → descry_codegraph-1.2.1}/tests/ground_truth/javascript/package.json +0 -0
- {descry_codegraph-1.2.0 → descry_codegraph-1.2.1}/tests/ground_truth/javascript/src/io.js +0 -0
- {descry_codegraph-1.2.0 → descry_codegraph-1.2.1}/tests/ground_truth/javascript/src/main.js +0 -0
- {descry_codegraph-1.2.0 → descry_codegraph-1.2.1}/tests/ground_truth/javascript/src/models.js +0 -0
- {descry_codegraph-1.2.0 → descry_codegraph-1.2.1}/tests/ground_truth/php/composer.json +0 -0
- {descry_codegraph-1.2.0 → descry_codegraph-1.2.1}/tests/ground_truth/php/expected.json +0 -0
- {descry_codegraph-1.2.0 → descry_codegraph-1.2.1}/tests/ground_truth/php/src/Io.php +0 -0
- {descry_codegraph-1.2.0 → descry_codegraph-1.2.1}/tests/ground_truth/php/src/Models.php +0 -0
- {descry_codegraph-1.2.0 → descry_codegraph-1.2.1}/tests/ground_truth/php/src/main.php +0 -0
- {descry_codegraph-1.2.0 → descry_codegraph-1.2.1}/tests/ground_truth/python/app/__init__.py +0 -0
- {descry_codegraph-1.2.0 → descry_codegraph-1.2.1}/tests/ground_truth/python/app/io.py +0 -0
- {descry_codegraph-1.2.0 → descry_codegraph-1.2.1}/tests/ground_truth/python/app/main.py +0 -0
- {descry_codegraph-1.2.0 → descry_codegraph-1.2.1}/tests/ground_truth/python/app/models.py +0 -0
- {descry_codegraph-1.2.0 → descry_codegraph-1.2.1}/tests/ground_truth/python/expected.json +0 -0
- {descry_codegraph-1.2.0 → descry_codegraph-1.2.1}/tests/ground_truth/python/pyproject.toml +0 -0
- {descry_codegraph-1.2.0 → descry_codegraph-1.2.1}/tests/ground_truth/ruby/Gemfile +0 -0
- {descry_codegraph-1.2.0 → descry_codegraph-1.2.1}/tests/ground_truth/ruby/expected.json +0 -0
- {descry_codegraph-1.2.0 → descry_codegraph-1.2.1}/tests/ground_truth/ruby/lib/io.rb +0 -0
- {descry_codegraph-1.2.0 → descry_codegraph-1.2.1}/tests/ground_truth/ruby/lib/main.rb +0 -0
- {descry_codegraph-1.2.0 → descry_codegraph-1.2.1}/tests/ground_truth/ruby/lib/models.rb +0 -0
- {descry_codegraph-1.2.0 → descry_codegraph-1.2.1}/tests/ground_truth/rust/Cargo.toml +0 -0
- {descry_codegraph-1.2.0 → descry_codegraph-1.2.1}/tests/ground_truth/rust/expected.json +0 -0
- {descry_codegraph-1.2.0 → descry_codegraph-1.2.1}/tests/ground_truth/rust/src/io.rs +0 -0
- {descry_codegraph-1.2.0 → descry_codegraph-1.2.1}/tests/ground_truth/rust/src/main.rs +0 -0
- {descry_codegraph-1.2.0 → descry_codegraph-1.2.1}/tests/ground_truth/rust/src/models.rs +0 -0
- {descry_codegraph-1.2.0 → descry_codegraph-1.2.1}/tests/ground_truth/typescript/expected.json +0 -0
- {descry_codegraph-1.2.0 → descry_codegraph-1.2.1}/tests/ground_truth/typescript/package.json +0 -0
- {descry_codegraph-1.2.0 → descry_codegraph-1.2.1}/tests/ground_truth/typescript/src/io.ts +0 -0
- {descry_codegraph-1.2.0 → descry_codegraph-1.2.1}/tests/ground_truth/typescript/src/main.ts +0 -0
- {descry_codegraph-1.2.0 → descry_codegraph-1.2.1}/tests/ground_truth/typescript/src/models.ts +0 -0
- {descry_codegraph-1.2.0 → descry_codegraph-1.2.1}/tests/test_backtracking.py +0 -0
- {descry_codegraph-1.2.0 → descry_codegraph-1.2.1}/tests/test_clang_parser.py +0 -0
- {descry_codegraph-1.2.0 → descry_codegraph-1.2.1}/tests/test_cli.py +0 -0
- {descry_codegraph-1.2.0 → descry_codegraph-1.2.1}/tests/test_config.py +0 -0
- {descry_codegraph-1.2.0 → descry_codegraph-1.2.1}/tests/test_cross_lang.py +0 -0
- {descry_codegraph-1.2.0 → descry_codegraph-1.2.1}/tests/test_dart_parser.py +0 -0
- {descry_codegraph-1.2.0 → descry_codegraph-1.2.1}/tests/test_docs.py +0 -0
- {descry_codegraph-1.2.0 → descry_codegraph-1.2.1}/tests/test_dotnet_parser.py +0 -0
- {descry_codegraph-1.2.0 → descry_codegraph-1.2.1}/tests/test_embeddings.py +0 -0
- {descry_codegraph-1.2.0 → descry_codegraph-1.2.1}/tests/test_git_history.py +0 -0
- {descry_codegraph-1.2.0 → descry_codegraph-1.2.1}/tests/test_go_parser.py +0 -0
- {descry_codegraph-1.2.0 → descry_codegraph-1.2.1}/tests/test_ground_truth.py +0 -0
- {descry_codegraph-1.2.0 → descry_codegraph-1.2.1}/tests/test_handlers.py +0 -0
- {descry_codegraph-1.2.0 → descry_codegraph-1.2.1}/tests/test_hardening.py +0 -0
- {descry_codegraph-1.2.0 → descry_codegraph-1.2.1}/tests/test_interfaces.py +0 -0
- {descry_codegraph-1.2.0 → descry_codegraph-1.2.1}/tests/test_java_parser.py +0 -0
- {descry_codegraph-1.2.0 → descry_codegraph-1.2.1}/tests/test_mcp.py +0 -0
- {descry_codegraph-1.2.0 → descry_codegraph-1.2.1}/tests/test_non_regular_files.py +0 -0
- {descry_codegraph-1.2.0 → descry_codegraph-1.2.1}/tests/test_parse_cache.py +0 -0
- {descry_codegraph-1.2.0 → descry_codegraph-1.2.1}/tests/test_php_parser.py +0 -0
- {descry_codegraph-1.2.0 → descry_codegraph-1.2.1}/tests/test_query.py +0 -0
- {descry_codegraph-1.2.0 → descry_codegraph-1.2.1}/tests/test_resolve_cache.py +0 -0
- {descry_codegraph-1.2.0 → descry_codegraph-1.2.1}/tests/test_ruby_parser.py +0 -0
- {descry_codegraph-1.2.0 → descry_codegraph-1.2.1}/tests/test_scip.py +0 -0
- {descry_codegraph-1.2.0 → descry_codegraph-1.2.1}/tests/test_scip_cache.py +0 -0
- {descry_codegraph-1.2.0 → descry_codegraph-1.2.1}/tests/test_scip_clang.py +0 -0
- {descry_codegraph-1.2.0 → descry_codegraph-1.2.1}/tests/test_scip_dart.py +0 -0
- {descry_codegraph-1.2.0 → descry_codegraph-1.2.1}/tests/test_scip_dotnet.py +0 -0
- {descry_codegraph-1.2.0 → descry_codegraph-1.2.1}/tests/test_scip_go.py +0 -0
- {descry_codegraph-1.2.0 → descry_codegraph-1.2.1}/tests/test_scip_java.py +0 -0
- {descry_codegraph-1.2.0 → descry_codegraph-1.2.1}/tests/test_scip_php.py +0 -0
- {descry_codegraph-1.2.0 → descry_codegraph-1.2.1}/tests/test_scip_ruby.py +0 -0
- {descry_codegraph-1.2.0 → descry_codegraph-1.2.1}/tests/test_stdlib.py +0 -0
- {descry_codegraph-1.2.0 → descry_codegraph-1.2.1}/tests/test_web_server.py +0 -0
- {descry_codegraph-1.2.0 → descry_codegraph-1.2.1}/tests/test_written_through.py +0 -0
- {descry_codegraph-1.2.0 → descry_codegraph-1.2.1}/tools/docs/gen_tools.py +0 -0
- {descry_codegraph-1.2.0 → descry_codegraph-1.2.1}/tools/stdlib/README.md +0 -0
- {descry_codegraph-1.2.0 → descry_codegraph-1.2.1}/tools/stdlib/common.py +0 -0
- {descry_codegraph-1.2.0 → descry_codegraph-1.2.1}/tools/stdlib/gen_c.py +0 -0
- {descry_codegraph-1.2.0 → descry_codegraph-1.2.1}/tools/stdlib/gen_cpp.py +0 -0
- {descry_codegraph-1.2.0 → descry_codegraph-1.2.1}/tools/stdlib/gen_dart.py +0 -0
- {descry_codegraph-1.2.0 → descry_codegraph-1.2.1}/tools/stdlib/gen_dotnet.py +0 -0
- {descry_codegraph-1.2.0 → descry_codegraph-1.2.1}/tools/stdlib/gen_go.py +0 -0
- {descry_codegraph-1.2.0 → descry_codegraph-1.2.1}/tools/stdlib/gen_java.py +0 -0
- {descry_codegraph-1.2.0 → descry_codegraph-1.2.1}/tools/stdlib/gen_node.py +0 -0
- {descry_codegraph-1.2.0 → descry_codegraph-1.2.1}/tools/stdlib/gen_php.py +0 -0
- {descry_codegraph-1.2.0 → descry_codegraph-1.2.1}/tools/stdlib/gen_python.py +0 -0
- {descry_codegraph-1.2.0 → descry_codegraph-1.2.1}/tools/stdlib/gen_ruby.py +0 -0
- {descry_codegraph-1.2.0 → descry_codegraph-1.2.1}/tools/stdlib/gen_rust.py +0 -0
- {descry_codegraph-1.2.0 → descry_codegraph-1.2.1}/tools/stdlib/gen_typescript.py +0 -0
|
@@ -23,7 +23,7 @@ just test tests/test_config.py::TestFromToml::test_from_toml_basic # one test
|
|
|
23
23
|
just test -k "cross_lang and not slow" # by expression
|
|
24
24
|
```
|
|
25
25
|
|
|
26
|
-
Python 3.11+ required (enforced by `pyproject.toml`). Pre-commit gate: `just lint && just fmt && just test` all pass (
|
|
26
|
+
Python 3.11+ required (enforced by `pyproject.toml`). Pre-commit gate: `just lint && just fmt && just test` all pass (3382 tests pass; a handful more are skipped where the environment lacks their fixture — a drop is a regression signal).
|
|
27
27
|
|
|
28
28
|
Invoke the tool while developing:
|
|
29
29
|
|
|
@@ -4,6 +4,18 @@ All notable changes to Descry will be documented in this file.
|
|
|
4
4
|
|
|
5
5
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), and this project adheres to [semver](https://semver.org/) from 1.0.0.
|
|
6
6
|
|
|
7
|
+
## [1.2.1] — 2026-11-13
|
|
8
|
+
|
|
9
|
+
### Fixed
|
|
10
|
+
|
|
11
|
+
- Python: an index no longer ends with `RecursionError` on a class statement
|
|
12
|
+
in a method whose base is written through `self` or `cls`
|
|
13
|
+
(`class Extra(self.form_class)`). The base is read in the scope around the
|
|
14
|
+
class statement, as Python evaluates it.
|
|
15
|
+
- Python: an index no longer ends with `TypeError: unhashable type: 'list'`
|
|
16
|
+
where a method assigns an attribute that a base declares as a property
|
|
17
|
+
with a setter and then reads it.
|
|
18
|
+
|
|
7
19
|
## [1.2.0] — 2026-11-04
|
|
8
20
|
|
|
9
21
|
### Added
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.5
|
|
2
2
|
Name: descry-codegraph
|
|
3
|
-
Version: 1.2.
|
|
3
|
+
Version: 1.2.1
|
|
4
4
|
Summary: Codebase knowledge graph: polyglot indexer, semantic search, call-graph analysis
|
|
5
5
|
Project-URL: Homepage, https://github.com/06chaynes/descry
|
|
6
6
|
Project-URL: Repository, https://github.com/06chaynes/descry
|
|
@@ -5823,10 +5823,19 @@ class CallResolver:
|
|
|
5823
5823
|
def _py_std_key(self, name, scope_id):
|
|
5824
5824
|
"""What the Python name ``name``, written in ``scope_id`` or as an
|
|
5825
5825
|
origin path, is called in the standard library's data."""
|
|
5826
|
+
scope_id = name and self._py_written_in(name, scope_id)
|
|
5826
5827
|
value = self._value(name, scope_id, set()) if name else None
|
|
5827
5828
|
library = isinstance(value, tuple) and value[0] == "library"
|
|
5828
5829
|
return value[1] if library else None
|
|
5829
5830
|
|
|
5831
|
+
def _py_written_in(self, name, scope_id):
|
|
5832
|
+
"""Scope the Python name ``name``, written for ``scope_id``, is read
|
|
5833
|
+
in: a class statement's bases are evaluated around it, so `self` and
|
|
5834
|
+
`cls` there are those of the nearest scope that is no class."""
|
|
5835
|
+
if name.split(".")[0] not in ("self", "cls"):
|
|
5836
|
+
return scope_id
|
|
5837
|
+
return next(s for s in self._scopes(scope_id) if not self._is_class(s))
|
|
5838
|
+
|
|
5830
5839
|
def _blanket(self, name):
|
|
5831
5840
|
"""The blanket impls that are for the outside type ``name``: those
|
|
5832
5841
|
whose every bound it may meet. A trait the project declares it meets
|
|
@@ -6508,7 +6517,8 @@ class CallResolver:
|
|
|
6508
6517
|
if mine in self._ancestors(hit.rpartition("::")[0])
|
|
6509
6518
|
)
|
|
6510
6519
|
self._candidates_now = sorted(derived) or None
|
|
6511
|
-
if called or kind != "self":
|
|
6520
|
+
if called or kind != "self" or python:
|
|
6521
|
+
# A Python attribute is kept as the origins of its values.
|
|
6512
6522
|
return None
|
|
6513
6523
|
return self._part(value, f"{self._name(ref)}@{name}", ref)
|
|
6514
6524
|
|
|
@@ -6547,7 +6557,7 @@ class CallResolver:
|
|
|
6547
6557
|
if lang == "python":
|
|
6548
6558
|
# A base class is written as its origin path.
|
|
6549
6559
|
if (scope_id, name) not in self.base_types:
|
|
6550
|
-
value = self._value(name, scope_id, set())
|
|
6560
|
+
value = self._value(name, self._py_written_in(name, scope_id), set())
|
|
6551
6561
|
found = None
|
|
6552
6562
|
if value == _EXTERNAL or value and value[0] == "library":
|
|
6553
6563
|
found = _EXTERNAL
|
|
@@ -3223,6 +3223,60 @@ class TestPythonCallResolution:
|
|
|
3223
3223
|
)
|
|
3224
3224
|
assert "REF:x.use" in _calls(builder, "FILE:m.py::matched")
|
|
3225
3225
|
|
|
3226
|
+
def test_self_in_a_base_is_the_method_s_self(self, tmp_path):
|
|
3227
|
+
"""The bases of a class statement are evaluated around it: in a
|
|
3228
|
+
method, `self.form_class` is read on the method's class."""
|
|
3229
|
+
builder = _index(
|
|
3230
|
+
tmp_path,
|
|
3231
|
+
{
|
|
3232
|
+
"m.py": """
|
|
3233
|
+
class Form:
|
|
3234
|
+
def is_valid(self): ...
|
|
3235
|
+
|
|
3236
|
+
class Case:
|
|
3237
|
+
form_class = Form
|
|
3238
|
+
|
|
3239
|
+
def test(self):
|
|
3240
|
+
class Extra(self.form_class):
|
|
3241
|
+
pass
|
|
3242
|
+
|
|
3243
|
+
Extra().is_valid()
|
|
3244
|
+
"""
|
|
3245
|
+
},
|
|
3246
|
+
)
|
|
3247
|
+
assert _bases(builder, "FILE:m.py::Case::test::Extra") == ["FILE:m.py::Form"]
|
|
3248
|
+
assert _calls(builder, "FILE:m.py::Case::test") == [
|
|
3249
|
+
"FILE:m.py::Case::test::Extra",
|
|
3250
|
+
"FILE:m.py::Form::is_valid",
|
|
3251
|
+
]
|
|
3252
|
+
|
|
3253
|
+
def test_an_attribute_a_base_has_a_property_and_setter_for(self, tmp_path):
|
|
3254
|
+
"""An attribute assigned where a base declares it as a property
|
|
3255
|
+
with a setter is of a value not told."""
|
|
3256
|
+
builder = _index(
|
|
3257
|
+
tmp_path,
|
|
3258
|
+
{
|
|
3259
|
+
"m.py": """
|
|
3260
|
+
class Base:
|
|
3261
|
+
@property
|
|
3262
|
+
def choices(self):
|
|
3263
|
+
return self._choices
|
|
3264
|
+
|
|
3265
|
+
@choices.setter
|
|
3266
|
+
def choices(self, value):
|
|
3267
|
+
self._choices = value
|
|
3268
|
+
|
|
3269
|
+
class Child(Base):
|
|
3270
|
+
def __init__(self):
|
|
3271
|
+
self.choices = []
|
|
3272
|
+
self.choices.extend([1])
|
|
3273
|
+
"""
|
|
3274
|
+
},
|
|
3275
|
+
)
|
|
3276
|
+
assert _calls(builder, "FILE:m.py::Child::__init__") == [
|
|
3277
|
+
"REF:self.choices.extend"
|
|
3278
|
+
]
|
|
3279
|
+
|
|
3226
3280
|
|
|
3227
3281
|
class TestRustCallResolution:
|
|
3228
3282
|
def test_a_method_two_traits_give_a_type_is_the_trait_in_scope_s(self, tmp_path):
|
|
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
|
{descry_codegraph-1.2.0 → descry_codegraph-1.2.1}/claude-skill/descry/references/cli-reference.md
RENAMED
|
File without changes
|
{descry_codegraph-1.2.0 → descry_codegraph-1.2.1}/claude-skill/descry/references/mcp-tools.md
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
|
{descry_codegraph-1.2.0 → descry_codegraph-1.2.1}/src/descry/scip/adapters/_empty_environment.json
RENAMED
|
File without changes
|
{descry_codegraph-1.2.0 → descry_codegraph-1.2.1}/src/descry/scip/adapters/_java_compat.init.gradle
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
|
|
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
|
{descry_codegraph-1.2.0 → descry_codegraph-1.2.1}/tests/ground_truth/java/src/gt/Reader.java
RENAMED
|
File without changes
|
|
File without changes
|
{descry_codegraph-1.2.0 → descry_codegraph-1.2.1}/tests/ground_truth/javascript/expected.json
RENAMED
|
File without changes
|
{descry_codegraph-1.2.0 → descry_codegraph-1.2.1}/tests/ground_truth/javascript/package.json
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{descry_codegraph-1.2.0 → descry_codegraph-1.2.1}/tests/ground_truth/javascript/src/models.js
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
|
{descry_codegraph-1.2.0 → descry_codegraph-1.2.1}/tests/ground_truth/typescript/expected.json
RENAMED
|
File without changes
|
{descry_codegraph-1.2.0 → descry_codegraph-1.2.1}/tests/ground_truth/typescript/package.json
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{descry_codegraph-1.2.0 → descry_codegraph-1.2.1}/tests/ground_truth/typescript/src/models.ts
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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|