@zzzen/pyright-internal 1.2.0-dev.20230827 → 1.2.0-dev.20230910
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/binder.js +4 -1
- package/dist/analyzer/binder.js.map +1 -1
- package/dist/analyzer/checker.js +40 -14
- package/dist/analyzer/checker.js.map +1 -1
- package/dist/analyzer/codeFlowEngine.js +1 -2
- package/dist/analyzer/codeFlowEngine.js.map +1 -1
- package/dist/analyzer/constraintSolver.js +5 -0
- package/dist/analyzer/constraintSolver.js.map +1 -1
- package/dist/analyzer/constructors.js +16 -7
- package/dist/analyzer/constructors.js.map +1 -1
- package/dist/analyzer/declarationUtils.js +2 -0
- package/dist/analyzer/declarationUtils.js.map +1 -1
- package/dist/analyzer/decorators.js +16 -1
- package/dist/analyzer/decorators.js.map +1 -1
- package/dist/analyzer/deprecatedSymbols.js +13 -2
- package/dist/analyzer/deprecatedSymbols.js.map +1 -1
- package/dist/analyzer/importResolver.d.ts +6 -4
- package/dist/analyzer/importResolver.js +20 -18
- package/dist/analyzer/importResolver.js.map +1 -1
- package/dist/analyzer/namedTuples.js +1 -1
- package/dist/analyzer/namedTuples.js.map +1 -1
- package/dist/analyzer/packageTypeVerifier.d.ts +3 -3
- package/dist/analyzer/packageTypeVerifier.js +8 -11
- package/dist/analyzer/packageTypeVerifier.js.map +1 -1
- package/dist/analyzer/parentDirectoryCache.js +1 -1
- package/dist/analyzer/parentDirectoryCache.js.map +1 -1
- package/dist/analyzer/program.d.ts +9 -22
- package/dist/analyzer/program.js +117 -105
- package/dist/analyzer/program.js.map +1 -1
- package/dist/analyzer/protocols.js +3 -1
- package/dist/analyzer/protocols.js.map +1 -1
- package/dist/analyzer/pythonPathUtils.js +10 -8
- package/dist/analyzer/pythonPathUtils.js.map +1 -1
- package/dist/analyzer/service.d.ts +6 -3
- package/dist/analyzer/service.js +40 -20
- package/dist/analyzer/service.js.map +1 -1
- package/dist/analyzer/sourceFile.d.ts +6 -4
- package/dist/analyzer/sourceFile.js +9 -16
- package/dist/analyzer/sourceFile.js.map +1 -1
- package/dist/analyzer/sourceFileInfo.d.ts +62 -0
- package/dist/analyzer/sourceFileInfo.js +145 -0
- package/dist/analyzer/sourceFileInfo.js.map +1 -0
- package/dist/analyzer/sourceMapper.d.ts +1 -1
- package/dist/analyzer/typeDocStringUtils.js +1 -1
- package/dist/analyzer/typeEvaluator.js +361 -262
- package/dist/analyzer/typeEvaluator.js.map +1 -1
- package/dist/analyzer/typeEvaluatorTypes.d.ts +10 -8
- package/dist/analyzer/typeEvaluatorTypes.js +11 -8
- package/dist/analyzer/typeEvaluatorTypes.js.map +1 -1
- package/dist/analyzer/typeGuards.js +116 -20
- package/dist/analyzer/typeGuards.js.map +1 -1
- package/dist/analyzer/typeUtils.d.ts +6 -4
- package/dist/analyzer/typeUtils.js +104 -63
- package/dist/analyzer/typeUtils.js.map +1 -1
- package/dist/analyzer/typeWalker.js +1 -1
- package/dist/analyzer/typeWalker.js.map +1 -1
- package/dist/analyzer/types.d.ts +1 -0
- package/dist/analyzer/types.js +8 -0
- package/dist/analyzer/types.js.map +1 -1
- package/dist/backgroundAnalysis.d.ts +1 -2
- package/dist/backgroundAnalysis.js +2 -2
- package/dist/backgroundAnalysis.js.map +1 -1
- package/dist/backgroundAnalysisBase.d.ts +1 -2
- package/dist/backgroundAnalysisBase.js +4 -4
- package/dist/backgroundAnalysisBase.js.map +1 -1
- package/dist/backgroundThreadBase.d.ts +1 -1
- package/dist/backgroundThreadBase.js +1 -0
- package/dist/backgroundThreadBase.js.map +1 -1
- package/dist/common/commandLineOptions.d.ts +1 -0
- package/dist/common/commandLineOptions.js.map +1 -1
- package/dist/common/configOptions.d.ts +4 -1
- package/dist/common/configOptions.js +18 -5
- package/dist/common/configOptions.js.map +1 -1
- package/dist/common/console.d.ts +3 -0
- package/dist/common/console.js +8 -1
- package/dist/common/console.js.map +1 -1
- package/dist/common/extensibility.d.ts +10 -1
- package/dist/common/extensibility.js.map +1 -1
- package/dist/common/fileSystem.d.ts +3 -0
- package/dist/common/fileSystem.js +8 -1
- package/dist/common/fileSystem.js.map +1 -1
- package/dist/common/pathUtils.d.ts +2 -15
- package/dist/common/pathUtils.js +9 -84
- package/dist/common/pathUtils.js.map +1 -1
- package/dist/common/realFileSystem.js +22 -13
- package/dist/common/realFileSystem.js.map +1 -1
- package/dist/common/serviceProvider.d.ts +1 -4
- package/dist/common/serviceProvider.js +4 -4
- package/dist/common/serviceProvider.js.map +1 -1
- package/dist/common/serviceProviderExtensions.d.ts +10 -4
- package/dist/common/serviceProviderExtensions.js +43 -1
- package/dist/common/serviceProviderExtensions.js.map +1 -1
- package/dist/languageServerBase.d.ts +9 -9
- package/dist/languageServerBase.js +5 -4
- package/dist/languageServerBase.js.map +1 -1
- package/dist/languageService/analyzerServiceExecutor.js +3 -2
- package/dist/languageService/analyzerServiceExecutor.js.map +1 -1
- package/dist/languageService/completionProvider.d.ts +7 -5
- package/dist/languageService/completionProvider.js +190 -176
- package/dist/languageService/completionProvider.js.map +1 -1
- package/dist/languageService/completionProviderUtils.d.ts +1 -1
- package/dist/languageService/completionProviderUtils.js +1 -1
- package/dist/languageService/completionProviderUtils.js.map +1 -1
- package/dist/localization/localize.d.ts +14 -0
- package/dist/localization/localize.js +8 -0
- package/dist/localization/localize.js.map +1 -1
- package/dist/localization/package.nls.cs.json +26 -17
- package/dist/localization/package.nls.de.json +26 -17
- package/dist/localization/package.nls.en-us.json +9 -2
- package/dist/localization/package.nls.es.json +26 -17
- package/dist/localization/package.nls.fr.json +26 -17
- package/dist/localization/package.nls.it.json +26 -17
- package/dist/localization/package.nls.ja.json +26 -17
- package/dist/localization/package.nls.ko.json +26 -17
- package/dist/localization/package.nls.pl.json +26 -17
- package/dist/localization/package.nls.pt-br.json +26 -17
- package/dist/localization/package.nls.qps-ploc.json +14 -5
- package/dist/localization/package.nls.ru.json +26 -17
- package/dist/localization/package.nls.tr.json +26 -17
- package/dist/localization/package.nls.zh-cn.json +26 -17
- package/dist/localization/package.nls.zh-tw.json +26 -17
- package/dist/pyright.js +6 -4
- package/dist/pyright.js.map +1 -1
- package/dist/server.d.ts +2 -2
- package/dist/server.js +8 -10
- 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 +11 -11
- package/dist/tests/checker.test.js.map +1 -1
- package/dist/tests/completions.test.js +57 -0
- package/dist/tests/completions.test.js.map +1 -1
- package/dist/tests/config.test.js +28 -22
- package/dist/tests/config.test.js.map +1 -1
- package/dist/tests/fourslash/completions.dictionary.keys.complex.fourslash.js +5 -5
- package/dist/tests/fourslash/completions.dictionary.keys.complex.fourslash.js.map +1 -1
- package/dist/tests/fourslash/completions.dictionary.keys.expression.fourslash.js +11 -9
- package/dist/tests/fourslash/completions.dictionary.keys.expression.fourslash.js.map +1 -1
- package/dist/tests/fourslash/completions.dictionary.keys.literalTypes.fourslash.js +14 -14
- package/dist/tests/fourslash/completions.dictionary.keys.literalTypes.fourslash.js.map +1 -1
- package/dist/tests/fourslash/completions.dictionary.keys.simple.fourslash.js +12 -12
- package/dist/tests/fourslash/completions.dictionary.keys.simple.fourslash.js.map +1 -1
- package/dist/tests/fourslash/completions.dictionary.keys.stringLiterals.fourslash.js +9 -9
- package/dist/tests/fourslash/completions.dictionary.keys.stringLiterals.fourslash.js.map +1 -1
- package/dist/tests/fourslash/completions.dictionary.keys.symbols.fourslash.js +3 -3
- package/dist/tests/fourslash/completions.dictionary.keys.symbols.fourslash.js.map +1 -1
- package/dist/tests/fourslash/completions.fstring.stringLiteral.fourslash.js +3 -3
- package/dist/tests/fourslash/completions.fstring.stringLiteral.fourslash.js.map +1 -1
- package/dist/tests/fourslash/completions.indexer.keys.getitem.fourslash.js +4 -4
- package/dist/tests/fourslash/completions.indexer.keys.getitem.fourslash.js.map +1 -1
- package/dist/tests/fourslash/fourslash.d.ts +1 -0
- package/dist/tests/fourslash/missingModuleSource.fourslash.js +4 -1
- package/dist/tests/fourslash/missingModuleSource.fourslash.js.map +1 -1
- package/dist/tests/harness/fourslash/testLanguageService.js +4 -1
- package/dist/tests/harness/fourslash/testLanguageService.js.map +1 -1
- package/dist/tests/harness/fourslash/testState.Consts.d.ts +1 -0
- package/dist/tests/harness/fourslash/testState.Consts.js +2 -0
- package/dist/tests/harness/fourslash/testState.Consts.js.map +1 -1
- package/dist/tests/harness/fourslash/testState.d.ts +2 -0
- package/dist/tests/harness/fourslash/testState.js +9 -2
- package/dist/tests/harness/fourslash/testState.js.map +1 -1
- package/dist/tests/harness/vfs/filesystem.js +10 -6
- package/dist/tests/harness/vfs/filesystem.js.map +1 -1
- package/dist/tests/importResolver.test.js +14 -9
- package/dist/tests/importResolver.test.js.map +1 -1
- package/dist/tests/localizer.test.js +1 -1
- package/dist/tests/localizer.test.js.map +1 -1
- package/dist/tests/pathUtils.test.js +13 -21
- package/dist/tests/pathUtils.test.js.map +1 -1
- package/dist/tests/service.test.js +55 -0
- package/dist/tests/service.test.js.map +1 -1
- package/dist/tests/sourceFile.test.js +4 -2
- package/dist/tests/sourceFile.test.js.map +1 -1
- package/dist/tests/testState.test.js +1 -1
- package/dist/tests/testState.test.js.map +1 -1
- package/dist/tests/testUtils.js +3 -5
- package/dist/tests/testUtils.js.map +1 -1
- package/dist/tests/typeEvaluator1.test.js +2 -2
- package/dist/tests/typeEvaluator2.test.js +5 -1
- package/dist/tests/typeEvaluator2.test.js.map +1 -1
- package/dist/tests/typeEvaluator3.test.js +8 -4
- package/dist/tests/typeEvaluator3.test.js.map +1 -1
- package/dist/tests/typeEvaluator4.test.js +4 -0
- package/dist/tests/typeEvaluator4.test.js.map +1 -1
- package/dist/tests/typeEvaluator5.test.js +1 -1
- package/dist/tests/workspaceEditUtils.test.js +24 -20
- package/dist/tests/workspaceEditUtils.test.js.map +1 -1
- package/dist/workspaceFactory.d.ts +1 -0
- package/dist/workspaceFactory.js +7 -4
- package/dist/workspaceFactory.js.map +1 -1
- package/package.json +1 -1
package/dist/analyzer/checker.js
CHANGED
@@ -1048,6 +1048,7 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
|
|
1048
1048
|
// Type stub found, but source is missing.
|
1049
1049
|
this._evaluator.addDiagnostic(this._fileInfo.diagnosticRuleSet.reportMissingModuleSource, diagnosticRules_1.DiagnosticRule.reportMissingModuleSource, localize_1.Localizer.Diagnostic.importSourceResolveFailure().format({
|
1050
1050
|
importName: importResult.importName,
|
1051
|
+
venv: this._fileInfo.executionEnvironment.name,
|
1051
1052
|
}), node);
|
1052
1053
|
}
|
1053
1054
|
_validateConditionalIsBool(node) {
|
@@ -1104,15 +1105,22 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
|
|
1104
1105
|
}
|
1105
1106
|
const exprTypeResult = this._evaluator.getTypeOfExpression(expression);
|
1106
1107
|
let isExprFunction = true;
|
1108
|
+
let isCoroutine = false;
|
1107
1109
|
(0, typeUtils_1.doForEachSubtype)(exprTypeResult.type, (subtype) => {
|
1108
1110
|
subtype = this._evaluator.makeTopLevelTypeVarsConcrete(subtype);
|
1109
1111
|
if (!(0, types_1.isFunction)(subtype) && !(0, types_1.isOverloadedFunction)(subtype)) {
|
1110
1112
|
isExprFunction = false;
|
1111
1113
|
}
|
1114
|
+
if ((0, types_1.isClassInstance)(subtype) && types_1.ClassType.isBuiltIn(subtype, 'Coroutine')) {
|
1115
|
+
isCoroutine = true;
|
1116
|
+
}
|
1112
1117
|
});
|
1113
1118
|
if (isExprFunction) {
|
1114
1119
|
this._evaluator.addDiagnostic(this._fileInfo.diagnosticRuleSet.reportUnnecessaryComparison, diagnosticRules_1.DiagnosticRule.reportUnnecessaryComparison, localize_1.Localizer.Diagnostic.functionInConditionalExpression(), expression);
|
1115
1120
|
}
|
1121
|
+
if (isCoroutine) {
|
1122
|
+
this._evaluator.addDiagnostic(this._fileInfo.diagnosticRuleSet.reportUnnecessaryComparison, diagnosticRules_1.DiagnosticRule.reportUnnecessaryComparison, localize_1.Localizer.Diagnostic.coroutineInConditionalExpression(), expression);
|
1123
|
+
}
|
1116
1124
|
}
|
1117
1125
|
_reportUnusedExpression(node) {
|
1118
1126
|
var _a, _b;
|
@@ -1989,18 +1997,24 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
|
|
1989
1997
|
// is implicitly initialized by the synthesized `__init__` method and
|
1990
1998
|
// therefore has an implied assignment.
|
1991
1999
|
let isImplicitlyAssigned = false;
|
2000
|
+
// Is this a class variable within a protocol class? If so, it can
|
2001
|
+
// be marked final without providing a value.
|
2002
|
+
let isProtocolClass = false;
|
1992
2003
|
if (symbol.isClassMember() && !symbol.isClassVar()) {
|
1993
2004
|
const containingClass = ParseTreeUtils.getEnclosingClass(firstDecl.node, /* stopAtFunction */ true);
|
1994
2005
|
if (containingClass) {
|
1995
2006
|
const classType = this._evaluator.getTypeOfClass(containingClass);
|
1996
|
-
if (classType &&
|
1997
|
-
(
|
1998
|
-
|
1999
|
-
|
2007
|
+
if (classType && (0, types_1.isClass)(classType.decoratedType)) {
|
2008
|
+
if (types_1.ClassType.isDataClass(classType.decoratedType)) {
|
2009
|
+
isImplicitlyAssigned = true;
|
2010
|
+
}
|
2011
|
+
if (types_1.ClassType.isProtocolClass(classType.decoratedType)) {
|
2012
|
+
isProtocolClass = true;
|
2013
|
+
}
|
2000
2014
|
}
|
2001
2015
|
}
|
2002
2016
|
}
|
2003
|
-
if (!isImplicitlyAssigned) {
|
2017
|
+
if (!isImplicitlyAssigned && !isProtocolClass) {
|
2004
2018
|
this._evaluator.addError(localize_1.Localizer.Diagnostic.finalUnassigned().format({ name }), firstDecl.node);
|
2005
2019
|
}
|
2006
2020
|
}
|
@@ -2491,7 +2505,7 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
|
|
2491
2505
|
// derives from an unknown type. In this case, we'll add an
|
2492
2506
|
// unknown type into the filtered type list to avoid any
|
2493
2507
|
// false positives.
|
2494
|
-
const isClassRelationshipIndeterminate =
|
2508
|
+
const isClassRelationshipIndeterminate = filterIsSuperclass && filterIsSubclass && !types_1.ClassType.isSameGenericClass(varType, filterType);
|
2495
2509
|
if (isClassRelationshipIndeterminate) {
|
2496
2510
|
filteredTypes.push(types_1.UnknownType.create());
|
2497
2511
|
}
|
@@ -2627,6 +2641,22 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
|
|
2627
2641
|
}
|
2628
2642
|
let errorMessage;
|
2629
2643
|
let deprecatedMessage;
|
2644
|
+
function getDeprecatedMessageForFunction(functionType) {
|
2645
|
+
if (functionType.details.declaration &&
|
2646
|
+
functionType.details.declaration.node.nodeType === 28 /* Function */) {
|
2647
|
+
const containingClass = ParseTreeUtils.getEnclosingClass(functionType.details.declaration.node,
|
2648
|
+
/* stopAtFunction */ true);
|
2649
|
+
if (containingClass) {
|
2650
|
+
return localize_1.Localizer.Diagnostic.deprecatedMethod().format({
|
2651
|
+
name: functionType.details.name || '<anonymous>',
|
2652
|
+
className: containingClass.name.value,
|
2653
|
+
});
|
2654
|
+
}
|
2655
|
+
}
|
2656
|
+
return localize_1.Localizer.Diagnostic.deprecatedFunction().format({
|
2657
|
+
name: functionType.details.name,
|
2658
|
+
});
|
2659
|
+
}
|
2630
2660
|
function getDeprecatedMessageForOverloadedCall(evaluator, type) {
|
2631
2661
|
// Determine if the node is part of a call expression. If so,
|
2632
2662
|
// we can determine which overload(s) were used to satisfy
|
@@ -2642,9 +2672,7 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
|
|
2642
2672
|
if (overload.details.deprecatedMessage !== undefined) {
|
2643
2673
|
if (node.value === overload.details.name) {
|
2644
2674
|
deprecatedMessage = overload.details.deprecatedMessage;
|
2645
|
-
errorMessage =
|
2646
|
-
name: overload.details.name,
|
2647
|
-
});
|
2675
|
+
errorMessage = getDeprecatedMessageForFunction(overload);
|
2648
2676
|
}
|
2649
2677
|
else if ((0, types_1.isInstantiableClass)(type) && overload.details.name === '__init__') {
|
2650
2678
|
deprecatedMessage = overload.details.deprecatedMessage;
|
@@ -2673,9 +2701,7 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
|
|
2673
2701
|
else if ((0, types_1.isFunction)(subtype)) {
|
2674
2702
|
if (subtype.details.deprecatedMessage !== undefined && node.value === subtype.details.name) {
|
2675
2703
|
deprecatedMessage = subtype.details.deprecatedMessage;
|
2676
|
-
errorMessage =
|
2677
|
-
name: subtype.details.name || '<anonymous>',
|
2678
|
-
});
|
2704
|
+
errorMessage = getDeprecatedMessageForFunction(subtype);
|
2679
2705
|
}
|
2680
2706
|
}
|
2681
2707
|
else if ((0, types_1.isOverloadedFunction)(subtype)) {
|
@@ -3177,7 +3203,7 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
|
|
3177
3203
|
if (!types_1.ClassType.isDataClass(classType)) {
|
3178
3204
|
return;
|
3179
3205
|
}
|
3180
|
-
const postInitMember = (0, typeUtils_1.lookUpClassMember)(classType, '__post_init__', 2 /* SkipBaseClasses */ |
|
3206
|
+
const postInitMember = (0, typeUtils_1.lookUpClassMember)(classType, '__post_init__', 2 /* SkipBaseClasses */ | 32 /* DeclaredTypesOnly */);
|
3181
3207
|
// If there's no __post_init__ method, there's nothing to check.
|
3182
3208
|
if (!postInitMember) {
|
3183
3209
|
return;
|
@@ -3507,7 +3533,7 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
|
|
3507
3533
|
// __call__ method, skip this check.
|
3508
3534
|
const metaclass = newMember.classType.details.effectiveMetaclass;
|
3509
3535
|
if (metaclass && (0, types_1.isClass)(metaclass) && !types_1.ClassType.isBuiltIn(metaclass, 'type')) {
|
3510
|
-
const callMethod = (0, typeUtils_1.lookUpClassMember)(metaclass, '__call__',
|
3536
|
+
const callMethod = (0, typeUtils_1.lookUpClassMember)(metaclass, '__call__', 64 /* SkipTypeBaseClass */ | 8 /* SkipInstanceVariables */);
|
3511
3537
|
if (callMethod) {
|
3512
3538
|
return;
|
3513
3539
|
}
|