feat: Add Python class inheritance extraction for superclass relationships
Addresses Python's class definition syntax where parent classes are specified in argument_list nodes (e.g. `class Child(Parent, Mixin):`). Extracts identifier and attribute children from argument_list as 'extends' references to properly model Python's inheritance patterns in the code graph.
This commit is contained in:
@@ -0,0 +1,35 @@
|
||||
const { extractFromSource } = require('./dist/extraction');
|
||||
const { initGrammars, loadAllGrammars } = require('./dist/extraction/grammars');
|
||||
|
||||
(async () => {
|
||||
await initGrammars();
|
||||
await loadAllGrammars();
|
||||
|
||||
const code = `
|
||||
class Parent:
|
||||
pass
|
||||
|
||||
class Child(Parent):
|
||||
pass
|
||||
|
||||
class Multiple(Parent, Mixin):
|
||||
pass
|
||||
`;
|
||||
|
||||
const result = extractFromSource('test.py', code);
|
||||
|
||||
console.log('=== NODES ===');
|
||||
result.nodes.forEach(n => {
|
||||
console.log(`${n.kind}: ${n.name} (line ${n.startLine})`);
|
||||
});
|
||||
|
||||
console.log('\n=== UNRESOLVED REFERENCES ===');
|
||||
result.unresolvedReferences.forEach(r => {
|
||||
console.log(`${r.referenceKind}: ${r.referenceName} (from ${r.fromNodeId})`);
|
||||
});
|
||||
|
||||
console.log('\n=== EDGES ===');
|
||||
result.edges.forEach(e => {
|
||||
console.log(`${e.kind}: ${e.source} -> ${e.target}`);
|
||||
});
|
||||
})();
|
||||
Reference in New Issue
Block a user