@zzzen/pyright-internal 1.2.0-dev.20260607 → 1.2.0-dev.20260621

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 (299) hide show
  1. package/dist/analyzer/analysis.js +17 -7
  2. package/dist/analyzer/analysis.js.map +1 -1
  3. package/dist/analyzer/analyzerNodeInfo.d.ts +11 -0
  4. package/dist/analyzer/binder.js +31 -8
  5. package/dist/analyzer/binder.js.map +1 -1
  6. package/dist/analyzer/checker.js +23 -8
  7. package/dist/analyzer/checker.js.map +1 -1
  8. package/dist/analyzer/dataClasses.js +19 -8
  9. package/dist/analyzer/dataClasses.js.map +1 -1
  10. package/dist/analyzer/declaration.d.ts +1 -0
  11. package/dist/analyzer/declaration.js.map +1 -1
  12. package/dist/analyzer/importResolver.d.ts +1 -0
  13. package/dist/analyzer/importResolver.js +38 -8
  14. package/dist/analyzer/importResolver.js.map +1 -1
  15. package/dist/analyzer/importStatementUtils.js +17 -7
  16. package/dist/analyzer/importStatementUtils.js.map +1 -1
  17. package/dist/analyzer/namedTuples.js +17 -7
  18. package/dist/analyzer/namedTuples.js.map +1 -1
  19. package/dist/analyzer/parseTreeCleaner.js +17 -7
  20. package/dist/analyzer/parseTreeCleaner.js.map +1 -1
  21. package/dist/analyzer/parseTreeUtils.js +19 -9
  22. package/dist/analyzer/parseTreeUtils.js.map +1 -1
  23. package/dist/analyzer/parseTreeWalker.js +17 -7
  24. package/dist/analyzer/parseTreeWalker.js.map +1 -1
  25. package/dist/analyzer/program.d.ts +1 -0
  26. package/dist/analyzer/program.js +38 -7
  27. package/dist/analyzer/program.js.map +1 -1
  28. package/dist/analyzer/pythonPathUtils.js +33 -7
  29. package/dist/analyzer/pythonPathUtils.js.map +1 -1
  30. package/dist/analyzer/service.js +43 -11
  31. package/dist/analyzer/service.js.map +1 -1
  32. package/dist/analyzer/sourceEnumerator.js +6 -0
  33. package/dist/analyzer/sourceEnumerator.js.map +1 -1
  34. package/dist/analyzer/sourceFile.d.ts +1 -0
  35. package/dist/analyzer/sourceFile.js +25 -7
  36. package/dist/analyzer/sourceFile.js.map +1 -1
  37. package/dist/analyzer/sourceMapper.d.ts +11 -1
  38. package/dist/analyzer/sourceMapper.js +220 -19
  39. package/dist/analyzer/sourceMapper.js.map +1 -1
  40. package/dist/analyzer/staticExpressions.js +2 -2
  41. package/dist/analyzer/tracePrinter.js +17 -7
  42. package/dist/analyzer/tracePrinter.js.map +1 -1
  43. package/dist/analyzer/typeCacheUtils.js +17 -7
  44. package/dist/analyzer/typeCacheUtils.js.map +1 -1
  45. package/dist/analyzer/typeDocStringUtils.d.ts +8 -0
  46. package/dist/analyzer/typeDocStringUtils.js +101 -27
  47. package/dist/analyzer/typeDocStringUtils.js.map +1 -1
  48. package/dist/analyzer/typeEvaluator.js +69 -28
  49. package/dist/analyzer/typeEvaluator.js.map +1 -1
  50. package/dist/analyzer/typeGuards.js +19 -9
  51. package/dist/analyzer/typeGuards.js.map +1 -1
  52. package/dist/analyzer/typePrinter.js +50 -8
  53. package/dist/analyzer/typePrinter.js.map +1 -1
  54. package/dist/analyzer/typeStubWriter.js +17 -7
  55. package/dist/analyzer/typeStubWriter.js.map +1 -1
  56. package/dist/analyzer/typeUtils.d.ts +1 -0
  57. package/dist/analyzer/typeUtils.js +9 -0
  58. package/dist/analyzer/typeUtils.js.map +1 -1
  59. package/dist/analyzer/typeWalker.js +1 -1
  60. package/dist/analyzer/typeWalker.js.map +1 -1
  61. package/dist/analyzer/typedDicts.js +19 -9
  62. package/dist/analyzer/typedDicts.js.map +1 -1
  63. package/dist/analyzer/typeshedInfoProvider.js +17 -7
  64. package/dist/analyzer/typeshedInfoProvider.js.map +1 -1
  65. package/dist/backgroundAnalysisBase.js +17 -7
  66. package/dist/backgroundAnalysisBase.js.map +1 -1
  67. package/dist/backgroundThreadBase.js +17 -7
  68. package/dist/backgroundThreadBase.js.map +1 -1
  69. package/dist/common/chokidarFileWatcherProvider.js +17 -7
  70. package/dist/common/chokidarFileWatcherProvider.js.map +1 -1
  71. package/dist/common/configOptions.js +17 -7
  72. package/dist/common/configOptions.js.map +1 -1
  73. package/dist/common/console.js +17 -7
  74. package/dist/common/console.js.map +1 -1
  75. package/dist/common/envVarUtils.js +17 -7
  76. package/dist/common/envVarUtils.js.map +1 -1
  77. package/dist/common/extensibility.d.ts +2 -0
  78. package/dist/common/extensibility.js.map +1 -1
  79. package/dist/common/fileBasedCancellationUtils.js +17 -7
  80. package/dist/common/fileBasedCancellationUtils.js.map +1 -1
  81. package/dist/common/fullAccessHost.d.ts +2 -1
  82. package/dist/common/fullAccessHost.js +26 -7
  83. package/dist/common/fullAccessHost.js.map +1 -1
  84. package/dist/common/host.d.ts +31 -0
  85. package/dist/common/host.js +3 -0
  86. package/dist/common/host.js.map +1 -1
  87. package/dist/common/languageInfoUtils.js +12 -12
  88. package/dist/common/memUtils.js +18 -7
  89. package/dist/common/memUtils.js.map +1 -1
  90. package/dist/common/pathUtils.js +17 -7
  91. package/dist/common/pathUtils.js.map +1 -1
  92. package/dist/common/positionUtils.js +19 -0
  93. package/dist/common/positionUtils.js.map +1 -1
  94. package/dist/common/processUtils.js +17 -7
  95. package/dist/common/processUtils.js.map +1 -1
  96. package/dist/common/realFileSystem.js +19 -19
  97. package/dist/common/realFileSystem.js.map +1 -1
  98. package/dist/common/serviceProvider.js +17 -7
  99. package/dist/common/serviceProvider.js.map +1 -1
  100. package/dist/common/streamUtils.d.ts +1 -1
  101. package/dist/common/textEditTracker.d.ts +1 -0
  102. package/dist/common/textEditTracker.js +31 -12
  103. package/dist/common/textEditTracker.js.map +1 -1
  104. package/dist/common/uri/uriMap.d.ts +4 -4
  105. package/dist/common/uri/uriMap.js +1 -0
  106. package/dist/common/uri/uriMap.js.map +1 -1
  107. package/dist/common/workspaceEditUtils.d.ts +1 -0
  108. package/dist/common/workspaceEditUtils.js +10 -0
  109. package/dist/common/workspaceEditUtils.js.map +1 -1
  110. package/dist/languageServerBase.js +13 -3
  111. package/dist/languageServerBase.js.map +1 -1
  112. package/dist/languageService/autoImporter.js +17 -7
  113. package/dist/languageService/autoImporter.js.map +1 -1
  114. package/dist/languageService/callHierarchyProvider.js +17 -7
  115. package/dist/languageService/callHierarchyProvider.js.map +1 -1
  116. package/dist/languageService/completionProvider.d.ts +5 -2
  117. package/dist/languageService/completionProvider.js +125 -19
  118. package/dist/languageService/completionProvider.js.map +1 -1
  119. package/dist/languageService/completionProviderUtils.d.ts +16 -0
  120. package/dist/languageService/completionProviderUtils.js +42 -0
  121. package/dist/languageService/completionProviderUtils.js.map +1 -1
  122. package/dist/languageService/definitionProvider.d.ts +1 -1
  123. package/dist/languageService/definitionProvider.js +69 -10
  124. package/dist/languageService/definitionProvider.js.map +1 -1
  125. package/dist/languageService/documentHighlightProvider.js +17 -7
  126. package/dist/languageService/documentHighlightProvider.js.map +1 -1
  127. package/dist/languageService/documentSymbolCollector.d.ts +4 -0
  128. package/dist/languageService/documentSymbolCollector.js +73 -9
  129. package/dist/languageService/documentSymbolCollector.js.map +1 -1
  130. package/dist/languageService/hoverProvider.d.ts +1 -1
  131. package/dist/languageService/hoverProvider.js +76 -23
  132. package/dist/languageService/hoverProvider.js.map +1 -1
  133. package/dist/languageService/referencesProvider.js +17 -7
  134. package/dist/languageService/referencesProvider.js.map +1 -1
  135. package/dist/languageService/signatureHelpProvider.js +54 -16
  136. package/dist/languageService/signatureHelpProvider.js.map +1 -1
  137. package/dist/languageService/symbolIndexer.js +17 -7
  138. package/dist/languageService/symbolIndexer.js.map +1 -1
  139. package/dist/languageService/tooltipUtils.d.ts +11 -0
  140. package/dist/languageService/tooltipUtils.js +67 -33
  141. package/dist/languageService/tooltipUtils.js.map +1 -1
  142. package/dist/languageService/workspaceSymbolProvider.js +17 -7
  143. package/dist/languageService/workspaceSymbolProvider.js.map +1 -1
  144. package/dist/localization/localize.d.ts +2 -0
  145. package/dist/localization/localize.js +2 -0
  146. package/dist/localization/localize.js.map +1 -1
  147. package/dist/localization/package.nls.en-us.json +2 -0
  148. package/dist/parser/characters.js +17 -7
  149. package/dist/parser/characters.js.map +1 -1
  150. package/dist/parser/parseNodes.d.ts +4 -0
  151. package/dist/parser/parseNodes.js.map +1 -1
  152. package/dist/parser/parser.d.ts +1 -0
  153. package/dist/parser/parser.js +82 -38
  154. package/dist/parser/parser.js.map +1 -1
  155. package/dist/parser/stringTokenUtils.js +23 -7
  156. package/dist/parser/stringTokenUtils.js.map +1 -1
  157. package/dist/parser/tokenizer.js +16 -15
  158. package/dist/parser/tokenizer.js.map +1 -1
  159. package/dist/parser/tokenizerTypes.d.ts +15 -14
  160. package/dist/parser/tokenizerTypes.js +22 -15
  161. package/dist/parser/tokenizerTypes.js.map +1 -1
  162. package/dist/pyright.js +17 -7
  163. package/dist/pyright.js.map +1 -1
  164. package/dist/server.js +1 -1
  165. package/dist/server.js.map +1 -1
  166. package/dist/tests/benchmarks/parserBenchmark.test.js +17 -7
  167. package/dist/tests/benchmarks/parserBenchmark.test.js.map +1 -1
  168. package/dist/tests/benchmarks/tokenizerBenchmark.test.js +17 -7
  169. package/dist/tests/benchmarks/tokenizerBenchmark.test.js.map +1 -1
  170. package/dist/tests/chainedSourceFiles.test.js +17 -7
  171. package/dist/tests/chainedSourceFiles.test.js.map +1 -1
  172. package/dist/tests/checker.test.js +17 -7
  173. package/dist/tests/checker.test.js.map +1 -1
  174. package/dist/tests/collectionUtils.test.js +17 -7
  175. package/dist/tests/collectionUtils.test.js.map +1 -1
  176. package/dist/tests/common.test.js +17 -7
  177. package/dist/tests/common.test.js.map +1 -1
  178. package/dist/tests/completionProviderUtils.test.d.ts +1 -0
  179. package/dist/tests/completionProviderUtils.test.js +56 -0
  180. package/dist/tests/completionProviderUtils.test.js.map +1 -0
  181. package/dist/tests/config.test.js +69 -0
  182. package/dist/tests/config.test.js.map +1 -1
  183. package/dist/tests/debug.test.js +17 -7
  184. package/dist/tests/debug.test.js.map +1 -1
  185. package/dist/tests/deferred.test.js +18 -8
  186. package/dist/tests/deferred.test.js.map +1 -1
  187. package/dist/tests/diagnosticOverrides.test.js +17 -7
  188. package/dist/tests/diagnosticOverrides.test.js.map +1 -1
  189. package/dist/tests/diagnostics.test.js +35 -0
  190. package/dist/tests/diagnostics.test.js.map +1 -1
  191. package/dist/tests/envVarUtils.test.js +17 -7
  192. package/dist/tests/envVarUtils.test.js.map +1 -1
  193. package/dist/tests/filesystem.test.js +17 -7
  194. package/dist/tests/filesystem.test.js.map +1 -1
  195. package/dist/tests/fourSlashParser.test.js +17 -7
  196. package/dist/tests/fourSlashParser.test.js.map +1 -1
  197. package/dist/tests/fourSlashRunner.test.js +17 -7
  198. package/dist/tests/fourSlashRunner.test.js.map +1 -1
  199. package/dist/tests/fourslash/completions.inherited.function.docFromStub.fourslash.js +1 -1
  200. package/dist/tests/fourslash/completions.inherited.function.docFromStub.fourslash.js.map +1 -1
  201. package/dist/tests/fourslash/completions.keywords.pythonVersion.fourslash.js +20 -0
  202. package/dist/tests/fourslash/completions.keywords.pythonVersion.fourslash.js.map +1 -1
  203. package/dist/tests/fourslash/diagnostics.missingModuleSource.nativeSubmodule.fourslash.d.ts +1 -0
  204. package/dist/tests/fourslash/diagnostics.missingModuleSource.nativeSubmodule.fourslash.js +61 -0
  205. package/dist/tests/fourslash/diagnostics.missingModuleSource.nativeSubmodule.fourslash.js.map +1 -0
  206. package/dist/tests/fourslash/signature.complicated.fourslash.js +1 -5
  207. package/dist/tests/fourslash/signature.complicated.fourslash.js.map +1 -1
  208. package/dist/tests/fourslash/signature.posonly.fourslash.d.ts +1 -0
  209. package/dist/tests/fourslash/signature.posonly.fourslash.js +58 -0
  210. package/dist/tests/fourslash/signature.posonly.fourslash.js.map +1 -0
  211. package/dist/tests/harness/fourslash/fourSlashTypes.js +17 -7
  212. package/dist/tests/harness/fourslash/fourSlashTypes.js.map +1 -1
  213. package/dist/tests/harness/fourslash/runner.js +17 -7
  214. package/dist/tests/harness/fourslash/runner.js.map +1 -1
  215. package/dist/tests/harness/fourslash/testLanguageService.js +17 -7
  216. package/dist/tests/harness/fourslash/testLanguageService.js.map +1 -1
  217. package/dist/tests/harness/fourslash/testState.Consts.js +17 -7
  218. package/dist/tests/harness/fourslash/testState.Consts.js.map +1 -1
  219. package/dist/tests/harness/fourslash/testState.js +17 -7
  220. package/dist/tests/harness/fourslash/testState.js.map +1 -1
  221. package/dist/tests/harness/fourslash/testStateUtils.js +17 -7
  222. package/dist/tests/harness/fourslash/testStateUtils.js.map +1 -1
  223. package/dist/tests/harness/fourslash/workspaceEditTestUtils.js +17 -7
  224. package/dist/tests/harness/fourslash/workspaceEditTestUtils.js.map +1 -1
  225. package/dist/tests/harness/testHost.js +17 -7
  226. package/dist/tests/harness/testHost.js.map +1 -1
  227. package/dist/tests/harness/utils.d.ts +4 -4
  228. package/dist/tests/harness/utils.js.map +1 -1
  229. package/dist/tests/harness/vfs/factory.js +17 -7
  230. package/dist/tests/harness/vfs/factory.js.map +1 -1
  231. package/dist/tests/harness/vfs/filesystem.js +19 -11
  232. package/dist/tests/harness/vfs/filesystem.js.map +1 -1
  233. package/dist/tests/harness/vfs/pathValidation.js +17 -7
  234. package/dist/tests/harness/vfs/pathValidation.js.map +1 -1
  235. package/dist/tests/importResolver.test.js +104 -0
  236. package/dist/tests/importResolver.test.js.map +1 -1
  237. package/dist/tests/languageServer.test.js +91 -0
  238. package/dist/tests/languageServer.test.js.map +1 -1
  239. package/dist/tests/localizer.test.js +17 -7
  240. package/dist/tests/localizer.test.js.map +1 -1
  241. package/dist/tests/logger.test.js +17 -7
  242. package/dist/tests/logger.test.js.map +1 -1
  243. package/dist/tests/lsp/languageServer.js +17 -7
  244. package/dist/tests/lsp/languageServer.js.map +1 -1
  245. package/dist/tests/lsp/languageServerTestUtils.d.ts +0 -4
  246. package/dist/tests/lsp/languageServerTestUtils.js +76 -21
  247. package/dist/tests/lsp/languageServerTestUtils.js.map +1 -1
  248. package/dist/tests/parser.test.js +246 -7
  249. package/dist/tests/parser.test.js.map +1 -1
  250. package/dist/tests/pathUtils.test.js +17 -7
  251. package/dist/tests/pathUtils.test.js.map +1 -1
  252. package/dist/tests/positionUtils.test.js +26 -0
  253. package/dist/tests/positionUtils.test.js.map +1 -1
  254. package/dist/tests/realTempFile.test.js +17 -7
  255. package/dist/tests/realTempFile.test.js.map +1 -1
  256. package/dist/tests/sourceFile.test.js +17 -7
  257. package/dist/tests/sourceFile.test.js.map +1 -1
  258. package/dist/tests/sourceMapperUtils.test.js +192 -0
  259. package/dist/tests/sourceMapperUtils.test.js.map +1 -1
  260. package/dist/tests/stringUtils.test.js +17 -7
  261. package/dist/tests/stringUtils.test.js.map +1 -1
  262. package/dist/tests/symbolNameUtils.test.js +17 -7
  263. package/dist/tests/symbolNameUtils.test.js.map +1 -1
  264. package/dist/tests/testState.test.js +17 -7
  265. package/dist/tests/testState.test.js.map +1 -1
  266. package/dist/tests/testUtils.js +17 -7
  267. package/dist/tests/testUtils.js.map +1 -1
  268. package/dist/tests/textRange.test.js +17 -7
  269. package/dist/tests/textRange.test.js.map +1 -1
  270. package/dist/tests/tokenizer.test.js +17 -7
  271. package/dist/tests/tokenizer.test.js.map +1 -1
  272. package/dist/tests/typeEvaluator1.test.js +17 -7
  273. package/dist/tests/typeEvaluator1.test.js.map +1 -1
  274. package/dist/tests/typeEvaluator2.test.js +17 -7
  275. package/dist/tests/typeEvaluator2.test.js.map +1 -1
  276. package/dist/tests/typeEvaluator3.test.js +23 -7
  277. package/dist/tests/typeEvaluator3.test.js.map +1 -1
  278. package/dist/tests/typeEvaluator4.test.js +23 -7
  279. package/dist/tests/typeEvaluator4.test.js.map +1 -1
  280. package/dist/tests/typeEvaluator5.test.js +17 -7
  281. package/dist/tests/typeEvaluator5.test.js.map +1 -1
  282. package/dist/tests/typeEvaluator6.test.js +17 -7
  283. package/dist/tests/typeEvaluator6.test.js.map +1 -1
  284. package/dist/tests/typeEvaluator7.test.js +17 -7
  285. package/dist/tests/typeEvaluator7.test.js.map +1 -1
  286. package/dist/tests/typeEvaluator8.test.js +17 -7
  287. package/dist/tests/typeEvaluator8.test.js.map +1 -1
  288. package/dist/tests/typePrinter.test.js +82 -7
  289. package/dist/tests/typePrinter.test.js.map +1 -1
  290. package/dist/tests/uri.test.js +17 -7
  291. package/dist/tests/uri.test.js.map +1 -1
  292. package/dist/tests/workspaceEditUtils.test.js +48 -7
  293. package/dist/tests/workspaceEditUtils.test.js.map +1 -1
  294. package/dist/tests/zipfs.test.js +17 -7
  295. package/dist/tests/zipfs.test.js.map +1 -1
  296. package/package.json +9 -9
  297. package/dist/tests/lsp/rspack.testserver.config.d.ts +0 -63
  298. package/dist/tests/lsp/rspack.testserver.config.js +0 -60
  299. package/dist/tests/lsp/rspack.testserver.config.js.map +0 -1
@@ -13,7 +13,7 @@ import { Uri } from '../common/uri/uri';
13
13
  import { DecoratorNode, ExpressionNode, NameNode, ParseNode } from '../parser/parseNodes';
14
14
  import { ParseFileResults } from '../parser/parser';
15
15
  import { AutoImporter, AutoImportResult } from './autoImporter';
16
- import { CompletionDetail, SymbolDetail } from './completionProviderUtils';
16
+ import { CompletionDetail, SymbolDetail, TrailingOverlap } from './completionProviderUtils';
17
17
  export interface CompletionItemData {
18
18
  uri: string;
19
19
  position: Position;
@@ -53,9 +53,10 @@ export declare class CompletionProvider {
53
53
  protected getMethodOverrideCompletions(priorWord: string, partialName: NameNode, decorators?: DecoratorNode[]): CompletionMap | undefined;
54
54
  protected printOverriddenMethodBody(classType: ClassType, isStaticMethod: boolean, isProperty: boolean, decl: FunctionDeclaration, insertAwait?: boolean): string;
55
55
  protected createReplaceEdits(priorWord: string, node: ParseNode | undefined, text: string): TextEdit;
56
+ protected createReplaceEditWithOverlap(priorWord: string, overlap: TrailingOverlap | undefined, text: string): TextEdit;
56
57
  protected shouldProcessDeclaration(declaration: Declaration | undefined): boolean;
57
58
  protected addSymbol(name: string, symbol: Symbol, priorWord: string, completionMap: CompletionMap, detail: SymbolDetail): void;
58
- protected getMemberAccessCompletions(leftExprNode: ExpressionNode, priorWord: string): CompletionMap | undefined;
59
+ protected getMemberAccessCompletions(leftExprNode: ExpressionNode, priorWord: string, preserveEnumMembers?: boolean): CompletionMap | undefined;
59
60
  protected createAutoImporter(completionMap: CompletionMap, lazyEdit: boolean): AutoImporter;
60
61
  protected addAutoImportCompletions(priorWord: string, similarityLimit: number, lazyEdit: boolean, completionMap: CompletionMap, parensDisabled?: boolean): void;
61
62
  protected addImportResults(results: AutoImportResult[], priorWord: string, completionMap: CompletionMap, parensDisabled?: boolean): void;
@@ -69,6 +70,7 @@ export declare class CompletionProvider {
69
70
  private _getTypeOfSymbol;
70
71
  private _getCompletions;
71
72
  private _tryGetNameCompletions;
73
+ private _isRecoveredPatternMemberAccessName;
72
74
  private _isWithinComment;
73
75
  private _getExpressionErrorCompletions;
74
76
  private _getMissingMemberAccessNameCompletions;
@@ -88,6 +90,7 @@ export declare class CompletionProvider {
88
90
  private _getSubTypesWithLiteralValues;
89
91
  private _getIndexKeyType;
90
92
  private _getIndexKeys;
93
+ private _isSubscriptInTypeContext;
91
94
  private _getLiteralCompletions;
92
95
  private _tryAddLiterals;
93
96
  private _tryAddMatchCaseLiteralCompletions;
@@ -24,13 +24,23 @@ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (
24
24
  }) : function(o, v) {
25
25
  o["default"] = v;
26
26
  });
27
- var __importStar = (this && this.__importStar) || function (mod) {
28
- if (mod && mod.__esModule) return mod;
29
- var result = {};
30
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
31
- __setModuleDefault(result, mod);
32
- return result;
33
- };
27
+ var __importStar = (this && this.__importStar) || (function () {
28
+ var ownKeys = function(o) {
29
+ ownKeys = Object.getOwnPropertyNames || function (o) {
30
+ var ar = [];
31
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
32
+ return ar;
33
+ };
34
+ return ownKeys(o);
35
+ };
36
+ return function (mod) {
37
+ if (mod && mod.__esModule) return mod;
38
+ var result = {};
39
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
40
+ __setModuleDefault(result, mod);
41
+ return result;
42
+ };
43
+ })();
34
44
  Object.defineProperty(exports, "__esModule", { value: true });
35
45
  exports.CompletionMap = exports.CompletionProvider = exports.indexValueDetail = exports.autoImportDetail = void 0;
36
46
  const vscode_languageserver_1 = require("vscode-languageserver");
@@ -111,7 +121,11 @@ var Keywords;
111
121
  ];
112
122
  const python3_5 = [...base, 'async', 'await'];
113
123
  const python3_10 = [...python3_5, 'case', 'match'];
124
+ const python3_15 = [...python3_10, 'lazy'];
114
125
  function forVersion(version) {
126
+ if (pythonVersion_1.PythonVersion.isGreaterOrEqualTo(version, pythonVersion_1.pythonVersion3_15)) {
127
+ return python3_15;
128
+ }
115
129
  if (pythonVersion_1.PythonVersion.isGreaterOrEqualTo(version, pythonVersion_1.pythonVersion3_10)) {
116
130
  return python3_10;
117
131
  }
@@ -406,6 +420,13 @@ class CompletionProvider {
406
420
  };
407
421
  return vscode_languageserver_1.TextEdit.replace(range, text);
408
422
  }
423
+ createReplaceEditWithOverlap(priorWord, overlap, text) {
424
+ const range = {
425
+ start: { line: this.position.line, character: this.position.character - priorWord.length },
426
+ end: { line: this.position.line, character: this.position.character + (overlap?.consumedChars ?? 0) },
427
+ };
428
+ return vscode_languageserver_1.TextEdit.replace(range, text);
429
+ }
409
430
  shouldProcessDeclaration(declaration) {
410
431
  // By default, we allow all symbol/decl to be included in the completion.
411
432
  return true;
@@ -494,7 +515,7 @@ class CompletionProvider {
494
515
  }
495
516
  }
496
517
  }
497
- getMemberAccessCompletions(leftExprNode, priorWord) {
518
+ getMemberAccessCompletions(leftExprNode, priorWord, preserveEnumMembers = false) {
498
519
  const symbolTable = new Map();
499
520
  const completionMap = new CompletionMap();
500
521
  let leftType = this.evaluator.getType(leftExprNode);
@@ -509,14 +530,26 @@ class CompletionProvider {
509
530
  }
510
531
  (0, typeUtils_1.doForEachSubtype)(leftType, (subtype) => {
511
532
  subtype = this.evaluator.makeTopLevelTypeVarsConcrete(subtype);
533
+ let resolvedClassSubtype;
512
534
  if ((0, types_1.isClass)(subtype)) {
513
- const instance = types_1.TypeBase.isInstance(subtype);
514
- (0, typeUtils_1.getMembersForClass)(subtype, symbolTable, instance);
515
- if (types_1.ClassType.isEnumClass(subtype) && instance) {
535
+ if (preserveEnumMembers && types_1.ClassType.isEnumClass(subtype) && types_1.TypeBase.isInstance(subtype)) {
536
+ // Preserve enum members by switching back to the class view before member enumeration.
537
+ resolvedClassSubtype = types_1.ClassType.cloneAsInstantiable(subtype);
538
+ }
539
+ else {
540
+ resolvedClassSubtype = subtype;
541
+ }
542
+ const instance = types_1.TypeBase.isInstance(resolvedClassSubtype);
543
+ (0, typeUtils_1.getMembersForClass)(resolvedClassSubtype, symbolTable, instance);
544
+ if (types_1.ClassType.isEnumClass(resolvedClassSubtype) && instance && !preserveEnumMembers) {
516
545
  // Don't show enum member out of another enum member
517
- // ex) Enum.Member. <= shouldn't show `Member` again.
546
+ // ex) Enum.Member. <= shouldn't show `Member` again. This pruning stays separate
547
+ // from the clone above because the clone only changes which members are enumerated.
548
+ // Note: when preserveEnumMembers=true, the cloneAsInstantiable above already makes
549
+ // instance=false, so this block is independently unreachable. The explicit
550
+ // !preserveEnumMembers guard is defense-in-depth for clarity.
518
551
  for (const name of symbolTable.keys()) {
519
- if (this._isEnumMember(subtype, name)) {
552
+ if (this._isEnumMember(resolvedClassSubtype, name)) {
520
553
  symbolTable.delete(name);
521
554
  }
522
555
  }
@@ -538,7 +571,7 @@ class CompletionProvider {
538
571
  }
539
572
  }
540
573
  this._addSymbolsForSymbolTable(symbolTable, () => true, priorWord, leftExprNode,
541
- /* isInImport */ false, (0, types_1.isClass)(subtype) ? subtype : undefined, completionMap);
574
+ /* isInImport */ false, resolvedClassSubtype, completionMap);
542
575
  });
543
576
  return completionMap;
544
577
  }
@@ -1004,6 +1037,12 @@ class CompletionProvider {
1004
1037
  if (curNode.parent.nodeType === 35 /* ParseNodeType.MemberAccess */ && curNode === curNode.parent.d.member) {
1005
1038
  return this.getMemberAccessCompletions(curNode.parent.d.leftExpr, priorWord);
1006
1039
  }
1040
+ if (this._isRecoveredPatternMemberAccessName(curNode, priorWord, priorText)) {
1041
+ // Pass curNode (the Name node) rather than a MemberAccess leftExpr: the type evaluator
1042
+ // resolves the Name to the same class type, and no MemberAccess parent exists in this
1043
+ // recovered-pattern context.
1044
+ return this.getMemberAccessCompletions(curNode, priorWord, /* preserveEnumMembers */ true);
1045
+ }
1007
1046
  if (curNode.parent.nodeType === 28 /* ParseNodeType.Except */ && curNode === curNode.parent.d.name) {
1008
1047
  return undefined;
1009
1048
  }
@@ -1059,6 +1098,17 @@ class CompletionProvider {
1059
1098
  }
1060
1099
  return false;
1061
1100
  }
1101
+ _isRecoveredPatternMemberAccessName(curNode, priorWord, priorText) {
1102
+ if (priorWord.length > 0 || !priorText.endsWith('.')) {
1103
+ return false;
1104
+ }
1105
+ // Parser recovery keeps `case Direction.` as a `PatternCapture > Name`, so detect the
1106
+ // trailing-dot text shape directly instead of waiting for a `MemberAccess` node.
1107
+ if (curNode.parent?.nodeType !== 69 /* ParseNodeType.PatternCapture */) {
1108
+ return false;
1109
+ }
1110
+ return !!ParseTreeUtils.getFirstAncestorOrSelfOfKind(curNode.parent, 64 /* ParseNodeType.Case */);
1111
+ }
1062
1112
  _isWithinComment(offset) {
1063
1113
  const token = getTokenAfter(offset, this.parseResults.tokenizerOutput.tokens);
1064
1114
  if (!token) {
@@ -1161,6 +1211,17 @@ class CompletionProvider {
1161
1211
  case 3 /* ErrorExpressionCategory.MissingIndexOrSlice */: {
1162
1212
  let completionResults = this._getLiteralCompletions(node, offset, priorWord, priorText, postText);
1163
1213
  if (!completionResults) {
1214
+ if (node.d.category === 3 /* ErrorExpressionCategory.MissingIndexOrSlice */ &&
1215
+ this.options.triggerCharacter === '[' &&
1216
+ !this._isSubscriptInTypeContext(node)) {
1217
+ // When `[` auto-triggers a subscript and there are no literal key
1218
+ // suggestions, return undefined so the caller produces an empty
1219
+ // CompletionList instead of noisy generic expression completions.
1220
+ // Skip this suppression inside type-like contexts (annotations,
1221
+ // class bases, type aliases) where generic subscripts are the
1222
+ // expected workflow.
1223
+ return undefined;
1224
+ }
1164
1225
  completionResults = this._getExpressionCompletions(node, priorWord, priorText, postText);
1165
1226
  }
1166
1227
  return completionResults;
@@ -1490,7 +1551,7 @@ class CompletionProvider {
1490
1551
  const callNameEnd = (0, positionUtils_1.convertOffsetToPosition)(signatureInfo.callNode.d.leftExpr.start + signatureInfo.callNode.d.leftExpr.length, this.parseResults.tokenizerOutput.lines);
1491
1552
  if ((0, textRange_1.comparePositions)(this.position, callNameEnd) > 0) {
1492
1553
  if (!atArgument) {
1493
- this._addNamedParameters(signatureInfo, priorWord, completionMap);
1554
+ this._addNamedParameters(signatureInfo, priorWord, postText, completionMap);
1494
1555
  }
1495
1556
  this._addLiteralValuesForArgument(signatureInfo, priorWord, priorText, postText, completionMap);
1496
1557
  }
@@ -1671,6 +1732,42 @@ class CompletionProvider {
1671
1732
  }
1672
1733
  return Array.from(keys);
1673
1734
  }
1735
+ _isSubscriptInTypeContext(node) {
1736
+ // Standard type annotation contexts: TypeAnnotation, Parameter annotation, return annotation.
1737
+ if (ParseTreeUtils.isWithinTypeAnnotation(node, /* requireQuotedAnnotation */ false)) {
1738
+ return true;
1739
+ }
1740
+ // PEP 695 type alias: `type MyAlias = list[...]`
1741
+ if (ParseTreeUtils.getParentNodeOfType(node, 77 /* ParseNodeType.TypeAlias */)) {
1742
+ return true;
1743
+ }
1744
+ // Class bases: `class Foo(list[...])` or `class Foo(Generic[...])`
1745
+ let curNode = node.parent;
1746
+ while (curNode) {
1747
+ if (curNode.nodeType === 1 /* ParseNodeType.Argument */ && curNode.parent?.nodeType === 10 /* ParseNodeType.Class */) {
1748
+ return true;
1749
+ }
1750
+ if (curNode.nodeType === 50 /* ParseNodeType.Suite */ ||
1751
+ curNode.nodeType === 31 /* ParseNodeType.Function */ ||
1752
+ curNode.nodeType === 33 /* ParseNodeType.Lambda */) {
1753
+ break;
1754
+ }
1755
+ curNode = curNode.parent;
1756
+ }
1757
+ // Old-style TypeAlias assignment: `MyAlias: TypeAlias = list[...]`
1758
+ const assignmentNode = ParseTreeUtils.getParentNodeOfType(node, 3 /* ParseNodeType.Assignment */);
1759
+ if (assignmentNode && assignmentNode.nodeType === 3 /* ParseNodeType.Assignment */) {
1760
+ const leftExpr = assignmentNode.d.leftExpr;
1761
+ if (leftExpr.nodeType === 54 /* ParseNodeType.TypeAnnotation */) {
1762
+ const annotation = leftExpr.d.annotation;
1763
+ if ((annotation.nodeType === 38 /* ParseNodeType.Name */ && annotation.d.value === 'TypeAlias') ||
1764
+ (annotation.nodeType === 35 /* ParseNodeType.MemberAccess */ && annotation.d.member.d.value === 'TypeAlias')) {
1765
+ return true;
1766
+ }
1767
+ }
1768
+ }
1769
+ return false;
1770
+ }
1674
1771
  _getLiteralCompletions(parseNode, offset, priorWord, priorText, postText) {
1675
1772
  if (this.options.triggerCharacter === '"' || this.options.triggerCharacter === "'") {
1676
1773
  if (parseNode.start !== offset - 1) {
@@ -2094,11 +2191,13 @@ class CompletionProvider {
2094
2191
  rangeStartCol -= quoteInfo.priorWord.length;
2095
2192
  }
2096
2193
  // If the text after the insertion point is the closing quote,
2097
- // replace it.
2194
+ // extend the replacement range so we don't end up with a duplicated
2195
+ // quote after the completion is applied.
2098
2196
  let rangeEndCol = this.position.character;
2099
2197
  if (postText !== undefined) {
2100
- if (postText.startsWith(quoteInfo.quoteCharacter)) {
2101
- rangeEndCol++;
2198
+ const overlap = (0, completionProviderUtils_1.detectTrailingOverlap)(quoteInfo.quoteCharacter, postText, 'adjacent');
2199
+ if (overlap) {
2200
+ rangeEndCol += overlap.consumedChars;
2102
2201
  }
2103
2202
  }
2104
2203
  const range = {
@@ -2168,7 +2267,7 @@ class CompletionProvider {
2168
2267
  }
2169
2268
  });
2170
2269
  }
2171
- _addNamedParameters(signatureInfo, priorWord, completionMap) {
2270
+ _addNamedParameters(signatureInfo, priorWord, postText, completionMap) {
2172
2271
  const argNameSet = new Set();
2173
2272
  signatureInfo.signatures.forEach((signature) => {
2174
2273
  this._addNamedParametersToMap(signature.type, argNameSet);
@@ -2202,6 +2301,13 @@ class CompletionProvider {
2202
2301
  completionItem.data = (0, lspUtils_1.toLSPAny)(completionItemData);
2203
2302
  completionItem.sortText = this._makeSortText(SortCategory.NamedParameter, argName);
2204
2303
  completionItem.filterText = argName;
2304
+ // If the text immediately after the cursor already starts with
2305
+ // `=`, extend the replacement range so we don't end up with
2306
+ // `argName==` after the completion is applied (pylance-release#4808).
2307
+ const overlap = (0, completionProviderUtils_1.detectTrailingOverlap)('=', postText, 'adjacent');
2308
+ if (overlap) {
2309
+ completionItem.textEdit = this.createReplaceEditWithOverlap(priorWord, overlap, label);
2310
+ }
2205
2311
  completionMap.set(completionItem);
2206
2312
  }
2207
2313
  });