@zzzen/pyright-internal 1.2.0-dev.20230219 → 1.2.0-dev.20230305
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/dist/analyzer/backgroundAnalysisProgram.d.ts +1 -1
- package/dist/analyzer/backgroundAnalysisProgram.js +3 -3
- package/dist/analyzer/backgroundAnalysisProgram.js.map +1 -1
- package/dist/analyzer/binder.d.ts +0 -1
- package/dist/analyzer/binder.js +18 -93
- package/dist/analyzer/binder.js.map +1 -1
- package/dist/analyzer/checker.js +50 -30
- package/dist/analyzer/checker.js.map +1 -1
- package/dist/analyzer/codeFlowEngine.js +5 -5
- package/dist/analyzer/codeFlowEngine.js.map +1 -1
- package/dist/analyzer/constraintSolver.js +0 -10
- package/dist/analyzer/constraintSolver.js.map +1 -1
- package/dist/analyzer/declaration.d.ts +3 -4
- package/dist/analyzer/declaration.js +6 -1
- package/dist/analyzer/declaration.js.map +1 -1
- package/dist/analyzer/declarationUtils.d.ts +1 -5
- package/dist/analyzer/declarationUtils.js +2 -47
- package/dist/analyzer/declarationUtils.js.map +1 -1
- package/dist/analyzer/docStringConversion.js +9 -3
- package/dist/analyzer/docStringConversion.js.map +1 -1
- package/dist/analyzer/importResolver.d.ts +3 -2
- package/dist/analyzer/importResolver.js +28 -19
- package/dist/analyzer/importResolver.js.map +1 -1
- package/dist/analyzer/parseTreeUtils.d.ts +4 -2
- package/dist/analyzer/parseTreeUtils.js +77 -2
- package/dist/analyzer/parseTreeUtils.js.map +1 -1
- package/dist/analyzer/patternMatching.d.ts +1 -0
- package/dist/analyzer/patternMatching.js +47 -2
- package/dist/analyzer/patternMatching.js.map +1 -1
- package/dist/analyzer/program.d.ts +5 -4
- package/dist/analyzer/program.js +182 -43
- package/dist/analyzer/program.js.map +1 -1
- package/dist/analyzer/properties.js +8 -3
- package/dist/analyzer/properties.js.map +1 -1
- package/dist/analyzer/protocols.js +8 -5
- package/dist/analyzer/protocols.js.map +1 -1
- package/dist/analyzer/pythonPathUtils.js +27 -13
- package/dist/analyzer/pythonPathUtils.js.map +1 -1
- package/dist/analyzer/service.d.ts +7 -3
- package/dist/analyzer/service.js +24 -7
- package/dist/analyzer/service.js.map +1 -1
- package/dist/analyzer/sourceFile.js +3 -0
- package/dist/analyzer/sourceFile.js.map +1 -1
- package/dist/analyzer/symbol.js +1 -4
- package/dist/analyzer/symbol.js.map +1 -1
- package/dist/analyzer/symbolUtils.d.ts +0 -3
- package/dist/analyzer/symbolUtils.js +1 -14
- package/dist/analyzer/symbolUtils.js.map +1 -1
- package/dist/analyzer/typeDocStringUtils.js +5 -3
- package/dist/analyzer/typeDocStringUtils.js.map +1 -1
- package/dist/analyzer/typeEvaluator.js +586 -294
- package/dist/analyzer/typeEvaluator.js.map +1 -1
- package/dist/analyzer/typeEvaluatorTypes.d.ts +10 -2
- package/dist/analyzer/typeGuards.js +2 -2
- package/dist/analyzer/typeGuards.js.map +1 -1
- package/dist/analyzer/typeUtils.d.ts +1 -0
- package/dist/analyzer/typeUtils.js +14 -1
- package/dist/analyzer/typeUtils.js.map +1 -1
- package/dist/analyzer/typedDicts.js +26 -17
- package/dist/analyzer/typedDicts.js.map +1 -1
- package/dist/analyzer/types.d.ts +2 -1
- package/dist/analyzer/types.js.map +1 -1
- package/dist/backgroundAnalysisBase.d.ts +2 -3
- package/dist/backgroundAnalysisBase.js +12 -13
- package/dist/backgroundAnalysisBase.js.map +1 -1
- package/dist/commands/commandController.js +1 -0
- package/dist/commands/commandController.js.map +1 -1
- package/dist/commands/quickActionCommand.js +2 -2
- package/dist/commands/quickActionCommand.js.map +1 -1
- package/dist/common/cancellationUtils.d.ts +18 -2
- package/dist/common/cancellationUtils.js +80 -3
- package/dist/common/cancellationUtils.js.map +1 -1
- package/dist/common/collectionUtils.d.ts +1 -0
- package/dist/common/collectionUtils.js +8 -1
- package/dist/common/collectionUtils.js.map +1 -1
- package/dist/common/extensibility.d.ts +4 -3
- package/dist/common/extensibility.js.map +1 -1
- package/dist/common/fileBasedCancellationUtils.d.ts +0 -1
- package/dist/common/fileBasedCancellationUtils.js +7 -81
- package/dist/common/fileBasedCancellationUtils.js.map +1 -1
- package/dist/common/positionUtils.d.ts +2 -0
- package/dist/common/positionUtils.js +15 -1
- package/dist/common/positionUtils.js.map +1 -1
- package/dist/common/{textEditUtils.d.ts → textEditTracker.d.ts} +2 -6
- package/dist/common/{textEditUtils.js → textEditTracker.js} +6 -49
- package/dist/common/textEditTracker.js.map +1 -0
- package/dist/common/workspaceEditUtils.d.ts +14 -8
- package/dist/common/workspaceEditUtils.js +115 -59
- package/dist/common/workspaceEditUtils.js.map +1 -1
- package/dist/languageServerBase.js +9 -3
- package/dist/languageServerBase.js.map +1 -1
- package/dist/languageService/callHierarchyProvider.js +4 -2
- package/dist/languageService/callHierarchyProvider.js.map +1 -1
- package/dist/languageService/codeActionProvider.js +1 -1
- package/dist/languageService/codeActionProvider.js.map +1 -1
- package/dist/languageService/completionProvider.js +49 -43
- package/dist/languageService/completionProvider.js.map +1 -1
- package/dist/languageService/completionProviderUtils.d.ts +1 -1
- package/dist/languageService/completionProviderUtils.js +3 -3
- package/dist/languageService/completionProviderUtils.js.map +1 -1
- package/dist/languageService/definitionProvider.js +2 -1
- package/dist/languageService/definitionProvider.js.map +1 -1
- package/dist/languageService/documentSymbolProvider.js +2 -1
- package/dist/languageService/documentSymbolProvider.js.map +1 -1
- package/dist/languageService/hoverProvider.js +14 -3
- package/dist/languageService/hoverProvider.js.map +1 -1
- package/dist/languageService/importAdder.d.ts +2 -2
- package/dist/languageService/importAdder.js +5 -3
- package/dist/languageService/importAdder.js.map +1 -1
- package/dist/languageService/indentationUtils.d.ts +6 -2
- package/dist/languageService/indentationUtils.js +33 -13
- package/dist/languageService/indentationUtils.js.map +1 -1
- package/dist/languageService/renameModuleProvider.d.ts +10 -2
- package/dist/languageService/renameModuleProvider.js +87 -14
- package/dist/languageService/renameModuleProvider.js.map +1 -1
- package/dist/localization/localize.d.ts +12 -2
- package/dist/localization/localize.js +5 -1
- package/dist/localization/localize.js.map +1 -1
- package/dist/localization/package.nls.en-us.json +6 -2
- package/dist/parser/parser.js +18 -18
- package/dist/parser/parser.js.map +1 -1
- package/dist/pyright.js +1 -1
- package/dist/pyright.js.map +1 -1
- package/dist/tests/docStringConversion.test.js +23 -0
- package/dist/tests/docStringConversion.test.js.map +1 -1
- package/dist/tests/fourslash/completions.errorNodes.fourslash.d.ts +1 -0
- package/dist/tests/fourslash/completions.errorNodes.fourslash.js +24 -0
- package/dist/tests/fourslash/completions.errorNodes.fourslash.js.map +1 -0
- package/dist/tests/fourslash/hover.docstring.parameter.fourslash.d.ts +1 -0
- package/dist/tests/fourslash/hover.docstring.parameter.fourslash.js +57 -0
- package/dist/tests/fourslash/hover.docstring.parameter.fourslash.js.map +1 -0
- package/dist/tests/fourslash/hover.slots.fourslash.d.ts +1 -0
- package/dist/tests/fourslash/hover.slots.fourslash.js +16 -0
- package/dist/tests/fourslash/hover.slots.fourslash.js.map +1 -0
- package/dist/tests/harness/fourslash/testState.js +9 -2
- package/dist/tests/harness/fourslash/testState.js.map +1 -1
- package/dist/tests/importAdder.test.js +16 -3
- package/dist/tests/importAdder.test.js.map +1 -1
- package/dist/tests/indentationUtils.reindent.test.js +22 -1
- package/dist/tests/indentationUtils.reindent.test.js.map +1 -1
- package/dist/tests/moveSymbol.importAdder.test.js +183 -24
- package/dist/tests/moveSymbol.importAdder.test.js.map +1 -1
- package/dist/tests/moveSymbol.insertion.test.js +137 -2
- package/dist/tests/moveSymbol.insertion.test.js.map +1 -1
- package/dist/tests/moveSymbol.misc.test.js +109 -4
- package/dist/tests/moveSymbol.misc.test.js.map +1 -1
- package/dist/tests/renameModuleTestUtils.d.ts +1 -1
- package/dist/tests/renameModuleTestUtils.js +9 -5
- package/dist/tests/renameModuleTestUtils.js.map +1 -1
- package/dist/tests/testStateUtils.js +2 -2
- package/dist/tests/testStateUtils.js.map +1 -1
- package/dist/tests/textEditUtil.test.js +2 -2
- package/dist/tests/textEditUtil.test.js.map +1 -1
- package/dist/tests/typeEvaluator1.test.js +8 -0
- package/dist/tests/typeEvaluator1.test.js.map +1 -1
- package/dist/tests/typeEvaluator2.test.js +13 -1
- package/dist/tests/typeEvaluator2.test.js.map +1 -1
- package/dist/tests/typeEvaluator3.test.js +29 -4
- package/dist/tests/typeEvaluator3.test.js.map +1 -1
- package/dist/tests/typeEvaluator4.test.js +1 -1
- package/dist/tests/typeEvaluator5.test.js +6 -0
- package/dist/tests/typeEvaluator5.test.js.map +1 -1
- package/dist/tests/workspaceEditUtils.test.js +7 -7
- package/dist/tests/workspaceEditUtils.test.js.map +1 -1
- package/package.json +3 -3
- package/dist/common/textEditUtils.js.map +0 -1
@@ -35,7 +35,7 @@ export declare class BackgroundAnalysisProgram {
|
|
35
35
|
updateChainedFilePath(filePath: string, chainedFilePath: string | undefined): void;
|
36
36
|
updateOpenFileContents(path: string, version: number | null, contents: TextDocumentContentChangeEvent[], options: OpenFileOptions): void;
|
37
37
|
setFileClosed(filePath: string, isTracked?: boolean): void;
|
38
|
-
|
38
|
+
addInterimFile(filePath: string): void;
|
39
39
|
markAllFilesDirty(evenIfContentsAreSame: boolean, indexingNeeded?: boolean): void;
|
40
40
|
markFilesDirty(filePaths: string[], evenIfContentsAreSame: boolean, indexingNeeded?: boolean): void;
|
41
41
|
setCompletionCallback(callback?: AnalysisCompleteCallback): void;
|
@@ -89,10 +89,10 @@ class BackgroundAnalysisProgram {
|
|
89
89
|
const diagnostics = this._program.setFileClosed(filePath, isTracked);
|
90
90
|
this._reportDiagnosticsForRemovedFiles(diagnostics);
|
91
91
|
}
|
92
|
-
|
92
|
+
addInterimFile(filePath) {
|
93
93
|
var _a;
|
94
|
-
(_a = this._backgroundAnalysis) === null || _a === void 0 ? void 0 : _a.
|
95
|
-
this._program.
|
94
|
+
(_a = this._backgroundAnalysis) === null || _a === void 0 ? void 0 : _a.addInterimFile(filePath);
|
95
|
+
this._program.addInterimFile(filePath);
|
96
96
|
}
|
97
97
|
markAllFilesDirty(evenIfContentsAreSame, indexingNeeded = true) {
|
98
98
|
var _a;
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"backgroundAnalysisProgram.js","sourceRoot":"","sources":["../../../src/analyzer/backgroundAnalysisProgram.ts"],"names":[],"mappings":"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
|
1
|
+
{"version":3,"file":"backgroundAnalysisProgram.js","sourceRoot":"","sources":["../../../src/analyzer/backgroundAnalysisProgram.ts"],"names":[],"mappings":"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"}
|
@@ -128,7 +128,6 @@ export declare class Binder extends ParseTreeWalker {
|
|
128
128
|
private _isAnnotationClassVar;
|
129
129
|
private _isRequiredAnnotation;
|
130
130
|
private _isNotRequiredAnnotation;
|
131
|
-
private _isAnnotationTypeAlias;
|
132
131
|
private _getMemberAccessInfo;
|
133
132
|
private _addImplicitImportsToLoaderActions;
|
134
133
|
private _handleTypingStubAssignmentOrAnnotation;
|
package/dist/analyzer/binder.js
CHANGED
@@ -46,6 +46,8 @@ const textRange_1 = require("../common/textRange");
|
|
46
46
|
const localize_1 = require("../localization/localize");
|
47
47
|
const AnalyzerNodeInfo = __importStar(require("./analyzerNodeInfo"));
|
48
48
|
const codeFlowTypes_1 = require("./codeFlowTypes");
|
49
|
+
const declaration_1 = require("./declaration");
|
50
|
+
const docStringUtils_1 = require("./docStringUtils");
|
49
51
|
const ParseTreeUtils = __importStar(require("./parseTreeUtils"));
|
50
52
|
const parseTreeWalker_1 = require("./parseTreeWalker");
|
51
53
|
const scope_1 = require("./scope");
|
@@ -192,7 +194,7 @@ class Binder extends parseTreeWalker_1.ParseTreeWalker {
|
|
192
194
|
this._addDiagnostic(this._fileInfo.diagnosticRuleSet.reportMissingImports, diagnosticRules_1.DiagnosticRule.reportMissingImports, localize_1.Localizer.Diagnostic.importResolveFailure().format({ importName: importResult.importName }), node);
|
193
195
|
return true;
|
194
196
|
}
|
195
|
-
//
|
197
|
+
// A source file was found, but the type stub was missing.
|
196
198
|
if (!importResult.isStubFile &&
|
197
199
|
importResult.importType === 1 /* ThirdParty */ &&
|
198
200
|
!importResult.pyTypedInfo) {
|
@@ -306,8 +308,14 @@ class Binder extends parseTreeWalker_1.ParseTreeWalker {
|
|
306
308
|
this._currentFlowNode = this._createStartFlowNode();
|
307
309
|
this._codeFlowComplexity = 0;
|
308
310
|
node.parameters.forEach((paramNode) => {
|
311
|
+
var _a, _b;
|
309
312
|
if (paramNode.name) {
|
310
313
|
const symbol = this._bindNameToScope(this._currentScope, paramNode.name);
|
314
|
+
// Extract the parameter docString from the function docString
|
315
|
+
let docString = ParseTreeUtils.getDocString((_b = (_a = node === null || node === void 0 ? void 0 : node.suite) === null || _a === void 0 ? void 0 : _a.statements) !== null && _b !== void 0 ? _b : []);
|
316
|
+
if (docString !== undefined) {
|
317
|
+
docString = (0, docStringUtils_1.extractParameterDocumentation)(docString, paramNode.name.value);
|
318
|
+
}
|
311
319
|
if (symbol) {
|
312
320
|
const paramDeclaration = {
|
313
321
|
type: 2 /* Parameter */,
|
@@ -316,6 +324,7 @@ class Binder extends parseTreeWalker_1.ParseTreeWalker {
|
|
316
324
|
range: (0, positionUtils_1.convertTextRangeToRange)(paramNode, this._fileInfo.lines),
|
317
325
|
moduleName: this._fileInfo.moduleName,
|
318
326
|
isInExceptSuite: this._isInExceptSuite,
|
327
|
+
docString: docString,
|
319
328
|
};
|
320
329
|
symbol.addDeclaration(paramDeclaration);
|
321
330
|
AnalyzerNodeInfo.setDeclaration(paramNode.name, paramDeclaration);
|
@@ -1260,7 +1269,7 @@ class Binder extends parseTreeWalker_1.ParseTreeWalker {
|
|
1260
1269
|
}
|
1261
1270
|
visitImportFrom(node) {
|
1262
1271
|
var _a;
|
1263
|
-
const typingSymbolsOfInterest = ['Final', '
|
1272
|
+
const typingSymbolsOfInterest = ['Final', 'ClassVar', 'Annotated'];
|
1264
1273
|
const dataclassesSymbolsOfInterest = ['InitVar'];
|
1265
1274
|
const importInfo = AnalyzerNodeInfo.getImportInfo(node.module);
|
1266
1275
|
let resolvedPath = '';
|
@@ -1898,7 +1907,7 @@ class Binder extends parseTreeWalker_1.ParseTreeWalker {
|
|
1898
1907
|
pathOfLastSubmodule = importInfo.resolvedPaths[importInfo.resolvedPaths.length - 1];
|
1899
1908
|
}
|
1900
1909
|
else {
|
1901
|
-
pathOfLastSubmodule =
|
1910
|
+
pathOfLastSubmodule = declaration_1.UnresolvedModuleMarker;
|
1902
1911
|
}
|
1903
1912
|
const isResolved = importInfo && importInfo.isImportFound && !importInfo.isNativeLib && importInfo.resolvedPaths.length > 0;
|
1904
1913
|
if (existingDecl) {
|
@@ -1956,7 +1965,7 @@ class Binder extends parseTreeWalker_1.ParseTreeWalker {
|
|
1956
1965
|
if (!loaderActions) {
|
1957
1966
|
const loaderActionPath = importInfo && i < importInfo.resolvedPaths.length
|
1958
1967
|
? importInfo.resolvedPaths[i]
|
1959
|
-
:
|
1968
|
+
: declaration_1.UnresolvedModuleMarker;
|
1960
1969
|
// Allocate a new loader action.
|
1961
1970
|
loaderActions = {
|
1962
1971
|
path: loaderActionPath,
|
@@ -2756,21 +2765,8 @@ class Binder extends parseTreeWalker_1.ParseTreeWalker {
|
|
2756
2765
|
const symbolWithScope = this._currentScope.lookUpSymbolRecursive(name.value);
|
2757
2766
|
if (symbolWithScope && symbolWithScope.symbol) {
|
2758
2767
|
const finalInfo = this._isAnnotationFinal(typeAnnotation);
|
2759
|
-
const isExplicitTypeAlias = this._isAnnotationTypeAlias(typeAnnotation);
|
2760
2768
|
let typeAnnotationNode = typeAnnotation;
|
2761
|
-
|
2762
|
-
if (isExplicitTypeAlias) {
|
2763
|
-
typeAnnotationNode = undefined;
|
2764
|
-
innerTypeAnnotationNode = undefined;
|
2765
|
-
// Type aliases are allowed only in the global or class scope.
|
2766
|
-
if (this._currentScope.type !== 2 /* Class */ &&
|
2767
|
-
this._currentScope.type !== 3 /* Module */ &&
|
2768
|
-
this._currentScope.type !== 4 /* Builtin */) {
|
2769
|
-
this._addError(localize_1.Localizer.Diagnostic.typeAliasNotInModuleOrClass(), typeAnnotation);
|
2770
|
-
}
|
2771
|
-
}
|
2772
|
-
else if (finalInfo.isFinal) {
|
2773
|
-
innerTypeAnnotationNode = finalInfo.finalTypeNode;
|
2769
|
+
if (finalInfo.isFinal) {
|
2774
2770
|
if (!finalInfo.finalTypeNode) {
|
2775
2771
|
typeAnnotationNode = undefined;
|
2776
2772
|
}
|
@@ -2778,7 +2774,6 @@ class Binder extends parseTreeWalker_1.ParseTreeWalker {
|
|
2778
2774
|
// Is this annotation indicating that the variable is a "ClassVar"?
|
2779
2775
|
let classVarInfo = this._isAnnotationClassVar(typeAnnotation);
|
2780
2776
|
if (classVarInfo.isClassVar) {
|
2781
|
-
innerTypeAnnotationNode = classVarInfo.classVarTypeNode;
|
2782
2777
|
if (!classVarInfo.classVarTypeNode) {
|
2783
2778
|
typeAnnotationNode = undefined;
|
2784
2779
|
}
|
@@ -2803,11 +2798,7 @@ class Binder extends parseTreeWalker_1.ParseTreeWalker {
|
|
2803
2798
|
node: target,
|
2804
2799
|
isConstant: (0, symbolNameUtils_1.isConstantName)(name.value),
|
2805
2800
|
isFinal: finalInfo.isFinal,
|
2806
|
-
|
2807
|
-
isRequired: this._isRequiredAnnotation(innerTypeAnnotationNode),
|
2808
|
-
isNotRequired: this._isNotRequiredAnnotation(innerTypeAnnotationNode),
|
2809
|
-
typeAliasAnnotation: isExplicitTypeAlias ? typeAnnotation : undefined,
|
2810
|
-
typeAliasName: isExplicitTypeAlias ? target : undefined,
|
2801
|
+
typeAliasName: target,
|
2811
2802
|
path: this._fileInfo.filePath,
|
2812
2803
|
typeAnnotationNode,
|
2813
2804
|
range: (0, positionUtils_1.convertTextRangeToRange)(name, this._fileInfo.lines),
|
@@ -2921,72 +2912,12 @@ class Binder extends parseTreeWalker_1.ParseTreeWalker {
|
|
2921
2912
|
return false;
|
2922
2913
|
}
|
2923
2914
|
_getVariableDocString(node) {
|
2924
|
-
|
2925
|
-
|
2926
|
-
let curNode = node;
|
2927
|
-
let annotationNode;
|
2928
|
-
while (curNode) {
|
2929
|
-
if (curNode.nodeType === 3 /* Assignment */) {
|
2930
|
-
break;
|
2931
|
-
}
|
2932
|
-
if (curNode.nodeType === 54 /* TypeAnnotation */ && !annotationNode) {
|
2933
|
-
annotationNode = curNode;
|
2934
|
-
}
|
2935
|
-
curNode = curNode.parent;
|
2936
|
-
}
|
2937
|
-
if ((curNode === null || curNode === void 0 ? void 0 : curNode.nodeType) !== 3 /* Assignment */) {
|
2938
|
-
// Allow a simple annotation statement to have a docstring even
|
2939
|
-
// though PEP 258 doesn't mention this case. This PEP pre-dated
|
2940
|
-
// PEP 526, so it didn't contemplate this situation.
|
2941
|
-
if (annotationNode) {
|
2942
|
-
curNode = annotationNode;
|
2943
|
-
}
|
2944
|
-
else {
|
2945
|
-
return undefined;
|
2946
|
-
}
|
2947
|
-
}
|
2948
|
-
const parentNode = curNode.parent;
|
2949
|
-
if ((parentNode === null || parentNode === void 0 ? void 0 : parentNode.nodeType) !== 47 /* StatementList */) {
|
2950
|
-
return undefined;
|
2951
|
-
}
|
2952
|
-
const suiteOrModule = parentNode.parent;
|
2953
|
-
if (!suiteOrModule ||
|
2954
|
-
(suiteOrModule.nodeType !== 36 /* Module */ && suiteOrModule.nodeType !== 50 /* Suite */)) {
|
2955
|
-
return undefined;
|
2956
|
-
}
|
2957
|
-
const assignmentIndex = suiteOrModule.statements.findIndex((node) => node === parentNode);
|
2958
|
-
if (assignmentIndex < 0 || assignmentIndex === suiteOrModule.statements.length - 1) {
|
2959
|
-
return undefined;
|
2960
|
-
}
|
2961
|
-
const nextStatement = suiteOrModule.statements[assignmentIndex + 1];
|
2962
|
-
if (nextStatement.nodeType !== 47 /* StatementList */ || !ParseTreeUtils.isDocString(nextStatement)) {
|
2963
|
-
return undefined;
|
2964
|
-
}
|
2965
|
-
// See if the assignment is within one of the contexts specified in PEP 258.
|
2966
|
-
let isValidContext = false;
|
2967
|
-
if (((_a = parentNode === null || parentNode === void 0 ? void 0 : parentNode.parent) === null || _a === void 0 ? void 0 : _a.nodeType) === 36 /* Module */) {
|
2968
|
-
// If we're at the top level of a module, the attribute docstring is valid.
|
2969
|
-
isValidContext = true;
|
2970
|
-
}
|
2971
|
-
else if (((_b = parentNode === null || parentNode === void 0 ? void 0 : parentNode.parent) === null || _b === void 0 ? void 0 : _b.nodeType) === 50 /* Suite */ &&
|
2972
|
-
((_d = (_c = parentNode === null || parentNode === void 0 ? void 0 : parentNode.parent) === null || _c === void 0 ? void 0 : _c.parent) === null || _d === void 0 ? void 0 : _d.nodeType) === 10 /* Class */) {
|
2973
|
-
// If we're at the top level of a class, the attribute docstring is valid.
|
2974
|
-
isValidContext = true;
|
2975
|
-
}
|
2976
|
-
else {
|
2977
|
-
const func = ParseTreeUtils.getEnclosingFunction(parentNode);
|
2978
|
-
// If we're within an __init__ method, the attribute docstring is valid.
|
2979
|
-
if (func &&
|
2980
|
-
func.name.value === '__init__' &&
|
2981
|
-
ParseTreeUtils.getEnclosingClass(func, /* stopAtFunction */ true)) {
|
2982
|
-
isValidContext = true;
|
2983
|
-
}
|
2984
|
-
}
|
2985
|
-
if (!isValidContext) {
|
2915
|
+
const docNode = ParseTreeUtils.getVariableDocStringNode(node);
|
2916
|
+
if (!docNode) {
|
2986
2917
|
return undefined;
|
2987
2918
|
}
|
2988
2919
|
// A docstring can consist of multiple joined strings in a single expression.
|
2989
|
-
const strings =
|
2920
|
+
const strings = docNode.strings;
|
2990
2921
|
if (strings.length === 1) {
|
2991
2922
|
// Common case.
|
2992
2923
|
return strings[0].value;
|
@@ -3073,12 +3004,6 @@ class Binder extends parseTreeWalker_1.ParseTreeWalker {
|
|
3073
3004
|
}
|
3074
3005
|
return false;
|
3075
3006
|
}
|
3076
|
-
_isAnnotationTypeAlias(typeAnnotation) {
|
3077
|
-
if (!typeAnnotation) {
|
3078
|
-
return false;
|
3079
|
-
}
|
3080
|
-
return this._isTypingAnnotation(typeAnnotation, 'TypeAlias');
|
3081
|
-
}
|
3082
3007
|
// Determines whether a member access expression is referring to a
|
3083
3008
|
// member of a class (either a class or instance member). This will
|
3084
3009
|
// typically take the form "self.x" or "cls.x".
|