@zzzen/pyright-internal 1.2.0-dev.20220703 → 1.2.0-dev.20220724
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +82 -1
- package/dist/analyzer/analysis.js +1 -1
- package/dist/analyzer/analysis.js.map +1 -1
- package/dist/analyzer/analyzerFileInfo.d.ts +2 -1
- package/dist/analyzer/analyzerFileInfo.js.map +1 -1
- package/dist/analyzer/binder.js +15 -1
- package/dist/analyzer/binder.js.map +1 -1
- package/dist/analyzer/checker.d.ts +1 -0
- package/dist/analyzer/checker.js +100 -51
- package/dist/analyzer/checker.js.map +1 -1
- package/dist/analyzer/codeFlowEngine.d.ts +0 -1
- package/dist/analyzer/codeFlowEngine.js +196 -197
- package/dist/analyzer/codeFlowEngine.js.map +1 -1
- package/dist/analyzer/codeFlowTypes.d.ts +1 -1
- package/dist/analyzer/codeFlowTypes.js.map +1 -1
- package/dist/analyzer/constraintSolver.js +6 -7
- package/dist/analyzer/constraintSolver.js.map +1 -1
- package/dist/analyzer/dataClasses.js +13 -4
- package/dist/analyzer/dataClasses.js.map +1 -1
- package/dist/analyzer/functionTransform.js +2 -1
- package/dist/analyzer/functionTransform.js.map +1 -1
- package/dist/analyzer/importResolver.js +5 -4
- package/dist/analyzer/importResolver.js.map +1 -1
- package/dist/analyzer/importStatementUtils.d.ts +1 -1
- package/dist/analyzer/importStatementUtils.js +47 -18
- package/dist/analyzer/importStatementUtils.js.map +1 -1
- package/dist/analyzer/parseTreeUtils.d.ts +6 -1
- package/dist/analyzer/parseTreeUtils.js +118 -10
- package/dist/analyzer/parseTreeUtils.js.map +1 -1
- package/dist/analyzer/patternMatching.js +2 -2
- package/dist/analyzer/patternMatching.js.map +1 -1
- package/dist/analyzer/program.d.ts +2 -2
- package/dist/analyzer/program.js +1 -1
- package/dist/analyzer/program.js.map +1 -1
- package/dist/analyzer/service.d.ts +4 -3
- package/dist/analyzer/service.js +40 -39
- package/dist/analyzer/service.js.map +1 -1
- package/dist/analyzer/sourceFile.d.ts +6 -1
- package/dist/analyzer/sourceFile.js +57 -14
- package/dist/analyzer/sourceFile.js.map +1 -1
- package/dist/analyzer/typeEvaluator.d.ts +1 -1
- package/dist/analyzer/typeEvaluator.js +754 -618
- package/dist/analyzer/typeEvaluator.js.map +1 -1
- package/dist/analyzer/typeEvaluatorTypes.d.ts +15 -15
- package/dist/analyzer/typeEvaluatorWithTracker.js +8 -7
- package/dist/analyzer/typeEvaluatorWithTracker.js.map +1 -1
- package/dist/analyzer/typeGuards.d.ts +2 -0
- package/dist/analyzer/typeGuards.js +47 -14
- package/dist/analyzer/typeGuards.js.map +1 -1
- package/dist/analyzer/typeUtils.d.ts +5 -3
- package/dist/analyzer/typeUtils.js +103 -27
- package/dist/analyzer/typeUtils.js.map +1 -1
- package/dist/analyzer/typedDicts.d.ts +1 -0
- package/dist/analyzer/typedDicts.js +27 -4
- package/dist/analyzer/typedDicts.js.map +1 -1
- package/dist/analyzer/types.d.ts +15 -5
- package/dist/analyzer/types.js +107 -9
- package/dist/analyzer/types.js.map +1 -1
- package/dist/backgroundAnalysisBase.d.ts +2 -1
- package/dist/backgroundAnalysisBase.js +7 -0
- package/dist/backgroundAnalysisBase.js.map +1 -1
- package/dist/backgroundThreadBase.js +1 -0
- package/dist/backgroundThreadBase.js.map +1 -1
- package/dist/common/chokidarFileWatcherProvider.d.ts +1 -2
- package/dist/common/chokidarFileWatcherProvider.js +0 -3
- package/dist/common/chokidarFileWatcherProvider.js.map +1 -1
- package/dist/common/configOptions.d.ts +1 -0
- package/dist/common/configOptions.js +4 -0
- package/dist/common/configOptions.js.map +1 -1
- package/dist/common/diagnostic.d.ts +2 -1
- package/dist/common/diagnostic.js +2 -1
- package/dist/common/diagnostic.js.map +1 -1
- package/dist/common/diagnosticRules.d.ts +1 -0
- package/dist/common/diagnosticRules.js +1 -0
- package/dist/common/diagnosticRules.js.map +1 -1
- package/dist/common/diagnosticSink.d.ts +3 -0
- package/dist/common/diagnosticSink.js +15 -2
- package/dist/common/diagnosticSink.js.map +1 -1
- package/dist/common/editAction.d.ts +6 -0
- package/dist/common/editAction.js +15 -0
- package/dist/common/editAction.js.map +1 -1
- package/dist/common/fileSystem.d.ts +4 -1
- package/dist/common/fileSystem.js +6 -4
- package/dist/common/fileSystem.js.map +1 -1
- package/dist/common/realFileSystem.d.ts +2 -2
- package/dist/common/realFileSystem.js.map +1 -1
- package/dist/common/textEditUtils.d.ts +22 -2
- package/dist/common/textEditUtils.js +138 -1
- package/dist/common/textEditUtils.js.map +1 -1
- package/dist/common/uriParser.d.ts +2 -0
- package/dist/common/uriParser.js +11 -0
- package/dist/common/uriParser.js.map +1 -1
- package/dist/languageServerBase.d.ts +19 -18
- package/dist/languageServerBase.js +75 -61
- package/dist/languageServerBase.js.map +1 -1
- package/dist/languageService/codeActionProvider.d.ts +2 -2
- package/dist/languageService/codeActionProvider.js +1 -1
- package/dist/languageService/codeActionProvider.js.map +1 -1
- package/dist/languageService/completionProvider.d.ts +15 -11
- package/dist/languageService/completionProvider.js +76 -5
- package/dist/languageService/completionProvider.js.map +1 -1
- package/dist/languageService/indentationUtils.js +3 -2
- package/dist/languageService/indentationUtils.js.map +1 -1
- package/dist/languageService/insertionPointUtils.d.ts +9 -0
- package/dist/languageService/insertionPointUtils.js +110 -0
- package/dist/languageService/insertionPointUtils.js.map +1 -0
- package/dist/languageService/renameModuleProvider.d.ts +1 -4
- package/dist/languageService/renameModuleProvider.js +10 -46
- package/dist/languageService/renameModuleProvider.js.map +1 -1
- package/dist/languageService/signatureHelpProvider.js +4 -2
- package/dist/languageService/signatureHelpProvider.js.map +1 -1
- package/dist/languageService/tooltipUtils.js +1 -3
- package/dist/languageService/tooltipUtils.js.map +1 -1
- package/dist/localization/localize.d.ts +13 -0
- package/dist/localization/localize.js +4 -0
- package/dist/localization/localize.js.map +1 -1
- package/dist/localization/package.nls.en-us.json +4 -0
- package/dist/parser/parser.d.ts +2 -1
- package/dist/parser/parser.js +11 -2
- package/dist/parser/parser.js.map +1 -1
- package/dist/parser/tokenizer.d.ts +2 -1
- package/dist/parser/tokenizer.js +3 -2
- package/dist/parser/tokenizer.js.map +1 -1
- package/dist/pyright.js +3 -1
- package/dist/pyright.js.map +1 -1
- package/dist/pyrightFileSystem.d.ts +20 -2
- package/dist/pyrightFileSystem.js +29 -2
- package/dist/pyrightFileSystem.js.map +1 -1
- package/dist/server.js +4 -4
- package/dist/server.js.map +1 -1
- package/dist/tests/chainedSourceFiles.test.js +4 -1
- package/dist/tests/chainedSourceFiles.test.js.map +1 -1
- package/dist/tests/checker.test.js +9 -0
- package/dist/tests/checker.test.js.map +1 -1
- package/dist/tests/fourslash/completions.commitChars.fourslash.d.ts +1 -0
- package/dist/tests/fourslash/completions.commitChars.fourslash.js +47 -0
- package/dist/tests/fourslash/completions.commitChars.fourslash.js.map +1 -0
- package/dist/tests/fourslash/completions.triggers.fourslash.d.ts +1 -0
- package/dist/tests/fourslash/completions.triggers.fourslash.js +29 -0
- package/dist/tests/fourslash/completions.triggers.fourslash.js.map +1 -0
- package/dist/tests/fourslash/fourslash.d.ts +1 -0
- package/dist/tests/fourslash/import.multipart.fourslash.d.ts +1 -0
- package/dist/tests/fourslash/import.multipart.fourslash.js +18 -0
- package/dist/tests/fourslash/import.multipart.fourslash.js.map +1 -0
- package/dist/tests/fourslash/signature.simple.fourslash.js +16 -0
- package/dist/tests/fourslash/signature.simple.fourslash.js.map +1 -1
- package/dist/tests/harness/fourslash/testLanguageService.js +1 -1
- package/dist/tests/harness/fourslash/testLanguageService.js.map +1 -1
- package/dist/tests/harness/fourslash/testState.js +12 -3
- package/dist/tests/harness/fourslash/testState.js.map +1 -1
- package/dist/tests/insertionPointUtils.test.d.ts +1 -0
- package/dist/tests/insertionPointUtils.test.js +74 -0
- package/dist/tests/insertionPointUtils.test.js.map +1 -0
- package/dist/tests/pyrightFileSystem.test.js +28 -0
- package/dist/tests/pyrightFileSystem.test.js.map +1 -1
- package/dist/tests/renameModuleTestUtils.js +5 -87
- package/dist/tests/renameModuleTestUtils.js.map +1 -1
- package/dist/tests/testStateUtils.d.ts +8 -0
- package/dist/tests/testStateUtils.js +110 -0
- package/dist/tests/testStateUtils.js.map +1 -0
- package/dist/tests/testUtils.d.ts +2 -1
- package/dist/tests/testUtils.js +11 -7
- package/dist/tests/testUtils.js.map +1 -1
- package/dist/tests/typeEvaluator1.test.js +2 -6
- package/dist/tests/typeEvaluator1.test.js.map +1 -1
- package/dist/tests/typeEvaluator2.test.js +16 -4
- package/dist/tests/typeEvaluator2.test.js.map +1 -1
- package/dist/tests/typeEvaluator3.test.js +9 -1
- package/dist/tests/typeEvaluator3.test.js.map +1 -1
- package/dist/tests/typeEvaluator4.test.js +26 -0
- package/dist/tests/typeEvaluator4.test.js.map +1 -1
- package/dist/tests/typeEvaluator5.test.js +6 -0
- package/dist/tests/typeEvaluator5.test.js.map +1 -1
- package/dist/workspaceMap.d.ts +1 -0
- package/dist/workspaceMap.js +10 -0
- package/dist/workspaceMap.js.map +1 -1
- package/package.json +4 -3
package/README.md
CHANGED
@@ -1 +1,82 @@
|
|
1
|
-
# pyright-
|
1
|
+
# @zzzen/pyright-internal
|
2
|
+
|
3
|
+
Repackaged [pyright-internal](https://github.com/microsoft/pyright/tree/main/packages/pyright-internal) with type declaration enabled.
|
4
|
+
|
5
|
+
# Installation
|
6
|
+
|
7
|
+
```sh
|
8
|
+
npm i @zzzen/pyright-internal
|
9
|
+
```
|
10
|
+
|
11
|
+
# Demo
|
12
|
+
|
13
|
+
print ast of code
|
14
|
+
|
15
|
+
```ts
|
16
|
+
import { ImportResolver } from "@zzzen/pyright-internal/dist/analyzer/importResolver";
|
17
|
+
import { printParseNodeType } from "@zzzen/pyright-internal/dist/analyzer/parseTreeUtils";
|
18
|
+
import { ParseTreeWalker } from "@zzzen/pyright-internal/dist/analyzer/parseTreeWalker";
|
19
|
+
import { Program } from "@zzzen/pyright-internal/dist/analyzer/program";
|
20
|
+
import { ConfigOptions } from "@zzzen/pyright-internal/dist/common/configOptions";
|
21
|
+
import {
|
22
|
+
lib,
|
23
|
+
sitePackages,
|
24
|
+
} from "@zzzen/pyright-internal/dist/common/pathConsts";
|
25
|
+
import {
|
26
|
+
combinePaths,
|
27
|
+
normalizeSlashes,
|
28
|
+
} from "@zzzen/pyright-internal/dist/common/pathUtils";
|
29
|
+
import { ParseNode } from "@zzzen/pyright-internal/dist/parser/parseNodes";
|
30
|
+
import { PyrightFileSystem } from "@zzzen/pyright-internal/dist/pyrightFileSystem";
|
31
|
+
import { TestAccessHost } from "@zzzen/pyright-internal/dist/tests/harness/testAccessHost";
|
32
|
+
import { TestFileSystem } from "@zzzen/pyright-internal/dist/tests/harness/vfs/filesystem";
|
33
|
+
|
34
|
+
const FILE_PATH = "/t.py";
|
35
|
+
|
36
|
+
const defaultCode = `
|
37
|
+
def f(a = 1):
|
38
|
+
return a
|
39
|
+
f(1)
|
40
|
+
`;
|
41
|
+
|
42
|
+
// console.log(process.execArgv.join())
|
43
|
+
const libraryRoot = combinePaths(normalizeSlashes("/"), lib, sitePackages);
|
44
|
+
|
45
|
+
const tfs = new TestFileSystem(false, {
|
46
|
+
files: {
|
47
|
+
[FILE_PATH]: defaultCode,
|
48
|
+
},
|
49
|
+
});
|
50
|
+
|
51
|
+
const fs = new PyrightFileSystem(tfs);
|
52
|
+
|
53
|
+
const configOptions = new ConfigOptions(normalizeSlashes("/"));
|
54
|
+
configOptions.typeshedPath = normalizeSlashes(
|
55
|
+
"/node_modules/pyright/dist/typeshed-fallback"
|
56
|
+
);
|
57
|
+
const importResolver = new ImportResolver(
|
58
|
+
fs,
|
59
|
+
configOptions,
|
60
|
+
new TestAccessHost(fs.getModulePath(), [libraryRoot])
|
61
|
+
);
|
62
|
+
const program = new Program(importResolver, configOptions);
|
63
|
+
program.setTrackedFiles([FILE_PATH]);
|
64
|
+
|
65
|
+
while (program.analyze()) {
|
66
|
+
// Continue to call analyze until it completes. Since we're not
|
67
|
+
// specifying a timeout, it should complete the first time.
|
68
|
+
}
|
69
|
+
|
70
|
+
const sourceFile = program.getSourceFile(FILE_PATH)!;
|
71
|
+
|
72
|
+
class PrintWalker extends ParseTreeWalker {
|
73
|
+
override visitNode(node: ParseNode) {
|
74
|
+
console.log(printParseNodeType(node.nodeType));
|
75
|
+
return super.visitNode(node);
|
76
|
+
}
|
77
|
+
}
|
78
|
+
|
79
|
+
new PrintWalker().walk(sourceFile.getParseResults()!.parseTree);
|
80
|
+
```
|
81
|
+
|
82
|
+
For more details, checkout [pyright-ast-viewer](https://github.com/Zzzen/pyright-ast-viewer).
|
@@ -30,7 +30,7 @@ exports.analyzeProgram = exports.nullCallback = void 0;
|
|
30
30
|
const cancellationUtils_1 = require("../common/cancellationUtils");
|
31
31
|
const debug = __importStar(require("../common/debug"));
|
32
32
|
const timing_1 = require("../common/timing");
|
33
|
-
const nullCallback = (
|
33
|
+
const nullCallback = () => {
|
34
34
|
/* empty */
|
35
35
|
};
|
36
36
|
exports.nullCallback = nullCallback;
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"analysis.js","sourceRoot":"","sources":["../../../src/analyzer/analysis.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;;;;;;;;;;;;;;;;;;;;;AAIH,mEAAuG;AAGvG,uDAAyC;AAEzC,6CAA4C;AAGrC,MAAM,YAAY,GAA6B,
|
1
|
+
{"version":3,"file":"analysis.js","sourceRoot":"","sources":["../../../src/analyzer/analysis.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;;;;;;;;;;;;;;;;;;;;;AAIH,mEAAuG;AAGvG,uDAAyC;AAEzC,6CAA4C;AAGrC,MAAM,YAAY,GAA6B,GAAG,EAAE;IACvD,WAAW;AACf,CAAC,CAAC;AAFW,QAAA,YAAY,gBAEvB;AAeF,SAAgB,cAAc,CAC1B,OAAgB,EAChB,OAAoC,EACpC,aAA4B,EAC5B,QAA8C,EAC9C,OAAyB,EACzB,KAAwB;IAExB,IAAI,aAAa,GAAG,KAAK,CAAC;IAE1B,QAAQ,GAAG,QAAQ,aAAR,QAAQ,cAAR,QAAQ,GAAI,oBAAY,CAAC;IAEpC,IAAI;QACA,IAAA,gDAA4B,EAAC,KAAK,CAAC,CAAC;QAEpC,MAAM,QAAQ,GAAG,IAAI,iBAAQ,EAAE,CAAC;QAChC,aAAa,GAAG,OAAO,CAAC,OAAO,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QAEhD,MAAM,kBAAkB,GAAG,OAAO,CAAC,sBAAsB,EAAE,CAAC;QAC5D,MAAM,WAAW,GAAG,OAAO,CAAC,cAAc,CAAC,aAAa,CAAC,CAAC;QAC1D,MAAM,mBAAmB,GAAG,WAAW,CAAC,MAAM,CAAC;QAC/C,MAAM,WAAW,GAAG,QAAQ,CAAC,oBAAoB,EAAE,CAAC;QAEpD,wCAAwC;QACxC,IAAI,mBAAmB,GAAG,CAAC,IAAI,CAAC,aAAa,EAAE;YAC3C,QAAQ,CAAC;gBACL,WAAW;gBACX,cAAc,EAAE,OAAO,CAAC,YAAY,EAAE;gBACtC,sBAAsB,EAAE,kBAAkB;gBAC1C,qBAAqB,EAAE,OAAO,CAAC,uBAAuB,EAAE;gBACxD,kBAAkB,EAAE,KAAK;gBACzB,wBAAwB,EAAE,KAAK;gBAC/B,WAAW;aACd,CAAC,CAAC;SACN;KACJ;IAAC,OAAO,CAAM,EAAE;QACb,IAAI,8CAA0B,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE;YAClC,OAAO,KAAK,CAAC;SAChB;QAED,MAAM,OAAO,GAAG,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;QACxC,OAAO,CAAC,KAAK,CAAC,6BAA6B,GAAG,OAAO,CAAC,CAAC;QAEvD,QAAQ,CAAC;YACL,WAAW,EAAE,EAAE;YACf,cAAc,EAAE,CAAC;YACjB,sBAAsB,EAAE,CAAC;YACzB,qBAAqB,EAAE,IAAI;YAC3B,kBAAkB,EAAE,IAAI;YACxB,wBAAwB,EAAE,KAAK;YAC/B,WAAW,EAAE,CAAC;YACd,KAAK,EAAE,KAAK,CAAC,oBAAoB,CAAC,CAAC,CAAC;SACvC,CAAC,CAAC;KACN;IAED,OAAO,aAAa,CAAC;AACzB,CAAC;AAxDD,wCAwDC"}
|
@@ -3,6 +3,7 @@ import { TextRangeDiagnosticSink } from '../common/diagnosticSink';
|
|
3
3
|
import { TextRange } from '../common/textRange';
|
4
4
|
import { TextRangeCollection } from '../common/textRangeCollection';
|
5
5
|
import { Scope } from './scope';
|
6
|
+
import { IPythonMode } from './sourceFile';
|
6
7
|
import { SymbolTable } from './symbol';
|
7
8
|
export interface AbsoluteModuleDescriptor {
|
8
9
|
importingFilePath: string;
|
@@ -33,7 +34,7 @@ export interface AnalyzerFileInfo {
|
|
33
34
|
isTypingExtensionsStubFile: boolean;
|
34
35
|
isBuiltInStubFile: boolean;
|
35
36
|
isInPyTypedPackage: boolean;
|
36
|
-
|
37
|
+
ipythonMode: IPythonMode;
|
37
38
|
accessedSymbolSet: Set<number>;
|
38
39
|
}
|
39
40
|
export declare function isAnnotationEvaluationPostponed(fileInfo: AnalyzerFileInfo): boolean;
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"analyzerFileInfo.js","sourceRoot":"","sources":["../../../src/analyzer/analyzerFileInfo.ts"],"names":[],"mappings":";AAAA;;;;;;;;GAQG;;;
|
1
|
+
{"version":3,"file":"analyzerFileInfo.js","sourceRoot":"","sources":["../../../src/analyzer/analyzerFileInfo.ts"],"names":[],"mappings":";AAAA;;;;;;;;GAQG;;;AA8CH,SAAgB,+BAA+B,CAAC,QAA0B;IACtE,OAAO,QAAQ,CAAC,aAAa,CAAC,GAAG,CAAC,aAAa,CAAC,KAAK,SAAS,IAAI,QAAQ,CAAC,UAAU,CAAC;AAC1F,CAAC;AAFD,0EAEC"}
|
package/dist/analyzer/binder.js
CHANGED
@@ -550,6 +550,20 @@ class Binder extends parseTreeWalker_1.ParseTreeWalker {
|
|
550
550
|
this._createAssignmentTargetFlowNodes(node.leftExpression, /* walkTargets */ true, /* unbound */ false);
|
551
551
|
createdAssignmentTargetFlowNodes = true;
|
552
552
|
}
|
553
|
+
// If the assignment target base expression is potentially a
|
554
|
+
// TypedDict, add the base expression to the flow expressions set
|
555
|
+
// to accommodate TypedDict type narrowing.
|
556
|
+
if (node.leftExpression.nodeType === 24 /* Index */) {
|
557
|
+
const target = node.leftExpression;
|
558
|
+
if (target.items.length === 1 &&
|
559
|
+
!target.trailingComma &&
|
560
|
+
target.items[0].valueExpression.nodeType === 48 /* StringList */) {
|
561
|
+
if ((0, codeFlowTypes_1.isCodeFlowSupportedForReference)(target.baseExpression)) {
|
562
|
+
const baseExprReferenceKey = (0, codeFlowTypes_1.createKeyForReference)(target.baseExpression);
|
563
|
+
this._currentScopeCodeFlowExpressions.add(baseExprReferenceKey);
|
564
|
+
}
|
565
|
+
}
|
566
|
+
}
|
553
567
|
this.walk(node.rightExpression);
|
554
568
|
let isPossibleTypeAlias = true;
|
555
569
|
if (ParseTreeUtils.getEnclosingFunction(node)) {
|
@@ -1126,7 +1140,7 @@ class Binder extends parseTreeWalker_1.ParseTreeWalker {
|
|
1126
1140
|
// Make sure this is within an async lambda or function.
|
1127
1141
|
const enclosingFunction = ParseTreeUtils.getEnclosingFunction(node);
|
1128
1142
|
if (enclosingFunction === undefined || !enclosingFunction.isAsync) {
|
1129
|
-
if (this._fileInfo.
|
1143
|
+
if (this._fileInfo.ipythonMode && enclosingFunction === undefined) {
|
1130
1144
|
// Top level await is allowed in ipython mode.
|
1131
1145
|
return true;
|
1132
1146
|
}
|