Skip to content

fix(graph): preserve Python qualified names without false edges - #422

Open
DivyamTalwar wants to merge 1 commit into
activeloopai:mainfrom
DivyamTalwar:fix/graph-preserve-python-qualified-name-semantics
Open

DivyamTalwar wants to merge 1 commit into
activeloopai:mainfrom
DivyamTalwar:fix/graph-preserve-python-qualified-name-semantics

Conversation

@DivyamTalwar

Copy link
Copy Markdown

Summary

Fixes #421.

Reducing requests.Session to Session can link a class to itself or to an unrelated local class. Separately, treating the leaf of unaliased import pkg.util as a bound name can invent a util.helper() call relationship.

Keep plain dotted base names qualified and unresolved instead of guessing a local match. Do not create a leaf namespace binding for an unaliased dotted import; retain module import edges and supported explicit aliases. Native extractor-to-snapshot tests cover both false-edge cases and valid local/aliased controls.

Version Bump

No release requested. Package versions, dependencies, lockfiles and release workflows are unchanged.

Test plan

The repository-native focused tests report 8 failures and 18 passing controls on unchanged production source; the prepared correction passes all 26 focused tests. The final commit is independently validated by the full Node 22/Linux suite with coverage, typecheck, build, duplication guard and critical-only bundle audit. The workflow enforces zero failed and zero skipped tests.

Exact submitted commit: 056df2b02716f8ff9adcbbb816a865a0f5d43b3e. Independent Linux job, commands and logs. The checkout is pinned to this commit, not a combined patch branch.

The focused tests use isolated files or source fixtures and the real parser/cache/usage code. No customer data, credentials or live model/backend calls are required.

Compatibility and limits

Qualified-base resolution and general Python evaluation are not implemented. Dynamic base expressions remain unresolved, and unaliased dotted imports do not gain new inferred top-package bindings. PR #270 touches pushNode for node deduplication; this fix changes qualification handling rather than duplicating that work.

A clean full macOS suite and native Windows validation are not claimed. Upstream CI approval and maintainer review are separate from this passing independent gate.

@coderabbitai

coderabbitai Bot commented Sep 23, 2026

Copy link
Copy Markdown

Warning

Review limit reached

Next included review available in 59 minutes.

Check out review usage here.

View limit details

Limit details: You’ve used all 4 included reviews currently available.

You've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository.

Learn how review limits work.

Review configuration:

⚙️ Run configuration

Configuration used: Repository: activeloopai/hivemind/.coderabbit.yaml

Review profile: CHILL

Plan: Advanced

Run ID: 29fe48ff-f915-4278-888b-9142621a045b

📥 Commits

Reviewing files that changed from the base of the PR and between ce30de7 and 056df2b.

📒 Files selected for processing (2)
  • src/graph/extract/python.ts
  • tests/shared/graph/python.test.ts

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Python qualified names can produce false inheritance and import-call edges

1 participant