entrygraph 0.1.40__tar.gz → 0.1.41__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.
- {entrygraph-0.1.40 → entrygraph-0.1.41}/PKG-INFO +1 -1
- {entrygraph-0.1.40 → entrygraph-0.1.41}/src/entrygraph/_version.py +2 -2
- {entrygraph-0.1.40 → entrygraph-0.1.41}/src/entrygraph/detect/entrypoints/golang.py +48 -0
- {entrygraph-0.1.40 → entrygraph-0.1.41}/src/entrygraph/kinds.py +1 -0
- {entrygraph-0.1.40 → entrygraph-0.1.41}/tests/test_entrypoints_go.py +47 -0
- {entrygraph-0.1.40 → entrygraph-0.1.41}/.github/workflows/ci.yml +0 -0
- {entrygraph-0.1.40 → entrygraph-0.1.41}/.github/workflows/release.yml +0 -0
- {entrygraph-0.1.40 → entrygraph-0.1.41}/.gitignore +0 -0
- {entrygraph-0.1.40 → entrygraph-0.1.41}/LICENSE +0 -0
- {entrygraph-0.1.40 → entrygraph-0.1.41}/README.md +0 -0
- {entrygraph-0.1.40 → entrygraph-0.1.41}/RELEASING.md +0 -0
- {entrygraph-0.1.40 → entrygraph-0.1.41}/pyproject.toml +0 -0
- {entrygraph-0.1.40 → entrygraph-0.1.41}/src/entrygraph/__init__.py +0 -0
- {entrygraph-0.1.40 → entrygraph-0.1.41}/src/entrygraph/__main__.py +0 -0
- {entrygraph-0.1.40 → entrygraph-0.1.41}/src/entrygraph/api.py +0 -0
- {entrygraph-0.1.40 → entrygraph-0.1.41}/src/entrygraph/cli/__init__.py +0 -0
- {entrygraph-0.1.40 → entrygraph-0.1.41}/src/entrygraph/cli/main.py +0 -0
- {entrygraph-0.1.40 → entrygraph-0.1.41}/src/entrygraph/cli/render.py +0 -0
- {entrygraph-0.1.40 → entrygraph-0.1.41}/src/entrygraph/data/sinks/csharp.toml +0 -0
- {entrygraph-0.1.40 → entrygraph-0.1.41}/src/entrygraph/data/sinks/go.toml +0 -0
- {entrygraph-0.1.40 → entrygraph-0.1.41}/src/entrygraph/data/sinks/java.toml +0 -0
- {entrygraph-0.1.40 → entrygraph-0.1.41}/src/entrygraph/data/sinks/javascript.toml +0 -0
- {entrygraph-0.1.40 → entrygraph-0.1.41}/src/entrygraph/data/sinks/lib_javascript.toml +0 -0
- {entrygraph-0.1.40 → entrygraph-0.1.41}/src/entrygraph/data/sinks/lib_python.toml +0 -0
- {entrygraph-0.1.40 → entrygraph-0.1.41}/src/entrygraph/data/sinks/php.toml +0 -0
- {entrygraph-0.1.40 → entrygraph-0.1.41}/src/entrygraph/data/sinks/python.toml +0 -0
- {entrygraph-0.1.40 → entrygraph-0.1.41}/src/entrygraph/data/sinks/ruby.toml +0 -0
- {entrygraph-0.1.40 → entrygraph-0.1.41}/src/entrygraph/data/sinks/rust.toml +0 -0
- {entrygraph-0.1.40 → entrygraph-0.1.41}/src/entrygraph/db/__init__.py +0 -0
- {entrygraph-0.1.40 → entrygraph-0.1.41}/src/entrygraph/db/engine.py +0 -0
- {entrygraph-0.1.40 → entrygraph-0.1.41}/src/entrygraph/db/meta.py +0 -0
- {entrygraph-0.1.40 → entrygraph-0.1.41}/src/entrygraph/db/models.py +0 -0
- {entrygraph-0.1.40 → entrygraph-0.1.41}/src/entrygraph/db/queries.py +0 -0
- {entrygraph-0.1.40 → entrygraph-0.1.41}/src/entrygraph/detect/__init__.py +0 -0
- {entrygraph-0.1.40 → entrygraph-0.1.41}/src/entrygraph/detect/entrypoints/__init__.py +0 -0
- {entrygraph-0.1.40 → entrygraph-0.1.41}/src/entrygraph/detect/entrypoints/base.py +0 -0
- {entrygraph-0.1.40 → entrygraph-0.1.41}/src/entrygraph/detect/entrypoints/configs.py +0 -0
- {entrygraph-0.1.40 → entrygraph-0.1.41}/src/entrygraph/detect/entrypoints/csharp.py +0 -0
- {entrygraph-0.1.40 → entrygraph-0.1.41}/src/entrygraph/detect/entrypoints/java.py +0 -0
- {entrygraph-0.1.40 → entrygraph-0.1.41}/src/entrygraph/detect/entrypoints/javascript.py +0 -0
- {entrygraph-0.1.40 → entrygraph-0.1.41}/src/entrygraph/detect/entrypoints/php.py +0 -0
- {entrygraph-0.1.40 → entrygraph-0.1.41}/src/entrygraph/detect/entrypoints/python.py +0 -0
- {entrygraph-0.1.40 → entrygraph-0.1.41}/src/entrygraph/detect/entrypoints/ruby.py +0 -0
- {entrygraph-0.1.40 → entrygraph-0.1.41}/src/entrygraph/detect/entrypoints/rust.py +0 -0
- {entrygraph-0.1.40 → entrygraph-0.1.41}/src/entrygraph/detect/frameworks.py +0 -0
- {entrygraph-0.1.40 → entrygraph-0.1.41}/src/entrygraph/detect/manifests.py +0 -0
- {entrygraph-0.1.40 → entrygraph-0.1.41}/src/entrygraph/detect/taint.py +0 -0
- {entrygraph-0.1.40 → entrygraph-0.1.41}/src/entrygraph/errors.py +0 -0
- {entrygraph-0.1.40 → entrygraph-0.1.41}/src/entrygraph/extract/__init__.py +0 -0
- {entrygraph-0.1.40 → entrygraph-0.1.41}/src/entrygraph/extract/base.py +0 -0
- {entrygraph-0.1.40 → entrygraph-0.1.41}/src/entrygraph/extract/csharp.py +0 -0
- {entrygraph-0.1.40 → entrygraph-0.1.41}/src/entrygraph/extract/golang.py +0 -0
- {entrygraph-0.1.40 → entrygraph-0.1.41}/src/entrygraph/extract/ir.py +0 -0
- {entrygraph-0.1.40 → entrygraph-0.1.41}/src/entrygraph/extract/java.py +0 -0
- {entrygraph-0.1.40 → entrygraph-0.1.41}/src/entrygraph/extract/javascript.py +0 -0
- {entrygraph-0.1.40 → entrygraph-0.1.41}/src/entrygraph/extract/php.py +0 -0
- {entrygraph-0.1.40 → entrygraph-0.1.41}/src/entrygraph/extract/python.py +0 -0
- {entrygraph-0.1.40 → entrygraph-0.1.41}/src/entrygraph/extract/registry.py +0 -0
- {entrygraph-0.1.40 → entrygraph-0.1.41}/src/entrygraph/extract/ruby.py +0 -0
- {entrygraph-0.1.40 → entrygraph-0.1.41}/src/entrygraph/extract/rust.py +0 -0
- {entrygraph-0.1.40 → entrygraph-0.1.41}/src/entrygraph/fs/__init__.py +0 -0
- {entrygraph-0.1.40 → entrygraph-0.1.41}/src/entrygraph/fs/hashing.py +0 -0
- {entrygraph-0.1.40 → entrygraph-0.1.41}/src/entrygraph/fs/lang.py +0 -0
- {entrygraph-0.1.40 → entrygraph-0.1.41}/src/entrygraph/fs/walker.py +0 -0
- {entrygraph-0.1.40 → entrygraph-0.1.41}/src/entrygraph/graph/__init__.py +0 -0
- {entrygraph-0.1.40 → entrygraph-0.1.41}/src/entrygraph/graph/adjacency.py +0 -0
- {entrygraph-0.1.40 → entrygraph-0.1.41}/src/entrygraph/graph/cte.py +0 -0
- {entrygraph-0.1.40 → entrygraph-0.1.41}/src/entrygraph/graph/scoring.py +0 -0
- {entrygraph-0.1.40 → entrygraph-0.1.41}/src/entrygraph/parsing/__init__.py +0 -0
- {entrygraph-0.1.40 → entrygraph-0.1.41}/src/entrygraph/parsing/parsers.py +0 -0
- {entrygraph-0.1.40 → entrygraph-0.1.41}/src/entrygraph/parsing/queries.py +0 -0
- {entrygraph-0.1.40 → entrygraph-0.1.41}/src/entrygraph/pipeline/__init__.py +0 -0
- {entrygraph-0.1.40 → entrygraph-0.1.41}/src/entrygraph/pipeline/scanner.py +0 -0
- {entrygraph-0.1.40 → entrygraph-0.1.41}/src/entrygraph/pipeline/worker.py +0 -0
- {entrygraph-0.1.40 → entrygraph-0.1.41}/src/entrygraph/pipeline/writer.py +0 -0
- {entrygraph-0.1.40 → entrygraph-0.1.41}/src/entrygraph/py.typed +0 -0
- {entrygraph-0.1.40 → entrygraph-0.1.41}/src/entrygraph/queries/csharp/calls.scm +0 -0
- {entrygraph-0.1.40 → entrygraph-0.1.41}/src/entrygraph/queries/csharp/definitions.scm +0 -0
- {entrygraph-0.1.40 → entrygraph-0.1.41}/src/entrygraph/queries/csharp/imports.scm +0 -0
- {entrygraph-0.1.40 → entrygraph-0.1.41}/src/entrygraph/queries/go/calls.scm +0 -0
- {entrygraph-0.1.40 → entrygraph-0.1.41}/src/entrygraph/queries/go/definitions.scm +0 -0
- {entrygraph-0.1.40 → entrygraph-0.1.41}/src/entrygraph/queries/go/imports.scm +0 -0
- {entrygraph-0.1.40 → entrygraph-0.1.41}/src/entrygraph/queries/java/calls.scm +0 -0
- {entrygraph-0.1.40 → entrygraph-0.1.41}/src/entrygraph/queries/java/definitions.scm +0 -0
- {entrygraph-0.1.40 → entrygraph-0.1.41}/src/entrygraph/queries/java/imports.scm +0 -0
- {entrygraph-0.1.40 → entrygraph-0.1.41}/src/entrygraph/queries/javascript/calls.scm +0 -0
- {entrygraph-0.1.40 → entrygraph-0.1.41}/src/entrygraph/queries/javascript/definitions.scm +0 -0
- {entrygraph-0.1.40 → entrygraph-0.1.41}/src/entrygraph/queries/javascript/imports.scm +0 -0
- {entrygraph-0.1.40 → entrygraph-0.1.41}/src/entrygraph/queries/php/calls.scm +0 -0
- {entrygraph-0.1.40 → entrygraph-0.1.41}/src/entrygraph/queries/php/definitions.scm +0 -0
- {entrygraph-0.1.40 → entrygraph-0.1.41}/src/entrygraph/queries/php/imports.scm +0 -0
- {entrygraph-0.1.40 → entrygraph-0.1.41}/src/entrygraph/queries/python/calls.scm +0 -0
- {entrygraph-0.1.40 → entrygraph-0.1.41}/src/entrygraph/queries/python/definitions.scm +0 -0
- {entrygraph-0.1.40 → entrygraph-0.1.41}/src/entrygraph/queries/python/imports.scm +0 -0
- {entrygraph-0.1.40 → entrygraph-0.1.41}/src/entrygraph/queries/ruby/calls.scm +0 -0
- {entrygraph-0.1.40 → entrygraph-0.1.41}/src/entrygraph/queries/ruby/definitions.scm +0 -0
- {entrygraph-0.1.40 → entrygraph-0.1.41}/src/entrygraph/queries/ruby/imports.scm +0 -0
- {entrygraph-0.1.40 → entrygraph-0.1.41}/src/entrygraph/queries/rust/calls.scm +0 -0
- {entrygraph-0.1.40 → entrygraph-0.1.41}/src/entrygraph/queries/rust/definitions.scm +0 -0
- {entrygraph-0.1.40 → entrygraph-0.1.41}/src/entrygraph/queries/rust/imports.scm +0 -0
- {entrygraph-0.1.40 → entrygraph-0.1.41}/src/entrygraph/resolve/__init__.py +0 -0
- {entrygraph-0.1.40 → entrygraph-0.1.41}/src/entrygraph/resolve/externals.py +0 -0
- {entrygraph-0.1.40 → entrygraph-0.1.41}/src/entrygraph/resolve/hierarchy.py +0 -0
- {entrygraph-0.1.40 → entrygraph-0.1.41}/src/entrygraph/resolve/resolver.py +0 -0
- {entrygraph-0.1.40 → entrygraph-0.1.41}/src/entrygraph/resolve/symbol_table.py +0 -0
- {entrygraph-0.1.40 → entrygraph-0.1.41}/src/entrygraph/results.py +0 -0
- {entrygraph-0.1.40 → entrygraph-0.1.41}/tests/conftest.py +0 -0
- {entrygraph-0.1.40 → entrygraph-0.1.41}/tests/fixtures/csharp/aspnet_app/Controllers/ReportsController.cs +0 -0
- {entrygraph-0.1.40 → entrygraph-0.1.41}/tests/fixtures/csharp/aspnet_app/Program.cs +0 -0
- {entrygraph-0.1.40 → entrygraph-0.1.41}/tests/fixtures/csharp/aspnet_app/Services/ReportService.cs +0 -0
- {entrygraph-0.1.40 → entrygraph-0.1.41}/tests/fixtures/csharp/aspnet_app/app.csproj +0 -0
- {entrygraph-0.1.40 → entrygraph-0.1.41}/tests/fixtures/csharp/minimalapi_app/Program.cs +0 -0
- {entrygraph-0.1.40 → entrygraph-0.1.41}/tests/fixtures/csharp/minimalapi_app/app.csproj +0 -0
- {entrygraph-0.1.40 → entrygraph-0.1.41}/tests/fixtures/go/gin_app/go.mod +0 -0
- {entrygraph-0.1.40 → entrygraph-0.1.41}/tests/fixtures/go/gin_app/main.go +0 -0
- {entrygraph-0.1.40 → entrygraph-0.1.41}/tests/fixtures/go/gin_app/service.go +0 -0
- {entrygraph-0.1.40 → entrygraph-0.1.41}/tests/fixtures/go/nethttp_app/go.mod +0 -0
- {entrygraph-0.1.40 → entrygraph-0.1.41}/tests/fixtures/go/nethttp_app/main.go +0 -0
- {entrygraph-0.1.40 → entrygraph-0.1.41}/tests/fixtures/java/methodref_app/pom.xml +0 -0
- {entrygraph-0.1.40 → entrygraph-0.1.41}/tests/fixtures/java/methodref_app/src/main/java/com/example/App.java +0 -0
- {entrygraph-0.1.40 → entrygraph-0.1.41}/tests/fixtures/java/spring_app/pom.xml +0 -0
- {entrygraph-0.1.40 → entrygraph-0.1.41}/tests/fixtures/java/spring_app/src/main/java/com/example/Application.java +0 -0
- {entrygraph-0.1.40 → entrygraph-0.1.41}/tests/fixtures/java/spring_app/src/main/java/com/example/ReportRunner.java +0 -0
- {entrygraph-0.1.40 → entrygraph-0.1.41}/tests/fixtures/java/spring_app/src/main/java/com/example/ReportService.java +0 -0
- {entrygraph-0.1.40 → entrygraph-0.1.41}/tests/fixtures/java/spring_app/src/main/java/com/example/UserController.java +0 -0
- {entrygraph-0.1.40 → entrygraph-0.1.41}/tests/fixtures/javascript/commonjs_app/server.js +0 -0
- {entrygraph-0.1.40 → entrygraph-0.1.41}/tests/fixtures/javascript/express_app/package.json +0 -0
- {entrygraph-0.1.40 → entrygraph-0.1.41}/tests/fixtures/javascript/express_app/src/routes.js +0 -0
- {entrygraph-0.1.40 → entrygraph-0.1.41}/tests/fixtures/javascript/express_app/src/services.js +0 -0
- {entrygraph-0.1.40 → entrygraph-0.1.41}/tests/fixtures/php/laravel_app/app/Http/Controllers/ReportController.php +0 -0
- {entrygraph-0.1.40 → entrygraph-0.1.41}/tests/fixtures/php/laravel_app/artisan +0 -0
- {entrygraph-0.1.40 → entrygraph-0.1.41}/tests/fixtures/php/laravel_app/composer.json +0 -0
- {entrygraph-0.1.40 → entrygraph-0.1.41}/tests/fixtures/php/laravel_app/routes/web.php +0 -0
- {entrygraph-0.1.40 → entrygraph-0.1.41}/tests/fixtures/python/chained_sinks/app.py +0 -0
- {entrygraph-0.1.40 → entrygraph-0.1.41}/tests/fixtures/python/flask_app/app/__init__.py +0 -0
- {entrygraph-0.1.40 → entrygraph-0.1.41}/tests/fixtures/python/flask_app/app/db.py +0 -0
- {entrygraph-0.1.40 → entrygraph-0.1.41}/tests/fixtures/python/flask_app/app/routes.py +0 -0
- {entrygraph-0.1.40 → entrygraph-0.1.41}/tests/fixtures/python/flask_app/app/services.py +0 -0
- {entrygraph-0.1.40 → entrygraph-0.1.41}/tests/fixtures/python/flask_app/cli.py +0 -0
- {entrygraph-0.1.40 → entrygraph-0.1.41}/tests/fixtures/python/flask_app/requirements.txt +0 -0
- {entrygraph-0.1.40 → entrygraph-0.1.41}/tests/fixtures/python/fuzzy_sink/app.py +0 -0
- {entrygraph-0.1.40 → entrygraph-0.1.41}/tests/fixtures/python/heal_fidelity/caller.py +0 -0
- {entrygraph-0.1.40 → entrygraph-0.1.41}/tests/fixtures/python/heal_fidelity/worker.py +0 -0
- {entrygraph-0.1.40 → entrygraph-0.1.41}/tests/fixtures/python/may_continue/app.py +0 -0
- {entrygraph-0.1.40 → entrygraph-0.1.41}/tests/fixtures/python/sanitizer/app.py +0 -0
- {entrygraph-0.1.40 → entrygraph-0.1.41}/tests/fixtures/python/taint_source/handler.py +0 -0
- {entrygraph-0.1.40 → entrygraph-0.1.41}/tests/fixtures/ruby/sinatra_app/Gemfile +0 -0
- {entrygraph-0.1.40 → entrygraph-0.1.41}/tests/fixtures/ruby/sinatra_app/app.rb +0 -0
- {entrygraph-0.1.40 → entrygraph-0.1.41}/tests/fixtures/ruby/sinatra_app/services/runner.rb +0 -0
- {entrygraph-0.1.40 → entrygraph-0.1.41}/tests/fixtures/rust/axum_app/Cargo.toml +0 -0
- {entrygraph-0.1.40 → entrygraph-0.1.41}/tests/fixtures/rust/axum_app/src/handlers.rs +0 -0
- {entrygraph-0.1.40 → entrygraph-0.1.41}/tests/fixtures/rust/axum_app/src/main.rs +0 -0
- {entrygraph-0.1.40 → entrygraph-0.1.41}/tests/fixtures/rust/axum_callback_app/Cargo.toml +0 -0
- {entrygraph-0.1.40 → entrygraph-0.1.41}/tests/fixtures/rust/axum_callback_app/src/main.rs +0 -0
- {entrygraph-0.1.40 → entrygraph-0.1.41}/tests/fixtures/rust/scoped_sink_app/Cargo.toml +0 -0
- {entrygraph-0.1.40 → entrygraph-0.1.41}/tests/fixtures/rust/scoped_sink_app/src/main.rs +0 -0
- {entrygraph-0.1.40 → entrygraph-0.1.41}/tests/test_api.py +0 -0
- {entrygraph-0.1.40 → entrygraph-0.1.41}/tests/test_cli.py +0 -0
- {entrygraph-0.1.40 → entrygraph-0.1.41}/tests/test_commonjs.py +0 -0
- {entrygraph-0.1.40 → entrygraph-0.1.41}/tests/test_csharp_callbacks.py +0 -0
- {entrygraph-0.1.40 → entrygraph-0.1.41}/tests/test_cte_bounds.py +0 -0
- {entrygraph-0.1.40 → entrygraph-0.1.41}/tests/test_engine_pragmas.py +0 -0
- {entrygraph-0.1.40 → entrygraph-0.1.41}/tests/test_entrypoint_expansion.py +0 -0
- {entrygraph-0.1.40 → entrygraph-0.1.41}/tests/test_entrypoints.py +0 -0
- {entrygraph-0.1.40 → entrygraph-0.1.41}/tests/test_entrypoints_javascript.py +0 -0
- {entrygraph-0.1.40 → entrygraph-0.1.41}/tests/test_extract_csharp.py +0 -0
- {entrygraph-0.1.40 → entrygraph-0.1.41}/tests/test_extract_go.py +0 -0
- {entrygraph-0.1.40 → entrygraph-0.1.41}/tests/test_extract_java.py +0 -0
- {entrygraph-0.1.40 → entrygraph-0.1.41}/tests/test_extract_javascript.py +0 -0
- {entrygraph-0.1.40 → entrygraph-0.1.41}/tests/test_extract_php.py +0 -0
- {entrygraph-0.1.40 → entrygraph-0.1.41}/tests/test_extract_python.py +0 -0
- {entrygraph-0.1.40 → entrygraph-0.1.41}/tests/test_extract_ruby.py +0 -0
- {entrygraph-0.1.40 → entrygraph-0.1.41}/tests/test_extract_rust.py +0 -0
- {entrygraph-0.1.40 → entrygraph-0.1.41}/tests/test_frameworks.py +0 -0
- {entrygraph-0.1.40 → entrygraph-0.1.41}/tests/test_fuzzy_sink.py +0 -0
- {entrygraph-0.1.40 → entrygraph-0.1.41}/tests/test_go_callbacks.py +0 -0
- {entrygraph-0.1.40 → entrygraph-0.1.41}/tests/test_hardening.py +0 -0
- {entrygraph-0.1.40 → entrygraph-0.1.41}/tests/test_heal_fidelity.py +0 -0
- {entrygraph-0.1.40 → entrygraph-0.1.41}/tests/test_incremental.py +0 -0
- {entrygraph-0.1.40 → entrygraph-0.1.41}/tests/test_indexer.py +0 -0
- {entrygraph-0.1.40 → entrygraph-0.1.41}/tests/test_java_callbacks.py +0 -0
- {entrygraph-0.1.40 → entrygraph-0.1.41}/tests/test_lang.py +0 -0
- {entrygraph-0.1.40 → entrygraph-0.1.41}/tests/test_manifests.py +0 -0
- {entrygraph-0.1.40 → entrygraph-0.1.41}/tests/test_may_continue.py +0 -0
- {entrygraph-0.1.40 → entrygraph-0.1.41}/tests/test_models.py +0 -0
- {entrygraph-0.1.40 → entrygraph-0.1.41}/tests/test_pool.py +0 -0
- {entrygraph-0.1.40 → entrygraph-0.1.41}/tests/test_reachability.py +0 -0
- {entrygraph-0.1.40 → entrygraph-0.1.41}/tests/test_registry_cache.py +0 -0
- {entrygraph-0.1.40 → entrygraph-0.1.41}/tests/test_render.py +0 -0
- {entrygraph-0.1.40 → entrygraph-0.1.41}/tests/test_resolver.py +0 -0
- {entrygraph-0.1.40 → entrygraph-0.1.41}/tests/test_rust_callbacks.py +0 -0
- {entrygraph-0.1.40 → entrygraph-0.1.41}/tests/test_rust_scoped_sinks.py +0 -0
- {entrygraph-0.1.40 → entrygraph-0.1.41}/tests/test_sanitizer_languages.py +0 -0
- {entrygraph-0.1.40 → entrygraph-0.1.41}/tests/test_scoring.py +0 -0
- {entrygraph-0.1.40 → entrygraph-0.1.41}/tests/test_sink_catalog.py +0 -0
- {entrygraph-0.1.40 → entrygraph-0.1.41}/tests/test_taint.py +0 -0
- {entrygraph-0.1.40 → entrygraph-0.1.41}/tests/test_taint_sanitizers.py +0 -0
- {entrygraph-0.1.40 → entrygraph-0.1.41}/tests/test_taint_sources.py +0 -0
- {entrygraph-0.1.40 → entrygraph-0.1.41}/tests/test_walker.py +0 -0
- {entrygraph-0.1.40 → entrygraph-0.1.41}/uv.lock +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: entrygraph
|
|
3
|
-
Version: 0.1.
|
|
3
|
+
Version: 0.1.41
|
|
4
4
|
Summary: Language-agnostic code graph: query symbols, entrypoints, and source-to-sink call paths from a SQLite index
|
|
5
5
|
Project-URL: Repository, https://github.com/brettbergin/entrygraph
|
|
6
6
|
Author-email: Brett Bergin <brettberginbc@yahoo.com>
|
|
@@ -18,7 +18,7 @@ version_tuple: tuple[int | str, ...]
|
|
|
18
18
|
commit_id: str | None
|
|
19
19
|
__commit_id__: str | None
|
|
20
20
|
|
|
21
|
-
__version__ = version = '0.1.
|
|
22
|
-
__version_tuple__ = version_tuple = (0, 1,
|
|
21
|
+
__version__ = version = '0.1.41'
|
|
22
|
+
__version_tuple__ = version_tuple = (0, 1, 41)
|
|
23
23
|
|
|
24
24
|
__commit_id__ = commit_id = None
|
|
@@ -236,6 +236,51 @@ def _cobra_commands(x: FileExtraction) -> list[EntrypointHint]:
|
|
|
236
236
|
return hints
|
|
237
237
|
|
|
238
238
|
|
|
239
|
+
# gRPC service registration: `pb.RegisterFooServer(grpcServer, impl)`. The `Server`
|
|
240
|
+
# suffix anchor keeps grpc-gateway's `RegisterFooHandler` / `...HandlerFromEndpoint`
|
|
241
|
+
# out. Definitions (`func RegisterFooServer(...)`) are not call references, so only
|
|
242
|
+
# real registration call sites match.
|
|
243
|
+
_GRPC_REGISTER = re.compile(r"^Register(?P<service>[A-Za-z0-9]+)Server$")
|
|
244
|
+
|
|
245
|
+
|
|
246
|
+
def _grpc_services(x: FileExtraction) -> list[EntrypointHint]:
|
|
247
|
+
"""Mark each registered gRPC service as an RPC entrypoint (one per service).
|
|
248
|
+
|
|
249
|
+
This is a service-level marker: the implementation (arg 2) is almost always a
|
|
250
|
+
field/local var (`t.Ingester`, `frontendV1`) whose concrete type the IR can't
|
|
251
|
+
infer, so the entrypoint anchors on the registration file's module rather than
|
|
252
|
+
expanding to the impl's individual RPC methods. The service name rides in
|
|
253
|
+
`route` — the Entrypoint row has no name column, and it keeps distinct services
|
|
254
|
+
from collapsing in dedup (they all share `handler_qualified_name=None`).
|
|
255
|
+
"""
|
|
256
|
+
if x.path.endswith("_test.go"):
|
|
257
|
+
return [] # test harnesses spin up real services; not production surface (#33)
|
|
258
|
+
hints = []
|
|
259
|
+
seen: set[str] = set()
|
|
260
|
+
for ref in x.references:
|
|
261
|
+
if ref.kind != "call":
|
|
262
|
+
continue
|
|
263
|
+
m = _GRPC_REGISTER.match(ref.callee_name)
|
|
264
|
+
if m is None:
|
|
265
|
+
continue
|
|
266
|
+
service = m.group("service")
|
|
267
|
+
if service in seen:
|
|
268
|
+
continue
|
|
269
|
+
seen.add(service)
|
|
270
|
+
hints.append(
|
|
271
|
+
EntrypointHint(
|
|
272
|
+
rule_id="go.grpc.service",
|
|
273
|
+
kind=EntrypointKind.RPC_HANDLER,
|
|
274
|
+
handler_qualified_name=None,
|
|
275
|
+
route=f"/{service}",
|
|
276
|
+
name=service,
|
|
277
|
+
framework="grpc-go",
|
|
278
|
+
span=ref.span,
|
|
279
|
+
)
|
|
280
|
+
)
|
|
281
|
+
return hints
|
|
282
|
+
|
|
283
|
+
|
|
239
284
|
register(EntrypointRule("go.core.main", "go", None, EntrypointKind.MAIN, _go_main))
|
|
240
285
|
register(
|
|
241
286
|
EntrypointRule("go.nethttp.route", "go", "net/http", EntrypointKind.HTTP_ROUTE, _nethttp_routes)
|
|
@@ -253,3 +298,6 @@ register(
|
|
|
253
298
|
register(
|
|
254
299
|
EntrypointRule("go.cobra.command", "go", "cobra", EntrypointKind.CLI_COMMAND, _cobra_commands)
|
|
255
300
|
)
|
|
301
|
+
register(
|
|
302
|
+
EntrypointRule("go.grpc.service", "go", "grpc-go", EntrypointKind.RPC_HANDLER, _grpc_services)
|
|
303
|
+
)
|
|
@@ -40,6 +40,7 @@ class EntrypointKind(enum.Enum):
|
|
|
40
40
|
LAMBDA_HANDLER = "lambda_handler"
|
|
41
41
|
EVENT_HANDLER = "event_handler"
|
|
42
42
|
MIDDLEWARE = "middleware" # request/response interceptor (before_request, app.use, ...)
|
|
43
|
+
RPC_HANDLER = "rpc_handler" # gRPC / RPC service registration (RegisterXxxServer)
|
|
43
44
|
|
|
44
45
|
|
|
45
46
|
class Confidence(enum.IntEnum):
|
|
@@ -71,3 +71,50 @@ def test_chi_mount_prefix_not_composed_across_functions():
|
|
|
71
71
|
]
|
|
72
72
|
got = {(h.http_methods[0], h.route) for h in _chi_rule().match(_go_ext(refs))}
|
|
73
73
|
assert got == {("GET", "/health")} # no phantom /api prefix
|
|
74
|
+
|
|
75
|
+
|
|
76
|
+
def _grpc_rule():
|
|
77
|
+
return {r.id: r for r in rules_for("go", {"grpc-go"})}["go.grpc.service"]
|
|
78
|
+
|
|
79
|
+
|
|
80
|
+
def test_grpc_service_registration_detected():
|
|
81
|
+
# pb.RegisterPusherServer(grpcServer, t.Ingester) -> one RPC entrypoint whose
|
|
82
|
+
# service name rides in `route` (no name column; keeps services distinct in
|
|
83
|
+
# dedup since they all share handler=None). Impl type is unresolvable, so the
|
|
84
|
+
# handler is left unbound (scanner anchors it on the module) (#37).
|
|
85
|
+
refs = [
|
|
86
|
+
_call("RegisterPusherServer", "logproto", "(t.Server.GRPC, t.Ingester)"),
|
|
87
|
+
_call("RegisterQuerierServer", "logproto", "(t.Server.GRPC, t.Ingester)", start=2),
|
|
88
|
+
]
|
|
89
|
+
hints = _grpc_rule().match(_go_ext(refs, path="pkg/loki/modules.go"))
|
|
90
|
+
got = {(h.route, h.name, h.framework, h.handler_qualified_name) for h in hints}
|
|
91
|
+
assert got == {
|
|
92
|
+
("/Pusher", "Pusher", "grpc-go", None),
|
|
93
|
+
("/Querier", "Querier", "grpc-go", None),
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
|
|
97
|
+
def test_grpc_same_service_deduped_within_file():
|
|
98
|
+
refs = [
|
|
99
|
+
_call("RegisterPusherServer", "logproto", "(s, t.distributor)"),
|
|
100
|
+
_call("RegisterPusherServer", "logproto", "(s, t.Ingester)", start=2),
|
|
101
|
+
]
|
|
102
|
+
hints = _grpc_rule().match(_go_ext(refs, path="pkg/loki/modules.go"))
|
|
103
|
+
assert [h.route for h in hints] == ["/Pusher"]
|
|
104
|
+
|
|
105
|
+
|
|
106
|
+
def test_grpc_gateway_and_non_server_calls_ignored():
|
|
107
|
+
# grpc-gateway registrars end in `Handler`/`HandlerFromEndpoint`, not `Server`,
|
|
108
|
+
# and must not be treated as service registrations.
|
|
109
|
+
refs = [
|
|
110
|
+
_call("RegisterPusherHandler", "gw", "(ctx, mux, conn)"),
|
|
111
|
+
_call("RegisterPusherHandlerFromEndpoint", "gw", "(ctx, mux, addr, opts)", start=2),
|
|
112
|
+
_call("Serve", "grpcServer", "(lis)", start=3),
|
|
113
|
+
]
|
|
114
|
+
assert _grpc_rule().match(_go_ext(refs, path="pkg/loki/modules.go")) == []
|
|
115
|
+
|
|
116
|
+
|
|
117
|
+
def test_grpc_test_harness_registrations_excluded():
|
|
118
|
+
# A real service registered inside a *_test.go harness is not production surface.
|
|
119
|
+
refs = [_call("RegisterFrontendServer", "frontendv1pb", "(grpcServer, v1)")]
|
|
120
|
+
assert _grpc_rule().match(_go_ext(refs, path="pkg/frontend/frontend_test.go")) == []
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{entrygraph-0.1.40 → entrygraph-0.1.41}/tests/fixtures/csharp/aspnet_app/Services/ReportService.cs
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
|
{entrygraph-0.1.40 → entrygraph-0.1.41}/tests/fixtures/javascript/express_app/src/services.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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|