@zzzen/pyright-internal 1.2.0-dev.20260705 → 1.2.0-dev.20260712

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.
Files changed (94) hide show
  1. package/dist/tests/typeServer/inProcTypeServerTestUtils.d.ts +39 -0
  2. package/dist/tests/typeServer/inProcTypeServerTestUtils.js +366 -0
  3. package/dist/tests/typeServer/inProcTypeServerTestUtils.js.map +1 -0
  4. package/dist/tests/typeServer/notebook.typeServer.test.d.ts +1 -0
  5. package/dist/tests/typeServer/notebook.typeServer.test.js +315 -0
  6. package/dist/tests/typeServer/notebook.typeServer.test.js.map +1 -0
  7. package/dist/tests/typeServer/typeServer.inProc.test.d.ts +1 -0
  8. package/dist/tests/typeServer/typeServer.inProc.test.js +234 -0
  9. package/dist/tests/typeServer/typeServer.inProc.test.js.map +1 -0
  10. package/dist/tests/typeServer/typeServer.virtualFileRedirect.test.d.ts +1 -0
  11. package/dist/tests/typeServer/typeServer.virtualFileRedirect.test.js +298 -0
  12. package/dist/tests/typeServer/typeServer.virtualFileRedirect.test.js.map +1 -0
  13. package/dist/typeServer/cancellation.d.ts +5 -0
  14. package/dist/typeServer/cancellation.js +14 -0
  15. package/dist/typeServer/cancellation.js.map +1 -0
  16. package/dist/typeServer/diagnosticUtils.d.ts +4 -0
  17. package/dist/typeServer/diagnosticUtils.js +71 -0
  18. package/dist/typeServer/diagnosticUtils.js.map +1 -0
  19. package/dist/typeServer/enums.d.ts +14 -0
  20. package/dist/typeServer/enums.js +524 -0
  21. package/dist/typeServer/enums.js.map +1 -0
  22. package/dist/typeServer/eventEmitter.d.ts +12 -0
  23. package/dist/typeServer/eventEmitter.js +32 -0
  24. package/dist/typeServer/eventEmitter.js.map +1 -0
  25. package/dist/typeServer/nodeMain.d.ts +1 -0
  26. package/dist/typeServer/nodeMain.js +65 -0
  27. package/dist/typeServer/nodeMain.js.map +1 -0
  28. package/dist/typeServer/notebookCellChain.d.ts +34 -0
  29. package/dist/typeServer/notebookCellChain.js +182 -0
  30. package/dist/typeServer/notebookCellChain.js.map +1 -0
  31. package/dist/typeServer/notebookDocumentHandler.d.ts +23 -0
  32. package/dist/typeServer/notebookDocumentHandler.js +158 -0
  33. package/dist/typeServer/notebookDocumentHandler.js.map +1 -0
  34. package/dist/typeServer/notebookUriMapper.d.ts +39 -0
  35. package/dist/typeServer/notebookUriMapper.js +164 -0
  36. package/dist/typeServer/notebookUriMapper.js.map +1 -0
  37. package/dist/typeServer/profilingStub.d.ts +10 -0
  38. package/dist/typeServer/profilingStub.js +12 -0
  39. package/dist/typeServer/profilingStub.js.map +1 -0
  40. package/dist/typeServer/programTypes.d.ts +136 -0
  41. package/dist/typeServer/programTypes.js +3 -0
  42. package/dist/typeServer/programTypes.js.map +1 -0
  43. package/dist/typeServer/programWrapper.d.ts +134 -0
  44. package/dist/typeServer/programWrapper.js +731 -0
  45. package/dist/typeServer/programWrapper.js.map +1 -0
  46. package/dist/typeServer/protocol/tspSupplemental.d.ts +43 -0
  47. package/dist/typeServer/protocol/tspSupplemental.js +48 -0
  48. package/dist/typeServer/protocol/tspSupplemental.js.map +1 -0
  49. package/dist/typeServer/protocol/typeServerProtocol.d.ts +1102 -0
  50. package/dist/typeServer/protocol/typeServerProtocol.js +290 -0
  51. package/dist/typeServer/protocol/typeServerProtocol.js.map +1 -0
  52. package/dist/typeServer/server.d.ts +54 -0
  53. package/dist/typeServer/server.js +620 -0
  54. package/dist/typeServer/server.js.map +1 -0
  55. package/dist/typeServer/serverUtils.d.ts +4 -0
  56. package/dist/typeServer/serverUtils.js +21 -0
  57. package/dist/typeServer/serverUtils.js.map +1 -0
  58. package/dist/typeServer/stubGenerator.d.ts +42 -0
  59. package/dist/typeServer/stubGenerator.js +895 -0
  60. package/dist/typeServer/stubGenerator.js.map +1 -0
  61. package/dist/typeServer/typeCache.d.ts +31 -0
  62. package/dist/typeServer/typeCache.js +54 -0
  63. package/dist/typeServer/typeCache.js.map +1 -0
  64. package/dist/typeServer/typeEvalUtils.d.ts +13 -0
  65. package/dist/typeServer/typeEvalUtils.js +83 -0
  66. package/dist/typeServer/typeEvalUtils.js.map +1 -0
  67. package/dist/typeServer/typeGuards.d.ts +3 -0
  68. package/dist/typeServer/typeGuards.js +55 -0
  69. package/dist/typeServer/typeGuards.js.map +1 -0
  70. package/dist/typeServer/typeServerConversionTypes.d.ts +39 -0
  71. package/dist/typeServer/typeServerConversionTypes.js +448 -0
  72. package/dist/typeServer/typeServerConversionTypes.js.map +1 -0
  73. package/dist/typeServer/typeServerConversionUtils.d.ts +35 -0
  74. package/dist/typeServer/typeServerConversionUtils.js +524 -0
  75. package/dist/typeServer/typeServerConversionUtils.js.map +1 -0
  76. package/dist/typeServer/typeServerEvaluator.d.ts +16 -0
  77. package/dist/typeServer/typeServerEvaluator.js +36 -0
  78. package/dist/typeServer/typeServerEvaluator.js.map +1 -0
  79. package/dist/typeServer/typeServerFileSystem.d.ts +47 -0
  80. package/dist/typeServer/typeServerFileSystem.js +129 -0
  81. package/dist/typeServer/typeServerFileSystem.js.map +1 -0
  82. package/dist/typeServer/typeServerProtocolUtils.d.ts +2 -0
  83. package/dist/typeServer/typeServerProtocolUtils.js +7 -0
  84. package/dist/typeServer/typeServerProtocolUtils.js.map +1 -0
  85. package/dist/typeServer/typeServerServiceKeys.d.ts +7 -0
  86. package/dist/typeServer/typeServerServiceKeys.js +20 -0
  87. package/dist/typeServer/typeServerServiceKeys.js.map +1 -0
  88. package/dist/typeServer/typeUtils.d.ts +4 -0
  89. package/dist/typeServer/typeUtils.js +31 -0
  90. package/dist/typeServer/typeUtils.js.map +1 -0
  91. package/dist/typeServer/virtualFileOverlayFileSystem.d.ts +87 -0
  92. package/dist/typeServer/virtualFileOverlayFileSystem.js +181 -0
  93. package/dist/typeServer/virtualFileOverlayFileSystem.js.map +1 -0
  94. package/package.json +1 -1
@@ -0,0 +1,524 @@
1
+ "use strict";
2
+ /*
3
+ * enums.ts
4
+ * Copyright (c) Microsoft Corporation.
5
+ * Licensed under the MIT license.
6
+ *
7
+ * Provides special-case logic for the Enum class.
8
+ *
9
+ * NOTE: This module is forked from `analyzer/enums.ts` and intentionally kept
10
+ * structurally identical to it. The only substantive difference is that file-info
11
+ * is routed through `evaluator.getSymbolLookup().getFileInfo(...)` so the logic can
12
+ * run against an `ITypeServerEvaluator`. Keep this copy in sync whenever the
13
+ * canonical enum semantics in `analyzer/enums.ts` change, otherwise the two will
14
+ * silently drift. Tracked by the type-server deduplication follow-up.
15
+ */
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ exports.isEnumMetaclass = isEnumMetaclass;
18
+ exports.isEnumClassWithMembers = isEnumClassWithMembers;
19
+ exports.createEnumType = createEnumType;
20
+ exports.transformTypeForEnumMember = transformTypeForEnumMember;
21
+ exports.isDeclInEnumClass = isDeclInEnumClass;
22
+ exports.getEnumDeclaredValueType = getEnumDeclaredValueType;
23
+ exports.getTypeOfEnumMember = getTypeOfEnumMember;
24
+ exports.getEnumAutoValueType = getEnumAutoValueType;
25
+ exports.isReprEnumClass = isReprEnumClass;
26
+ const parseTreeUtils_1 = require("../analyzer/parseTreeUtils");
27
+ const symbol_1 = require("../analyzer/symbol");
28
+ const symbolNameUtils_1 = require("../analyzer/symbolNameUtils");
29
+ const types_1 = require("../analyzer/types");
30
+ const typeUtils_1 = require("../analyzer/typeUtils");
31
+ const debug_1 = require("../common/debug");
32
+ const pythonVersion_1 = require("../common/pythonVersion");
33
+ const typeEvalUtils_1 = require("./typeEvalUtils");
34
+ const typeGuards_1 = require("./typeGuards");
35
+ // This stack is used to prevent infinite recursion when evaluating
36
+ // enum members that refer to other enum members.
37
+ const enumEvalStack = [];
38
+ // Determines whether the class is an Enum metaclass or a subclass thereof.
39
+ function isEnumMetaclass(classType) {
40
+ return classType.shared.mro.some((mroClass) => (0, types_1.isClass)(mroClass) && types_1.ClassType.isBuiltIn(mroClass, ['EnumMeta', 'EnumType']));
41
+ }
42
+ // Determines whether this is an enum class that has at least one enum
43
+ // member defined.
44
+ function isEnumClassWithMembers(evaluator, classType) {
45
+ if (!(0, types_1.isClass)(classType) || !types_1.ClassType.isEnumClass(classType)) {
46
+ return false;
47
+ }
48
+ // Determine whether the enum class defines a member.
49
+ let definesMember = false;
50
+ (0, typeEvalUtils_1.forEach)((0, typeEvalUtils_1.getSymbolTable)(classType), (symbol, name) => {
51
+ const symbolType = transformTypeForEnumMember(evaluator, classType, name);
52
+ if (symbolType &&
53
+ (0, types_1.isClassInstance)(symbolType) &&
54
+ types_1.ClassType.isSameGenericClass(symbolType, types_1.ClassType.cloneAsInstance(classType))) {
55
+ definesMember = true;
56
+ }
57
+ });
58
+ return definesMember;
59
+ }
60
+ // Creates a new custom enum class with named values.
61
+ function createEnumType(evaluator, errorNode, enumClass, argList) {
62
+ const fileInfo = evaluator.getSymbolLookup().getFileInfo(errorNode);
63
+ const isReprEnum = isReprEnumClass(enumClass);
64
+ if (argList.length === 0) {
65
+ return undefined;
66
+ }
67
+ const nameArg = argList[0];
68
+ if (nameArg.argCategory !== 0 /* ArgCategory.Simple */ ||
69
+ !nameArg.valueExpression ||
70
+ nameArg.valueExpression.nodeType !== 48 /* ParseNodeType.StringList */ ||
71
+ nameArg.valueExpression.d.strings.length !== 1 ||
72
+ nameArg.valueExpression.d.strings[0].nodeType !== 49 /* ParseNodeType.String */) {
73
+ return undefined;
74
+ }
75
+ const className = nameArg.valueExpression.d.strings.map((s) => s.d.value).join('');
76
+ const classType = types_1.ClassType.createInstantiable(className, (0, parseTreeUtils_1.getClassFullName)(errorNode, fileInfo.moduleName, className), fileInfo.moduleName, fileInfo.fileUri, 65536 /* ClassTypeFlags.EnumClass */ | 4194304 /* ClassTypeFlags.ValidTypeAliasClass */, (0, parseTreeUtils_1.getTypeSourceId)(errorNode),
77
+ /* declaredMetaclass */ undefined, enumClass.shared.effectiveMetaclass);
78
+ classType.shared.baseClasses.push(enumClass);
79
+ (0, typeUtils_1.computeMroLinearization)(classType);
80
+ const classFields = (0, typeEvalUtils_1.getSymbolTable)(classType);
81
+ classFields.set('__class__', symbol_1.Symbol.createWithType(4 /* SymbolFlags.ClassMember */ | 64 /* SymbolFlags.IgnoredForProtocolMatch */, classType));
82
+ if (argList.length < 2) {
83
+ return undefined;
84
+ }
85
+ const initArg = argList[1];
86
+ if (initArg.argCategory !== 0 /* ArgCategory.Simple */ || !initArg.valueExpression) {
87
+ return undefined;
88
+ }
89
+ const intClassType = evaluator.getBuiltInType(errorNode, 'int');
90
+ if (!intClassType || !(0, types_1.isInstantiableClass)(intClassType)) {
91
+ return undefined;
92
+ }
93
+ const classInstanceType = types_1.ClassType.cloneAsInstance(classType);
94
+ // The Enum functional form supports various forms of arguments:
95
+ // Enum('name', 'a b c')
96
+ // Enum('name', 'a,b,c')
97
+ // Enum('name', ['a', 'b', 'c'])
98
+ // Enum('name', ('a', 'b', 'c'))
99
+ // Enum('name', (('a', 1), ('b', 2), ('c', 3)))
100
+ // Enum('name', [('a', 1), ('b', 2), ('c', 3))]
101
+ // Enum('name', {'a': 1, 'b': 2, 'c': 3})
102
+ if (initArg.valueExpression.nodeType === 48 /* ParseNodeType.StringList */) {
103
+ // Don't allow format strings in the init arg.
104
+ if (!initArg.valueExpression.d.strings.every((str) => str.nodeType === 49 /* ParseNodeType.String */)) {
105
+ return undefined;
106
+ }
107
+ const initStr = initArg.valueExpression.d.strings
108
+ .map((s) => s.d.value)
109
+ .join('')
110
+ .trim();
111
+ // Split by comma or whitespace.
112
+ const entryNames = initStr.split(/[\s,]+/);
113
+ for (const [index, entryName] of entryNames.entries()) {
114
+ if (!entryName) {
115
+ return undefined;
116
+ }
117
+ const valueType = types_1.ClassType.cloneWithLiteral(types_1.ClassType.cloneAsInstance(intClassType), index + 1);
118
+ const enumLiteral = new types_1.EnumLiteral(classType.shared.fullName, classType.shared.name, entryName, valueType, isReprEnum);
119
+ const newSymbol = symbol_1.Symbol.createWithType(4 /* SymbolFlags.ClassMember */, types_1.ClassType.cloneWithLiteral(classInstanceType, enumLiteral));
120
+ classFields.set(entryName, newSymbol);
121
+ }
122
+ return classType;
123
+ }
124
+ if (initArg.valueExpression.nodeType === 34 /* ParseNodeType.List */ ||
125
+ initArg.valueExpression.nodeType === 52 /* ParseNodeType.Tuple */) {
126
+ const entries = initArg.valueExpression.nodeType === 34 /* ParseNodeType.List */
127
+ ? initArg.valueExpression.d.items
128
+ : initArg.valueExpression.d.items;
129
+ if (entries.length === 0) {
130
+ return undefined;
131
+ }
132
+ // Entries can be either string literals or tuples of a string
133
+ // literal and a value. All entries must follow the same pattern.
134
+ let isSimpleString = false;
135
+ for (const [index, entry] of entries.entries()) {
136
+ if (index === 0) {
137
+ isSimpleString = entry.nodeType === 48 /* ParseNodeType.StringList */;
138
+ }
139
+ let nameNode;
140
+ let valueType;
141
+ if (entry.nodeType === 48 /* ParseNodeType.StringList */) {
142
+ if (!isSimpleString) {
143
+ return undefined;
144
+ }
145
+ nameNode = entry;
146
+ valueType = types_1.ClassType.cloneWithLiteral(types_1.ClassType.cloneAsInstance(intClassType), index + 1);
147
+ }
148
+ else if (entry.nodeType === 52 /* ParseNodeType.Tuple */) {
149
+ if (isSimpleString) {
150
+ return undefined;
151
+ }
152
+ if (entry.d.items.length !== 2) {
153
+ return undefined;
154
+ }
155
+ nameNode = entry.d.items[0];
156
+ valueType = evaluator.getTypeOfExpression(entry.d.items[1]).type;
157
+ }
158
+ else {
159
+ return undefined;
160
+ }
161
+ if (nameNode.nodeType !== 48 /* ParseNodeType.StringList */ ||
162
+ nameNode.d.strings.length !== 1 ||
163
+ nameNode.d.strings[0].nodeType !== 49 /* ParseNodeType.String */) {
164
+ return undefined;
165
+ }
166
+ const entryName = nameNode.d.strings[0].d.value;
167
+ const enumLiteral = new types_1.EnumLiteral(classType.shared.fullName, classType.shared.name, entryName, valueType, isReprEnum);
168
+ const newSymbol = symbol_1.Symbol.createWithType(4 /* SymbolFlags.ClassMember */, types_1.ClassType.cloneWithLiteral(classInstanceType, enumLiteral));
169
+ classFields.set(entryName, newSymbol);
170
+ }
171
+ }
172
+ if (initArg.valueExpression.nodeType === 18 /* ParseNodeType.Dictionary */) {
173
+ const entries = initArg.valueExpression.d.items;
174
+ if (entries.length === 0) {
175
+ return undefined;
176
+ }
177
+ for (const entry of entries) {
178
+ // Don't support dictionary expansion expressions.
179
+ if (entry.nodeType !== 20 /* ParseNodeType.DictionaryKeyEntry */) {
180
+ return undefined;
181
+ }
182
+ const nameNode = entry.d.keyExpr;
183
+ const valueType = evaluator.getTypeOfExpression(entry.d.valueExpr).type;
184
+ if (nameNode.nodeType !== 48 /* ParseNodeType.StringList */ ||
185
+ nameNode.d.strings.length !== 1 ||
186
+ nameNode.d.strings[0].nodeType !== 49 /* ParseNodeType.String */) {
187
+ return undefined;
188
+ }
189
+ const entryName = nameNode.d.strings[0].d.value;
190
+ const enumLiteral = new types_1.EnumLiteral(classType.shared.fullName, classType.shared.name, entryName, valueType, isReprEnum);
191
+ const newSymbol = symbol_1.Symbol.createWithType(4 /* SymbolFlags.ClassMember */, types_1.ClassType.cloneWithLiteral(classInstanceType, enumLiteral));
192
+ classFields.set(entryName, newSymbol);
193
+ }
194
+ }
195
+ return classType;
196
+ }
197
+ // Performs the "magic" that the Enum metaclass does at runtime when it
198
+ // transforms a value into an enum instance. If the specified name isn't
199
+ // an enum member, this function returns undefined indicating that the
200
+ // Enum metaclass does not transform the value.
201
+ // By default, if a type annotation is present, the member is not treated
202
+ // as a member of the enumeration, but the Enum metaclass ignores such
203
+ // annotations. The typing spec indicates that the use of an annotation is
204
+ // illegal, so we need to detect this case and report an error.
205
+ function transformTypeForEnumMember(evaluator, classType, memberName, ignoreAnnotation = false, recursionCount = 0) {
206
+ if (!types_1.ClassType.isEnumClass(classType)) {
207
+ return undefined;
208
+ }
209
+ if (recursionCount > types_1.maxTypeRecursionCount) {
210
+ return undefined;
211
+ }
212
+ recursionCount++;
213
+ // Avoid infinite recursion.
214
+ if (enumEvalStack.find((entry) => types_1.ClassType.isSameGenericClass(entry.classType, classType) && entry.memberName === memberName)) {
215
+ return undefined;
216
+ }
217
+ enumEvalStack.push({ classType, memberName });
218
+ try {
219
+ const memberInfo = (0, typeUtils_1.lookUpClassMember)(classType, memberName);
220
+ if (!memberInfo || !(0, types_1.isClass)(memberInfo.classType) || !types_1.ClassType.isEnumClass(memberInfo.classType)) {
221
+ return undefined;
222
+ }
223
+ const decls = memberInfo.symbol.getDeclarations();
224
+ if (decls.length < 1) {
225
+ return undefined;
226
+ }
227
+ const primaryDecl = decls[0];
228
+ let isMemberOfEnumeration = false;
229
+ let isUnpackedTuple = false;
230
+ let valueTypeExprNode;
231
+ let declaredTypeNode;
232
+ let nameNode;
233
+ if (primaryDecl.node.nodeType === 38 /* ParseNodeType.Name */) {
234
+ nameNode = primaryDecl.node;
235
+ }
236
+ else if (primaryDecl.node.nodeType === 31 /* ParseNodeType.Function */ ||
237
+ primaryDecl.node.nodeType === 10 /* ParseNodeType.Class */) {
238
+ // Handle the case where a method or class is decorated with @enum.member.
239
+ nameNode = primaryDecl.node.d.name;
240
+ }
241
+ else {
242
+ return undefined;
243
+ }
244
+ if (nameNode.parent?.nodeType === 3 /* ParseNodeType.Assignment */ && nameNode.parent.d.leftExpr === nameNode) {
245
+ isMemberOfEnumeration = true;
246
+ valueTypeExprNode = nameNode.parent.d.rightExpr;
247
+ }
248
+ else if (nameNode.parent?.nodeType === 52 /* ParseNodeType.Tuple */ &&
249
+ nameNode.parent.parent?.nodeType === 3 /* ParseNodeType.Assignment */) {
250
+ isMemberOfEnumeration = true;
251
+ isUnpackedTuple = true;
252
+ valueTypeExprNode = nameNode.parent.parent.d.rightExpr;
253
+ }
254
+ else if (nameNode.parent?.nodeType === 54 /* ParseNodeType.TypeAnnotation */ &&
255
+ nameNode.parent.d.valueExpr === nameNode) {
256
+ if (ignoreAnnotation) {
257
+ isMemberOfEnumeration = true;
258
+ }
259
+ declaredTypeNode = nameNode.parent.d.annotation;
260
+ }
261
+ // The spec specifically excludes names that start and end with a single underscore.
262
+ // This also includes dunder names.
263
+ if ((0, symbolNameUtils_1.isSingleDunderName)(memberName)) {
264
+ return undefined;
265
+ }
266
+ // Specifically exclude "value" and "name". These are reserved by the enum metaclass.
267
+ if (memberName === 'name' || memberName === 'value') {
268
+ return undefined;
269
+ }
270
+ const declaredType = declaredTypeNode ? evaluator.getTypeOfAnnotation(declaredTypeNode) : undefined;
271
+ let assignedType;
272
+ if (valueTypeExprNode) {
273
+ const evalFlags = evaluator.getSymbolLookup().getFileInfo(valueTypeExprNode).isStubFile
274
+ ? 1 /* EvalFlags.ConvertEllipsisToAny */
275
+ : undefined;
276
+ assignedType = evaluator.getTypeOfExpression(valueTypeExprNode, evalFlags).type;
277
+ }
278
+ // Handle aliases to other enum members within the same enum.
279
+ if (valueTypeExprNode?.nodeType === 38 /* ParseNodeType.Name */ && valueTypeExprNode.d.value !== memberName) {
280
+ const aliasedEnumType = transformTypeForEnumMember(evaluator, classType, valueTypeExprNode.d.value,
281
+ /* ignoreAnnotation */ false, recursionCount);
282
+ if (aliasedEnumType &&
283
+ (0, types_1.isClassInstance)(aliasedEnumType) &&
284
+ types_1.ClassType.isSameGenericClass(aliasedEnumType, types_1.ClassType.cloneAsInstance(memberInfo.classType)) &&
285
+ aliasedEnumType.priv.literalValue !== undefined) {
286
+ return aliasedEnumType;
287
+ }
288
+ }
289
+ if (primaryDecl.node.nodeType === 31 /* ParseNodeType.Function */) {
290
+ const functionTypeInfo = evaluator.getTypeOfFunction(primaryDecl.node);
291
+ if (functionTypeInfo) {
292
+ assignedType = functionTypeInfo.decoratedType;
293
+ }
294
+ }
295
+ else if (primaryDecl.node.nodeType === 10 /* ParseNodeType.Class */) {
296
+ const classTypeInfo = evaluator.getTypeOfClass(primaryDecl.node);
297
+ if (classTypeInfo) {
298
+ assignedType = classTypeInfo.decoratedType;
299
+ // If the class is not marked as a member or a non-member, the behavior
300
+ // depends on the version of Python. In versions prior to 3.13, classes
301
+ // are treated as members.
302
+ if ((0, types_1.isInstantiableClass)(assignedType)) {
303
+ const fileInfo = evaluator.getSymbolLookup().getFileInfo(primaryDecl.node);
304
+ isMemberOfEnumeration = pythonVersion_1.PythonVersion.isLessThan(fileInfo.executionEnvironment.pythonVersion, pythonVersion_1.pythonVersion3_13);
305
+ }
306
+ }
307
+ }
308
+ let valueType = declaredType ?? assignedType ?? types_1.UnknownType.create();
309
+ // If the LHS is an unpacked tuple, we need to handle this as
310
+ // a special case.
311
+ if (isUnpackedTuple) {
312
+ valueType =
313
+ evaluator.getTypeOfIterator({ type: valueType },
314
+ /* isAsync */ false, nameNode,
315
+ /* emitNotIterableError */ false)?.type ?? types_1.UnknownType.create();
316
+ }
317
+ // The spec excludes descriptors.
318
+ if ((0, types_1.isClassInstance)(valueType) && (0, typeEvalUtils_1.getSymbolTable)(valueType).get('__get__')) {
319
+ return undefined;
320
+ }
321
+ // The spec excludes private (mangled) names.
322
+ if ((0, symbolNameUtils_1.isPrivateName)(memberName)) {
323
+ return undefined;
324
+ }
325
+ // The enum spec doesn't explicitly specify this, but it
326
+ // appears that callables are excluded.
327
+ if (!(0, types_1.findSubtype)(valueType, (subtype) => !(0, types_1.isFunctionOrOverloaded)(subtype))) {
328
+ return undefined;
329
+ }
330
+ if (!assignedType &&
331
+ nameNode.parent?.nodeType === 3 /* ParseNodeType.Assignment */ &&
332
+ nameNode.parent.d.leftExpr === nameNode) {
333
+ assignedType = evaluator.getTypeOfExpression(nameNode.parent.d.rightExpr,
334
+ /* flags */ undefined, (0, typeUtils_1.makeInferenceContext)(declaredType)).type;
335
+ }
336
+ // Handle the Python 3.11 "enum.member()" and "enum.nonmember()" features.
337
+ if (assignedType && (0, types_1.isClassInstance)(assignedType) && types_1.ClassType.isBuiltIn(assignedType)) {
338
+ if (assignedType.shared.fullName === 'enum.nonmember') {
339
+ const nonMemberType = assignedType.priv.typeArgs && assignedType.priv.typeArgs.length > 0
340
+ ? assignedType.priv.typeArgs[0]
341
+ : types_1.UnknownType.create();
342
+ // If the type of the nonmember is declared and the assigned value has
343
+ // a compatible type, use the declared type.
344
+ if (declaredType && evaluator.assignType(declaredType, nonMemberType)) {
345
+ return declaredType;
346
+ }
347
+ return nonMemberType;
348
+ }
349
+ if (assignedType.shared.fullName === 'enum.member') {
350
+ valueType =
351
+ assignedType.priv.typeArgs && assignedType.priv.typeArgs.length > 0
352
+ ? assignedType.priv.typeArgs[0]
353
+ : types_1.UnknownType.create();
354
+ isMemberOfEnumeration = true;
355
+ }
356
+ }
357
+ if (!isMemberOfEnumeration) {
358
+ return undefined;
359
+ }
360
+ const enumLiteral = new types_1.EnumLiteral(memberInfo.classType.shared.fullName, memberInfo.classType.shared.name, memberName, valueType, isReprEnumClass(classType));
361
+ return types_1.ClassType.cloneAsInstance(types_1.ClassType.cloneWithLiteral(memberInfo.classType, enumLiteral));
362
+ }
363
+ finally {
364
+ enumEvalStack.pop();
365
+ }
366
+ }
367
+ function isDeclInEnumClass(evaluator, decl) {
368
+ const classNode = (0, parseTreeUtils_1.getEnclosingClass)(decl.node, /* stopAtFunction */ true);
369
+ if (!classNode) {
370
+ return false;
371
+ }
372
+ const classInfo = evaluator.getTypeOfClass(classNode);
373
+ if (!classInfo) {
374
+ return false;
375
+ }
376
+ return types_1.ClassType.isEnumClass(classInfo.classType);
377
+ }
378
+ function getEnumDeclaredValueType(evaluator, classType, declaredTypesOnly = false) {
379
+ // See if there is a declared type for "_value_".
380
+ let valueType;
381
+ const declaredValueMember = (0, typeUtils_1.lookUpClassMember)(classType, '_value_', declaredTypesOnly ? 64 /* MemberAccessFlags.DeclaredTypesOnly */ : 0 /* MemberAccessFlags.Default */);
382
+ // If the declared type comes from the 'Enum' base class, ignore it
383
+ // because it will be "Any", which isn't useful to us here.
384
+ if (declaredValueMember &&
385
+ declaredValueMember.classType &&
386
+ (0, types_1.isClass)(declaredValueMember.classType) &&
387
+ !types_1.ClassType.isBuiltIn(declaredValueMember.classType, 'Enum')) {
388
+ valueType = evaluator.getTypeOfMember(declaredValueMember);
389
+ }
390
+ return valueType;
391
+ }
392
+ function getTypeOfEnumMember(evaluator, errorNode, classType, memberName, isIncomplete) {
393
+ if (!types_1.ClassType.isEnumClass(classType)) {
394
+ return undefined;
395
+ }
396
+ const type = transformTypeForEnumMember(evaluator, classType, memberName);
397
+ if (type) {
398
+ return { type, isIncomplete };
399
+ }
400
+ if (types_1.TypeBase.isInstantiable(classType)) {
401
+ return undefined;
402
+ }
403
+ // Handle the special case of 'name' and 'value' members within an enum.
404
+ const literalValue = classType.priv.literalValue;
405
+ if (memberName === 'name' || memberName === '_name_') {
406
+ // Does the class explicitly override this member? Or it it using the
407
+ // standard behavior provided by the "Enum" class?
408
+ const memberInfo = (0, typeUtils_1.lookUpClassMember)(classType, memberName);
409
+ if (memberInfo && (0, types_1.isClass)(memberInfo.classType) && !types_1.ClassType.isBuiltIn(memberInfo.classType, 'Enum')) {
410
+ return undefined;
411
+ }
412
+ const strClass = evaluator.getBuiltInType(errorNode, 'str');
413
+ if (!(0, types_1.isInstantiableClass)(strClass)) {
414
+ return undefined;
415
+ }
416
+ const makeNameType = (value) => {
417
+ return types_1.ClassType.cloneAsInstance(types_1.ClassType.cloneWithLiteral(strClass, value.itemName));
418
+ };
419
+ if (literalValue) {
420
+ (0, debug_1.assert)(literalValue instanceof types_1.EnumLiteral);
421
+ return { type: makeNameType(literalValue), isIncomplete };
422
+ }
423
+ // The type wasn't associated with a particular enum literal, so return
424
+ // a union of all possible enum literals.
425
+ const literalValues = (0, typeGuards_1.enumerateLiteralsForType)(evaluator, classType);
426
+ if (literalValues && literalValues.length > 0) {
427
+ return {
428
+ type: (0, types_1.combineTypes)(literalValues.map((literalClass) => {
429
+ const literalValue = literalClass.priv.literalValue;
430
+ (0, debug_1.assert)(literalValue instanceof types_1.EnumLiteral);
431
+ return makeNameType(literalValue);
432
+ })),
433
+ isIncomplete,
434
+ };
435
+ }
436
+ }
437
+ // See if there is a declared type for "_value_".
438
+ const valueType = getEnumDeclaredValueType(evaluator, classType);
439
+ if (memberName === 'value' || memberName === '_value_') {
440
+ // Does the class explicitly override this member? Or it it using the
441
+ // standard behavior provided by the "Enum" class and other built-in
442
+ // subclasses like "StrEnum" and "IntEnum"?
443
+ const memberInfo = (0, typeUtils_1.lookUpClassMember)(classType, memberName);
444
+ if (memberInfo && (0, types_1.isClass)(memberInfo.classType) && !types_1.ClassType.isBuiltIn(memberInfo.classType)) {
445
+ return undefined;
446
+ }
447
+ // If the enum class has a custom metaclass, it may implement some
448
+ // "magic" that computes different values for the "_value_" attribute.
449
+ // This occurs, for example, in the django TextChoices class. If we
450
+ // detect a custom metaclass, we'll use the declared type of _value_
451
+ // if it is declared.
452
+ const metaclass = classType.shared.effectiveMetaclass;
453
+ if (metaclass && (0, types_1.isClass)(metaclass) && !types_1.ClassType.isBuiltIn(metaclass)) {
454
+ return { type: valueType ?? types_1.AnyType.create(), isIncomplete };
455
+ }
456
+ // If the enum class has a custom __new__ or __init__ method,
457
+ // it may implement some magic that computes different values for
458
+ // the "_value_" attribute. If we see a customer __new__ or __init__,
459
+ // we'll assume the value type is what we computed above, or Any.
460
+ const newMember = (0, typeUtils_1.lookUpClassMember)(classType, '__new__', 4 /* MemberAccessFlags.SkipObjectBaseClass */);
461
+ const initMember = (0, typeUtils_1.lookUpClassMember)(classType, '__init__', 4 /* MemberAccessFlags.SkipObjectBaseClass */);
462
+ if (newMember && (0, types_1.isClass)(newMember.classType) && !types_1.ClassType.isBuiltIn(newMember.classType)) {
463
+ return { type: valueType ?? types_1.AnyType.create(), isIncomplete };
464
+ }
465
+ if (initMember && (0, types_1.isClass)(initMember.classType) && !types_1.ClassType.isBuiltIn(initMember.classType)) {
466
+ return { type: valueType ?? types_1.AnyType.create(), isIncomplete };
467
+ }
468
+ // There were no explicit assignments to the "_value_" attribute, so we can
469
+ // assume that the values are assigned directly to the "_value_" by
470
+ // the EnumMeta metaclass.
471
+ if (literalValue) {
472
+ (0, debug_1.assert)(literalValue instanceof types_1.EnumLiteral);
473
+ // If there is no known value type for this literal value,
474
+ // return undefined. This will cause the caller to fall back
475
+ // on the definition of "_value_" within the class definition
476
+ // (if present).
477
+ if ((0, types_1.isAny)(literalValue.itemType)) {
478
+ return valueType ? { type: valueType, isIncomplete } : undefined;
479
+ }
480
+ return { type: literalValue.itemType, isIncomplete };
481
+ }
482
+ // The type wasn't associated with a particular enum literal, so return
483
+ // a union of all possible enum literals.
484
+ const literalValues = (0, typeGuards_1.enumerateLiteralsForType)(evaluator, classType);
485
+ if (literalValues && literalValues.length > 0) {
486
+ return {
487
+ type: (0, types_1.combineTypes)(literalValues.map((literalClass) => {
488
+ const literalValue = literalClass.priv.literalValue;
489
+ (0, debug_1.assert)(literalValue instanceof types_1.EnumLiteral);
490
+ return literalValue.itemType;
491
+ })),
492
+ isIncomplete,
493
+ };
494
+ }
495
+ }
496
+ return undefined;
497
+ }
498
+ function getEnumAutoValueType(evaluator, node) {
499
+ const containingClassNode = (0, parseTreeUtils_1.getEnclosingClass)(node);
500
+ if (containingClassNode) {
501
+ const classTypeInfo = evaluator.getTypeOfClass(containingClassNode);
502
+ if (classTypeInfo) {
503
+ const memberInfo = evaluator.getTypeOfBoundMember(node, types_1.ClassType.cloneAsInstance(classTypeInfo.classType), '_generate_next_value_');
504
+ // Did we find a custom _generate_next_value_ sunder override?
505
+ // Ignore if this comes from Enum because it is declared as
506
+ // returning an "Any" type in the typeshed stubs.
507
+ if (memberInfo &&
508
+ !memberInfo.typeErrors &&
509
+ (0, types_1.isFunction)(memberInfo.type) &&
510
+ memberInfo.classType &&
511
+ (0, types_1.isClass)(memberInfo.classType) &&
512
+ !types_1.ClassType.isBuiltIn(memberInfo.classType, 'Enum')) {
513
+ if (memberInfo.type.shared.declaredReturnType) {
514
+ return memberInfo.type.shared.declaredReturnType;
515
+ }
516
+ }
517
+ }
518
+ }
519
+ return evaluator.getBuiltInObject(node, 'int');
520
+ }
521
+ function isReprEnumClass(enumClass) {
522
+ return enumClass.shared.mro.some((mroClass) => (0, types_1.isClass)(mroClass) && types_1.ClassType.isBuiltIn(mroClass, 'ReprEnum'));
523
+ }
524
+ //# sourceMappingURL=enums.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"enums.js","sourceRoot":"","sources":["../../../../../src/typeServer/enums.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ import { Disposable } from 'vscode-jsonrpc';
2
+ export interface Event<T> {
3
+ (listener: (e: T) => any, thisArgs?: any, disposables?: Disposable[]): Disposable;
4
+ }
5
+ export interface EventEmitter<T> {
6
+ event: Event<T>;
7
+ fire: (data: T) => void;
8
+ dispose: () => void;
9
+ }
10
+ export declare namespace EventEmitter {
11
+ function create<T>(): EventEmitter<T>;
12
+ }
@@ -0,0 +1,32 @@
1
+ "use strict";
2
+ /*
3
+ * eventEmitter.ts
4
+ * Copyright (c) Microsoft Corporation.
5
+ * Licensed under the MIT license.
6
+ *
7
+ * A simple event emitter implementation.
8
+ */
9
+ Object.defineProperty(exports, "__esModule", { value: true });
10
+ exports.EventEmitter = void 0;
11
+ var EventEmitter;
12
+ (function (EventEmitter) {
13
+ function create() {
14
+ const listeners = new Set();
15
+ return {
16
+ event: (listener) => {
17
+ listeners.add(listener);
18
+ return {
19
+ dispose: () => listeners.delete(listener),
20
+ };
21
+ },
22
+ fire: (data) => {
23
+ for (const listener of listeners) {
24
+ listener(data);
25
+ }
26
+ },
27
+ dispose: () => listeners.clear(),
28
+ };
29
+ }
30
+ EventEmitter.create = create;
31
+ })(EventEmitter || (exports.EventEmitter = EventEmitter = {}));
32
+ //# sourceMappingURL=eventEmitter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"eventEmitter.js","sourceRoot":"","sources":["../../../../../src/typeServer/eventEmitter.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;;AAcH,IAAiB,YAAY,CAkB5B;AAlBD,WAAiB,YAAY;IACzB,SAAgB,MAAM;QAClB,MAAM,SAAS,GAAG,IAAI,GAAG,EAAqB,CAAC;QAC/C,OAAO;YACH,KAAK,EAAE,CAAC,QAA2B,EAAE,EAAE;gBACnC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;gBACxB,OAAO;oBACH,OAAO,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC;iBAC5C,CAAC;YACN,CAAC;YACD,IAAI,EAAE,CAAC,IAAO,EAAE,EAAE;gBACd,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;oBAC/B,QAAQ,CAAC,IAAI,CAAC,CAAC;gBACnB,CAAC;YACL,CAAC;YACD,OAAO,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,KAAK,EAAE;SACnC,CAAC;IACN,CAAC;IAhBe,mBAAM,SAgBrB,CAAA;AACL,CAAC,EAlBgB,YAAY,4BAAZ,YAAY,QAkB5B"}
@@ -0,0 +1 @@
1
+ export declare function main(): Promise<void>;