a0f599e00b
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.
36 lines
829 B
JavaScript
36 lines
829 B
JavaScript
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}`);
|
|
});
|
|
})();
|