@zzzen/pyright-internal v1.2.0-dev.20250316
@zzzen/pyright-internal
Repackaged pyright-internal with type declaration enabled.
Installation
npm i @zzzen/pyright-internal
Demo
print ast of code
import { ImportResolver } from "@zzzen/pyright-internal/dist/analyzer/importResolver";
import { printParseNodeType } from "@zzzen/pyright-internal/dist/analyzer/parseTreeUtils";
import { ParseTreeWalker } from "@zzzen/pyright-internal/dist/analyzer/parseTreeWalker";
import { Program } from "@zzzen/pyright-internal/dist/analyzer/program";
import { ConfigOptions } from "@zzzen/pyright-internal/dist/common/configOptions";
import {
lib,
sitePackages,
} from "@zzzen/pyright-internal/dist/common/pathConsts";
import {
combinePaths,
normalizeSlashes,
} from "@zzzen/pyright-internal/dist/common/pathUtils";
import { ParseNode } from "@zzzen/pyright-internal/dist/parser/parseNodes";
import { PyrightFileSystem } from "@zzzen/pyright-internal/dist/pyrightFileSystem";
import { TestAccessHost } from "@zzzen/pyright-internal/dist/tests/harness/testAccessHost";
import { TestFileSystem } from "@zzzen/pyright-internal/dist/tests/harness/vfs/filesystem";
const FILE_PATH = "/t.py";
const defaultCode = `
def f(a = 1):
return a
f(1)
`;
// console.log(process.execArgv.join())
const libraryRoot = combinePaths(normalizeSlashes("/"), lib, sitePackages);
const tfs = new TestFileSystem(false, {
files: {
[FILE_PATH]: defaultCode,
},
});
const fs = new PyrightFileSystem(tfs);
const configOptions = new ConfigOptions(normalizeSlashes("/"));
configOptions.typeshedPath = normalizeSlashes(
"/node_modules/pyright/dist/typeshed-fallback"
);
const importResolver = new ImportResolver(
fs,
configOptions,
new TestAccessHost(fs.getModulePath(), [libraryRoot])
);
const program = new Program(importResolver, configOptions);
program.setTrackedFiles([FILE_PATH]);
while (program.analyze()) {
// Continue to call analyze until it completes. Since we're not
// specifying a timeout, it should complete the first time.
}
const sourceFile = program.getSourceFile(FILE_PATH)!;
class PrintWalker extends ParseTreeWalker {
override visitNode(node: ParseNode) {
console.log(printParseNodeType(node.nodeType));
return super.visitNode(node);
}
}
new PrintWalker().walk(sourceFile.getParseResults()!.parseTree);
For more details, checkout pyright-ast-viewer.
4 months ago
4 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
6 months ago
6 months ago
6 months ago
6 months ago
7 months ago
7 months ago
7 months ago
7 months ago
8 months ago
8 months ago
8 months ago
8 months ago
9 months ago
9 months ago
9 months ago
9 months ago
10 months ago
9 months ago
10 months ago
11 months ago
10 months ago
10 months ago
11 months ago
11 months ago
11 months ago
12 months ago
12 months ago
12 months ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago