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

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 (114) hide show
  1. package/dist/analyzer/checker.d.ts +2 -0
  2. package/dist/analyzer/checker.js +89 -4
  3. package/dist/analyzer/checker.js.map +1 -1
  4. package/dist/analyzer/functionTransform.js +188 -0
  5. package/dist/analyzer/functionTransform.js.map +1 -1
  6. package/dist/analyzer/packageTypeVerifier.js +11 -1
  7. package/dist/analyzer/packageTypeVerifier.js.map +1 -1
  8. package/dist/analyzer/properties.js +73 -8
  9. package/dist/analyzer/properties.js.map +1 -1
  10. package/dist/analyzer/typeEvaluator.js +7 -1
  11. package/dist/analyzer/typeEvaluator.js.map +1 -1
  12. package/dist/analyzer/typeGuards.js +1 -1
  13. package/dist/analyzer/typeGuards.js.map +1 -1
  14. package/dist/analyzer/typeUtils.js.map +1 -1
  15. package/dist/analyzer/types.d.ts +1 -1
  16. package/dist/analyzer/types.js.map +1 -1
  17. package/dist/tests/typeEvaluator3.test.js +6 -0
  18. package/dist/tests/typeEvaluator3.test.js.map +1 -1
  19. package/dist/tests/typeEvaluator8.test.js +38 -0
  20. package/dist/tests/typeEvaluator8.test.js.map +1 -1
  21. package/dist/tests/typeServer/inProcTypeServerTestUtils.d.ts +39 -0
  22. package/dist/tests/typeServer/inProcTypeServerTestUtils.js +366 -0
  23. package/dist/tests/typeServer/inProcTypeServerTestUtils.js.map +1 -0
  24. package/dist/tests/typeServer/notebook.typeServer.test.d.ts +1 -0
  25. package/dist/tests/typeServer/notebook.typeServer.test.js +315 -0
  26. package/dist/tests/typeServer/notebook.typeServer.test.js.map +1 -0
  27. package/dist/tests/typeServer/typeServer.inProc.test.d.ts +1 -0
  28. package/dist/tests/typeServer/typeServer.inProc.test.js +234 -0
  29. package/dist/tests/typeServer/typeServer.inProc.test.js.map +1 -0
  30. package/dist/tests/typeServer/typeServer.virtualFileRedirect.test.d.ts +1 -0
  31. package/dist/tests/typeServer/typeServer.virtualFileRedirect.test.js +298 -0
  32. package/dist/tests/typeServer/typeServer.virtualFileRedirect.test.js.map +1 -0
  33. package/dist/typeServer/cancellation.d.ts +5 -0
  34. package/dist/typeServer/cancellation.js +14 -0
  35. package/dist/typeServer/cancellation.js.map +1 -0
  36. package/dist/typeServer/diagnosticUtils.d.ts +4 -0
  37. package/dist/typeServer/diagnosticUtils.js +71 -0
  38. package/dist/typeServer/diagnosticUtils.js.map +1 -0
  39. package/dist/typeServer/enums.d.ts +14 -0
  40. package/dist/typeServer/enums.js +524 -0
  41. package/dist/typeServer/enums.js.map +1 -0
  42. package/dist/typeServer/eventEmitter.d.ts +12 -0
  43. package/dist/typeServer/eventEmitter.js +32 -0
  44. package/dist/typeServer/eventEmitter.js.map +1 -0
  45. package/dist/typeServer/nodeMain.d.ts +1 -0
  46. package/dist/typeServer/nodeMain.js +65 -0
  47. package/dist/typeServer/nodeMain.js.map +1 -0
  48. package/dist/typeServer/notebookCellChain.d.ts +34 -0
  49. package/dist/typeServer/notebookCellChain.js +182 -0
  50. package/dist/typeServer/notebookCellChain.js.map +1 -0
  51. package/dist/typeServer/notebookDocumentHandler.d.ts +23 -0
  52. package/dist/typeServer/notebookDocumentHandler.js +158 -0
  53. package/dist/typeServer/notebookDocumentHandler.js.map +1 -0
  54. package/dist/typeServer/notebookUriMapper.d.ts +39 -0
  55. package/dist/typeServer/notebookUriMapper.js +164 -0
  56. package/dist/typeServer/notebookUriMapper.js.map +1 -0
  57. package/dist/typeServer/profilingStub.d.ts +10 -0
  58. package/dist/typeServer/profilingStub.js +12 -0
  59. package/dist/typeServer/profilingStub.js.map +1 -0
  60. package/dist/typeServer/programTypes.d.ts +136 -0
  61. package/dist/typeServer/programTypes.js +3 -0
  62. package/dist/typeServer/programTypes.js.map +1 -0
  63. package/dist/typeServer/programWrapper.d.ts +134 -0
  64. package/dist/typeServer/programWrapper.js +731 -0
  65. package/dist/typeServer/programWrapper.js.map +1 -0
  66. package/dist/typeServer/protocol/tspSupplemental.d.ts +43 -0
  67. package/dist/typeServer/protocol/tspSupplemental.js +48 -0
  68. package/dist/typeServer/protocol/tspSupplemental.js.map +1 -0
  69. package/dist/typeServer/protocol/typeServerProtocol.d.ts +1102 -0
  70. package/dist/typeServer/protocol/typeServerProtocol.js +290 -0
  71. package/dist/typeServer/protocol/typeServerProtocol.js.map +1 -0
  72. package/dist/typeServer/server.d.ts +54 -0
  73. package/dist/typeServer/server.js +620 -0
  74. package/dist/typeServer/server.js.map +1 -0
  75. package/dist/typeServer/serverUtils.d.ts +4 -0
  76. package/dist/typeServer/serverUtils.js +21 -0
  77. package/dist/typeServer/serverUtils.js.map +1 -0
  78. package/dist/typeServer/stubGenerator.d.ts +42 -0
  79. package/dist/typeServer/stubGenerator.js +895 -0
  80. package/dist/typeServer/stubGenerator.js.map +1 -0
  81. package/dist/typeServer/typeCache.d.ts +31 -0
  82. package/dist/typeServer/typeCache.js +54 -0
  83. package/dist/typeServer/typeCache.js.map +1 -0
  84. package/dist/typeServer/typeEvalUtils.d.ts +13 -0
  85. package/dist/typeServer/typeEvalUtils.js +83 -0
  86. package/dist/typeServer/typeEvalUtils.js.map +1 -0
  87. package/dist/typeServer/typeGuards.d.ts +3 -0
  88. package/dist/typeServer/typeGuards.js +55 -0
  89. package/dist/typeServer/typeGuards.js.map +1 -0
  90. package/dist/typeServer/typeServerConversionTypes.d.ts +39 -0
  91. package/dist/typeServer/typeServerConversionTypes.js +448 -0
  92. package/dist/typeServer/typeServerConversionTypes.js.map +1 -0
  93. package/dist/typeServer/typeServerConversionUtils.d.ts +35 -0
  94. package/dist/typeServer/typeServerConversionUtils.js +524 -0
  95. package/dist/typeServer/typeServerConversionUtils.js.map +1 -0
  96. package/dist/typeServer/typeServerEvaluator.d.ts +16 -0
  97. package/dist/typeServer/typeServerEvaluator.js +36 -0
  98. package/dist/typeServer/typeServerEvaluator.js.map +1 -0
  99. package/dist/typeServer/typeServerFileSystem.d.ts +47 -0
  100. package/dist/typeServer/typeServerFileSystem.js +129 -0
  101. package/dist/typeServer/typeServerFileSystem.js.map +1 -0
  102. package/dist/typeServer/typeServerProtocolUtils.d.ts +2 -0
  103. package/dist/typeServer/typeServerProtocolUtils.js +7 -0
  104. package/dist/typeServer/typeServerProtocolUtils.js.map +1 -0
  105. package/dist/typeServer/typeServerServiceKeys.d.ts +7 -0
  106. package/dist/typeServer/typeServerServiceKeys.js +20 -0
  107. package/dist/typeServer/typeServerServiceKeys.js.map +1 -0
  108. package/dist/typeServer/typeUtils.d.ts +4 -0
  109. package/dist/typeServer/typeUtils.js +31 -0
  110. package/dist/typeServer/typeUtils.js.map +1 -0
  111. package/dist/typeServer/virtualFileOverlayFileSystem.d.ts +87 -0
  112. package/dist/typeServer/virtualFileOverlayFileSystem.js +181 -0
  113. package/dist/typeServer/virtualFileOverlayFileSystem.js.map +1 -0
  114. package/package.json +1 -1
@@ -0,0 +1,524 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.ProtocolTypeFactory = void 0;
37
+ exports.toProtocolModuleName = toProtocolModuleName;
38
+ exports.getDeclarationForTypeVar = getDeclarationForTypeVar;
39
+ exports.findFirstExpression = findFirstExpression;
40
+ const vscode_languageserver_protocol_1 = require("vscode-languageserver-protocol");
41
+ const parseTreeWalker_1 = require("../analyzer/parseTreeWalker");
42
+ const PyrightTypes = __importStar(require("../analyzer/types"));
43
+ const debug_1 = require("../common/debug");
44
+ const positionUtils_1 = require("../common/positionUtils");
45
+ const uriUtils_1 = require("../common/uri/uriUtils");
46
+ const PyrightNodes = __importStar(require("../parser/parseNodes"));
47
+ const typeEvalUtils_1 = require("./typeEvalUtils");
48
+ const stubGenerator_1 = require("./stubGenerator");
49
+ const typeServerConversionTypes_1 = require("./typeServerConversionTypes");
50
+ function toProtocolModuleName(moduleName) {
51
+ if (moduleName.length === 0) {
52
+ return { leadingDots: 0, nameParts: [] };
53
+ }
54
+ let startIndex = 0;
55
+ let leadingDots = 0;
56
+ for (; startIndex < moduleName.length; startIndex++) {
57
+ if (moduleName[startIndex] !== '.') {
58
+ break;
59
+ }
60
+ leadingDots++;
61
+ }
62
+ return {
63
+ leadingDots,
64
+ nameParts: moduleName.slice(startIndex).split('.'),
65
+ };
66
+ }
67
+ class ProtocolTypeFactory {
68
+ constructor(view, pythonVersion, declarationOrNode) {
69
+ this.view = view;
70
+ this.pythonVersion = pythonVersion;
71
+ this._id = 0;
72
+ this._cycleMap = new Map();
73
+ this._evaluator = view.createEvaluator();
74
+ // Extract source URI from declaration or node
75
+ this._sourceUri = this._extractSourceUri(declarationOrNode);
76
+ }
77
+ get sourceUri() {
78
+ return this._sourceUri;
79
+ }
80
+ get evaluator() {
81
+ return this._evaluator;
82
+ }
83
+ getNextId() {
84
+ return this._id++;
85
+ }
86
+ getModule(type) {
87
+ const moduleName = type.shared.moduleName;
88
+ const moduleDescriptor = toProtocolModuleName(moduleName);
89
+ const moduleUri = this.view.resolveImport(this.sourceUri, moduleDescriptor, vscode_languageserver_protocol_1.CancellationToken.None) || this.sourceUri;
90
+ const moduleNode = this.view.getParserOutput(moduleUri)?.parseTree;
91
+ (0, debug_1.assert)(moduleNode !== undefined, `Module node not found for URI: ${moduleUri.toString()}`);
92
+ const scope = this.view.symbolLookup.getScope(moduleNode);
93
+ const symbolTable = scope?.symbolTable;
94
+ return PyrightTypes.ModuleType.create(moduleName, moduleUri, symbolTable);
95
+ }
96
+ getType(type) {
97
+ const newId = this.getNextId();
98
+ const existingTypeId = this._cycleMap.get(type);
99
+ if (existingTypeId !== undefined) {
100
+ return {
101
+ id: newId,
102
+ kind: 9 /* TypeServerProtocol.TypeKind.TypeReference */,
103
+ flags: 0 /* TypeServerProtocol.TypeFlags.None */,
104
+ typeReferenceId: existingTypeId,
105
+ };
106
+ }
107
+ this._set(type, newId);
108
+ return toProtocolType(newId, type, this);
109
+ }
110
+ _set(type, id) {
111
+ this._cycleMap.set(type, id);
112
+ }
113
+ _extractSourceUri(declarationOrNode) {
114
+ if ((0, typeEvalUtils_1.isDeclaration)(declarationOrNode)) {
115
+ return declarationOrNode.uri;
116
+ }
117
+ else {
118
+ return this.view.getUri(declarationOrNode);
119
+ }
120
+ }
121
+ }
122
+ exports.ProtocolTypeFactory = ProtocolTypeFactory;
123
+ function toProtocolTypesOrUndefined(types, factory) {
124
+ if (!types) {
125
+ return undefined;
126
+ }
127
+ return toProtocolTypes(types, factory);
128
+ }
129
+ function toProtocolTypes(types, factory) {
130
+ return (0, typeEvalUtils_1.map)(types, (type) => factory.getType(type));
131
+ }
132
+ function toProtocolTypeOrUndefined(type, factory) {
133
+ if (!type) {
134
+ return undefined;
135
+ }
136
+ return factory.getType(type);
137
+ }
138
+ function toProtocolTypeArgs(type, factory) {
139
+ // See if we have any type arguments. Set those on the handle too.
140
+ let typeArgs = undefined;
141
+ if (type.priv.tupleTypeArgs) {
142
+ typeArgs = toProtocolTypesOrUndefined(type.priv.tupleTypeArgs.map((t) => t.type), factory);
143
+ // Set the flags on each based on tuple information
144
+ for (let i = 0; i < type.priv.tupleTypeArgs.length; i++) {
145
+ if (typeArgs && typeArgs[i] && type.priv.tupleTypeArgs[i].isUnbounded) {
146
+ typeArgs[i].flags |= 512 /* TypeServerProtocol.TypeFlags.Unbound */;
147
+ }
148
+ if (typeArgs && typeArgs[i] && type.priv.tupleTypeArgs[i].isOptional) {
149
+ typeArgs[i].flags |= 256 /* TypeServerProtocol.TypeFlags.Optional */;
150
+ }
151
+ }
152
+ }
153
+ else if (type.priv.typeArgs) {
154
+ typeArgs = toProtocolTypesOrUndefined(type.priv.typeArgs, factory);
155
+ }
156
+ return typeArgs;
157
+ }
158
+ function toProtocolTypeAliasInfo(info, factory) {
159
+ if (!info) {
160
+ return undefined;
161
+ }
162
+ return {
163
+ name: info.shared.name,
164
+ fullName: info.shared.fullName,
165
+ moduleName: info.shared.moduleName,
166
+ fileUri: (0, uriUtils_1.convertUriToLspUriString)(factory.view.fs, info.shared.fileUri),
167
+ scopeId: info.shared.typeVarScopeId,
168
+ isTypeAliasType: info.shared.isTypeAliasType,
169
+ typeParams: toProtocolTypesOrUndefined(info.shared.typeParams, factory),
170
+ typeArgs: toProtocolTypesOrUndefined(info.typeArgs, factory),
171
+ computedVariance: info.shared.computedVariance?.map((v) => (0, typeServerConversionTypes_1.toProtocolVariance)(v) ?? 1 /* TypeServerProtocol.Variance.Unknown */),
172
+ };
173
+ }
174
+ // This should be only called from TspTypeFactory
175
+ // Otherwise, cycle detection won't work.
176
+ function toProtocolType(id, type, factory) {
177
+ switch (type.category) {
178
+ case 6 /* PyrightTypes.TypeCategory.Class */: {
179
+ const decl = type.shared.declaration;
180
+ if (decl) {
181
+ return {
182
+ id,
183
+ kind: 3 /* TypeServerProtocol.TypeKind.Class */,
184
+ flags: (0, typeServerConversionTypes_1.toProtocolTypeFlags)(type),
185
+ typeAliasInfo: toProtocolTypeAliasInfo(type.props?.typeAliasInfo, factory),
186
+ declaration: (0, typeServerConversionTypes_1.toProtocolDecl)(decl, factory.view),
187
+ literalValue: toProtocolLiteralValue(type, factory),
188
+ typeArgs: toProtocolTypeArgs(type, factory),
189
+ };
190
+ }
191
+ return createSynthesizedType(id, type, factory);
192
+ }
193
+ case 4 /* PyrightTypes.TypeCategory.Function */: {
194
+ const decl = type.shared.declaration;
195
+ if (decl) {
196
+ // Compute boundToType: if not set but strippedFirstParamType exists, use it as boundToType
197
+ let boundToType = type.priv.boundToType;
198
+ if (!boundToType &&
199
+ type.priv.strippedFirstParamType &&
200
+ PyrightTypes.isClass(type.priv.strippedFirstParamType)) {
201
+ boundToType = type.priv.strippedFirstParamType;
202
+ }
203
+ const returnType = PyrightTypes.FunctionType.getEffectiveReturnType(type, true);
204
+ return {
205
+ id,
206
+ kind: 2 /* TypeServerProtocol.TypeKind.Function */,
207
+ flags: (0, typeServerConversionTypes_1.toProtocolTypeFlags)(type),
208
+ typeAliasInfo: toProtocolTypeAliasInfo(type.props?.typeAliasInfo, factory),
209
+ declaration: (0, typeServerConversionTypes_1.toProtocolDecl)(decl, factory.view),
210
+ specializedTypes: toProtocolSpecializedFunctionTypesOrUndefined(type.priv.specializedTypes, factory),
211
+ boundToType: toProtocolTypeOrUndefined(boundToType, factory),
212
+ returnType: toProtocolTypeOrUndefined(returnType, factory),
213
+ };
214
+ }
215
+ return createSynthesizedType(id, type, factory);
216
+ }
217
+ case 5 /* PyrightTypes.TypeCategory.Overloaded */: {
218
+ const implementation = PyrightTypes.OverloadedType.getImplementation(type);
219
+ const overloaded = PyrightTypes.OverloadedType.getOverloads(type);
220
+ return {
221
+ id,
222
+ kind: 7 /* TypeServerProtocol.TypeKind.Overloaded */,
223
+ flags: (0, typeServerConversionTypes_1.toProtocolTypeFlags)(type),
224
+ overloads: toProtocolTypes(overloaded, factory),
225
+ implementation: toProtocolTypeOrUndefined(implementation, factory),
226
+ };
227
+ }
228
+ case 9 /* PyrightTypes.TypeCategory.TypeVar */: {
229
+ const declaration = getDeclarationForTypeVar(type, factory);
230
+ if (declaration) {
231
+ return {
232
+ id,
233
+ kind: 6 /* TypeServerProtocol.TypeKind.TypeVar */,
234
+ flags: (0, typeServerConversionTypes_1.toProtocolTypeFlags)(type),
235
+ declaration: (0, typeServerConversionTypes_1.toProtocolDecl)(declaration, factory.view),
236
+ };
237
+ }
238
+ return createSynthesizedType(id, type, factory);
239
+ }
240
+ case 0 /* PyrightTypes.TypeCategory.Unbound */: {
241
+ const handle = {
242
+ id,
243
+ kind: 0 /* TypeServerProtocol.TypeKind.BuiltIn */,
244
+ flags: (0, typeServerConversionTypes_1.toProtocolTypeFlags)(type),
245
+ name: 'unbound',
246
+ };
247
+ return handle;
248
+ }
249
+ case 1 /* PyrightTypes.TypeCategory.Unknown */: {
250
+ const possibleType = type.priv.possibleType;
251
+ const handle = {
252
+ id,
253
+ kind: 0 /* TypeServerProtocol.TypeKind.BuiltIn */,
254
+ flags: (0, typeServerConversionTypes_1.toProtocolTypeFlags)(type),
255
+ name: 'unknown',
256
+ possibleType: toProtocolTypeOrUndefined(possibleType, factory),
257
+ };
258
+ return handle;
259
+ }
260
+ case 2 /* PyrightTypes.TypeCategory.Any */: {
261
+ const handle = {
262
+ id,
263
+ kind: 0 /* TypeServerProtocol.TypeKind.BuiltIn */,
264
+ flags: (0, typeServerConversionTypes_1.toProtocolTypeFlags)(type),
265
+ name: type.priv.isEllipsis ? 'ellipsis' : 'any',
266
+ };
267
+ return handle;
268
+ }
269
+ case 3 /* PyrightTypes.TypeCategory.Never */: {
270
+ const handle = {
271
+ id,
272
+ kind: 0 /* TypeServerProtocol.TypeKind.BuiltIn */,
273
+ flags: (0, typeServerConversionTypes_1.toProtocolTypeFlags)(type),
274
+ name: type.priv.isNoReturn ? 'noreturn' : 'never',
275
+ };
276
+ return handle;
277
+ }
278
+ case 8 /* PyrightTypes.TypeCategory.Union */:
279
+ return {
280
+ id,
281
+ kind: 4 /* TypeServerProtocol.TypeKind.Union */,
282
+ flags: (0, typeServerConversionTypes_1.toProtocolTypeFlags)(type),
283
+ typeAliasInfo: toProtocolTypeAliasInfo(type.props?.typeAliasInfo, factory),
284
+ subTypes: (0, typeEvalUtils_1.map)(type.priv.subtypes, (t) => factory.getType(t)),
285
+ };
286
+ case 7 /* PyrightTypes.TypeCategory.Module */: {
287
+ return {
288
+ id,
289
+ kind: 5 /* TypeServerProtocol.TypeKind.Module */,
290
+ flags: (0, typeServerConversionTypes_1.toProtocolTypeFlags)(type),
291
+ moduleName: type.priv.moduleName,
292
+ uri: (0, uriUtils_1.convertUriToLspUriString)(factory.view.fs, type.priv.fileUri),
293
+ };
294
+ }
295
+ }
296
+ }
297
+ function createSynthesizedType(id, type, factory) {
298
+ const options = { pythonVersion: factory.pythonVersion };
299
+ let moduleHandle;
300
+ let stubResult;
301
+ if (PyrightTypes.isTypeVar(type)) {
302
+ const moduleName = factory.view.getModuleName(factory.sourceUri) ?? '';
303
+ const moduleType = PyrightTypes.ModuleType.create(moduleName, factory.sourceUri, new Map());
304
+ moduleHandle = factory.getType(moduleType);
305
+ stubResult = (0, stubGenerator_1.generateStubFromTypeVar)(type, options);
306
+ }
307
+ else {
308
+ const module = factory.getModule(type);
309
+ moduleHandle = factory.getType(module);
310
+ stubResult = PyrightTypes.isFunction(type)
311
+ ? (0, stubGenerator_1.generateStubFromFunctionType)(factory.evaluator, type, options)
312
+ : (0, stubGenerator_1.generateStubFromClassType)(factory.evaluator, type, options);
313
+ }
314
+ const metadata = {
315
+ module: moduleHandle,
316
+ primaryDefinitionOffset: stubResult.primaryDefinitionOffset,
317
+ };
318
+ return {
319
+ id,
320
+ kind: 8 /* TypeServerProtocol.TypeKind.Synthesized */,
321
+ flags: (0, typeServerConversionTypes_1.toProtocolTypeFlags)(type),
322
+ typeAliasInfo: toProtocolTypeAliasInfo(type.props?.typeAliasInfo, factory),
323
+ stubContent: stubResult.stubContent,
324
+ metadata,
325
+ };
326
+ }
327
+ function toProtocolSpecializedFunctionTypesOrUndefined(specializedTypes, factory) {
328
+ if (!specializedTypes) {
329
+ return undefined;
330
+ }
331
+ return {
332
+ parameterTypes: (0, typeEvalUtils_1.map)(specializedTypes.parameterTypes, (t) => factory.getType(t)),
333
+ parameterDefaultTypes: specializedTypes.parameterDefaultTypes
334
+ ? (0, typeEvalUtils_1.map)(specializedTypes.parameterDefaultTypes, (t) => toProtocolTypeOrUndefined(t, factory))
335
+ : undefined,
336
+ returnType: toProtocolTypeOrUndefined(specializedTypes.returnType, factory),
337
+ };
338
+ }
339
+ function toProtocolLiteralValue(type, factory) {
340
+ const value = type.priv.literalValue;
341
+ if (value === undefined) {
342
+ return undefined;
343
+ }
344
+ if (value instanceof PyrightTypes.SentinelLiteral) {
345
+ return {
346
+ classNode: (0, typeServerConversionTypes_1.toProtocolNode)(type.shared.declaration.node, factory.view),
347
+ moduleName: type.shared.moduleName,
348
+ className: value.className,
349
+ };
350
+ }
351
+ if (value instanceof PyrightTypes.EnumLiteral) {
352
+ return {
353
+ className: value.className,
354
+ itemName: value.itemName,
355
+ itemType: factory.getType(value.itemType),
356
+ };
357
+ }
358
+ return value;
359
+ }
360
+ // Attempts to recover the original declaration node for a TypeVar so we can serialize
361
+ // the same metadata the evaluator used when the symbol was first defined. Stub-based
362
+ // reconstruction frequently loses this link, so we search for it on demand using the
363
+ // scope id that is preserved on the TypeVar instance.
364
+ function getDeclarationForTypeVar(typeVar, factory) {
365
+ // freeTypeVar stores the "canonical" definition for synthesized instances that were
366
+ // cloned for specialization. Always operate on that canonical TypeVar when available.
367
+ const canonicalTypeVar = typeVar.priv.freeTypeVar ?? typeVar;
368
+ if (canonicalTypeVar.shared.isSynthesized) {
369
+ return undefined;
370
+ }
371
+ // Without a scope id we have no way to map the TypeVar back to the parse tree.
372
+ const scopeId = canonicalTypeVar.priv.scopeId;
373
+ if (!scopeId) {
374
+ return undefined;
375
+ }
376
+ const scopeNode = findScopeNodeForId(scopeId, factory.view);
377
+ if (!scopeNode) {
378
+ return undefined;
379
+ }
380
+ // Start by inspecting the symbol table attached to the original scope; this covers
381
+ // most cases for function, class, and alias TypeVars.
382
+ let symbolTable = factory.view.symbolLookup.getSymbolsForNode(scopeNode);
383
+ if (!symbolTable && scopeNode.nodeType === 36 /* PyrightNodes.ParseNodeType.Module */) {
384
+ const fileInfo = factory.view.symbolLookup.getFileInfo(scopeNode);
385
+ symbolTable = factory.view.symbolLookup.getSymbolsForFile(fileInfo.fileUri);
386
+ }
387
+ const typeVarName = canonicalTypeVar.shared.name;
388
+ let symbol = symbolTable?.get(typeVarName) ?? factory.view.symbolLookup.lookupSymbol(scopeNode, typeVarName);
389
+ if ((!symbol || symbol.getDeclarations().length === 0) &&
390
+ scopeNode.nodeType !== 36 /* PyrightNodes.ParseNodeType.Module */) {
391
+ // For nested scopes we can fall back to the file-level module scope. This is
392
+ // common when using PEP 695 syntax where a type parameter is hoisted into the
393
+ // containing module table for reuse.
394
+ const moduleNode = findModuleAncestor(scopeNode);
395
+ if (moduleNode) {
396
+ const moduleInfo = factory.view.symbolLookup.getFileInfo(moduleNode);
397
+ const moduleSymbols = factory.view.symbolLookup.getSymbolsForFile(moduleInfo.fileUri);
398
+ const moduleSymbol = moduleSymbols?.get(typeVarName);
399
+ if (moduleSymbol) {
400
+ symbol = moduleSymbol;
401
+ }
402
+ else {
403
+ symbol = factory.view.symbolLookup.lookupSymbol(moduleNode, typeVarName);
404
+ }
405
+ }
406
+ }
407
+ const declarations = symbol?.getDeclarations();
408
+ if (!declarations || declarations.length === 0) {
409
+ // As a final attempt, locate the syntactic TypeParameter node and synthesize a
410
+ // declaration object pointing to it. This ensures we at least return file/offset
411
+ // information even when binding never populated a symbol.
412
+ const typeParamNode = findTypeParameterNode(scopeNode, typeVarName);
413
+ if (typeParamNode) {
414
+ const fileInfo = factory.view.symbolLookup.getFileInfo(typeParamNode);
415
+ return {
416
+ type: 3 /* DeclarationType.TypeParam */,
417
+ node: typeParamNode,
418
+ uri: fileInfo.fileUri,
419
+ range: (0, positionUtils_1.convertTextRangeToRange)(typeParamNode, fileInfo.lines),
420
+ moduleName: fileInfo.moduleName,
421
+ isInExceptSuite: false,
422
+ };
423
+ }
424
+ return undefined;
425
+ }
426
+ const typeParamDecl = declarations.find((decl) => decl.type === 3 /* DeclarationType.TypeParam */);
427
+ return typeParamDecl ?? declarations[0];
428
+ }
429
+ // Search all known parse trees to locate the node that owns the provided scope id.
430
+ // Scope ids are assigned to functions, classes, modules, and type aliases; once we
431
+ // find the matching node we can dig into its symbol table for declarations.
432
+ function findScopeNodeForId(scopeId, view) {
433
+ const targetPrefix = scopeId.split('.', 1)[0];
434
+ const matchingFiles = view.symbolLookup.getMatchingFileInfos(targetPrefix);
435
+ for (const fileInfo of matchingFiles) {
436
+ const parseResults = view.getParserOutput(fileInfo.fileUri);
437
+ if (!parseResults) {
438
+ continue;
439
+ }
440
+ const stack = [parseResults.parseTree];
441
+ while (stack.length > 0) {
442
+ const node = stack.pop();
443
+ const nodeScopeId = view.symbolLookup.getScopeIdForNode(node);
444
+ if (isTypeVarScopeCandidate(node) && nodeScopeId === scopeId) {
445
+ return node;
446
+ }
447
+ // Expression nodes cannot contain declarations, so skip their children.
448
+ if (!PyrightNodes.isExpressionNode(node)) {
449
+ for (const child of (0, parseTreeWalker_1.getChildNodes)(node)) {
450
+ if (child) {
451
+ stack.push(child);
452
+ }
453
+ }
454
+ }
455
+ }
456
+ }
457
+ return undefined;
458
+ }
459
+ // Returns the TypeParameter node with the requested name if the enclosing scope declares
460
+ // type parameters (function/class/type alias). This gives us a concrete parse node even
461
+ // when the TypeVar was not bound to a symbol table entry.
462
+ function findTypeParameterNode(scopeNode, typeVarName) {
463
+ let typeParams;
464
+ switch (scopeNode.nodeType) {
465
+ case 31 /* PyrightNodes.ParseNodeType.Function */:
466
+ case 10 /* PyrightNodes.ParseNodeType.Class */:
467
+ case 77 /* PyrightNodes.ParseNodeType.TypeAlias */:
468
+ typeParams = scopeNode.d.typeParams;
469
+ break;
470
+ case 36 /* PyrightNodes.ParseNodeType.Module */:
471
+ typeParams = undefined;
472
+ break;
473
+ }
474
+ if (!typeParams) {
475
+ return undefined;
476
+ }
477
+ return typeParams.d.params.find((param) => param.d.name.d.value === typeVarName);
478
+ }
479
+ // Walks parent pointers up to the root module node. Used when we fall back to the
480
+ // file-level scope to locate a TypeVar that was re-exported at module scope.
481
+ function findModuleAncestor(node) {
482
+ let current = node;
483
+ while (current) {
484
+ if (current.nodeType === 36 /* PyrightNodes.ParseNodeType.Module */) {
485
+ return current;
486
+ }
487
+ current = current.parent;
488
+ }
489
+ return undefined;
490
+ }
491
+ // Only certain node kinds introduce scope ids; this helper keeps the search logic focused
492
+ // on those nodes to avoid unnecessary traversal work during scope discovery.
493
+ function isTypeVarScopeCandidate(node) {
494
+ switch (node.nodeType) {
495
+ case 36 /* PyrightNodes.ParseNodeType.Module */:
496
+ case 10 /* PyrightNodes.ParseNodeType.Class */:
497
+ case 31 /* PyrightNodes.ParseNodeType.Function */:
498
+ case 77 /* PyrightNodes.ParseNodeType.TypeAlias */:
499
+ return true;
500
+ default:
501
+ return false;
502
+ }
503
+ }
504
+ function findFirstExpression(node) {
505
+ if (PyrightNodes.isExpressionNode(node)) {
506
+ return node;
507
+ }
508
+ class ExpressionNodeWalker extends parseTreeWalker_1.ParseTreeWalker {
509
+ getResult() {
510
+ return this._result;
511
+ }
512
+ visitNode(node) {
513
+ if (PyrightNodes.isExpressionNode(node)) {
514
+ this._result = node;
515
+ return [];
516
+ }
517
+ return super.visitNode(node);
518
+ }
519
+ }
520
+ const walker = new ExpressionNodeWalker();
521
+ walker.walk(node);
522
+ return walker.getResult();
523
+ }
524
+ //# sourceMappingURL=typeServerConversionUtils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"typeServerConversionUtils.js","sourceRoot":"","sources":["../../../../../src/typeServer/typeServerConversionUtils.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ import { Program } from '../analyzer/program';
2
+ import { TypeEvaluator } from '../analyzer/typeEvaluatorTypes';
3
+ import { ISymbolLookup } from './programTypes';
4
+ export interface ITypeServerEvaluator extends TypeEvaluator {
5
+ getSymbolLookup(): ISymbolLookup;
6
+ }
7
+ /**
8
+ * Build an `ITypeServerEvaluator` backed by the `Program`'s synchronous `TypeEvaluator`.
9
+ *
10
+ * Pyright's evaluator is a closure-backed object whose methods don't depend on `this`, so we
11
+ * can prototype-delegate to it and add `getSymbolLookup` without copying every method. The
12
+ * evaluator is resolved from `program.evaluator` at creation time; callers create a fresh
13
+ * evaluator per request (the program recreates its evaluator when configuration or imports
14
+ * change), so the captured reference always matches the snapshot being queried.
15
+ */
16
+ export declare function createTypeServerEvaluator(program: Program, symbolLookup: ISymbolLookup): ITypeServerEvaluator;
@@ -0,0 +1,36 @@
1
+ "use strict";
2
+ /*
3
+ * typeServerEvaluator.ts
4
+ * Copyright (c) Microsoft Corporation.
5
+ * Licensed under the MIT license.
6
+ *
7
+ * The type server answers type queries with Pyright's ordinary synchronous `TypeEvaluator`.
8
+ * It needs exactly one capability beyond the stock evaluator: access to the snapshot's symbol
9
+ * lookup. This module defines that thin extension (`ITypeServerEvaluator`) and a factory that
10
+ * layers it onto the program's current evaluator.
11
+ *
12
+ * Cancellation works exactly as it does everywhere else in Pyright: the evaluator polls the
13
+ * active cancellation token via `runWithCancellationToken` / `throwIfCancellationRequested`,
14
+ * so a long-running synchronous query can still be interrupted in the middle of a request.
15
+ */
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ exports.createTypeServerEvaluator = createTypeServerEvaluator;
18
+ /**
19
+ * Build an `ITypeServerEvaluator` backed by the `Program`'s synchronous `TypeEvaluator`.
20
+ *
21
+ * Pyright's evaluator is a closure-backed object whose methods don't depend on `this`, so we
22
+ * can prototype-delegate to it and add `getSymbolLookup` without copying every method. The
23
+ * evaluator is resolved from `program.evaluator` at creation time; callers create a fresh
24
+ * evaluator per request (the program recreates its evaluator when configuration or imports
25
+ * change), so the captured reference always matches the snapshot being queried.
26
+ */
27
+ function createTypeServerEvaluator(program, symbolLookup) {
28
+ const evaluator = program.evaluator;
29
+ if (!evaluator) {
30
+ throw new Error('Type evaluator is not available for the current program.');
31
+ }
32
+ const wrapper = Object.create(evaluator);
33
+ wrapper.getSymbolLookup = () => symbolLookup;
34
+ return wrapper;
35
+ }
36
+ //# sourceMappingURL=typeServerEvaluator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"typeServerEvaluator.js","sourceRoot":"","sources":["../../../../../src/typeServer/typeServerEvaluator.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;GAaG;;AAoBH,8DASC;AAlBD;;;;;;;;GAQG;AACH,SAAgB,yBAAyB,CAAC,OAAgB,EAAE,YAA2B;IACnF,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC;IACpC,IAAI,CAAC,SAAS,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CAAC,0DAA0D,CAAC,CAAC;IAChF,CAAC;IAED,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,SAAS,CAAyB,CAAC;IACjE,OAAO,CAAC,eAAe,GAAG,GAAG,EAAE,CAAC,YAAY,CAAC;IAC7C,OAAO,OAAO,CAAC;AACnB,CAAC"}
@@ -0,0 +1,47 @@
1
+ import type { Dirent, ReadStream, WriteStream } from 'fs';
2
+ import { Disposable } from 'vscode-jsonrpc';
3
+ import { FileSystem, MkDirOptions, Stats } from '../common/fileSystem';
4
+ import { FileWatcher, FileWatcherEventHandler } from '../common/fileWatcher';
5
+ import { Uri } from '../common/uri/uri';
6
+ import { IPyrightFileSystem } from '../pyrightFileSystem';
7
+ import { INotebookUriMapper } from './notebookUriMapper';
8
+ import { VirtualFileOverlayFileSystem } from './virtualFileOverlayFileSystem';
9
+ export declare class TypeServerFileSystem implements IPyrightFileSystem {
10
+ private readonly _uriMapper?;
11
+ private readonly _fs;
12
+ private readonly _virtualOverlay;
13
+ constructor(realFileSystem: FileSystem, _uriMapper?: INotebookUriMapper | undefined);
14
+ /**
15
+ * Returns the virtual file overlay layer. The server's virtual-file-redirect handlers use
16
+ * this to add/remove per-file redirects that transparently redirect read operations to
17
+ * alternate on-disk locations.
18
+ */
19
+ get virtualOverlay(): VirtualFileOverlayFileSystem;
20
+ static is(obj: any): obj is TypeServerFileSystem;
21
+ mkdirSync(uri: Uri, options?: MkDirOptions): void;
22
+ writeFileSync(uri: Uri, data: string | Buffer, encoding: BufferEncoding | null): void;
23
+ unlinkSync(uri: Uri): void;
24
+ rmdirSync(uri: Uri): void;
25
+ createFileSystemWatcher(uris: Uri[], listener: FileWatcherEventHandler): FileWatcher;
26
+ createReadStream(uri: Uri): ReadStream;
27
+ createWriteStream(uri: Uri): WriteStream;
28
+ copyFileSync(src: Uri, dst: Uri): void;
29
+ existsSync(uri: Uri): boolean;
30
+ chdir(uri: Uri): void;
31
+ readdirEntriesSync(uri: Uri): Dirent[];
32
+ readdirSync(uri: Uri): string[];
33
+ readFileSync(uri: Uri, encoding?: null): Buffer;
34
+ readFileSync(uri: Uri, encoding: BufferEncoding): string;
35
+ readFileSync(uri: Uri, encoding?: BufferEncoding | null): string | Buffer;
36
+ statSync(uri: Uri): Stats;
37
+ realpathSync(uri: Uri): Uri;
38
+ getModulePath(): Uri;
39
+ readFile(uri: Uri): Promise<Buffer>;
40
+ readFileText(uri: Uri, encoding?: BufferEncoding): Promise<string>;
41
+ realCasePath(uri: Uri): Uri;
42
+ isMappedUri(fileUri: Uri): boolean;
43
+ getOriginalUri(mappedFileUri: Uri): Uri;
44
+ getMappedUri(originalFileUri: Uri): Uri;
45
+ isInZip(uri: Uri): boolean;
46
+ mapDirectory(mappedUri: Uri, originalUri: Uri, filter?: (originalUri: Uri, fs: FileSystem) => boolean): Disposable;
47
+ }