1.2.0-dev.20250316 • Published 4 months ago

@zzzen/pyright-internal v1.2.0-dev.20250316

Weekly downloads
-
License
MIT
Repository
github
Last release
4 months ago

@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.

1.2.0-dev.20250309

4 months ago

1.2.0-dev.20250316

4 months ago

1.2.0-dev.20250223

5 months ago

1.2.0-dev.20250302

5 months ago

1.2.0-dev.20250216

5 months ago

1.2.0-dev.20250202

5 months ago

1.2.0-dev.20250209

5 months ago

1.2.0-dev.20250126

6 months ago

1.2.0-dev.20250119

6 months ago

1.2.0-dev.20250112

6 months ago

1.2.0-dev.20250105

6 months ago

1.2.0-dev.20241229

7 months ago

1.2.0-dev.20241222

7 months ago

1.2.0-dev.20241215

7 months ago

1.2.0-dev.20241208

7 months ago

1.2.0-dev.20241201

8 months ago

1.2.0-dev.20241124

8 months ago

1.2.0-dev.20241117

8 months ago

1.2.0-dev.20241110

8 months ago

1.2.0-dev.20241103

9 months ago

1.2.0-dev.20241027

9 months ago

1.2.0-dev.20241020

9 months ago

1.2.0-dev.20241006

9 months ago

1.2.0-dev.20240929

10 months ago

1.2.0-dev.20241013

9 months ago

1.2.0-dev.20240922

10 months ago

1.2.0-dev.20240901

11 months ago

1.2.0-dev.20240915

10 months ago

1.2.0-dev.20240908

10 months ago

1.2.0-dev.20240825

11 months ago

1.2.0-dev.20240818

11 months ago

1.2.0-dev.20240811

11 months ago

1.2.0-dev.20240804

12 months ago

1.2.0-dev.20240728

12 months ago

1.2.0-dev.20240721

12 months ago

1.2.0-beta

3 years ago

1.1.255

3 years ago

1.1.254

3 years ago