@zzzen/pyright-internal 1.2.0-dev.20230820 → 1.2.0-dev.20230903
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 +47 -64
- package/dist/analyzer/checker.js.map +1 -1
- package/dist/analyzer/codeFlowEngine.js +24 -3
- package/dist/analyzer/codeFlowEngine.js.map +1 -1
- package/dist/analyzer/constraintSolver.js +2 -1
- package/dist/analyzer/constraintSolver.js.map +1 -1
- package/dist/analyzer/constructorTransform.js +1 -1
- package/dist/analyzer/constructorTransform.js.map +1 -1
- package/dist/analyzer/decorators.js +11 -6
- package/dist/analyzer/decorators.js.map +1 -1
- package/dist/analyzer/deprecatedSymbols.d.ts +9 -0
- package/dist/analyzer/deprecatedSymbols.js +303 -0
- package/dist/analyzer/deprecatedSymbols.js.map +1 -0
- package/dist/analyzer/docStringConversion.js +7 -1
- package/dist/analyzer/docStringConversion.js.map +1 -1
- package/dist/analyzer/importResolver.d.ts +6 -4
- package/dist/analyzer/importResolver.js +21 -11
- 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/program.d.ts +10 -23
- package/dist/analyzer/program.js +94 -92
- 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/service.d.ts +6 -3
- package/dist/analyzer/service.js +26 -8
- package/dist/analyzer/service.js.map +1 -1
- package/dist/analyzer/sourceFile.d.ts +6 -4
- package/dist/analyzer/sourceFile.js +10 -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/typeEvaluator.js +729 -592
- package/dist/analyzer/typeEvaluator.js.map +1 -1
- package/dist/analyzer/typeEvaluatorTypes.d.ts +1 -0
- package/dist/analyzer/typeEvaluatorTypes.js.map +1 -1
- package/dist/analyzer/typeGuards.js +93 -18
- package/dist/analyzer/typeGuards.js.map +1 -1
- package/dist/analyzer/typeUtils.d.ts +2 -2
- package/dist/analyzer/typeUtils.js +32 -13
- package/dist/analyzer/typeUtils.js.map +1 -1
- package/dist/analyzer/typeVarContext.js +3 -1
- package/dist/analyzer/typeVarContext.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 +6 -1
- package/dist/analyzer/types.js +19 -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/cancellationUtils.d.ts +2 -1
- package/dist/common/cancellationUtils.js +3 -0
- package/dist/common/cancellationUtils.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 +5 -1
- package/dist/common/configOptions.js +21 -4
- 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/diagnosticRules.d.ts +1 -0
- package/dist/common/diagnosticRules.js +1 -0
- package/dist/common/diagnosticRules.js.map +1 -1
- package/dist/common/extensibility.d.ts +4 -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/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 +8 -8
- package/dist/languageServerBase.js +3 -2
- 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 +4 -3
- package/dist/languageService/completionProvider.js +187 -173
- 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 +8 -0
- package/dist/localization/localize.js +2 -0
- package/dist/localization/localize.js.map +1 -1
- package/dist/localization/package.nls.cs.json +15 -10
- package/dist/localization/package.nls.de.json +11 -6
- package/dist/localization/package.nls.en-us.json +6 -4
- package/dist/localization/package.nls.es.json +16 -11
- package/dist/localization/package.nls.fr.json +17 -12
- package/dist/localization/package.nls.it.json +17 -12
- package/dist/localization/package.nls.ja.json +11 -6
- package/dist/localization/package.nls.ko.json +15 -10
- package/dist/localization/package.nls.pl.json +14 -9
- package/dist/localization/package.nls.pt-br.json +18 -13
- package/dist/localization/package.nls.qps-ploc.json +18 -13
- package/dist/localization/package.nls.ru.json +15 -10
- package/dist/localization/package.nls.tr.json +11 -6
- package/dist/localization/package.nls.zh-cn.json +14 -9
- package/dist/localization/package.nls.zh-tw.json +11 -6
- package/dist/parser/parser.js +2 -0
- package/dist/parser/parser.js.map +1 -1
- package/dist/parser/tokenizer.d.ts +1 -1
- package/dist/parser/tokenizer.js +9 -5
- package/dist/parser/tokenizer.js.map +1 -1
- package/dist/pyright.js +6 -4
- package/dist/pyright.js.map +1 -1
- package/dist/server.d.ts +2 -2
- package/dist/server.js +6 -9
- 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 +34 -13
- package/dist/tests/checker.test.js.map +1 -1
- package/dist/tests/completions.test.js +69 -2
- package/dist/tests/completions.test.js.map +1 -1
- package/dist/tests/config.test.js +23 -17
- package/dist/tests/config.test.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/diagnostics.missingModuleSource.fourslash.js +8 -8
- package/dist/tests/fourslash/diagnostics.missingModuleSource.fourslash.js.map +1 -1
- package/dist/tests/fourslash/importnotresolved.fourslash.js +2 -2
- package/dist/tests/fourslash/importnotresolved.fourslash.js.map +1 -1
- 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.d.ts +2 -0
- package/dist/tests/harness/fourslash/testState.js +5 -1
- package/dist/tests/harness/fourslash/testState.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/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/testUtils.js +3 -5
- package/dist/tests/testUtils.js.map +1 -1
- package/dist/tests/typeEvaluator1.test.js +6 -2
- package/dist/tests/typeEvaluator1.test.js.map +1 -1
- package/dist/tests/typeEvaluator2.test.js +9 -1
- package/dist/tests/typeEvaluator2.test.js.map +1 -1
- package/dist/tests/typeEvaluator3.test.js +17 -23
- package/dist/tests/typeEvaluator3.test.js.map +1 -1
- package/dist/tests/typeEvaluator4.test.js +12 -0
- package/dist/tests/typeEvaluator4.test.js.map +1 -1
- package/dist/tests/typeEvaluator5.test.js +24 -0
- package/dist/tests/typeEvaluator5.test.js.map +1 -1
- package/dist/tests/workspaceEditUtils.test.js +24 -20
- package/dist/tests/workspaceEditUtils.test.js.map +1 -1
- package/dist/workspaceFactory.d.ts +2 -1
- package/dist/workspaceFactory.js +15 -6
- package/dist/workspaceFactory.js.map +1 -1
- package/package.json +1 -1
package/dist/analyzer/checker.js
CHANGED
@@ -48,6 +48,7 @@ const stringTokenUtils_1 = require("../parser/stringTokenUtils");
|
|
48
48
|
const AnalyzerNodeInfo = __importStar(require("./analyzerNodeInfo"));
|
49
49
|
const declaration_1 = require("./declaration");
|
50
50
|
const declarationUtils_1 = require("./declarationUtils");
|
51
|
+
const deprecatedSymbols_1 = require("./deprecatedSymbols");
|
51
52
|
const importResolver_1 = require("./importResolver");
|
52
53
|
const importStatementUtils_1 = require("./importStatementUtils");
|
53
54
|
const parameterUtils_1 = require("./parameterUtils");
|
@@ -66,43 +67,6 @@ const typeGuards_1 = require("./typeGuards");
|
|
66
67
|
const typeUtils_1 = require("./typeUtils");
|
67
68
|
const typeVarContext_1 = require("./typeVarContext");
|
68
69
|
const types_1 = require("./types");
|
69
|
-
const deprecatedAliases = new Map([
|
70
|
-
['Tuple', { version: pythonVersion_1.PythonVersion.V3_9, fullName: 'builtins.tuple', replacementText: 'tuple' }],
|
71
|
-
['List', { version: pythonVersion_1.PythonVersion.V3_9, fullName: 'builtins.list', replacementText: 'list' }],
|
72
|
-
['Dict', { version: pythonVersion_1.PythonVersion.V3_9, fullName: 'builtins.dict', replacementText: 'dict' }],
|
73
|
-
['Set', { version: pythonVersion_1.PythonVersion.V3_9, fullName: 'builtins.set', replacementText: 'set' }],
|
74
|
-
['FrozenSet', { version: pythonVersion_1.PythonVersion.V3_9, fullName: 'builtins.frozenset', replacementText: 'frozenset' }],
|
75
|
-
['Type', { version: pythonVersion_1.PythonVersion.V3_9, fullName: 'builtins.type', replacementText: 'type' }],
|
76
|
-
['Deque', { version: pythonVersion_1.PythonVersion.V3_9, fullName: 'collections.deque', replacementText: 'collections.deque' }],
|
77
|
-
[
|
78
|
-
'DefaultDict',
|
79
|
-
{
|
80
|
-
version: pythonVersion_1.PythonVersion.V3_9,
|
81
|
-
fullName: 'collections.defaultdict',
|
82
|
-
replacementText: 'collections.defaultdict',
|
83
|
-
},
|
84
|
-
],
|
85
|
-
[
|
86
|
-
'OrderedDict',
|
87
|
-
{
|
88
|
-
version: pythonVersion_1.PythonVersion.V3_9,
|
89
|
-
fullName: 'collections.OrderedDict',
|
90
|
-
replacementText: 'collections.OrderedDict',
|
91
|
-
},
|
92
|
-
],
|
93
|
-
[
|
94
|
-
'Counter',
|
95
|
-
{ version: pythonVersion_1.PythonVersion.V3_9, fullName: 'collections.Counter', replacementText: 'collections.Counter' },
|
96
|
-
],
|
97
|
-
[
|
98
|
-
'ChainMap',
|
99
|
-
{ version: pythonVersion_1.PythonVersion.V3_9, fullName: 'collections.ChainMap', replacementText: 'collections.ChainMap' },
|
100
|
-
],
|
101
|
-
]);
|
102
|
-
const deprecatedSpecialForms = new Map([
|
103
|
-
['Optional', { version: pythonVersion_1.PythonVersion.V3_10, fullName: 'typing.Optional', replacementText: '| None' }],
|
104
|
-
['Union', { version: pythonVersion_1.PythonVersion.V3_10, fullName: 'typing.Union', replacementText: '|' }],
|
105
|
-
]);
|
106
70
|
// When enabled, this debug flag causes the code complexity of
|
107
71
|
// functions to be emitted.
|
108
72
|
const isPrintCodeComplexityEnabled = false;
|
@@ -936,7 +900,8 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
|
|
936
900
|
}
|
937
901
|
visitMemberAccess(node) {
|
938
902
|
const type = this._evaluator.getType(node);
|
939
|
-
this.
|
903
|
+
const leftExprType = this._evaluator.getType(node.leftExpression);
|
904
|
+
this._reportDeprecatedUse(node.memberName, type, leftExprType && (0, types_1.isModule)(leftExprType) && leftExprType.moduleName === 'typing');
|
940
905
|
this._conditionallyReportPrivateUsage(node.memberName);
|
941
906
|
// Walk the leftExpression but not the memberName.
|
942
907
|
this.walk(node.leftExpression);
|
@@ -975,7 +940,7 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
|
|
975
940
|
return true;
|
976
941
|
}
|
977
942
|
visitImportFromAs(node) {
|
978
|
-
var _a;
|
943
|
+
var _a, _b;
|
979
944
|
if (this._fileInfo.isStubFile) {
|
980
945
|
return false;
|
981
946
|
}
|
@@ -999,8 +964,16 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
|
|
999
964
|
this._addMissingModuleSourceDiagnosticIfNeeded(importResult, node.name);
|
1000
965
|
break;
|
1001
966
|
}
|
1002
|
-
|
1003
|
-
|
967
|
+
let isImportFromTyping = false;
|
968
|
+
if (((_a = node.parent) === null || _a === void 0 ? void 0 : _a.nodeType) === 22 /* ImportFrom */) {
|
969
|
+
if (node.parent.module.leadingDots === 0 && node.parent.module.nameParts.length === 1) {
|
970
|
+
if (node.parent.module.nameParts[0].value === 'typing') {
|
971
|
+
isImportFromTyping = true;
|
972
|
+
}
|
973
|
+
}
|
974
|
+
}
|
975
|
+
const type = this._evaluator.getType((_b = node.alias) !== null && _b !== void 0 ? _b : node.name);
|
976
|
+
this._reportDeprecatedUse(node.name, type, isImportFromTyping);
|
1004
977
|
return false;
|
1005
978
|
}
|
1006
979
|
visitModuleName(node) {
|
@@ -1075,6 +1048,7 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
|
|
1075
1048
|
// Type stub found, but source is missing.
|
1076
1049
|
this._evaluator.addDiagnostic(this._fileInfo.diagnosticRuleSet.reportMissingModuleSource, diagnosticRules_1.DiagnosticRule.reportMissingModuleSource, localize_1.Localizer.Diagnostic.importSourceResolveFailure().format({
|
1077
1050
|
importName: importResult.importName,
|
1051
|
+
venv: this._fileInfo.executionEnvironment.name,
|
1078
1052
|
}), node);
|
1079
1053
|
}
|
1080
1054
|
_validateConditionalIsBool(node) {
|
@@ -1935,17 +1909,25 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
|
|
1935
1909
|
implementationFunction = type;
|
1936
1910
|
}
|
1937
1911
|
if (!implementationFunction) {
|
1938
|
-
let
|
1912
|
+
let exemptMissingImplementation = false;
|
1939
1913
|
const containingClassNode = ParseTreeUtils.getEnclosingClassOrFunction(primaryDecl.node);
|
1940
1914
|
if (containingClassNode && containingClassNode.nodeType === 10 /* Class */) {
|
1941
1915
|
const classType = this._evaluator.getTypeOfClass(containingClassNode);
|
1942
|
-
if (classType
|
1943
|
-
|
1916
|
+
if (classType) {
|
1917
|
+
if (types_1.ClassType.isProtocolClass(classType.classType)) {
|
1918
|
+
exemptMissingImplementation = true;
|
1919
|
+
}
|
1920
|
+
else if (types_1.ClassType.supportsAbstractMethods(classType.classType)) {
|
1921
|
+
if ((0, types_1.isOverloadedFunction)(type) &&
|
1922
|
+
types_1.OverloadedFunctionType.getOverloads(type).every((overload) => types_1.FunctionType.isAbstractMethod(overload))) {
|
1923
|
+
exemptMissingImplementation = true;
|
1924
|
+
}
|
1925
|
+
}
|
1944
1926
|
}
|
1945
1927
|
}
|
1946
1928
|
// If this is a method within a protocol class, don't require that
|
1947
1929
|
// there is an implementation.
|
1948
|
-
if (!
|
1930
|
+
if (!exemptMissingImplementation) {
|
1949
1931
|
this._evaluator.addDiagnostic(this._fileInfo.diagnosticRuleSet.reportGeneralTypeIssues, diagnosticRules_1.DiagnosticRule.reportGeneralTypeIssues, localize_1.Localizer.Diagnostic.overloadWithoutImplementation().format({
|
1950
1932
|
name: primaryDecl.node.name.value,
|
1951
1933
|
}), primaryDecl.node.name);
|
@@ -2639,8 +2621,8 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
|
|
2639
2621
|
}
|
2640
2622
|
return false;
|
2641
2623
|
}
|
2642
|
-
_reportDeprecatedUse(node, type) {
|
2643
|
-
var _a;
|
2624
|
+
_reportDeprecatedUse(node, type, isImportFromTyping = false) {
|
2625
|
+
var _a, _b;
|
2644
2626
|
if (!type) {
|
2645
2627
|
return;
|
2646
2628
|
}
|
@@ -2717,24 +2699,25 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
|
|
2717
2699
|
this._evaluator.addDiagnostic(this._fileInfo.diagnosticRuleSet.reportDeprecated, diagnosticRules_1.DiagnosticRule.reportDeprecated, errorMessage + diag.getString(), node);
|
2718
2700
|
}
|
2719
2701
|
}
|
2720
|
-
|
2721
|
-
|
2722
|
-
if (0) {
|
2723
|
-
const deprecatedForm = (_a = deprecatedAliases.get(node.value)) !== null && _a !== void 0 ? _a : deprecatedSpecialForms.get(node.value);
|
2702
|
+
if (this._fileInfo.diagnosticRuleSet.deprecateTypingAliases) {
|
2703
|
+
const deprecatedForm = (_a = deprecatedSymbols_1.deprecatedAliases.get(node.value)) !== null && _a !== void 0 ? _a : deprecatedSymbols_1.deprecatedSpecialForms.get(node.value);
|
2724
2704
|
if (deprecatedForm) {
|
2725
|
-
if ((0, types_1.isInstantiableClass)(type) && type.details.fullName === deprecatedForm.fullName)
|
2705
|
+
if (((0, types_1.isInstantiableClass)(type) && type.details.fullName === deprecatedForm.fullName) ||
|
2706
|
+
((_b = type.typeAliasInfo) === null || _b === void 0 ? void 0 : _b.fullName) === deprecatedForm.fullName) {
|
2726
2707
|
if (this._fileInfo.executionEnvironment.pythonVersion >= deprecatedForm.version) {
|
2727
|
-
if (
|
2728
|
-
this.
|
2729
|
-
|
2730
|
-
|
2731
|
-
|
2732
|
-
|
2733
|
-
|
2734
|
-
|
2735
|
-
|
2736
|
-
|
2737
|
-
|
2708
|
+
if (!deprecatedForm.typingImportOnly || isImportFromTyping) {
|
2709
|
+
if (this._fileInfo.diagnosticRuleSet.reportDeprecated === 'none') {
|
2710
|
+
this._evaluator.addDeprecated(localize_1.Localizer.Diagnostic.deprecatedType().format({
|
2711
|
+
version: (0, pythonVersion_1.versionToString)(deprecatedForm.version),
|
2712
|
+
replacement: deprecatedForm.replacementText,
|
2713
|
+
}), node);
|
2714
|
+
}
|
2715
|
+
else {
|
2716
|
+
this._evaluator.addDiagnostic(this._fileInfo.diagnosticRuleSet.reportDeprecated, diagnosticRules_1.DiagnosticRule.reportDeprecated, localize_1.Localizer.Diagnostic.deprecatedType().format({
|
2717
|
+
version: (0, pythonVersion_1.versionToString)(deprecatedForm.version),
|
2718
|
+
replacement: deprecatedForm.replacementText,
|
2719
|
+
}), node);
|
2720
|
+
}
|
2738
2721
|
}
|
2739
2722
|
}
|
2740
2723
|
}
|
@@ -3961,7 +3944,7 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
|
|
3961
3944
|
if (!(0, types_1.isInstantiableClass)(baseClassAndSymbol.classType)) {
|
3962
3945
|
return;
|
3963
3946
|
}
|
3964
|
-
if (baseClassAndSymbol.symbol.isIgnoredForOverrideChecks()) {
|
3947
|
+
if (baseClassAndSymbol.symbol.isIgnoredForOverrideChecks() || overrideSymbol.isIgnoredForOverrideChecks()) {
|
3965
3948
|
return;
|
3966
3949
|
}
|
3967
3950
|
// If the base class doesn't provide a type declaration, we won't bother
|