@zzzen/pyright-internal 1.2.0-dev.20240317 → 1.2.0-dev.20240324
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/analyzerFileInfo.js +1 -1
- package/dist/analyzer/analyzerFileInfo.js.map +1 -1
- package/dist/analyzer/checker.js +6 -6
- package/dist/analyzer/checker.js.map +1 -1
- package/dist/analyzer/deprecatedSymbols.js +40 -40
- package/dist/analyzer/deprecatedSymbols.js.map +1 -1
- package/dist/analyzer/importResolver.js +6 -6
- package/dist/analyzer/importResolver.js.map +1 -1
- package/dist/analyzer/operations.js +1 -1
- package/dist/analyzer/operations.js.map +1 -1
- package/dist/analyzer/properties.js +2 -8
- package/dist/analyzer/properties.js.map +1 -1
- package/dist/analyzer/pythonPathUtils.js +1 -2
- package/dist/analyzer/pythonPathUtils.js.map +1 -1
- package/dist/analyzer/staticExpressions.js +52 -30
- package/dist/analyzer/staticExpressions.js.map +1 -1
- package/dist/analyzer/typeEvaluator.js +28 -32
- package/dist/analyzer/typeEvaluator.js.map +1 -1
- package/dist/analyzer/typeUtils.js +21 -1
- package/dist/analyzer/typeUtils.js.map +1 -1
- package/dist/backgroundThreadBase.js +8 -1
- package/dist/backgroundThreadBase.js.map +1 -1
- package/dist/common/configOptions.js +4 -4
- package/dist/common/configOptions.js.map +1 -1
- package/dist/common/fullAccessHost.js +7 -3
- package/dist/common/fullAccessHost.js.map +1 -1
- package/dist/common/pythonVersion.d.ts +36 -20
- package/dist/common/pythonVersion.js +160 -54
- package/dist/common/pythonVersion.js.map +1 -1
- package/dist/languageService/completionProvider.js +2 -2
- package/dist/languageService/completionProvider.js.map +1 -1
- package/dist/parser/parser.js +24 -21
- package/dist/parser/parser.js.map +1 -1
- package/dist/parser/unicode.js +3456 -2853
- package/dist/parser/unicode.js.map +1 -1
- package/dist/pyright.js +1 -1
- package/dist/pyright.js.map +1 -1
- package/dist/tests/checker.test.js +11 -11
- package/dist/tests/checker.test.js.map +1 -1
- package/dist/tests/config.test.js +7 -7
- package/dist/tests/config.test.js.map +1 -1
- package/dist/tests/fourSlashParser.test.js +2 -2
- package/dist/tests/fourSlashParser.test.js.map +1 -1
- package/dist/tests/languageServer.test.js +1 -1
- package/dist/tests/languageServer.test.js.map +1 -1
- package/dist/tests/lsp/customLsp.d.ts +1 -1
- package/dist/tests/lsp/languageServer.js +2 -1
- package/dist/tests/lsp/languageServer.js.map +1 -1
- package/dist/tests/lsp/languageServerTestUtils.js +6 -6
- package/dist/tests/lsp/languageServerTestUtils.js.map +1 -1
- package/dist/tests/typeEvaluator1.test.js +16 -12
- package/dist/tests/typeEvaluator1.test.js.map +1 -1
- package/dist/tests/typeEvaluator2.test.js +2 -2
- package/dist/tests/typeEvaluator2.test.js.map +1 -1
- package/dist/tests/typeEvaluator3.test.js +56 -56
- package/dist/tests/typeEvaluator3.test.js.map +1 -1
- package/dist/tests/typeEvaluator4.test.js +21 -21
- package/dist/tests/typeEvaluator4.test.js.map +1 -1
- package/dist/tests/typeEvaluator5.test.js +27 -27
- package/dist/tests/typeEvaluator5.test.js.map +1 -1
- package/package.json +1 -1
@@ -11,6 +11,7 @@
|
|
11
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
12
12
|
exports.evaluateStaticBoolLikeExpression = exports.evaluateStaticBoolExpression = void 0;
|
13
13
|
const configOptions_1 = require("../common/configOptions");
|
14
|
+
const pythonVersion_1 = require("../common/pythonVersion");
|
14
15
|
// Returns undefined if the expression cannot be evaluated
|
15
16
|
// statically as a bool value or true/false if it can.
|
16
17
|
function evaluateStaticBoolExpression(node, execEnv, definedConstants, typingImportAliases, sysImportAliases) {
|
@@ -44,9 +45,9 @@ function evaluateStaticBoolExpression(node, execEnv, definedConstants, typingImp
|
|
44
45
|
node.rightExpression.nodeType === 52 /* ParseNodeType.Tuple */) {
|
45
46
|
// Handle the special case of "sys.version_info >= (3, x)"
|
46
47
|
const comparisonVersion = _convertTupleToVersion(node.rightExpression);
|
47
|
-
return
|
48
|
+
return _evaluateVersionBinaryOperation(node.operator, execEnv.pythonVersion, comparisonVersion);
|
48
49
|
}
|
49
|
-
|
50
|
+
if (node.leftExpression.nodeType === 24 /* ParseNodeType.Index */ &&
|
50
51
|
_isSysVersionInfoExpression(node.leftExpression.baseExpression, sysImportAliases) &&
|
51
52
|
node.leftExpression.items.length === 1 &&
|
52
53
|
!node.leftExpression.trailingComma &&
|
@@ -56,18 +57,19 @@ function evaluateStaticBoolExpression(node, execEnv, definedConstants, typingImp
|
|
56
57
|
!node.leftExpression.items[0].valueExpression.isImaginary &&
|
57
58
|
node.leftExpression.items[0].valueExpression.value === 0 &&
|
58
59
|
node.rightExpression.nodeType === 40 /* ParseNodeType.Number */ &&
|
59
|
-
node.rightExpression.isInteger
|
60
|
+
node.rightExpression.isInteger &&
|
61
|
+
typeof node.rightExpression.value === 'number') {
|
60
62
|
// Handle the special case of "sys.version_info[0] >= X"
|
61
|
-
return
|
63
|
+
return _evaluateVersionBinaryOperation(node.operator, new pythonVersion_1.PythonVersion(execEnv.pythonVersion.major, 0), new pythonVersion_1.PythonVersion(node.rightExpression.value, 0));
|
62
64
|
}
|
63
|
-
|
65
|
+
if (_isSysPlatformInfoExpression(node.leftExpression, sysImportAliases) &&
|
64
66
|
node.rightExpression.nodeType === 48 /* ParseNodeType.StringList */) {
|
65
67
|
// Handle the special case of "sys.platform != 'X'"
|
66
68
|
const comparisonPlatform = node.rightExpression.strings.map((s) => s.value).join('');
|
67
69
|
const expectedPlatformName = _getExpectedPlatformNameFromPlatform(execEnv);
|
68
70
|
return _evaluateStringBinaryOperation(node.operator, expectedPlatformName, comparisonPlatform);
|
69
71
|
}
|
70
|
-
|
72
|
+
if (_isOsNameInfoExpression(node.leftExpression) &&
|
71
73
|
node.rightExpression.nodeType === 48 /* ParseNodeType.StringList */) {
|
72
74
|
// Handle the special case of "os.name == 'X'"
|
73
75
|
const comparisonOsName = node.rightExpression.strings.map((s) => s.value).join('');
|
@@ -138,49 +140,69 @@ function evaluateStaticBoolLikeExpression(node, execEnv, definedConstants, typin
|
|
138
140
|
}
|
139
141
|
exports.evaluateStaticBoolLikeExpression = evaluateStaticBoolLikeExpression;
|
140
142
|
function _convertTupleToVersion(node) {
|
141
|
-
let comparisonVersion;
|
142
|
-
// Ignore patch versions.
|
143
143
|
if (node.expressions.length >= 2) {
|
144
144
|
if (node.expressions[0].nodeType === 40 /* ParseNodeType.Number */ &&
|
145
145
|
!node.expressions[0].isImaginary &&
|
146
146
|
node.expressions[1].nodeType === 40 /* ParseNodeType.Number */ &&
|
147
147
|
!node.expressions[1].isImaginary) {
|
148
|
-
const
|
149
|
-
const
|
150
|
-
if (typeof
|
151
|
-
|
148
|
+
const majorNode = node.expressions[0];
|
149
|
+
const minorNode = node.expressions[1];
|
150
|
+
if (typeof majorNode.value !== 'number' || typeof minorNode.value !== 'number') {
|
151
|
+
return undefined;
|
152
|
+
}
|
153
|
+
const major = majorNode.value;
|
154
|
+
const minor = minorNode.value;
|
155
|
+
let micro;
|
156
|
+
if (node.expressions.length >= 3 &&
|
157
|
+
node.expressions[2].nodeType === 40 /* ParseNodeType.Number */ &&
|
158
|
+
!node.expressions[2].isImaginary &&
|
159
|
+
typeof node.expressions[2].value === 'number') {
|
160
|
+
micro = node.expressions[2].value;
|
161
|
+
}
|
162
|
+
let releaseLevel;
|
163
|
+
if (node.expressions.length >= 4 &&
|
164
|
+
node.expressions[3].nodeType === 48 /* ParseNodeType.StringList */ &&
|
165
|
+
node.expressions[3].strings.length === 1 &&
|
166
|
+
node.expressions[3].strings[0].nodeType === 49 /* ParseNodeType.String */) {
|
167
|
+
releaseLevel = node.expressions[3].strings[0].value;
|
152
168
|
}
|
169
|
+
let serial;
|
170
|
+
if (node.expressions.length >= 5 &&
|
171
|
+
node.expressions[4].nodeType === 40 /* ParseNodeType.Number */ &&
|
172
|
+
!node.expressions[4].isImaginary &&
|
173
|
+
typeof node.expressions[4].value === 'number') {
|
174
|
+
serial = node.expressions[4].value;
|
175
|
+
}
|
176
|
+
return new pythonVersion_1.PythonVersion(major, minor, micro, releaseLevel, serial);
|
153
177
|
}
|
154
178
|
}
|
155
179
|
else if (node.expressions.length === 1) {
|
156
|
-
const
|
157
|
-
if (typeof
|
158
|
-
|
180
|
+
const major = node.expressions[0];
|
181
|
+
if (typeof major.value === 'number') {
|
182
|
+
return new pythonVersion_1.PythonVersion(major.value, 0);
|
159
183
|
}
|
160
184
|
}
|
161
|
-
return
|
185
|
+
return undefined;
|
162
186
|
}
|
163
|
-
function
|
187
|
+
function _evaluateVersionBinaryOperation(operatorType, leftValue, rightValue) {
|
164
188
|
if (leftValue !== undefined && rightValue !== undefined) {
|
165
|
-
leftValue = BigInt(leftValue);
|
166
|
-
rightValue = BigInt(rightValue);
|
167
189
|
if (operatorType === 20 /* OperatorType.LessThan */) {
|
168
|
-
return leftValue
|
190
|
+
return leftValue.isLessThan(rightValue);
|
169
191
|
}
|
170
|
-
|
171
|
-
return leftValue
|
192
|
+
if (operatorType === 21 /* OperatorType.LessThanOrEqual */) {
|
193
|
+
return leftValue.isLessOrEqualTo(rightValue);
|
172
194
|
}
|
173
|
-
|
174
|
-
return leftValue
|
195
|
+
if (operatorType === 15 /* OperatorType.GreaterThan */) {
|
196
|
+
return leftValue.isGreaterThan(rightValue);
|
175
197
|
}
|
176
|
-
|
177
|
-
return leftValue
|
198
|
+
if (operatorType === 16 /* OperatorType.GreaterThanOrEqual */) {
|
199
|
+
return leftValue.isGreaterOrEqualTo(rightValue);
|
178
200
|
}
|
179
|
-
|
180
|
-
return leftValue
|
201
|
+
if (operatorType === 12 /* OperatorType.Equals */) {
|
202
|
+
return leftValue.isEqualTo(rightValue);
|
181
203
|
}
|
182
|
-
|
183
|
-
return leftValue
|
204
|
+
if (operatorType === 28 /* OperatorType.NotEquals */) {
|
205
|
+
return !leftValue.isEqualTo(rightValue);
|
184
206
|
}
|
185
207
|
}
|
186
208
|
return undefined;
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"staticExpressions.js","sourceRoot":"","sources":["../../../../../src/analyzer/staticExpressions.ts"],"names":[],"mappings":";AAAA;;;;;;;;GAQG;;;AAEH,2DAA+E;
|
1
|
+
{"version":3,"file":"staticExpressions.js","sourceRoot":"","sources":["../../../../../src/analyzer/staticExpressions.ts"],"names":[],"mappings":"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"}
|
@@ -86,21 +86,21 @@ const types_1 = require("./types");
|
|
86
86
|
// It lists the first version of Python where subscripting is
|
87
87
|
// allowed.
|
88
88
|
const nonSubscriptableBuiltinTypes = new Map([
|
89
|
-
['asyncio.futures.Future', pythonVersion_1.
|
90
|
-
['asyncio.tasks.Task', pythonVersion_1.
|
91
|
-
['builtins.dict', pythonVersion_1.
|
92
|
-
['builtins.frozenset', pythonVersion_1.
|
93
|
-
['builtins.list', pythonVersion_1.
|
94
|
-
['builtins._PathLike', pythonVersion_1.
|
95
|
-
['builtins.set', pythonVersion_1.
|
96
|
-
['builtins.tuple', pythonVersion_1.
|
97
|
-
['collections.ChainMap', pythonVersion_1.
|
98
|
-
['collections.Counter', pythonVersion_1.
|
99
|
-
['collections.defaultdict', pythonVersion_1.
|
100
|
-
['collections.DefaultDict', pythonVersion_1.
|
101
|
-
['collections.deque', pythonVersion_1.
|
102
|
-
['collections.OrderedDict', pythonVersion_1.
|
103
|
-
['queue.Queue', pythonVersion_1.
|
89
|
+
['asyncio.futures.Future', pythonVersion_1.pythonVersion3_9],
|
90
|
+
['asyncio.tasks.Task', pythonVersion_1.pythonVersion3_9],
|
91
|
+
['builtins.dict', pythonVersion_1.pythonVersion3_9],
|
92
|
+
['builtins.frozenset', pythonVersion_1.pythonVersion3_9],
|
93
|
+
['builtins.list', pythonVersion_1.pythonVersion3_9],
|
94
|
+
['builtins._PathLike', pythonVersion_1.pythonVersion3_9],
|
95
|
+
['builtins.set', pythonVersion_1.pythonVersion3_9],
|
96
|
+
['builtins.tuple', pythonVersion_1.pythonVersion3_9],
|
97
|
+
['collections.ChainMap', pythonVersion_1.pythonVersion3_9],
|
98
|
+
['collections.Counter', pythonVersion_1.pythonVersion3_9],
|
99
|
+
['collections.defaultdict', pythonVersion_1.pythonVersion3_9],
|
100
|
+
['collections.DefaultDict', pythonVersion_1.pythonVersion3_9],
|
101
|
+
['collections.deque', pythonVersion_1.pythonVersion3_9],
|
102
|
+
['collections.OrderedDict', pythonVersion_1.pythonVersion3_9],
|
103
|
+
['queue.Queue', pythonVersion_1.pythonVersion3_9],
|
104
104
|
]);
|
105
105
|
// Some types that do not inherit from others are still considered
|
106
106
|
// "compatible" based on the Python spec. These are sometimes referred
|
@@ -3662,7 +3662,7 @@ function createTypeEvaluator(importLookup, evaluatorOptions) {
|
|
3662
3662
|
if (usage.method === 'get') {
|
3663
3663
|
const getAttrSymbol = types_1.ModuleType.getField(baseType, '__getattr__');
|
3664
3664
|
if (getAttrSymbol) {
|
3665
|
-
const isModuleGetAttrSupported = fileInfo.executionEnvironment.pythonVersion
|
3665
|
+
const isModuleGetAttrSupported = fileInfo.executionEnvironment.pythonVersion.isGreaterOrEqualTo(pythonVersion_1.pythonVersion3_7) ||
|
3666
3666
|
getAttrSymbol.getDeclarations().some((decl) => decl.uri.hasExtension('.pyi'));
|
3667
3667
|
if (isModuleGetAttrSupported) {
|
3668
3668
|
const getAttrTypeResult = getEffectiveTypeOfSymbolForUsage(getAttrSymbol);
|
@@ -4385,7 +4385,7 @@ function createTypeEvaluator(importLookup, evaluatorOptions) {
|
|
4385
4385
|
!baseTypeResult.type.aliasName) {
|
4386
4386
|
const minPythonVersion = nonSubscriptableBuiltinTypes.get(baseTypeResult.type.details.fullName);
|
4387
4387
|
if (minPythonVersion !== undefined &&
|
4388
|
-
fileInfo.executionEnvironment.pythonVersion
|
4388
|
+
fileInfo.executionEnvironment.pythonVersion.isLessThan(minPythonVersion) &&
|
4389
4389
|
!fileInfo.isStubFile) {
|
4390
4390
|
addError(localize_1.LocMessage.classNotRuntimeSubscriptable().format({
|
4391
4391
|
name: baseTypeResult.type.aliasName || baseTypeResult.type.details.name,
|
@@ -8696,7 +8696,7 @@ function createTypeEvaluator(importLookup, evaluatorOptions) {
|
|
8696
8696
|
typeVar.details.isDefaultExplicit = true;
|
8697
8697
|
const fileInfo = AnalyzerNodeInfo.getFileInfo(errorNode);
|
8698
8698
|
if (!fileInfo.isStubFile &&
|
8699
|
-
fileInfo.executionEnvironment.pythonVersion
|
8699
|
+
fileInfo.executionEnvironment.pythonVersion.isLessThan(pythonVersion_1.pythonVersion3_13) &&
|
8700
8700
|
classType.details.moduleName !== 'typing_extensions') {
|
8701
8701
|
addError(localize_1.LocMessage.typeVarDefaultIllegal(), defaultValueNode);
|
8702
8702
|
}
|
@@ -8796,7 +8796,7 @@ function createTypeEvaluator(importLookup, evaluatorOptions) {
|
|
8796
8796
|
}
|
8797
8797
|
const fileInfo = AnalyzerNodeInfo.getFileInfo(errorNode);
|
8798
8798
|
if (!fileInfo.isStubFile &&
|
8799
|
-
fileInfo.executionEnvironment.pythonVersion
|
8799
|
+
fileInfo.executionEnvironment.pythonVersion.isLessThan(pythonVersion_1.pythonVersion3_13) &&
|
8800
8800
|
classType.details.moduleName !== 'typing_extensions') {
|
8801
8801
|
addError(localize_1.LocMessage.typeVarDefaultIllegal(), expr);
|
8802
8802
|
}
|
@@ -8855,7 +8855,7 @@ function createTypeEvaluator(importLookup, evaluatorOptions) {
|
|
8855
8855
|
}
|
8856
8856
|
const fileInfo = AnalyzerNodeInfo.getFileInfo(errorNode);
|
8857
8857
|
if (!fileInfo.isStubFile &&
|
8858
|
-
fileInfo.executionEnvironment.pythonVersion
|
8858
|
+
fileInfo.executionEnvironment.pythonVersion.isLessThan(pythonVersion_1.pythonVersion3_13) &&
|
8859
8859
|
classType.details.moduleName !== 'typing_extensions') {
|
8860
8860
|
addError(localize_1.LocMessage.typeVarDefaultIllegal(), expr);
|
8861
8861
|
}
|
@@ -9755,7 +9755,7 @@ function createTypeEvaluator(importLookup, evaluatorOptions) {
|
|
9755
9755
|
}
|
9756
9756
|
function inferTypeArgFromExpectedEntryType(inferenceContext, entryTypes, isNarrowable) {
|
9757
9757
|
// If the expected type is Any, the resulting type becomes Any.
|
9758
|
-
if ((0, types_1.
|
9758
|
+
if ((0, types_1.isAny)(inferenceContext.expectedType)) {
|
9759
9759
|
return inferenceContext.expectedType;
|
9760
9760
|
}
|
9761
9761
|
const typeVarContext = new typeVarContext_1.TypeVarContext((0, typeUtils_1.getTypeVarScopeId)(inferenceContext.expectedType));
|
@@ -11552,7 +11552,7 @@ function createTypeEvaluator(importLookup, evaluatorOptions) {
|
|
11552
11552
|
if (types_1.ClassType.isBuiltIn(argType, 'Protocol')) {
|
11553
11553
|
if (!fileInfo.isStubFile &&
|
11554
11554
|
!types_1.ClassType.isTypingExtensionClass(argType) &&
|
11555
|
-
fileInfo.executionEnvironment.pythonVersion
|
11555
|
+
fileInfo.executionEnvironment.pythonVersion.isLessThan(pythonVersion_1.pythonVersion3_7)) {
|
11556
11556
|
addError(localize_1.LocMessage.protocolIllegal(), arg.valueExpression);
|
11557
11557
|
}
|
11558
11558
|
classType.details.flags |= 16384 /* ClassTypeFlags.ProtocolClass */;
|
@@ -11562,7 +11562,7 @@ function createTypeEvaluator(importLookup, evaluatorOptions) {
|
|
11562
11562
|
}
|
11563
11563
|
// If the class directly derives from NamedTuple (in Python 3.6 or
|
11564
11564
|
// newer), it's considered a (read-only) dataclass.
|
11565
|
-
if (fileInfo.executionEnvironment.pythonVersion
|
11565
|
+
if (fileInfo.executionEnvironment.pythonVersion.isGreaterOrEqualTo(pythonVersion_1.pythonVersion3_6)) {
|
11566
11566
|
if (types_1.ClassType.isBuiltIn(argType, 'NamedTuple')) {
|
11567
11567
|
classType.details.flags |=
|
11568
11568
|
4 /* ClassTypeFlags.DataClass */ |
|
@@ -12249,7 +12249,7 @@ function createTypeEvaluator(importLookup, evaluatorOptions) {
|
|
12249
12249
|
const paramInfo = paramListDetails.params[paramIndex];
|
12250
12250
|
const argParam = {
|
12251
12251
|
paramCategory: paramInfo.param.category,
|
12252
|
-
paramType:
|
12252
|
+
paramType: paramInfo.type,
|
12253
12253
|
requiresTypeVarMatching: false,
|
12254
12254
|
argument: arg,
|
12255
12255
|
errorNode: (_b = arg.valueExpression) !== null && _b !== void 0 ? _b : errorNode,
|
@@ -12741,17 +12741,12 @@ function createTypeEvaluator(importLookup, evaluatorOptions) {
|
|
12741
12741
|
// Callable, these type variables are "rescoped" from the function to
|
12742
12742
|
// the Callable.
|
12743
12743
|
function rescopeTypeVarsForCallableReturnType(returnType, functionType, typeParametersSeen) {
|
12744
|
-
const typeVarsInReturnType = (0, typeUtils_1.getTypeVarArgumentsRecursive)(returnType);
|
12744
|
+
const typeVarsInReturnType = (0, typeUtils_1.getTypeVarArgumentsRecursive)(returnType).filter((t) => t.scopeId === functionType.details.typeVarScopeId);
|
12745
12745
|
const rescopedTypeVars = [];
|
12746
12746
|
typeVarsInReturnType.forEach((typeVar) => {
|
12747
12747
|
if (types_1.TypeBase.isInstantiable(typeVar)) {
|
12748
12748
|
typeVar = types_1.TypeVarType.cloneAsInstance(typeVar);
|
12749
12749
|
}
|
12750
|
-
// If this type variable isn't scoped to this function, it is probably
|
12751
|
-
// associated with an outer scope.
|
12752
|
-
if (typeVar.scopeId !== functionType.details.typeVarScopeId) {
|
12753
|
-
return;
|
12754
|
-
}
|
12755
12750
|
// If this type variable was already seen in one or more input parameters,
|
12756
12751
|
// don't attempt to rescope it.
|
12757
12752
|
if (typeParametersSeen.some((tp) => (0, types_1.isTypeSame)((0, typeUtils_1.convertToInstance)(tp), typeVar))) {
|
@@ -13349,7 +13344,8 @@ function createTypeEvaluator(importLookup, evaluatorOptions) {
|
|
13349
13344
|
reportError = true;
|
13350
13345
|
// Handle PEP 562 support for module-level __getattr__ function,
|
13351
13346
|
// introduced in Python 3.7.
|
13352
|
-
if (fileInfo.executionEnvironment.pythonVersion
|
13347
|
+
if (fileInfo.executionEnvironment.pythonVersion.isGreaterOrEqualTo(pythonVersion_1.pythonVersion3_7) ||
|
13348
|
+
fileInfo.isStubFile) {
|
13353
13349
|
const getAttrSymbol = importLookupInfo.symbolTable.get('__getattr__');
|
13354
13350
|
if (getAttrSymbol) {
|
13355
13351
|
const getAttrType = getEffectiveTypeOfSymbol(getAttrSymbol);
|
@@ -14155,7 +14151,7 @@ function createTypeEvaluator(importLookup, evaluatorOptions) {
|
|
14155
14151
|
}
|
14156
14152
|
const fileInfo = AnalyzerNodeInfo.getFileInfo(errorNode);
|
14157
14153
|
if (fileInfo.isStubFile ||
|
14158
|
-
fileInfo.executionEnvironment.pythonVersion
|
14154
|
+
fileInfo.executionEnvironment.pythonVersion.isGreaterOrEqualTo(pythonVersion_1.pythonVersion3_9) ||
|
14159
14155
|
(0, analyzerFileInfo_1.isAnnotationEvaluationPostponed)(AnalyzerNodeInfo.getFileInfo(errorNode)) ||
|
14160
14156
|
(flags & 4 /* EvaluatorFlags.AllowForwardReferences */) !== 0) {
|
14161
14157
|
// Handle "type" specially, since it needs to act like "Type"
|