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,26 @@
|
||||
const { getParser, initGrammars, loadAllGrammars } = require('./dist/extraction/grammars');
|
||||
|
||||
(async () => {
|
||||
await initGrammars();
|
||||
await loadAllGrammars();
|
||||
|
||||
const parser = getParser('python');
|
||||
|
||||
const code = `class Child(Parent, Mixin, Base):
|
||||
pass`;
|
||||
|
||||
const tree = parser.parse(code);
|
||||
|
||||
function walk(node, depth = 0) {
|
||||
const indent = ' '.repeat(depth);
|
||||
const preview = node.text.substring(0, 40).replace(/\n/g, '\\n');
|
||||
console.log(`${indent}${node.type} "${preview}"`);
|
||||
|
||||
for (let i = 0; i < node.namedChildCount; i++) {
|
||||
const child = node.namedChild(i);
|
||||
if (child) walk(child, depth + 1);
|
||||
}
|
||||
}
|
||||
|
||||
walk(tree.rootNode);
|
||||
})();
|
||||
Reference in New Issue
Block a user