@zzzen/pyright-internal 1.1.255 → 1.2.0-beta

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 (1409) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +1 -0
  3. package/dist/analyzer/analyzerFileInfo.d.ts +1 -1
  4. package/dist/analyzer/backgroundAnalysisProgram.d.ts +1 -0
  5. package/dist/analyzer/backgroundAnalysisProgram.js +3 -0
  6. package/dist/analyzer/backgroundAnalysisProgram.js.map +1 -1
  7. package/dist/analyzer/binder.js +9 -2
  8. package/dist/analyzer/binder.js.map +1 -1
  9. package/dist/analyzer/checker.js +19 -26
  10. package/dist/analyzer/checker.js.map +1 -1
  11. package/dist/analyzer/codeFlowUtils.js +33 -0
  12. package/dist/analyzer/codeFlowUtils.js.map +1 -1
  13. package/dist/analyzer/dataClasses.js +6 -4
  14. package/dist/analyzer/dataClasses.js.map +1 -1
  15. package/dist/analyzer/declaration.js +11 -1
  16. package/dist/analyzer/declaration.js.map +1 -1
  17. package/dist/analyzer/importResult.js +7 -0
  18. package/dist/analyzer/importResult.js.map +1 -1
  19. package/dist/analyzer/importStatementUtils.js +10 -1
  20. package/dist/analyzer/importStatementUtils.js.map +1 -1
  21. package/dist/analyzer/namedTuples.js +1 -1
  22. package/dist/analyzer/namedTuples.js.map +1 -1
  23. package/dist/analyzer/packageTypeReport.js +10 -1
  24. package/dist/analyzer/packageTypeReport.js.map +1 -1
  25. package/dist/analyzer/parseTreeUtils.js +11 -2
  26. package/dist/analyzer/parseTreeUtils.js.map +1 -1
  27. package/dist/analyzer/program.d.ts +2 -1
  28. package/dist/analyzer/program.js +27 -23
  29. package/dist/analyzer/program.js.map +1 -1
  30. package/dist/analyzer/protocols.js +3 -1
  31. package/dist/analyzer/protocols.js.map +1 -1
  32. package/dist/analyzer/scope.js +22 -1
  33. package/dist/analyzer/scope.js.map +1 -1
  34. package/dist/analyzer/service.d.ts +20 -8
  35. package/dist/analyzer/service.js +39 -19
  36. package/dist/analyzer/service.js.map +1 -1
  37. package/dist/analyzer/sourceFile.js +1 -1
  38. package/dist/analyzer/sourceFile.js.map +1 -1
  39. package/dist/analyzer/sourceFileInfoUtils.d.ts +2 -0
  40. package/dist/analyzer/sourceFileInfoUtils.js +15 -0
  41. package/dist/analyzer/sourceFileInfoUtils.js.map +1 -0
  42. package/dist/analyzer/symbol.d.ts +3 -1
  43. package/dist/analyzer/symbol.js +39 -1
  44. package/dist/analyzer/symbol.js.map +1 -1
  45. package/dist/analyzer/typeDocStringUtils.js +10 -2
  46. package/dist/analyzer/typeDocStringUtils.js.map +1 -1
  47. package/dist/analyzer/typeEvaluator.js +86 -32
  48. package/dist/analyzer/typeEvaluator.js.map +1 -1
  49. package/dist/analyzer/typeEvaluatorTypes.d.ts +0 -1
  50. package/dist/analyzer/typeEvaluatorTypes.js +65 -1
  51. package/dist/analyzer/typeEvaluatorTypes.js.map +1 -1
  52. package/dist/analyzer/typeGuards.d.ts +2 -0
  53. package/dist/analyzer/typeGuards.js +113 -69
  54. package/dist/analyzer/typeGuards.js.map +1 -1
  55. package/dist/analyzer/typePrinter.js +23 -1
  56. package/dist/analyzer/typePrinter.js.map +1 -1
  57. package/dist/analyzer/typeUtils.js +119 -28
  58. package/dist/analyzer/typeUtils.js.map +1 -1
  59. package/dist/analyzer/typedDicts.js +2 -1
  60. package/dist/analyzer/typedDicts.js.map +1 -1
  61. package/dist/analyzer/types.d.ts +1 -0
  62. package/dist/analyzer/types.js +195 -1
  63. package/dist/analyzer/types.js.map +1 -1
  64. package/dist/backgroundAnalysisBase.d.ts +1 -1
  65. package/dist/commands/commands.js +9 -0
  66. package/dist/commands/commands.js.map +1 -1
  67. package/dist/common/commandLineOptions.js +8 -1
  68. package/dist/common/commandLineOptions.js.map +1 -1
  69. package/dist/common/core.js +7 -1
  70. package/dist/common/core.js.map +1 -1
  71. package/dist/common/diagnostic.js +9 -1
  72. package/dist/common/diagnostic.js.map +1 -1
  73. package/dist/common/host.js +7 -1
  74. package/dist/common/host.js.map +1 -1
  75. package/dist/common/pathUtils.d.ts +1 -0
  76. package/dist/common/pathUtils.js +34 -1
  77. package/dist/common/pathUtils.js.map +1 -1
  78. package/dist/common/stringUtils.d.ts +1 -0
  79. package/dist/common/stringUtils.js +8 -1
  80. package/dist/common/stringUtils.js.map +1 -1
  81. package/dist/languageServerBase.d.ts +10 -3
  82. package/dist/languageServerBase.js +40 -14
  83. package/dist/languageServerBase.js.map +1 -1
  84. package/dist/languageService/analyzerServiceExecutor.js +3 -0
  85. package/dist/languageService/analyzerServiceExecutor.js.map +1 -1
  86. package/dist/languageService/autoImporter.js +2 -1
  87. package/dist/languageService/autoImporter.js.map +1 -1
  88. package/dist/languageService/completionProvider.d.ts +2 -2
  89. package/dist/languageService/completionProvider.js +3 -5
  90. package/dist/languageService/completionProvider.js.map +1 -1
  91. package/dist/parser/parseNodes.d.ts +3 -0
  92. package/dist/parser/parseNodes.js +110 -2
  93. package/dist/parser/parseNodes.js.map +1 -1
  94. package/dist/parser/parser.d.ts +0 -1
  95. package/dist/parser/parser.js +26 -12
  96. package/dist/parser/parser.js.map +1 -1
  97. package/dist/parser/stringTokenUtils.js +8 -1
  98. package/dist/parser/stringTokenUtils.js.map +1 -1
  99. package/dist/parser/tokenizerTypes.js +155 -1
  100. package/dist/parser/tokenizerTypes.js.map +1 -1
  101. package/dist/pyright.js +6 -1
  102. package/dist/pyright.js.map +1 -1
  103. package/dist/tests/chainedSourceFiles.test.js +12 -9
  104. package/dist/tests/chainedSourceFiles.test.js.map +1 -1
  105. package/dist/tests/checker.test.js +4 -0
  106. package/dist/tests/checker.test.js.map +1 -1
  107. package/dist/tests/config.test.js +14 -13
  108. package/dist/tests/config.test.js.map +1 -1
  109. package/dist/tests/debug.test.js +6 -0
  110. package/dist/tests/debug.test.js.map +1 -1
  111. package/dist/tests/fourslash/completions.autoimport.lib.alias.fourslash.d.ts +1 -0
  112. package/dist/tests/fourslash/completions.autoimport.lib.alias.fourslash.js +53 -0
  113. package/dist/tests/fourslash/completions.autoimport.lib.alias.fourslash.js.map +1 -0
  114. package/dist/tests/fourslash/fourslash.d.ts +16 -0
  115. package/dist/tests/fourslash/hover.class.docString.fourslash.d.ts +1 -0
  116. package/dist/tests/fourslash/hover.class.docString.fourslash.js +24 -0
  117. package/dist/tests/fourslash/hover.class.docString.fourslash.js.map +1 -0
  118. package/dist/tests/harness/fourslash/fourSlashParser.js +6 -0
  119. package/dist/tests/harness/fourslash/fourSlashParser.js.map +1 -1
  120. package/dist/tests/harness/fourslash/fourSlashTypes.js +19 -1
  121. package/dist/tests/harness/fourslash/fourSlashTypes.js.map +1 -1
  122. package/dist/tests/harness/fourslash/testLanguageService.js +9 -1
  123. package/dist/tests/harness/fourslash/testLanguageService.js.map +1 -1
  124. package/dist/tests/harness/fourslash/testState.Consts.d.ts +1 -0
  125. package/dist/tests/harness/fourslash/testState.Consts.js +1 -0
  126. package/dist/tests/harness/fourslash/testState.Consts.js.map +1 -1
  127. package/dist/tests/harness/fourslash/testState.d.ts +4 -3
  128. package/dist/tests/harness/fourslash/testState.js +27 -11
  129. package/dist/tests/harness/fourslash/testState.js.map +1 -1
  130. package/dist/tests/harness/vfs/pathValidation.js +25 -1
  131. package/dist/tests/harness/vfs/pathValidation.js.map +1 -1
  132. package/dist/tests/pathUtils.test.js +17 -0
  133. package/dist/tests/pathUtils.test.js.map +1 -1
  134. package/dist/tests/testUtils.js +1 -1
  135. package/dist/tests/testUtils.js.map +1 -1
  136. package/dist/tests/typeEvaluator1.test.js +9 -1
  137. package/dist/tests/typeEvaluator1.test.js.map +1 -1
  138. package/dist/tests/typeEvaluator2.test.js +9 -1
  139. package/dist/tests/typeEvaluator2.test.js.map +1 -1
  140. package/dist/tests/typeEvaluator3.test.js +4 -0
  141. package/dist/tests/typeEvaluator3.test.js.map +1 -1
  142. package/dist/workspaceMap.d.ts +2 -1
  143. package/dist/workspaceMap.js +25 -3
  144. package/dist/workspaceMap.js.map +1 -1
  145. package/package.json +45 -45
  146. package/src/analyzer/aliasDeclarationUtils.ts +0 -169
  147. package/src/analyzer/analysis.ts +0 -92
  148. package/src/analyzer/analyzerFileInfo.ts +0 -56
  149. package/src/analyzer/analyzerNodeInfo.ts +0 -198
  150. package/src/analyzer/backgroundAnalysisProgram.ts +0 -311
  151. package/src/analyzer/binder.ts +0 -4081
  152. package/src/analyzer/checker.ts +0 -5507
  153. package/src/analyzer/circularDependency.ts +0 -52
  154. package/src/analyzer/codeFlowEngine.ts +0 -1548
  155. package/src/analyzer/codeFlowTypes.ts +0 -266
  156. package/src/analyzer/codeFlowUtils.ts +0 -436
  157. package/src/analyzer/commentUtils.ts +0 -174
  158. package/src/analyzer/constraintSolver.ts +0 -926
  159. package/src/analyzer/constructorTransform.ts +0 -317
  160. package/src/analyzer/dataClasses.ts +0 -999
  161. package/src/analyzer/declaration.ts +0 -252
  162. package/src/analyzer/declarationUtils.ts +0 -238
  163. package/src/analyzer/docStringConversion.ts +0 -850
  164. package/src/analyzer/docStringUtils.ts +0 -112
  165. package/src/analyzer/functionTransform.ts +0 -137
  166. package/src/analyzer/importResolver.ts +0 -2308
  167. package/src/analyzer/importResult.ts +0 -98
  168. package/src/analyzer/importStatementUtils.ts +0 -834
  169. package/src/analyzer/namedTuples.ts +0 -422
  170. package/src/analyzer/packageTypeReport.ts +0 -108
  171. package/src/analyzer/packageTypeVerifier.ts +0 -1466
  172. package/src/analyzer/parentDirectoryCache.ts +0 -88
  173. package/src/analyzer/parseTreeCleaner.ts +0 -35
  174. package/src/analyzer/parseTreeUtils.ts +0 -2165
  175. package/src/analyzer/parseTreeWalker.ts +0 -663
  176. package/src/analyzer/patternMatching.ts +0 -1356
  177. package/src/analyzer/program.ts +0 -2778
  178. package/src/analyzer/properties.ts +0 -534
  179. package/src/analyzer/protocols.ts +0 -660
  180. package/src/analyzer/pyTypedUtils.ts +0 -52
  181. package/src/analyzer/pythonPathUtils.ts +0 -201
  182. package/src/analyzer/scope.ts +0 -202
  183. package/src/analyzer/scopeUtils.ts +0 -81
  184. package/src/analyzer/service.ts +0 -1679
  185. package/src/analyzer/sourceFile.ts +0 -1401
  186. package/src/analyzer/sourceMapper.ts +0 -717
  187. package/src/analyzer/staticExpressions.ts +0 -308
  188. package/src/analyzer/symbol.ts +0 -249
  189. package/src/analyzer/symbolNameUtils.ts +0 -50
  190. package/src/analyzer/symbolUtils.ts +0 -49
  191. package/src/analyzer/testWalker.ts +0 -101
  192. package/src/analyzer/tracePrinter.ts +0 -264
  193. package/src/analyzer/typeCache.ts +0 -181
  194. package/src/analyzer/typeDocStringUtils.ts +0 -371
  195. package/src/analyzer/typeEvaluator.ts +0 -23395
  196. package/src/analyzer/typeEvaluatorTypes.ts +0 -452
  197. package/src/analyzer/typeEvaluatorWithTracker.ts +0 -161
  198. package/src/analyzer/typeGuards.ts +0 -1828
  199. package/src/analyzer/typePrinter.ts +0 -807
  200. package/src/analyzer/typeStubWriter.ts +0 -727
  201. package/src/analyzer/typeUtils.ts +0 -3126
  202. package/src/analyzer/typeVarContext.ts +0 -330
  203. package/src/analyzer/typedDicts.ts +0 -950
  204. package/src/analyzer/types.ts +0 -2857
  205. package/src/backgroundAnalysis.ts +0 -49
  206. package/src/backgroundAnalysisBase.ts +0 -606
  207. package/src/backgroundThreadBase.ts +0 -143
  208. package/src/commands/commandController.ts +0 -62
  209. package/src/commands/commandResult.ts +0 -21
  210. package/src/commands/commands.ts +0 -16
  211. package/src/commands/createTypeStub.ts +0 -56
  212. package/src/commands/quickActionCommand.ts +0 -40
  213. package/src/commands/restartServer.ts +0 -20
  214. package/src/common/cancellationUtils.ts +0 -71
  215. package/src/common/chokidarFileWatcherProvider.ts +0 -74
  216. package/src/common/collectionUtils.ts +0 -379
  217. package/src/common/commandLineOptions.ts +0 -132
  218. package/src/common/configOptions.ts +0 -1291
  219. package/src/common/console.ts +0 -201
  220. package/src/common/core.ts +0 -152
  221. package/src/common/crypto.ts +0 -60
  222. package/src/common/debug.ts +0 -144
  223. package/src/common/deferred.ts +0 -78
  224. package/src/common/diagnostic.ts +0 -191
  225. package/src/common/diagnosticRules.ts +0 -80
  226. package/src/common/diagnosticSink.ts +0 -150
  227. package/src/common/editAction.ts +0 -46
  228. package/src/common/extensibility.ts +0 -35
  229. package/src/common/extensions.ts +0 -21
  230. package/src/common/fileBasedCancellationUtils.ts +0 -274
  231. package/src/common/fileSystem.ts +0 -152
  232. package/src/common/fullAccessHost.ts +0 -203
  233. package/src/common/host.ts +0 -49
  234. package/src/common/logTracker.ts +0 -157
  235. package/src/common/lspUtils.ts +0 -18
  236. package/src/common/memUtils.ts +0 -36
  237. package/src/common/pathConsts.ts +0 -16
  238. package/src/common/pathUtils.ts +0 -987
  239. package/src/common/positionUtils.ts +0 -78
  240. package/src/common/progressReporter.ts +0 -53
  241. package/src/common/pythonVersion.ts +0 -74
  242. package/src/common/realFileSystem.ts +0 -433
  243. package/src/common/stringUtils.ts +0 -161
  244. package/src/common/textEditUtils.ts +0 -31
  245. package/src/common/textRange.ts +0 -225
  246. package/src/common/textRangeCollection.ts +0 -122
  247. package/src/common/timing.ts +0 -105
  248. package/src/common/uriParser.ts +0 -26
  249. package/src/common/workspaceEditUtils.ts +0 -100
  250. package/src/languageServerBase.ts +0 -1556
  251. package/src/languageService/analyzerServiceExecutor.ts +0 -144
  252. package/src/languageService/autoImporter.ts +0 -926
  253. package/src/languageService/callHierarchyProvider.ts +0 -476
  254. package/src/languageService/codeActionProvider.ts +0 -85
  255. package/src/languageService/completionProvider.ts +0 -3103
  256. package/src/languageService/definitionProvider.ts +0 -235
  257. package/src/languageService/documentHighlightProvider.ts +0 -61
  258. package/src/languageService/documentSymbolCollector.ts +0 -466
  259. package/src/languageService/documentSymbolProvider.ts +0 -466
  260. package/src/languageService/hoverProvider.ts +0 -499
  261. package/src/languageService/importAdder.ts +0 -437
  262. package/src/languageService/importSorter.ts +0 -196
  263. package/src/languageService/indentationUtils.ts +0 -813
  264. package/src/languageService/quickActions.ts +0 -113
  265. package/src/languageService/referencesProvider.ts +0 -316
  266. package/src/languageService/renameModuleProvider.ts +0 -1400
  267. package/src/languageService/signatureHelpProvider.ts +0 -227
  268. package/src/languageService/tooltipUtils.ts +0 -147
  269. package/src/localization/localize.ts +0 -1272
  270. package/src/localization/package.nls.de.json +0 -3
  271. package/src/localization/package.nls.en-us.json +0 -636
  272. package/src/localization/package.nls.es.json +0 -3
  273. package/src/localization/package.nls.fr.json +0 -3
  274. package/src/localization/package.nls.ja.json +0 -3
  275. package/src/localization/package.nls.ru.json +0 -3
  276. package/src/localization/package.nls.zh-cn.json +0 -3
  277. package/src/localization/package.nls.zh-tw.json +0 -3
  278. package/src/nodeMain.ts +0 -21
  279. package/src/nodeServer.ts +0 -30
  280. package/src/parser/characterStream.ts +0 -145
  281. package/src/parser/characters.ts +0 -285
  282. package/src/parser/parseNodes.ts +0 -2338
  283. package/src/parser/parser.ts +0 -4859
  284. package/src/parser/stringTokenUtils.ts +0 -564
  285. package/src/parser/tokenizer.ts +0 -1379
  286. package/src/parser/tokenizerTypes.ts +0 -420
  287. package/src/parser/unicode.ts +0 -2917
  288. package/src/pyright.ts +0 -824
  289. package/src/pyrightFileSystem.ts +0 -237
  290. package/src/readonlyAugmentedFileSystem.ts +0 -204
  291. package/src/server.ts +0 -298
  292. package/src/tests/chainedSourceFiles.test.ts +0 -183
  293. package/src/tests/checker.test.ts +0 -445
  294. package/src/tests/collectionUtils.test.ts +0 -178
  295. package/src/tests/common.test.ts +0 -117
  296. package/src/tests/config.test.ts +0 -291
  297. package/src/tests/debug.test.ts +0 -120
  298. package/src/tests/deferred.test.ts +0 -54
  299. package/src/tests/diagnosticOverrides.test.ts +0 -104
  300. package/src/tests/docStringConversion.test.ts +0 -823
  301. package/src/tests/docStringUtils.test.ts +0 -57
  302. package/src/tests/documentSymbolCollector.test.ts +0 -735
  303. package/src/tests/filesystem.test.ts +0 -215
  304. package/src/tests/fourSlashParser.test.ts +0 -330
  305. package/src/tests/fourSlashRunner.test.ts +0 -36
  306. package/src/tests/fourslash/completions.autoimport.Lib.Found.Type.fourslash.ts +0 -33
  307. package/src/tests/fourslash/completions.autoimport.Lib.Found.duplication.fourslash.ts +0 -47
  308. package/src/tests/fourslash/completions.autoimport.Lib.NotFound.fourslash.ts +0 -14
  309. package/src/tests/fourslash/completions.autoimport.disabled.fourslash.ts +0 -25
  310. package/src/tests/fourslash/completions.autoimport.duplicates.fourslash.ts +0 -36
  311. package/src/tests/fourslash/completions.autoimport.fourslash.ts +0 -29
  312. package/src/tests/fourslash/completions.autoimport.fromImport.fourslash.ts +0 -130
  313. package/src/tests/fourslash/completions.autoimport.plainText.fourslash.ts +0 -29
  314. package/src/tests/fourslash/completions.autoimport.shadow.fourslash.ts +0 -48
  315. package/src/tests/fourslash/completions.autoimport.submodule.fourslash.ts +0 -31
  316. package/src/tests/fourslash/completions.autoimport.topLevel.fourslash.ts +0 -57
  317. package/src/tests/fourslash/completions.builtinDocstrings.fourslash.ts +0 -117
  318. package/src/tests/fourslash/completions.builtinOverride.fourslash.ts +0 -22
  319. package/src/tests/fourslash/completions.call.stringLiteral.fourslash.ts +0 -55
  320. package/src/tests/fourslash/completions.call.typedDict.fourslash.ts +0 -247
  321. package/src/tests/fourslash/completions.call.typedDict.list.fourslash.ts +0 -163
  322. package/src/tests/fourslash/completions.call.typedDict.states.fourslash.ts +0 -135
  323. package/src/tests/fourslash/completions.classVariable.fourslash.ts +0 -37
  324. package/src/tests/fourslash/completions.comment.fourslash.ts +0 -28
  325. package/src/tests/fourslash/completions.declNames.class.fourslash.ts +0 -35
  326. package/src/tests/fourslash/completions.declNames.exception.fourslash.ts +0 -18
  327. package/src/tests/fourslash/completions.declNames.for.fourslash.ts +0 -30
  328. package/src/tests/fourslash/completions.declNames.importAlias.fourslash.ts +0 -15
  329. package/src/tests/fourslash/completions.declNames.lambda.fourslash.ts +0 -45
  330. package/src/tests/fourslash/completions.declNames.method.fourslash.ts +0 -71
  331. package/src/tests/fourslash/completions.declNames.overload.fourslash.ts +0 -156
  332. package/src/tests/fourslash/completions.declNames.topLevelOverload.fourslash.ts +0 -141
  333. package/src/tests/fourslash/completions.dictionary.keys.complex.fourslash.ts +0 -76
  334. package/src/tests/fourslash/completions.dictionary.keys.expression.fourslash.ts +0 -63
  335. package/src/tests/fourslash/completions.dictionary.keys.literalTypes.fourslash.ts +0 -161
  336. package/src/tests/fourslash/completions.dictionary.keys.simple.fourslash.ts +0 -151
  337. package/src/tests/fourslash/completions.dictionary.keys.stringLiterals.fourslash.ts +0 -116
  338. package/src/tests/fourslash/completions.dictionary.keys.symbols.fourslash.ts +0 -53
  339. package/src/tests/fourslash/completions.enums.members.fourslash.ts +0 -44
  340. package/src/tests/fourslash/completions.excluded.fourslash.ts +0 -12
  341. package/src/tests/fourslash/completions.fourslash.ts +0 -51
  342. package/src/tests/fourslash/completions.fstring.fourslash.ts +0 -33
  343. package/src/tests/fourslash/completions.fstring.stringLiteral.fourslash.ts +0 -96
  344. package/src/tests/fourslash/completions.fuzzyMatching.fourslash.ts +0 -30
  345. package/src/tests/fourslash/completions.importDunderNames.fourslash.ts +0 -31
  346. package/src/tests/fourslash/completions.importSubmodule.fourslash.ts +0 -26
  347. package/src/tests/fourslash/completions.importsDuplicates.fourslash.ts +0 -23
  348. package/src/tests/fourslash/completions.inList.fourslash.ts +0 -33
  349. package/src/tests/fourslash/completions.included.fourslash.ts +0 -12
  350. package/src/tests/fourslash/completions.indexer.keys.getitem.fourslash.ts +0 -57
  351. package/src/tests/fourslash/completions.inherited.function.docFromStub.fourslash.ts +0 -28
  352. package/src/tests/fourslash/completions.inherited.overload.docFromScrWithStub.fourslash.ts +0 -52
  353. package/src/tests/fourslash/completions.inherited.overload.docFromStub.fourslash.ts +0 -53
  354. package/src/tests/fourslash/completions.inherited.property.docFromSrc.fourslash.ts +0 -104
  355. package/src/tests/fourslash/completions.inherited.property.docFromStub.fourslash.ts +0 -108
  356. package/src/tests/fourslash/completions.keywords.pythonVersion.fourslash.ts +0 -72
  357. package/src/tests/fourslash/completions.libCodeAndStub.fourslash.ts +0 -79
  358. package/src/tests/fourslash/completions.libCodeNoStub.fourslash.ts +0 -69
  359. package/src/tests/fourslash/completions.libStub.fourslash.ts +0 -69
  360. package/src/tests/fourslash/completions.literals.fourslash.ts +0 -33
  361. package/src/tests/fourslash/completions.localCode.fourslash.ts +0 -74
  362. package/src/tests/fourslash/completions.moduleContext.UnknownMemberOnInstance.fourslash.ts +0 -17
  363. package/src/tests/fourslash/completions.moduleContext.UnknownStaticFunctionOnClass.fourslash.ts +0 -57
  364. package/src/tests/fourslash/completions.moduleContext.libCodeNoStub.fourslash.ts +0 -30
  365. package/src/tests/fourslash/completions.overloads.fourslash.ts +0 -40
  366. package/src/tests/fourslash/completions.override.default.fourslash.ts +0 -47
  367. package/src/tests/fourslash/completions.override.default.importStub.ts +0 -50
  368. package/src/tests/fourslash/completions.override.default.imported.fourslash.ts +0 -61
  369. package/src/tests/fourslash/completions.override.default.stub.fourslash.ts +0 -47
  370. package/src/tests/fourslash/completions.override.fourslash.ts +0 -47
  371. package/src/tests/fourslash/completions.override.property.fourslash.ts +0 -31
  372. package/src/tests/fourslash/completions.override.property.stub.fourslash.ts +0 -31
  373. package/src/tests/fourslash/completions.override.staticAndClassmethod.fourslash.ts +0 -64
  374. package/src/tests/fourslash/completions.override.stub.fourslash.ts +0 -47
  375. package/src/tests/fourslash/completions.override2.fourslash.ts +0 -71
  376. package/src/tests/fourslash/completions.parameters.fourslash.ts +0 -23
  377. package/src/tests/fourslash/completions.params.fourslash.ts +0 -24
  378. package/src/tests/fourslash/completions.parentFolder.fourslash.ts +0 -17
  379. package/src/tests/fourslash/completions.parentFolders.fourslash.ts +0 -77
  380. package/src/tests/fourslash/completions.plainText.fourslash.ts +0 -34
  381. package/src/tests/fourslash/completions.private.fourslash.ts +0 -64
  382. package/src/tests/fourslash/completions.property.fourslash.ts +0 -28
  383. package/src/tests/fourslash/completions.propertyDocStrings.fourslash.ts +0 -64
  384. package/src/tests/fourslash/completions.self.fourslash.ts +0 -43
  385. package/src/tests/fourslash/completions.stringLiteral.escape.fourslash.ts +0 -71
  386. package/src/tests/fourslash/completions.stringLiteral.fourslash.ts +0 -79
  387. package/src/tests/fourslash/completions.typeAlias.fourslash.ts +0 -29
  388. package/src/tests/fourslash/completions.typeshed.fourslash.ts +0 -9
  389. package/src/tests/fourslash/completions.vardecls.fourslash.ts +0 -40
  390. package/src/tests/fourslash/completions.variableDocStrings.fourslash.ts +0 -69
  391. package/src/tests/fourslash/completions.wildcardimports.fourslash.ts +0 -116
  392. package/src/tests/fourslash/completions.with.fourslash.ts +0 -26
  393. package/src/tests/fourslash/diagnostics.missingModuleSource.fourslash.ts +0 -69
  394. package/src/tests/fourslash/findDefinitions.builtinClass.fourslash.ts +0 -29
  395. package/src/tests/fourslash/findDefinitions.classes.fourslash.ts +0 -101
  396. package/src/tests/fourslash/findDefinitions.definitionFilter.preferSource.fourslash.ts +0 -29
  397. package/src/tests/fourslash/findDefinitions.definitionFilter.preferSource.onlyStubs.ts +0 -24
  398. package/src/tests/fourslash/findDefinitions.definitionFilter.preferStub.fourslash.ts +0 -29
  399. package/src/tests/fourslash/findDefinitions.definitionFilter.preferStub.onlySource.fourslash.ts +0 -25
  400. package/src/tests/fourslash/findDefinitions.fields.fourslash.ts +0 -131
  401. package/src/tests/fourslash/findDefinitions.functions.fourslash.ts +0 -87
  402. package/src/tests/fourslash/findDefinitions.methods.fourslash.ts +0 -162
  403. package/src/tests/fourslash/findDefinitions.modules.fourslash.ts +0 -50
  404. package/src/tests/fourslash/findDefinitions.namespaceImport.fourslash.ts +0 -40
  405. package/src/tests/fourslash/findDefinitions.overloads.fourslash.ts +0 -223
  406. package/src/tests/fourslash/findDefinitions.parameters.fourslash.ts +0 -162
  407. package/src/tests/fourslash/findDefinitions.sourceAndStub.function.fourslash.ts +0 -26
  408. package/src/tests/fourslash/findDefinitions.sourceAndStub.innerClass.fourslash.ts +0 -32
  409. package/src/tests/fourslash/findDefinitions.sourceAndStub.innerClassMethod.fourslash.ts +0 -33
  410. package/src/tests/fourslash/findDefinitions.sourceAndStub.outerClass.fourslash.ts +0 -28
  411. package/src/tests/fourslash/findDefinitions.sourceAndStub.outerClassMethod.fourslash.ts +0 -29
  412. package/src/tests/fourslash/findDefinitions.sourceAndStub.outerClassPropertyReadOnly.fourslash.ts +0 -31
  413. package/src/tests/fourslash/findDefinitions.sourceAndStub.outerClassPropertyReadWrite.fourslash.ts +0 -36
  414. package/src/tests/fourslash/findDefinitions.sourceOnly.class.fourslash.ts +0 -29
  415. package/src/tests/fourslash/findDefinitions.sourceOnly.function1.fourslash.ts +0 -28
  416. package/src/tests/fourslash/findDefinitions.sourceOnly.function2.fourslash.ts +0 -28
  417. package/src/tests/fourslash/findDefinitions.sourceOnly.relativeImport1.fourslash.ts +0 -22
  418. package/src/tests/fourslash/findDefinitions.sourceOnly.relativeImport2.fourslash.ts +0 -22
  419. package/src/tests/fourslash/findDefinitions.stubOnly.fourslash.ts +0 -61
  420. package/src/tests/fourslash/findDefinitions.stubPackages.fourslash.ts +0 -71
  421. package/src/tests/fourslash/findDefinitions.typedDict.keys.fourslash.ts +0 -99
  422. package/src/tests/fourslash/findDefinitions.variables.fourslash.ts +0 -88
  423. package/src/tests/fourslash/findDefinitions.wildcardimports.fourslash.ts +0 -117
  424. package/src/tests/fourslash/findTypeDefinitions.builtinClass.fourslash.ts +0 -26
  425. package/src/tests/fourslash/findTypeDefinitions.classes.fourslash.ts +0 -72
  426. package/src/tests/fourslash/findTypeDefinitions.unions.fourslash.ts +0 -26
  427. package/src/tests/fourslash/findallreferences.classPropertyReadWrite.ts +0 -39
  428. package/src/tests/fourslash/findallreferences.fourslash.ts +0 -34
  429. package/src/tests/fourslash/findallreferences.importalias.fourslash.ts +0 -34
  430. package/src/tests/fourslash/findallreferences.invokedFromLibrary.fourslash.ts +0 -52
  431. package/src/tests/fourslash/findallreferences.module.nested.fourslash.ts +0 -67
  432. package/src/tests/fourslash/findallreferences.modules.duplicated.fourslash.ts +0 -59
  433. package/src/tests/fourslash/findallreferences.modules.fourslash.ts +0 -46
  434. package/src/tests/fourslash/findallreferences.modules.shadow.fourslash.ts +0 -95
  435. package/src/tests/fourslash/findallreferences.openFiles.fourslash.ts +0 -37
  436. package/src/tests/fourslash/findallreferences.parameter.fourslash.ts +0 -24
  437. package/src/tests/fourslash/findallreferences.sourceAndStub.class.fourslash.ts +0 -33
  438. package/src/tests/fourslash/findallreferences.sourceAndStub.classMethod.fourslash.ts +0 -37
  439. package/src/tests/fourslash/findallreferences.sourceAndStub.classPropertyReadOnly.fourslash.ts +0 -40
  440. package/src/tests/fourslash/findallreferences.sourceAndStub.classPropertyReadWrite.fourslash.skip.ts +0 -48
  441. package/src/tests/fourslash/findallreferences.sourceAndStub.function.fourslash.ts +0 -35
  442. package/src/tests/fourslash/findallreferences.variable.fourslash.ts +0 -24
  443. package/src/tests/fourslash/fourslash.ts +0 -411
  444. package/src/tests/fourslash/highlightreferences.attributes.fourslash.ts +0 -31
  445. package/src/tests/fourslash/hover.builtinDocstrings.fourslash.ts +0 -64
  446. package/src/tests/fourslash/hover.classNoInit.fourslash.ts +0 -14
  447. package/src/tests/fourslash/hover.docFromScr.stringFormat.fourslash.ts +0 -52
  448. package/src/tests/fourslash/hover.docFromSrc.fourslash.ts +0 -83
  449. package/src/tests/fourslash/hover.docFromSrc.pkg-vs-module1.fourslash.ts +0 -26
  450. package/src/tests/fourslash/hover.docFromSrc.pkg-vs-module2.fourslash.ts +0 -26
  451. package/src/tests/fourslash/hover.docFromSrc.relativeImport1.fourslash.ts +0 -23
  452. package/src/tests/fourslash/hover.docFromSrc.relativeImport2.fourslash.ts +0 -22
  453. package/src/tests/fourslash/hover.docFromSrc.relativeImport3.fourslash.ts +0 -46
  454. package/src/tests/fourslash/hover.docFromSrc.stubs-package.fourslash.ts +0 -29
  455. package/src/tests/fourslash/hover.docFromSrc.typeshed.fourslash.ts +0 -20
  456. package/src/tests/fourslash/hover.docstring.links.fourslash.ts +0 -12
  457. package/src/tests/fourslash/hover.docstring.overloads.fourslash.ts +0 -41
  458. package/src/tests/fourslash/hover.docstring.split.fourslash.ts +0 -24
  459. package/src/tests/fourslash/hover.fourslash.ts +0 -20
  460. package/src/tests/fourslash/hover.import.django.view.fourslash.ts +0 -27
  461. package/src/tests/fourslash/hover.import.fourslash.ts +0 -11
  462. package/src/tests/fourslash/hover.inherited.docFromSrc.fourslash.ts +0 -63
  463. package/src/tests/fourslash/hover.inherited.docFromSrcWithStub.fourslash.ts +0 -54
  464. package/src/tests/fourslash/hover.inherited.docFromStub.fourslash.ts +0 -42
  465. package/src/tests/fourslash/hover.inherited.overload.docFromSrcWithStub.fourslash.ts +0 -46
  466. package/src/tests/fourslash/hover.inherited.overload.docFromStub.fourslash.ts +0 -47
  467. package/src/tests/fourslash/hover.inherited.property.docFromSrcWithStub.fourslash.ts +0 -87
  468. package/src/tests/fourslash/hover.inherited.property.docFromStub.fourslash.ts +0 -91
  469. package/src/tests/fourslash/hover.init.fourslash.ts +0 -39
  470. package/src/tests/fourslash/hover.libCodeAndStub.fourslash.ts +0 -52
  471. package/src/tests/fourslash/hover.libCodeNoStub.fourslash.ts +0 -41
  472. package/src/tests/fourslash/hover.libStub.fourslash.ts +0 -41
  473. package/src/tests/fourslash/hover.optionalAliasParameter.fourslash.ts +0 -14
  474. package/src/tests/fourslash/hover.plainText.fourslash.ts +0 -21
  475. package/src/tests/fourslash/hover.typedDict.key.fourslash.ts +0 -51
  476. package/src/tests/fourslash/hover.variable.docString.fourslash.ts +0 -41
  477. package/src/tests/fourslash/hover.wildcardimports.fourslash.ts +0 -80
  478. package/src/tests/fourslash/import.publicSymbols.fourslash.ts +0 -65
  479. package/src/tests/fourslash/import.pytyped.dunderAll.fourslash.ts +0 -77
  480. package/src/tests/fourslash/import.pytyped.privateSymbols.fourslash.ts +0 -65
  481. package/src/tests/fourslash/import.pytyped.typeCheckingBasic.fourslash.ts +0 -38
  482. package/src/tests/fourslash/import.pytyped.typeCheckingOff.fourslash.ts +0 -38
  483. package/src/tests/fourslash/import.wildcard.fourslash.ts +0 -27
  484. package/src/tests/fourslash/importnotresolved.fourslash.ts +0 -13
  485. package/src/tests/fourslash/missingModuleSource.disablingInStrictMode.fourslash.ts +0 -20
  486. package/src/tests/fourslash/missingModuleSource.fourslash.ts +0 -14
  487. package/src/tests/fourslash/missingTypeStub.codeAction.fourslash.ts +0 -33
  488. package/src/tests/fourslash/missingTypeStub.command.multipart.fourslash.ts +0 -48
  489. package/src/tests/fourslash/missingTypeStub.command.singlefile.fourslash.ts +0 -38
  490. package/src/tests/fourslash/missingTypeStub.command.singlepart.fourslash.ts +0 -38
  491. package/src/tests/fourslash/missingTypeStub.fourslash.ts +0 -20
  492. package/src/tests/fourslash/missingTypeStub.invokeCodeAction.fourslash.ts +0 -36
  493. package/src/tests/fourslash/noerrors.fourslash.ts +0 -9
  494. package/src/tests/fourslash/orderImports1.command.fourslash.ts +0 -20
  495. package/src/tests/fourslash/orderImports2.command.fourslash.ts +0 -24
  496. package/src/tests/fourslash/rename.externallyHidden.fourslash.ts +0 -24
  497. package/src/tests/fourslash/rename.externallyHidden.params.fourslash.ts +0 -24
  498. package/src/tests/fourslash/rename.fourslash.ts +0 -29
  499. package/src/tests/fourslash/rename.library.fourslash.ts +0 -29
  500. package/src/tests/fourslash/rename.library.sourceAndStub.fourslash.ts +0 -33
  501. package/src/tests/fourslash/rename.multipleDecl.fourslash.ts +0 -21
  502. package/src/tests/fourslash/rename.sourceAndStub.fourslash.ts +0 -37
  503. package/src/tests/fourslash/rename.string.excluded.fourslash.ts +0 -43
  504. package/src/tests/fourslash/rename.string.fourslash.ts +0 -26
  505. package/src/tests/fourslash/signature.builtinDocstrings.fourslash.ts +0 -63
  506. package/src/tests/fourslash/signature.complicated.fourslash.ts +0 -100
  507. package/src/tests/fourslash/signature.cornercases.fourslash.ts +0 -23
  508. package/src/tests/fourslash/signature.docstrings.fourslash.ts +0 -43
  509. package/src/tests/fourslash/signature.docstrings.overloaded.fourslash.ts +0 -50
  510. package/src/tests/fourslash/signature.docstrings.wildcardimports.fourslash.ts +0 -122
  511. package/src/tests/fourslash/signature.overload.fourslash.ts +0 -64
  512. package/src/tests/fourslash/signature.simple.fourslash.ts +0 -104
  513. package/src/tests/harness/fourslash/fourSlashParser.ts +0 -441
  514. package/src/tests/harness/fourslash/fourSlashTypes.ts +0 -134
  515. package/src/tests/harness/fourslash/runner.ts +0 -99
  516. package/src/tests/harness/fourslash/testLanguageService.ts +0 -142
  517. package/src/tests/harness/fourslash/testState.Consts.ts +0 -29
  518. package/src/tests/harness/fourslash/testState.ts +0 -1993
  519. package/src/tests/harness/testAccessHost.ts +0 -23
  520. package/src/tests/harness/testHost.ts +0 -177
  521. package/src/tests/harness/utils.ts +0 -355
  522. package/src/tests/harness/vfs/factory.ts +0 -199
  523. package/src/tests/harness/vfs/filesystem.ts +0 -1893
  524. package/src/tests/harness/vfs/pathValidation.ts +0 -154
  525. package/src/tests/importAdder.test.ts +0 -1361
  526. package/src/tests/importResolver.test.ts +0 -534
  527. package/src/tests/importStatementUtils.test.ts +0 -526
  528. package/src/tests/indentationUtils.ptvs.test.ts +0 -388
  529. package/src/tests/indentationUtils.reindent.test.ts +0 -403
  530. package/src/tests/indentationUtils.test.ts +0 -455
  531. package/src/tests/ipythonMode.test.ts +0 -365
  532. package/src/tests/localizer.test.ts +0 -47
  533. package/src/tests/parseTreeUtils.test.ts +0 -281
  534. package/src/tests/parser.test.ts +0 -99
  535. package/src/tests/pathUtils.test.ts +0 -321
  536. package/src/tests/pyrightFileSystem.test.ts +0 -183
  537. package/src/tests/renameModule.folder.test.ts +0 -261
  538. package/src/tests/renameModule.fromImports.test.ts +0 -952
  539. package/src/tests/renameModule.imports.test.ts +0 -450
  540. package/src/tests/renameModule.misc.test.ts +0 -765
  541. package/src/tests/renameModule.relativePath.test.ts +0 -277
  542. package/src/tests/renameModuleTestUtils.ts +0 -210
  543. package/src/tests/samples/abstractClass1.py +0 -51
  544. package/src/tests/samples/abstractClass2.py +0 -25
  545. package/src/tests/samples/abstractClass3.py +0 -30
  546. package/src/tests/samples/abstractClass4.py +0 -30
  547. package/src/tests/samples/abstractClass5.py +0 -42
  548. package/src/tests/samples/abstractClass6.py +0 -25
  549. package/src/tests/samples/abstractClass7.py +0 -22
  550. package/src/tests/samples/abstractClass8.py +0 -27
  551. package/src/tests/samples/annotated1.py +0 -72
  552. package/src/tests/samples/annotatedVar1.py +0 -22
  553. package/src/tests/samples/annotatedVar2.py +0 -28
  554. package/src/tests/samples/annotatedVar3.py +0 -54
  555. package/src/tests/samples/annotatedVar4.py +0 -24
  556. package/src/tests/samples/annotatedVar5.py +0 -37
  557. package/src/tests/samples/annotatedVar6.py +0 -22
  558. package/src/tests/samples/annotatedVar7.py +0 -13
  559. package/src/tests/samples/annotatedVar8.py +0 -29
  560. package/src/tests/samples/annotations1.py +0 -98
  561. package/src/tests/samples/annotations2.py +0 -33
  562. package/src/tests/samples/annotations3.py +0 -43
  563. package/src/tests/samples/annotations4.py +0 -54
  564. package/src/tests/samples/annotations5.py +0 -9
  565. package/src/tests/samples/annotations6.py +0 -29
  566. package/src/tests/samples/assert1.py +0 -22
  567. package/src/tests/samples/assertType1.py +0 -46
  568. package/src/tests/samples/assignment1.py +0 -58
  569. package/src/tests/samples/assignment10.py +0 -14
  570. package/src/tests/samples/assignment2.py +0 -40
  571. package/src/tests/samples/assignment3.py +0 -46
  572. package/src/tests/samples/assignment4.py +0 -20
  573. package/src/tests/samples/assignment5.py +0 -16
  574. package/src/tests/samples/assignment6.py +0 -25
  575. package/src/tests/samples/assignment7.py +0 -13
  576. package/src/tests/samples/assignment8.py +0 -40
  577. package/src/tests/samples/assignment9.py +0 -25
  578. package/src/tests/samples/assignmentExpr1.py +0 -23
  579. package/src/tests/samples/assignmentExpr2.py +0 -49
  580. package/src/tests/samples/assignmentExpr3.py +0 -27
  581. package/src/tests/samples/assignmentExpr4.py +0 -49
  582. package/src/tests/samples/assignmentExpr5.py +0 -15
  583. package/src/tests/samples/assignmentExpr6.py +0 -10
  584. package/src/tests/samples/assignmentExpr7.py +0 -13
  585. package/src/tests/samples/assignmentExpr8.py +0 -11
  586. package/src/tests/samples/assignmentExpr9.py +0 -28
  587. package/src/tests/samples/async1.py +0 -49
  588. package/src/tests/samples/augmentedAssignment1.py +0 -62
  589. package/src/tests/samples/augmentedAssignment2.py +0 -23
  590. package/src/tests/samples/augmentedAssignment3.py +0 -8
  591. package/src/tests/samples/await1.py +0 -23
  592. package/src/tests/samples/await2.py +0 -25
  593. package/src/tests/samples/badToken1.py +0 -6
  594. package/src/tests/samples/builtins1.py +0 -2
  595. package/src/tests/samples/call1.py +0 -93
  596. package/src/tests/samples/call2.py +0 -118
  597. package/src/tests/samples/call3.py +0 -168
  598. package/src/tests/samples/call4.py +0 -13
  599. package/src/tests/samples/call5.py +0 -95
  600. package/src/tests/samples/call6.py +0 -35
  601. package/src/tests/samples/call7.py +0 -57
  602. package/src/tests/samples/callSite1.py +0 -6
  603. package/src/tests/samples/callSite2.py +0 -12
  604. package/src/tests/samples/callable1.py +0 -53
  605. package/src/tests/samples/callable2.py +0 -58
  606. package/src/tests/samples/callable3.py +0 -28
  607. package/src/tests/samples/callable4.py +0 -32
  608. package/src/tests/samples/callable5.py +0 -40
  609. package/src/tests/samples/callable6.py +0 -83
  610. package/src/tests/samples/callbackProtocol1.py +0 -119
  611. package/src/tests/samples/callbackProtocol2.py +0 -29
  612. package/src/tests/samples/callbackProtocol3.py +0 -23
  613. package/src/tests/samples/callbackProtocol4.py +0 -73
  614. package/src/tests/samples/callbackProtocol5.py +0 -66
  615. package/src/tests/samples/callbackProtocol6.py +0 -66
  616. package/src/tests/samples/callbackProtocol7.py +0 -16
  617. package/src/tests/samples/callbackProtocol8.py +0 -16
  618. package/src/tests/samples/capturedVariable1.py +0 -106
  619. package/src/tests/samples/circular1.py +0 -16
  620. package/src/tests/samples/circular2.py +0 -38
  621. package/src/tests/samples/circularBaseClass.py +0 -17
  622. package/src/tests/samples/classGetItem1.py +0 -30
  623. package/src/tests/samples/classVar1.py +0 -41
  624. package/src/tests/samples/classVar2.py +0 -29
  625. package/src/tests/samples/classVar3.py +0 -46
  626. package/src/tests/samples/classVar4.py +0 -36
  627. package/src/tests/samples/classes1.py +0 -50
  628. package/src/tests/samples/classes3.py +0 -48
  629. package/src/tests/samples/classes4.py +0 -15
  630. package/src/tests/samples/classes5.py +0 -260
  631. package/src/tests/samples/classes6.py +0 -16
  632. package/src/tests/samples/classes7.py +0 -18
  633. package/src/tests/samples/classes8.py +0 -47
  634. package/src/tests/samples/codeFlow1.py +0 -65
  635. package/src/tests/samples/codeFlow2.py +0 -26
  636. package/src/tests/samples/codeFlow3.py +0 -8
  637. package/src/tests/samples/codeFlow4.py +0 -133
  638. package/src/tests/samples/codeFlow5.py +0 -10
  639. package/src/tests/samples/codeFlow6.py +0 -35
  640. package/src/tests/samples/codeFlow7.py +0 -35
  641. package/src/tests/samples/comparison1.py +0 -77
  642. package/src/tests/samples/comparison2.py +0 -37
  643. package/src/tests/samples/complex1.py +0 -17
  644. package/src/tests/samples/constant1.py +0 -40
  645. package/src/tests/samples/constants1.py +0 -64
  646. package/src/tests/samples/constructor1.py +0 -30
  647. package/src/tests/samples/constructor10.py +0 -19
  648. package/src/tests/samples/constructor11.py +0 -32
  649. package/src/tests/samples/constructor12.py +0 -20
  650. package/src/tests/samples/constructor13.py +0 -15
  651. package/src/tests/samples/constructor2.py +0 -180
  652. package/src/tests/samples/constructor3.py +0 -18
  653. package/src/tests/samples/constructor4.py +0 -25
  654. package/src/tests/samples/constructor5.py +0 -25
  655. package/src/tests/samples/constructor6.py +0 -70
  656. package/src/tests/samples/constructor7.py +0 -11
  657. package/src/tests/samples/constructor8.py +0 -99
  658. package/src/tests/samples/constructor9.py +0 -19
  659. package/src/tests/samples/coroutines1.py +0 -60
  660. package/src/tests/samples/coroutines2.py +0 -20
  661. package/src/tests/samples/coroutines3.py +0 -37
  662. package/src/tests/samples/dataclass1.py +0 -44
  663. package/src/tests/samples/dataclass10.py +0 -45
  664. package/src/tests/samples/dataclass11.py +0 -53
  665. package/src/tests/samples/dataclass12.py +0 -32
  666. package/src/tests/samples/dataclass13.py +0 -42
  667. package/src/tests/samples/dataclass14.py +0 -38
  668. package/src/tests/samples/dataclass15.py +0 -58
  669. package/src/tests/samples/dataclass16.py +0 -21
  670. package/src/tests/samples/dataclass17.py +0 -46
  671. package/src/tests/samples/dataclass18.py +0 -57
  672. package/src/tests/samples/dataclass19.py +0 -44
  673. package/src/tests/samples/dataclass2.py +0 -30
  674. package/src/tests/samples/dataclass20.py +0 -71
  675. package/src/tests/samples/dataclass21.py +0 -13
  676. package/src/tests/samples/dataclass3.py +0 -18
  677. package/src/tests/samples/dataclass4.py +0 -64
  678. package/src/tests/samples/dataclass5.py +0 -81
  679. package/src/tests/samples/dataclass6.py +0 -29
  680. package/src/tests/samples/dataclass7.py +0 -93
  681. package/src/tests/samples/dataclass8.py +0 -22
  682. package/src/tests/samples/dataclass9.py +0 -24
  683. package/src/tests/samples/dataclassPostInit1.py +0 -61
  684. package/src/tests/samples/dataclassTransform1.py +0 -71
  685. package/src/tests/samples/dataclassTransform2.py +0 -78
  686. package/src/tests/samples/dataclassTransform3.py +0 -83
  687. package/src/tests/samples/dataclassTransform4.py +0 -87
  688. package/src/tests/samples/decorator1.py +0 -20
  689. package/src/tests/samples/decorator2.py +0 -31
  690. package/src/tests/samples/decorator3.py +0 -27
  691. package/src/tests/samples/decorator4.py +0 -37
  692. package/src/tests/samples/decorator5.py +0 -29
  693. package/src/tests/samples/decorator6.py +0 -34
  694. package/src/tests/samples/defaultInitializer1.py +0 -26
  695. package/src/tests/samples/deprecated1.py +0 -37
  696. package/src/tests/samples/descriptor1.py +0 -134
  697. package/src/tests/samples/descriptor2.py +0 -29
  698. package/src/tests/samples/dictionary1.py +0 -42
  699. package/src/tests/samples/dictionary2.py +0 -14
  700. package/src/tests/samples/dictionary3.py +0 -30
  701. package/src/tests/samples/dictionary4.py +0 -106
  702. package/src/tests/samples/dunderAll1.py +0 -32
  703. package/src/tests/samples/dunderAll2.py +0 -16
  704. package/src/tests/samples/dunderAll3.pyi +0 -16
  705. package/src/tests/samples/duplicateDeclaration1.py +0 -115
  706. package/src/tests/samples/duplicateDeclaration2.py +0 -45
  707. package/src/tests/samples/duplicateImports1.py +0 -13
  708. package/src/tests/samples/ellipsis1.pyi +0 -48
  709. package/src/tests/samples/emptyContainers1.py +0 -89
  710. package/src/tests/samples/enums1.py +0 -52
  711. package/src/tests/samples/enums2.py +0 -15
  712. package/src/tests/samples/enums3.py +0 -24
  713. package/src/tests/samples/enums4.py +0 -23
  714. package/src/tests/samples/enums5.py +0 -16
  715. package/src/tests/samples/enums6.py +0 -33
  716. package/src/tests/samples/enums7.py +0 -54
  717. package/src/tests/samples/enums8.py +0 -14
  718. package/src/tests/samples/expressions1.py +0 -54
  719. package/src/tests/samples/expressions2.py +0 -29
  720. package/src/tests/samples/expressions3.py +0 -26
  721. package/src/tests/samples/expressions4.py +0 -23
  722. package/src/tests/samples/expressions5.py +0 -70
  723. package/src/tests/samples/expressions6.py +0 -14
  724. package/src/tests/samples/expressions7.py +0 -40
  725. package/src/tests/samples/expressions8.py +0 -26
  726. package/src/tests/samples/expressions9.py +0 -14
  727. package/src/tests/samples/final1.py +0 -14
  728. package/src/tests/samples/final2.py +0 -86
  729. package/src/tests/samples/final3.py +0 -179
  730. package/src/tests/samples/final4.pyi +0 -21
  731. package/src/tests/samples/final5.py +0 -18
  732. package/src/tests/samples/forLoop1.py +0 -88
  733. package/src/tests/samples/forLoop2.py +0 -48
  734. package/src/tests/samples/fstring1.py +0 -66
  735. package/src/tests/samples/fstring2.py +0 -12
  736. package/src/tests/samples/fstring3.py +0 -35
  737. package/src/tests/samples/fstring4.py +0 -17
  738. package/src/tests/samples/fstring5.py +0 -17
  739. package/src/tests/samples/fstring6.py +0 -14
  740. package/src/tests/samples/function1.py +0 -12
  741. package/src/tests/samples/function10.py +0 -20
  742. package/src/tests/samples/function11.py +0 -36
  743. package/src/tests/samples/function2.py +0 -7
  744. package/src/tests/samples/function3.py +0 -82
  745. package/src/tests/samples/function4.py +0 -13
  746. package/src/tests/samples/function6.py +0 -24
  747. package/src/tests/samples/function7.py +0 -13
  748. package/src/tests/samples/function8.py +0 -38
  749. package/src/tests/samples/function9.py +0 -75
  750. package/src/tests/samples/functionAnnotation1.py +0 -61
  751. package/src/tests/samples/functionAnnotation2.py +0 -26
  752. package/src/tests/samples/functionAnnotation3.py +0 -37
  753. package/src/tests/samples/functionAnnotation4.py +0 -22
  754. package/src/tests/samples/functionMember1.py +0 -18
  755. package/src/tests/samples/functionMember2.py +0 -45
  756. package/src/tests/samples/generators1.py +0 -122
  757. package/src/tests/samples/generators10.py +0 -18
  758. package/src/tests/samples/generators11.py +0 -27
  759. package/src/tests/samples/generators12.py +0 -25
  760. package/src/tests/samples/generators13.py +0 -65
  761. package/src/tests/samples/generators14.py +0 -19
  762. package/src/tests/samples/generators15.py +0 -26
  763. package/src/tests/samples/generators2.py +0 -31
  764. package/src/tests/samples/generators3.py +0 -42
  765. package/src/tests/samples/generators4.py +0 -33
  766. package/src/tests/samples/generators5.py +0 -24
  767. package/src/tests/samples/generators6.py +0 -14
  768. package/src/tests/samples/generators7.py +0 -18
  769. package/src/tests/samples/generators8.py +0 -12
  770. package/src/tests/samples/generators9.py +0 -19
  771. package/src/tests/samples/generic1.py +0 -41
  772. package/src/tests/samples/genericTypes1.py +0 -12
  773. package/src/tests/samples/genericTypes10.py +0 -38
  774. package/src/tests/samples/genericTypes11.py +0 -26
  775. package/src/tests/samples/genericTypes12.py +0 -14
  776. package/src/tests/samples/genericTypes13.py +0 -27
  777. package/src/tests/samples/genericTypes14.py +0 -22
  778. package/src/tests/samples/genericTypes15.py +0 -13
  779. package/src/tests/samples/genericTypes16.py +0 -15
  780. package/src/tests/samples/genericTypes17.py +0 -24
  781. package/src/tests/samples/genericTypes18.py +0 -135
  782. package/src/tests/samples/genericTypes19.py +0 -32
  783. package/src/tests/samples/genericTypes2.py +0 -40
  784. package/src/tests/samples/genericTypes20.py +0 -44
  785. package/src/tests/samples/genericTypes21.py +0 -29
  786. package/src/tests/samples/genericTypes22.py +0 -23
  787. package/src/tests/samples/genericTypes23.py +0 -27
  788. package/src/tests/samples/genericTypes24.py +0 -32
  789. package/src/tests/samples/genericTypes25.py +0 -37
  790. package/src/tests/samples/genericTypes26.py +0 -31
  791. package/src/tests/samples/genericTypes27.py +0 -14
  792. package/src/tests/samples/genericTypes28.py +0 -51
  793. package/src/tests/samples/genericTypes29.py +0 -24
  794. package/src/tests/samples/genericTypes3.py +0 -13
  795. package/src/tests/samples/genericTypes30.py +0 -32
  796. package/src/tests/samples/genericTypes31.py +0 -30
  797. package/src/tests/samples/genericTypes32.py +0 -25
  798. package/src/tests/samples/genericTypes33.py +0 -46
  799. package/src/tests/samples/genericTypes34.py +0 -54
  800. package/src/tests/samples/genericTypes35.py +0 -45
  801. package/src/tests/samples/genericTypes36.py +0 -35
  802. package/src/tests/samples/genericTypes37.py +0 -26
  803. package/src/tests/samples/genericTypes38.py +0 -15
  804. package/src/tests/samples/genericTypes39.py +0 -82
  805. package/src/tests/samples/genericTypes4.py +0 -37
  806. package/src/tests/samples/genericTypes40.py +0 -38
  807. package/src/tests/samples/genericTypes41.py +0 -16
  808. package/src/tests/samples/genericTypes42.py +0 -32
  809. package/src/tests/samples/genericTypes43.py +0 -24
  810. package/src/tests/samples/genericTypes44.py +0 -33
  811. package/src/tests/samples/genericTypes45.py +0 -43
  812. package/src/tests/samples/genericTypes46.py +0 -66
  813. package/src/tests/samples/genericTypes47.py +0 -39
  814. package/src/tests/samples/genericTypes48.py +0 -18
  815. package/src/tests/samples/genericTypes49.py +0 -41
  816. package/src/tests/samples/genericTypes5.py +0 -42
  817. package/src/tests/samples/genericTypes50.py +0 -62
  818. package/src/tests/samples/genericTypes51.py +0 -55
  819. package/src/tests/samples/genericTypes52.py +0 -34
  820. package/src/tests/samples/genericTypes53.py +0 -42
  821. package/src/tests/samples/genericTypes54.py +0 -31
  822. package/src/tests/samples/genericTypes55.py +0 -61
  823. package/src/tests/samples/genericTypes56.py +0 -19
  824. package/src/tests/samples/genericTypes57.py +0 -30
  825. package/src/tests/samples/genericTypes58.py +0 -52
  826. package/src/tests/samples/genericTypes59.py +0 -71
  827. package/src/tests/samples/genericTypes6.py +0 -49
  828. package/src/tests/samples/genericTypes60.py +0 -27
  829. package/src/tests/samples/genericTypes61.py +0 -34
  830. package/src/tests/samples/genericTypes62.py +0 -26
  831. package/src/tests/samples/genericTypes63.py +0 -32
  832. package/src/tests/samples/genericTypes64.py +0 -16
  833. package/src/tests/samples/genericTypes65.py +0 -15
  834. package/src/tests/samples/genericTypes66.py +0 -30
  835. package/src/tests/samples/genericTypes67.py +0 -57
  836. package/src/tests/samples/genericTypes68.py +0 -14
  837. package/src/tests/samples/genericTypes69.py +0 -45
  838. package/src/tests/samples/genericTypes7.py +0 -24
  839. package/src/tests/samples/genericTypes70.py +0 -31
  840. package/src/tests/samples/genericTypes71.py +0 -72
  841. package/src/tests/samples/genericTypes72.py +0 -24
  842. package/src/tests/samples/genericTypes73.py +0 -14
  843. package/src/tests/samples/genericTypes74.py +0 -23
  844. package/src/tests/samples/genericTypes75.py +0 -45
  845. package/src/tests/samples/genericTypes76.py +0 -107
  846. package/src/tests/samples/genericTypes77.py +0 -26
  847. package/src/tests/samples/genericTypes78.py +0 -23
  848. package/src/tests/samples/genericTypes79.py +0 -37
  849. package/src/tests/samples/genericTypes8.py +0 -26
  850. package/src/tests/samples/genericTypes80.py +0 -10
  851. package/src/tests/samples/genericTypes81.py +0 -32
  852. package/src/tests/samples/genericTypes82.py +0 -19
  853. package/src/tests/samples/genericTypes83.py +0 -28
  854. package/src/tests/samples/genericTypes84.py +0 -11
  855. package/src/tests/samples/genericTypes85.py +0 -20
  856. package/src/tests/samples/genericTypes86.py +0 -15
  857. package/src/tests/samples/genericTypes87.py +0 -21
  858. package/src/tests/samples/genericTypes88.py +0 -25
  859. package/src/tests/samples/genericTypes89.py +0 -17
  860. package/src/tests/samples/genericTypes9.py +0 -109
  861. package/src/tests/samples/genericTypes90.py +0 -12
  862. package/src/tests/samples/genericTypes91.py +0 -20
  863. package/src/tests/samples/import1.py +0 -7
  864. package/src/tests/samples/import10.py +0 -11
  865. package/src/tests/samples/import11.py +0 -11
  866. package/src/tests/samples/import12.py +0 -5
  867. package/src/tests/samples/import13.py +0 -6
  868. package/src/tests/samples/import14.py +0 -10
  869. package/src/tests/samples/import2.py +0 -27
  870. package/src/tests/samples/import3.py +0 -8
  871. package/src/tests/samples/import4.py +0 -15
  872. package/src/tests/samples/import5.py +0 -6
  873. package/src/tests/samples/import6.py +0 -17
  874. package/src/tests/samples/import7.py +0 -14
  875. package/src/tests/samples/import8.py +0 -7
  876. package/src/tests/samples/import9.py +0 -7
  877. package/src/tests/samples/inconsistentConstructor1.py +0 -23
  878. package/src/tests/samples/inconsistentSpaceTab1.py +0 -9
  879. package/src/tests/samples/inconsistentSpaceTab2.py +0 -10
  880. package/src/tests/samples/index1.py +0 -97
  881. package/src/tests/samples/inferredTypes1.py +0 -25
  882. package/src/tests/samples/initVar1.py +0 -23
  883. package/src/tests/samples/initsubclass1.py +0 -46
  884. package/src/tests/samples/initsubclass2.py +0 -16
  885. package/src/tests/samples/isinstance1.py +0 -57
  886. package/src/tests/samples/isinstance10.py +0 -15
  887. package/src/tests/samples/isinstance2.py +0 -28
  888. package/src/tests/samples/isinstance3.py +0 -59
  889. package/src/tests/samples/isinstance4.py +0 -57
  890. package/src/tests/samples/isinstance5.py +0 -8
  891. package/src/tests/samples/isinstance6.py +0 -19
  892. package/src/tests/samples/isinstance7.py +0 -42
  893. package/src/tests/samples/isinstance9.py +0 -26
  894. package/src/tests/samples/kwargsUnpack1.py +0 -116
  895. package/src/tests/samples/lambda1.py +0 -77
  896. package/src/tests/samples/lambda2.py +0 -26
  897. package/src/tests/samples/lambda3.py +0 -34
  898. package/src/tests/samples/lambda4.py +0 -70
  899. package/src/tests/samples/lambda5.py +0 -23
  900. package/src/tests/samples/lambda6.py +0 -15
  901. package/src/tests/samples/lines1.py +0 -14
  902. package/src/tests/samples/list1.py +0 -90
  903. package/src/tests/samples/listComprehension1.py +0 -45
  904. package/src/tests/samples/listComprehension2.py +0 -17
  905. package/src/tests/samples/listComprehension3.py +0 -12
  906. package/src/tests/samples/listComprehension4.py +0 -15
  907. package/src/tests/samples/listComprehension5.py +0 -20
  908. package/src/tests/samples/listComprehension6.py +0 -14
  909. package/src/tests/samples/listComprehension7.py +0 -15
  910. package/src/tests/samples/listComprehension8.py +0 -15
  911. package/src/tests/samples/literalString1.py +0 -43
  912. package/src/tests/samples/literals1.py +0 -48
  913. package/src/tests/samples/literals2.py +0 -30
  914. package/src/tests/samples/literals3.py +0 -40
  915. package/src/tests/samples/literals4.py +0 -10
  916. package/src/tests/samples/literals5.py +0 -28
  917. package/src/tests/samples/literals6.py +0 -90
  918. package/src/tests/samples/literals7.py +0 -38
  919. package/src/tests/samples/loops1.py +0 -45
  920. package/src/tests/samples/loops10.py +0 -11
  921. package/src/tests/samples/loops11.py +0 -22
  922. package/src/tests/samples/loops12.py +0 -18
  923. package/src/tests/samples/loops13.py +0 -13
  924. package/src/tests/samples/loops14.py +0 -22
  925. package/src/tests/samples/loops15.py +0 -22
  926. package/src/tests/samples/loops16.py +0 -322
  927. package/src/tests/samples/loops17.py +0 -9
  928. package/src/tests/samples/loops18.py +0 -23
  929. package/src/tests/samples/loops19.py +0 -14
  930. package/src/tests/samples/loops2.py +0 -25
  931. package/src/tests/samples/loops20.py +0 -41
  932. package/src/tests/samples/loops21.py +0 -18
  933. package/src/tests/samples/loops22.py +0 -21
  934. package/src/tests/samples/loops23.py +0 -16
  935. package/src/tests/samples/loops24.py +0 -12
  936. package/src/tests/samples/loops25.py +0 -45
  937. package/src/tests/samples/loops26.py +0 -12
  938. package/src/tests/samples/loops3.py +0 -11
  939. package/src/tests/samples/loops4.py +0 -17
  940. package/src/tests/samples/loops5.py +0 -14
  941. package/src/tests/samples/loops6.py +0 -25
  942. package/src/tests/samples/loops7.py +0 -14
  943. package/src/tests/samples/loops8.py +0 -17
  944. package/src/tests/samples/loops9.py +0 -25
  945. package/src/tests/samples/match1.py +0 -190
  946. package/src/tests/samples/match10.py +0 -67
  947. package/src/tests/samples/match2.py +0 -340
  948. package/src/tests/samples/match3.py +0 -364
  949. package/src/tests/samples/match4.py +0 -100
  950. package/src/tests/samples/match5.py +0 -70
  951. package/src/tests/samples/match6.py +0 -64
  952. package/src/tests/samples/match7.py +0 -65
  953. package/src/tests/samples/match8.py +0 -19
  954. package/src/tests/samples/match9.py +0 -53
  955. package/src/tests/samples/maxParseDepth1.py +0 -499
  956. package/src/tests/samples/maxParseDepth2.py +0 -16
  957. package/src/tests/samples/memberAccess1.py +0 -70
  958. package/src/tests/samples/memberAccess10.py +0 -65
  959. package/src/tests/samples/memberAccess11.py +0 -37
  960. package/src/tests/samples/memberAccess12.py +0 -36
  961. package/src/tests/samples/memberAccess13.py +0 -17
  962. package/src/tests/samples/memberAccess14.py +0 -63
  963. package/src/tests/samples/memberAccess15.py +0 -20
  964. package/src/tests/samples/memberAccess16.py +0 -12
  965. package/src/tests/samples/memberAccess17.py +0 -31
  966. package/src/tests/samples/memberAccess18.py +0 -31
  967. package/src/tests/samples/memberAccess2.py +0 -45
  968. package/src/tests/samples/memberAccess3.py +0 -64
  969. package/src/tests/samples/memberAccess4.py +0 -91
  970. package/src/tests/samples/memberAccess5.py +0 -26
  971. package/src/tests/samples/memberAccess6.py +0 -52
  972. package/src/tests/samples/memberAccess7.py +0 -36
  973. package/src/tests/samples/memberAccess8.py +0 -75
  974. package/src/tests/samples/memberAccess9.py +0 -11
  975. package/src/tests/samples/metaclass1.py +0 -7
  976. package/src/tests/samples/metaclass2.py +0 -35
  977. package/src/tests/samples/metaclass3.py +0 -43
  978. package/src/tests/samples/metaclass4.py +0 -26
  979. package/src/tests/samples/metaclass5.py +0 -33
  980. package/src/tests/samples/metaclass6.py +0 -15
  981. package/src/tests/samples/metaclass7.py +0 -38
  982. package/src/tests/samples/metaclass8.py +0 -20
  983. package/src/tests/samples/metaclass9.py +0 -77
  984. package/src/tests/samples/methodOverride1.py +0 -507
  985. package/src/tests/samples/methodOverride2.py +0 -74
  986. package/src/tests/samples/methodOverride3.py +0 -111
  987. package/src/tests/samples/methodOverride4.py +0 -36
  988. package/src/tests/samples/missingSuper1.py +0 -73
  989. package/src/tests/samples/module1.py +0 -13
  990. package/src/tests/samples/module2.py +0 -7
  991. package/src/tests/samples/mro1.py +0 -16
  992. package/src/tests/samples/mro2.py +0 -45
  993. package/src/tests/samples/mro3.py +0 -30
  994. package/src/tests/samples/mro4.py +0 -30
  995. package/src/tests/samples/nameBindings1.py +0 -48
  996. package/src/tests/samples/nameBindings2.py +0 -9
  997. package/src/tests/samples/nameBindings3.py +0 -36
  998. package/src/tests/samples/nameBindings4.py +0 -10
  999. package/src/tests/samples/nameBindings5.py +0 -53
  1000. package/src/tests/samples/namedTuples1.py +0 -103
  1001. package/src/tests/samples/namedTuples2.py +0 -56
  1002. package/src/tests/samples/namedTuples3.py +0 -15
  1003. package/src/tests/samples/namedTuples4.py +0 -24
  1004. package/src/tests/samples/namedTuples5.py +0 -15
  1005. package/src/tests/samples/namedTuples6.py +0 -31
  1006. package/src/tests/samples/namedTuples7.py +0 -27
  1007. package/src/tests/samples/never1.py +0 -12
  1008. package/src/tests/samples/never2.py +0 -43
  1009. package/src/tests/samples/newType1.py +0 -34
  1010. package/src/tests/samples/newType2.py +0 -25
  1011. package/src/tests/samples/newType3.py +0 -34
  1012. package/src/tests/samples/newType4.py +0 -8
  1013. package/src/tests/samples/none1.py +0 -29
  1014. package/src/tests/samples/none2.py +0 -22
  1015. package/src/tests/samples/noreturn1.py +0 -78
  1016. package/src/tests/samples/noreturn2.py +0 -37
  1017. package/src/tests/samples/noreturn3.py +0 -16
  1018. package/src/tests/samples/noreturn4.py +0 -29
  1019. package/src/tests/samples/operators1.py +0 -101
  1020. package/src/tests/samples/operators2.py +0 -30
  1021. package/src/tests/samples/operators3.py +0 -8
  1022. package/src/tests/samples/operators4.py +0 -22
  1023. package/src/tests/samples/operators5.py +0 -5
  1024. package/src/tests/samples/operators6.py +0 -10
  1025. package/src/tests/samples/operators7.py +0 -24
  1026. package/src/tests/samples/operators8.py +0 -125
  1027. package/src/tests/samples/optional1.py +0 -77
  1028. package/src/tests/samples/optional2.py +0 -23
  1029. package/src/tests/samples/overload1.py +0 -50
  1030. package/src/tests/samples/overload10.py +0 -48
  1031. package/src/tests/samples/overload2.py +0 -37
  1032. package/src/tests/samples/overload3.py +0 -29
  1033. package/src/tests/samples/overload4.py +0 -46
  1034. package/src/tests/samples/overload5.py +0 -333
  1035. package/src/tests/samples/overload6.py +0 -64
  1036. package/src/tests/samples/overload7.py +0 -376
  1037. package/src/tests/samples/overload8.py +0 -89
  1038. package/src/tests/samples/overload9.py +0 -19
  1039. package/src/tests/samples/package1/__init__.py +0 -3
  1040. package/src/tests/samples/package1/psyche/pysche.py +0 -4
  1041. package/src/tests/samples/package1/psyche.py +0 -4
  1042. package/src/tests/samples/package1/sub/__init__.py +0 -5
  1043. package/src/tests/samples/package1/sub.py +0 -4
  1044. package/src/tests/samples/package1/sub.pyi +0 -2
  1045. package/src/tests/samples/paramInference1.py +0 -27
  1046. package/src/tests/samples/paramNames1.py +0 -39
  1047. package/src/tests/samples/paramSpec1.py +0 -64
  1048. package/src/tests/samples/paramSpec10.py +0 -57
  1049. package/src/tests/samples/paramSpec11.py +0 -36
  1050. package/src/tests/samples/paramSpec12.py +0 -88
  1051. package/src/tests/samples/paramSpec13.py +0 -112
  1052. package/src/tests/samples/paramSpec14.py +0 -30
  1053. package/src/tests/samples/paramSpec15.py +0 -28
  1054. package/src/tests/samples/paramSpec16.py +0 -28
  1055. package/src/tests/samples/paramSpec17.py +0 -34
  1056. package/src/tests/samples/paramSpec18.py +0 -43
  1057. package/src/tests/samples/paramSpec19.py +0 -93
  1058. package/src/tests/samples/paramSpec2.py +0 -29
  1059. package/src/tests/samples/paramSpec20.py +0 -87
  1060. package/src/tests/samples/paramSpec21.py +0 -58
  1061. package/src/tests/samples/paramSpec22.py +0 -26
  1062. package/src/tests/samples/paramSpec23.py +0 -21
  1063. package/src/tests/samples/paramSpec24.py +0 -67
  1064. package/src/tests/samples/paramSpec25.py +0 -36
  1065. package/src/tests/samples/paramSpec26.py +0 -25
  1066. package/src/tests/samples/paramSpec27.py +0 -57
  1067. package/src/tests/samples/paramSpec28.py +0 -39
  1068. package/src/tests/samples/paramSpec29.py +0 -37
  1069. package/src/tests/samples/paramSpec3.py +0 -71
  1070. package/src/tests/samples/paramSpec30.py +0 -49
  1071. package/src/tests/samples/paramSpec31.py +0 -16
  1072. package/src/tests/samples/paramSpec32.py +0 -57
  1073. package/src/tests/samples/paramSpec33.py +0 -29
  1074. package/src/tests/samples/paramSpec34.py +0 -29
  1075. package/src/tests/samples/paramSpec35.py +0 -24
  1076. package/src/tests/samples/paramSpec36.py +0 -43
  1077. package/src/tests/samples/paramSpec37.py +0 -25
  1078. package/src/tests/samples/paramSpec4.py +0 -109
  1079. package/src/tests/samples/paramSpec5.py +0 -29
  1080. package/src/tests/samples/paramSpec6.py +0 -17
  1081. package/src/tests/samples/paramSpec7.py +0 -22
  1082. package/src/tests/samples/paramSpec8.py +0 -45
  1083. package/src/tests/samples/paramSpec9.py +0 -57
  1084. package/src/tests/samples/paramType1.py +0 -71
  1085. package/src/tests/samples/parameters1.py +0 -16
  1086. package/src/tests/samples/partial1.py +0 -163
  1087. package/src/tests/samples/partial2.py +0 -31
  1088. package/src/tests/samples/private1.py +0 -55
  1089. package/src/tests/samples/private2.py +0 -11
  1090. package/src/tests/samples/project1/pyrightconfig.json +0 -5
  1091. package/src/tests/samples/project1/sample1.py +0 -0
  1092. package/src/tests/samples/project1/subfolder1/sample2.py +0 -0
  1093. package/src/tests/samples/project1/subfolder1/subfolder1-1/sample3.py +0 -0
  1094. package/src/tests/samples/project2/pyrightconfig.json +0 -3
  1095. package/src/tests/samples/project3/pyrightconfig.json +0 -7
  1096. package/src/tests/samples/project4/presentfile.py +0 -0
  1097. package/src/tests/samples/project4/pyrightconfig.json +0 -11
  1098. package/src/tests/samples/project4/subfolder/presentfile2.py +0 -0
  1099. package/src/tests/samples/project4/subfolder/presentfile3.py +0 -0
  1100. package/src/tests/samples/project5/pyrightconfig.json +0 -4
  1101. package/src/tests/samples/project6/app1.py +0 -0
  1102. package/src/tests/samples/project6/app2.py +0 -0
  1103. package/src/tests/samples/project6/projectA/foo/__init__.py +0 -0
  1104. package/src/tests/samples/project6/projectA/foo/bar/__init__.py +0 -0
  1105. package/src/tests/samples/project6/projectB/foo/__init__.py +0 -0
  1106. package/src/tests/samples/project6/projectB/foo/baz/__init__.py +0 -0
  1107. package/src/tests/samples/project_src/src/module1.py +0 -0
  1108. package/src/tests/samples/project_src_is_pkg/src/__init__.py +0 -0
  1109. package/src/tests/samples/project_src_is_pkg/src/module1.py +0 -0
  1110. package/src/tests/samples/project_src_with_config_extra_paths/pyrightconfig.json +0 -3
  1111. package/src/tests/samples/project_src_with_config_extra_paths/src/module1.py +0 -0
  1112. package/src/tests/samples/project_src_with_config_no_extra_paths/pyrightconfig.json +0 -2
  1113. package/src/tests/samples/project_src_with_config_no_extra_paths/src/module1.py +0 -0
  1114. package/src/tests/samples/project_src_with_extra_paths/src/_vendored/vendored1.py +0 -1
  1115. package/src/tests/samples/project_src_with_extra_paths/src/module1.py +0 -2
  1116. package/src/tests/samples/project_with_pyproject_toml/pyproject.toml +0 -7
  1117. package/src/tests/samples/project_with_venv_auto_detect_exclude/myvenv/Lib/site-packages/library1.py +0 -0
  1118. package/src/tests/samples/project_with_venv_auto_detect_exclude/myvenv/pyvenv.cfg +0 -0
  1119. package/src/tests/samples/project_with_venv_auto_detect_exclude/pyrightconfig.json +0 -2
  1120. package/src/tests/samples/project_with_venv_auto_detect_exclude/sample1.py +0 -0
  1121. package/src/tests/samples/project_with_venv_auto_detect_exclude/subfolder1/sample2.py +0 -0
  1122. package/src/tests/samples/project_with_venv_auto_detect_exclude/subfolder1/subfolder1-1/sample3.py +0 -0
  1123. package/src/tests/samples/project_with_venv_auto_detect_include/excluded/excluded1.py +0 -0
  1124. package/src/tests/samples/project_with_venv_auto_detect_include/myvenv/Lib/site-packages/library1.py +0 -0
  1125. package/src/tests/samples/project_with_venv_auto_detect_include/myvenv/pyvenv.cfg +0 -0
  1126. package/src/tests/samples/project_with_venv_auto_detect_include/pyrightconfig.json +0 -3
  1127. package/src/tests/samples/project_with_venv_auto_detect_include/sample1.py +0 -0
  1128. package/src/tests/samples/project_with_venv_auto_detect_include/subfolder1/sample2.py +0 -0
  1129. package/src/tests/samples/project_with_venv_auto_detect_include/subfolder1/subfolder1-1/sample3.py +0 -0
  1130. package/src/tests/samples/properties1.py +0 -64
  1131. package/src/tests/samples/properties10.py +0 -19
  1132. package/src/tests/samples/properties11.py +0 -45
  1133. package/src/tests/samples/properties12.py +0 -23
  1134. package/src/tests/samples/properties13.py +0 -15
  1135. package/src/tests/samples/properties2.py +0 -34
  1136. package/src/tests/samples/properties3.py +0 -93
  1137. package/src/tests/samples/properties4.py +0 -17
  1138. package/src/tests/samples/properties5.py +0 -29
  1139. package/src/tests/samples/properties6.py +0 -35
  1140. package/src/tests/samples/properties7.py +0 -30
  1141. package/src/tests/samples/properties8.py +0 -26
  1142. package/src/tests/samples/properties9.py +0 -24
  1143. package/src/tests/samples/protocol1.py +0 -132
  1144. package/src/tests/samples/protocol10.py +0 -36
  1145. package/src/tests/samples/protocol11.py +0 -32
  1146. package/src/tests/samples/protocol12.py +0 -12
  1147. package/src/tests/samples/protocol13.py +0 -26
  1148. package/src/tests/samples/protocol14.py +0 -27
  1149. package/src/tests/samples/protocol15.py +0 -27
  1150. package/src/tests/samples/protocol16.py +0 -22
  1151. package/src/tests/samples/protocol17.py +0 -94
  1152. package/src/tests/samples/protocol18.py +0 -27
  1153. package/src/tests/samples/protocol19.py +0 -39
  1154. package/src/tests/samples/protocol2.py +0 -38
  1155. package/src/tests/samples/protocol20.py +0 -22
  1156. package/src/tests/samples/protocol21.py +0 -26
  1157. package/src/tests/samples/protocol22.py +0 -43
  1158. package/src/tests/samples/protocol23.py +0 -41
  1159. package/src/tests/samples/protocol24.py +0 -74
  1160. package/src/tests/samples/protocol25.py +0 -31
  1161. package/src/tests/samples/protocol26.py +0 -40
  1162. package/src/tests/samples/protocol27.py +0 -76
  1163. package/src/tests/samples/protocol28.py +0 -32
  1164. package/src/tests/samples/protocol29.py +0 -26
  1165. package/src/tests/samples/protocol3.py +0 -110
  1166. package/src/tests/samples/protocol30.py +0 -30
  1167. package/src/tests/samples/protocol31.py +0 -22
  1168. package/src/tests/samples/protocol32.py +0 -67
  1169. package/src/tests/samples/protocol33.py +0 -39
  1170. package/src/tests/samples/protocol34.py +0 -21
  1171. package/src/tests/samples/protocol4.py +0 -22
  1172. package/src/tests/samples/protocol5.py +0 -25
  1173. package/src/tests/samples/protocol6.py +0 -65
  1174. package/src/tests/samples/protocol7.py +0 -24
  1175. package/src/tests/samples/protocol8.py +0 -34
  1176. package/src/tests/samples/protocol9.py +0 -35
  1177. package/src/tests/samples/protocolModule1.py +0 -15
  1178. package/src/tests/samples/protocolModule2.py +0 -83
  1179. package/src/tests/samples/protocolModule3.py +0 -14
  1180. package/src/tests/samples/protocolModule4.py +0 -26
  1181. package/src/tests/samples/pseudoGeneric1.py +0 -20
  1182. package/src/tests/samples/pyrightIgnore1.py +0 -11
  1183. package/src/tests/samples/pyrightIgnore2.py +0 -24
  1184. package/src/tests/samples/python2.py +0 -31
  1185. package/src/tests/samples/recursiveTypeAlias1.py +0 -79
  1186. package/src/tests/samples/recursiveTypeAlias2.py +0 -32
  1187. package/src/tests/samples/recursiveTypeAlias3.py +0 -26
  1188. package/src/tests/samples/recursiveTypeAlias4.py +0 -55
  1189. package/src/tests/samples/recursiveTypeAlias5.pyi +0 -10
  1190. package/src/tests/samples/recursiveTypeAlias6.py +0 -25
  1191. package/src/tests/samples/recursiveTypeAlias7.py +0 -15
  1192. package/src/tests/samples/recursiveTypeAlias8.py +0 -38
  1193. package/src/tests/samples/recursiveTypeAlias9.py +0 -22
  1194. package/src/tests/samples/required1.py +0 -47
  1195. package/src/tests/samples/required2.py +0 -56
  1196. package/src/tests/samples/required3.py +0 -22
  1197. package/src/tests/samples/returnTypes1.py +0 -26
  1198. package/src/tests/samples/revealedType1.py +0 -30
  1199. package/src/tests/samples/sample1.py +0 -6
  1200. package/src/tests/samples/self1.py +0 -93
  1201. package/src/tests/samples/self2.py +0 -195
  1202. package/src/tests/samples/self3.py +0 -9
  1203. package/src/tests/samples/self4.py +0 -18
  1204. package/src/tests/samples/self5.py +0 -26
  1205. package/src/tests/samples/setComprehension1.py +0 -34
  1206. package/src/tests/samples/slots1.py +0 -63
  1207. package/src/tests/samples/slots2.py +0 -38
  1208. package/src/tests/samples/slots3.py +0 -35
  1209. package/src/tests/samples/specialization1.py +0 -78
  1210. package/src/tests/samples/specialization2.py +0 -51
  1211. package/src/tests/samples/staticExpressions1.py +0 -52
  1212. package/src/tests/samples/strings1.py +0 -22
  1213. package/src/tests/samples/subscript1.py +0 -74
  1214. package/src/tests/samples/subscript2.py +0 -55
  1215. package/src/tests/samples/subscript3.py +0 -135
  1216. package/src/tests/samples/suiteExpectedColon1.py +0 -4
  1217. package/src/tests/samples/suiteExpectedColon2.py +0 -2
  1218. package/src/tests/samples/suiteExpectedColon3.py +0 -2
  1219. package/src/tests/samples/super1.py +0 -57
  1220. package/src/tests/samples/super2.py +0 -29
  1221. package/src/tests/samples/super3.py +0 -10
  1222. package/src/tests/samples/super4.py +0 -24
  1223. package/src/tests/samples/super5.py +0 -28
  1224. package/src/tests/samples/super6.py +0 -17
  1225. package/src/tests/samples/super7.py +0 -52
  1226. package/src/tests/samples/super8.py +0 -7
  1227. package/src/tests/samples/super9.py +0 -36
  1228. package/src/tests/samples/test_file1.py +0 -0
  1229. package/src/tests/samples/threePartVersion1.py +0 -33
  1230. package/src/tests/samples/totalOrdering1.py +0 -52
  1231. package/src/tests/samples/tryExcept1.py +0 -39
  1232. package/src/tests/samples/tryExcept10.py +0 -12
  1233. package/src/tests/samples/tryExcept2.py +0 -16
  1234. package/src/tests/samples/tryExcept3.py +0 -12
  1235. package/src/tests/samples/tryExcept4.py +0 -28
  1236. package/src/tests/samples/tryExcept5.py +0 -30
  1237. package/src/tests/samples/tryExcept6.py +0 -27
  1238. package/src/tests/samples/tryExcept7.py +0 -17
  1239. package/src/tests/samples/tryExcept8.py +0 -69
  1240. package/src/tests/samples/tryExcept9.py +0 -42
  1241. package/src/tests/samples/tupleUnpack1.py +0 -63
  1242. package/src/tests/samples/tupleUnpack2.py +0 -56
  1243. package/src/tests/samples/tupleUnpack3.py +0 -28
  1244. package/src/tests/samples/tuples1.py +0 -185
  1245. package/src/tests/samples/tuples10.py +0 -30
  1246. package/src/tests/samples/tuples11.py +0 -21
  1247. package/src/tests/samples/tuples12.py +0 -31
  1248. package/src/tests/samples/tuples13.py +0 -26
  1249. package/src/tests/samples/tuples15.py +0 -16
  1250. package/src/tests/samples/tuples16.py +0 -14
  1251. package/src/tests/samples/tuples2.py +0 -23
  1252. package/src/tests/samples/tuples3.py +0 -15
  1253. package/src/tests/samples/tuples4.py +0 -21
  1254. package/src/tests/samples/tuples5.py +0 -16
  1255. package/src/tests/samples/tuples6.py +0 -56
  1256. package/src/tests/samples/tuples7.py +0 -61
  1257. package/src/tests/samples/tuples8.py +0 -98
  1258. package/src/tests/samples/tuples9.py +0 -17
  1259. package/src/tests/samples/typeAlias1.py +0 -37
  1260. package/src/tests/samples/typeAlias10.py +0 -45
  1261. package/src/tests/samples/typeAlias11.py +0 -37
  1262. package/src/tests/samples/typeAlias12.py +0 -20
  1263. package/src/tests/samples/typeAlias13.py +0 -53
  1264. package/src/tests/samples/typeAlias14.py +0 -29
  1265. package/src/tests/samples/typeAlias15.py +0 -24
  1266. package/src/tests/samples/typeAlias16.py +0 -24
  1267. package/src/tests/samples/typeAlias2.py +0 -26
  1268. package/src/tests/samples/typeAlias3.py +0 -35
  1269. package/src/tests/samples/typeAlias4.py +0 -68
  1270. package/src/tests/samples/typeAlias5.py +0 -56
  1271. package/src/tests/samples/typeAlias6.py +0 -51
  1272. package/src/tests/samples/typeAlias7.py +0 -50
  1273. package/src/tests/samples/typeAlias8.py +0 -24
  1274. package/src/tests/samples/typeAlias9.py +0 -35
  1275. package/src/tests/samples/typeGuard1.py +0 -68
  1276. package/src/tests/samples/typeGuard2.py +0 -58
  1277. package/src/tests/samples/typeGuard3.py +0 -98
  1278. package/src/tests/samples/typeIgnore1.py +0 -10
  1279. package/src/tests/samples/typeIgnore2.py +0 -20
  1280. package/src/tests/samples/typeIgnore3.py +0 -22
  1281. package/src/tests/samples/typeIgnore4.py +0 -10
  1282. package/src/tests/samples/typeIgnore5.py +0 -7
  1283. package/src/tests/samples/typeNarrowing1.py +0 -56
  1284. package/src/tests/samples/typeNarrowing2.py +0 -14
  1285. package/src/tests/samples/typeNarrowing3.py +0 -47
  1286. package/src/tests/samples/typeNarrowing4.py +0 -24
  1287. package/src/tests/samples/typeNarrowing5.py +0 -19
  1288. package/src/tests/samples/typeNarrowing6.py +0 -27
  1289. package/src/tests/samples/typeNarrowing7.py +0 -71
  1290. package/src/tests/samples/typeNarrowingAssert1.py +0 -24
  1291. package/src/tests/samples/typeNarrowingCallable1.py +0 -78
  1292. package/src/tests/samples/typeNarrowingEnum1.py +0 -58
  1293. package/src/tests/samples/typeNarrowingEnum2.py +0 -71
  1294. package/src/tests/samples/typeNarrowingFalsy1.py +0 -50
  1295. package/src/tests/samples/typeNarrowingIn1.py +0 -97
  1296. package/src/tests/samples/typeNarrowingIsNone1.py +0 -56
  1297. package/src/tests/samples/typeNarrowingIsNone2.py +0 -8
  1298. package/src/tests/samples/typeNarrowingIsNoneTuple1.py +0 -42
  1299. package/src/tests/samples/typeNarrowingIsNoneTuple2.py +0 -35
  1300. package/src/tests/samples/typeNarrowingIsinstance1.py +0 -162
  1301. package/src/tests/samples/typeNarrowingIsinstance2.py +0 -14
  1302. package/src/tests/samples/typeNarrowingIsinstance3.py +0 -78
  1303. package/src/tests/samples/typeNarrowingIsinstance4.py +0 -50
  1304. package/src/tests/samples/typeNarrowingIsinstance5.py +0 -39
  1305. package/src/tests/samples/typeNarrowingIsinstance6.py +0 -77
  1306. package/src/tests/samples/typeNarrowingIsinstance7.py +0 -19
  1307. package/src/tests/samples/typeNarrowingIsinstance8.py +0 -19
  1308. package/src/tests/samples/typeNarrowingLiteral1.py +0 -35
  1309. package/src/tests/samples/typeNarrowingLiteral2.py +0 -63
  1310. package/src/tests/samples/typeNarrowingLiteralMember1.py +0 -140
  1311. package/src/tests/samples/typeNarrowingLocalConst1.py +0 -136
  1312. package/src/tests/samples/typeNarrowingNoneMember1.py +0 -102
  1313. package/src/tests/samples/typeNarrowingTuple1.py +0 -23
  1314. package/src/tests/samples/typeNarrowingTupleLength1.py +0 -47
  1315. package/src/tests/samples/typeNarrowingTypeIs1.py +0 -95
  1316. package/src/tests/samples/typeNarrowingTypedDict1.py +0 -99
  1317. package/src/tests/samples/typeNarrowingTypedDict2.py +0 -35
  1318. package/src/tests/samples/typeNarrowingTypedDict3.py +0 -45
  1319. package/src/tests/samples/typePromotions1.py +0 -30
  1320. package/src/tests/samples/typeVar1.py +0 -23
  1321. package/src/tests/samples/typeVar10.py +0 -21
  1322. package/src/tests/samples/typeVar11.py +0 -12
  1323. package/src/tests/samples/typeVar2.py +0 -26
  1324. package/src/tests/samples/typeVar3.py +0 -73
  1325. package/src/tests/samples/typeVar4.py +0 -45
  1326. package/src/tests/samples/typeVar5.py +0 -75
  1327. package/src/tests/samples/typeVar6.py +0 -115
  1328. package/src/tests/samples/typeVar7.py +0 -171
  1329. package/src/tests/samples/typeVar8.py +0 -30
  1330. package/src/tests/samples/typeVar9.py +0 -118
  1331. package/src/tests/samples/typedDict1.py +0 -63
  1332. package/src/tests/samples/typedDict10.py +0 -34
  1333. package/src/tests/samples/typedDict11.py +0 -12
  1334. package/src/tests/samples/typedDict12.py +0 -103
  1335. package/src/tests/samples/typedDict13.py +0 -14
  1336. package/src/tests/samples/typedDict14.py +0 -25
  1337. package/src/tests/samples/typedDict15.py +0 -53
  1338. package/src/tests/samples/typedDict16.py +0 -103
  1339. package/src/tests/samples/typedDict17.py +0 -24
  1340. package/src/tests/samples/typedDict18.py +0 -43
  1341. package/src/tests/samples/typedDict2.py +0 -56
  1342. package/src/tests/samples/typedDict3.py +0 -40
  1343. package/src/tests/samples/typedDict4.py +0 -68
  1344. package/src/tests/samples/typedDict5.py +0 -50
  1345. package/src/tests/samples/typedDict6.py +0 -77
  1346. package/src/tests/samples/typedDict7.py +0 -22
  1347. package/src/tests/samples/typedDict8.py +0 -19
  1348. package/src/tests/samples/typedDict9.py +0 -22
  1349. package/src/tests/samples/unbound1.py +0 -18
  1350. package/src/tests/samples/unbound2.py +0 -12
  1351. package/src/tests/samples/unbound3.py +0 -13
  1352. package/src/tests/samples/unbound4.py +0 -25
  1353. package/src/tests/samples/unicode1.py +0 -39
  1354. package/src/tests/samples/uninitializedVariable1.py +0 -27
  1355. package/src/tests/samples/unions1.py +0 -79
  1356. package/src/tests/samples/unions2.py +0 -15
  1357. package/src/tests/samples/unions3.py +0 -48
  1358. package/src/tests/samples/unions4.py +0 -20
  1359. package/src/tests/samples/unions5.py +0 -43
  1360. package/src/tests/samples/unnecessaryCast1.py +0 -13
  1361. package/src/tests/samples/unnecessaryIsInstance1.py +0 -91
  1362. package/src/tests/samples/unnecessaryIsSubclass1.py +0 -22
  1363. package/src/tests/samples/unpack1.py +0 -56
  1364. package/src/tests/samples/unpack2.py +0 -27
  1365. package/src/tests/samples/unpack3.py +0 -16
  1366. package/src/tests/samples/unpack4.py +0 -15
  1367. package/src/tests/samples/unreachable1.py +0 -112
  1368. package/src/tests/samples/unusedCallResult1.py +0 -67
  1369. package/src/tests/samples/unusedCoroutine1.py +0 -23
  1370. package/src/tests/samples/unusedExpression1.py +0 -34
  1371. package/src/tests/samples/unusedVariable1.py +0 -21
  1372. package/src/tests/samples/variadicTypeVar1.py +0 -51
  1373. package/src/tests/samples/variadicTypeVar10.py +0 -65
  1374. package/src/tests/samples/variadicTypeVar11.py +0 -72
  1375. package/src/tests/samples/variadicTypeVar12.py +0 -26
  1376. package/src/tests/samples/variadicTypeVar13.py +0 -35
  1377. package/src/tests/samples/variadicTypeVar14.py +0 -72
  1378. package/src/tests/samples/variadicTypeVar2.py +0 -63
  1379. package/src/tests/samples/variadicTypeVar3.py +0 -86
  1380. package/src/tests/samples/variadicTypeVar4.py +0 -71
  1381. package/src/tests/samples/variadicTypeVar5.py +0 -131
  1382. package/src/tests/samples/variadicTypeVar6.py +0 -78
  1383. package/src/tests/samples/variadicTypeVar7.py +0 -59
  1384. package/src/tests/samples/variadicTypeVar8.py +0 -116
  1385. package/src/tests/samples/variadicTypeVar9.py +0 -38
  1386. package/src/tests/samples/with1.py +0 -117
  1387. package/src/tests/samples/with2.py +0 -63
  1388. package/src/tests/samples/with3.py +0 -66
  1389. package/src/tests/samples/with4.py +0 -24
  1390. package/src/tests/samples/with5.py +0 -33
  1391. package/src/tests/samples/zipfs/bad.egg +0 -1
  1392. package/src/tests/samples/zipfs/bad.zip +0 -1
  1393. package/src/tests/samples/zipfs/basic.egg +0 -0
  1394. package/src/tests/samples/zipfs/basic.zip +0 -0
  1395. package/src/tests/samples/zipfs/corrupt.egg +0 -0
  1396. package/src/tests/samples/zipfs/corrupt.zip +0 -0
  1397. package/src/tests/sourceFile.test.ts +0 -25
  1398. package/src/tests/stringUtils.test.ts +0 -63
  1399. package/src/tests/symbolNameUtils.test.ts +0 -77
  1400. package/src/tests/testState.test.ts +0 -579
  1401. package/src/tests/testUtils.ts +0 -251
  1402. package/src/tests/tokenizer.test.ts +0 -1534
  1403. package/src/tests/typeEvaluator1.test.ts +0 -1372
  1404. package/src/tests/typeEvaluator2.test.ts +0 -1253
  1405. package/src/tests/typeEvaluator3.test.ts +0 -1279
  1406. package/src/tests/typeEvaluator4.test.ts +0 -1178
  1407. package/src/tests/updateSymbolReference.test.ts +0 -1107
  1408. package/src/tests/zipfs.test.ts +0 -116
  1409. package/src/workspaceMap.ts +0 -76
@@ -1,2308 +0,0 @@
1
- /*
2
- * importResolver.ts
3
- * Copyright (c) Microsoft Corporation.
4
- * Licensed under the MIT license.
5
- * Author: Eric Traut
6
- *
7
- * Provides the logic for resolving imports according to the
8
- * runtime rules of Python.
9
- */
10
-
11
- import type { Dirent } from 'fs';
12
-
13
- import { appendArray, flatten, getMapValues, getOrAdd } from '../common/collectionUtils';
14
- import { ConfigOptions, ExecutionEnvironment } from '../common/configOptions';
15
- import { FileSystem } from '../common/fileSystem';
16
- import { Host } from '../common/host';
17
- import { stubsSuffix } from '../common/pathConsts';
18
- import {
19
- changeAnyExtension,
20
- combinePathComponents,
21
- combinePaths,
22
- containsPath,
23
- ensureTrailingDirectorySeparator,
24
- getDirectoryPath,
25
- getFileExtension,
26
- getFileName,
27
- getFileSystemEntriesFromDirEntries,
28
- getPathComponents,
29
- getRelativePathComponentsFromDirectory,
30
- isDirectory,
31
- isDiskPathRoot,
32
- isFile,
33
- normalizePath,
34
- normalizePathCase,
35
- resolvePaths,
36
- stripFileExtension,
37
- stripTrailingDirectorySeparator,
38
- tryRealpath,
39
- tryStat,
40
- } from '../common/pathUtils';
41
- import { PythonVersion, versionFromString } from '../common/pythonVersion';
42
- import { equateStringsCaseInsensitive } from '../common/stringUtils';
43
- import * as StringUtils from '../common/stringUtils';
44
- import { isIdentifierChar, isIdentifierStartChar } from '../parser/characters';
45
- import { PyrightFileSystem } from '../pyrightFileSystem';
46
- import { ImplicitImport, ImportResult, ImportType } from './importResult';
47
- import { getDirectoryLeadingDotsPointsTo } from './importStatementUtils';
48
- import { ImportPath, ParentDirectoryCache } from './parentDirectoryCache';
49
- import * as PythonPathUtils from './pythonPathUtils';
50
- import { getPyTypedInfo, PyTypedInfo } from './pyTypedUtils';
51
- import { isDunderName } from './symbolNameUtils';
52
-
53
- export interface ImportedModuleDescriptor {
54
- leadingDots: number;
55
- nameParts: string[];
56
- hasTrailingDot?: boolean | undefined;
57
- importedSymbols: string[] | undefined;
58
- }
59
-
60
- export interface ModuleNameAndType {
61
- moduleName: string;
62
- importType: ImportType;
63
- isLocalTypingsFile: boolean;
64
- }
65
-
66
- export function createImportedModuleDescriptor(moduleName: string): ImportedModuleDescriptor {
67
- if (moduleName.length === 0) {
68
- return { leadingDots: 0, nameParts: [], importedSymbols: [] };
69
- }
70
-
71
- let startIndex = 0;
72
- let leadingDots = 0;
73
- for (; startIndex < moduleName.length; startIndex++) {
74
- if (moduleName[startIndex] !== '.') {
75
- break;
76
- }
77
-
78
- leadingDots++;
79
- }
80
-
81
- return {
82
- leadingDots,
83
- nameParts: moduleName.slice(startIndex).split('.'),
84
- importedSymbols: [],
85
- };
86
- }
87
-
88
- type CachedImportResults = Map<string, ImportResult>;
89
- interface SupportedVersionRange {
90
- min: PythonVersion;
91
- max?: PythonVersion | undefined;
92
- }
93
-
94
- const supportedNativeLibExtensions = ['.pyd', '.so', '.dylib'];
95
- export const supportedFileExtensions = ['.py', '.pyi', ...supportedNativeLibExtensions];
96
-
97
- // Should we allow partial resolution for third-party packages? Some use tricks
98
- // to populate their package namespaces, so we might be able to partially resolve
99
- // a multi - part import(e.g. "a.b.c") but not fully resolve it. If this is set to
100
- // false, we will have some false positives. If it is set to true, we won't report
101
- // errors when these partial-resolutions fail.
102
- const allowPartialResolutionForThirdPartyPackages = false;
103
-
104
- export class ImportResolver {
105
- private _cachedPythonSearchPaths: string[] | undefined;
106
- private _cachedImportResults = new Map<string | undefined, CachedImportResults>();
107
- private _cachedModuleNameResults = new Map<string, Map<string, ModuleNameAndType>>();
108
- private _cachedTypeshedRoot: string | undefined;
109
- private _cachedTypeshedStdLibPath: string | undefined;
110
- private _cachedTypeshedStdLibModuleVersions: Map<string, SupportedVersionRange> | undefined;
111
- private _cachedTypeshedThirdPartyPath: string | undefined;
112
- private _cachedTypeshedThirdPartyPackagePaths: Map<string, string[]> | undefined;
113
- private _cachedTypeshedThirdPartyPackageRoots: string[] | undefined;
114
- private _cachedEntriesForPath = new Map<string, Dirent[]>();
115
-
116
- protected cachedParentImportResults: ParentDirectoryCache;
117
-
118
- constructor(
119
- public readonly fileSystem: FileSystem,
120
- protected _configOptions: ConfigOptions,
121
- public readonly host: Host
122
- ) {
123
- this.cachedParentImportResults = new ParentDirectoryCache(() => this.getPythonSearchPaths([]));
124
- }
125
-
126
- invalidateCache() {
127
- this._cachedImportResults = new Map<string | undefined, CachedImportResults>();
128
- this._cachedModuleNameResults = new Map<string, Map<string, ModuleNameAndType>>();
129
- this.cachedParentImportResults.reset();
130
-
131
- this._invalidateFileSystemCache();
132
-
133
- if (this.fileSystem instanceof PyrightFileSystem) {
134
- this.fileSystem.clearPartialStubs();
135
- }
136
- }
137
-
138
- // Resolves the import and returns the path if it exists, otherwise
139
- // returns undefined.
140
- resolveImport(
141
- sourceFilePath: string,
142
- execEnv: ExecutionEnvironment,
143
- moduleDescriptor: ImportedModuleDescriptor
144
- ): ImportResult {
145
- // Wrap internal call to _resolveImport() to prevent calling any
146
- // child class version of resolveImport().
147
- return this._resolveImport(sourceFilePath, execEnv, moduleDescriptor);
148
- }
149
-
150
- // Resolves the import and returns the path if it exists, otherwise
151
- // returns undefined.
152
- protected _resolveImport(
153
- sourceFilePath: string,
154
- execEnv: ExecutionEnvironment,
155
- moduleDescriptor: ImportedModuleDescriptor
156
- ): ImportResult {
157
- const importName = this.formatImportName(moduleDescriptor);
158
- const importFailureInfo: string[] = [];
159
- const importResult = this._resolveImportStrict(
160
- importName,
161
- sourceFilePath,
162
- execEnv,
163
- moduleDescriptor,
164
- importFailureInfo
165
- );
166
-
167
- if (importResult.isImportFound || moduleDescriptor.leadingDots > 0) {
168
- return importResult;
169
- }
170
-
171
- // If the import is absolute and no other method works, try resolving the
172
- // absolute in the importing file's directory, then the parent directory,
173
- // and so on, until the import root is reached.
174
- sourceFilePath = normalizePathCase(this.fileSystem, normalizePath(sourceFilePath));
175
- const origin = ensureTrailingDirectorySeparator(getDirectoryPath(sourceFilePath));
176
-
177
- const result = this.cachedParentImportResults.getImportResult(origin, importName, importResult);
178
- if (result) {
179
- // Already ran the parent directory resolution for this import name on this location.
180
- return this.filterImplicitImports(result, moduleDescriptor.importedSymbols);
181
- }
182
-
183
- // Check whether the given file is in the parent directory import resolution cache.
184
- const root = this.getParentImportResolutionRoot(sourceFilePath, execEnv.root);
185
- if (!this.cachedParentImportResults.checkValidPath(this.fileSystem, sourceFilePath, root)) {
186
- return importResult;
187
- }
188
-
189
- const importPath: ImportPath = { importPath: undefined };
190
-
191
- // Going up the given folder one by one until we can resolve the import.
192
- let current = origin;
193
- while (this._shouldWalkUp(current, root, execEnv)) {
194
- const result = this.resolveAbsoluteImport(
195
- current,
196
- execEnv,
197
- moduleDescriptor,
198
- importName,
199
- [],
200
- /* allowPartial */ undefined,
201
- /* allowNativeLib */ undefined,
202
- /* useStubPackage */ false,
203
- /* allowPyi */ true
204
- );
205
-
206
- this.cachedParentImportResults.checked(current, importName, importPath);
207
-
208
- if (result.isImportFound) {
209
- // This will make cache to point to actual path that contains the module we found
210
- importPath.importPath = current;
211
-
212
- this.cachedParentImportResults.add({
213
- importResult: result,
214
- path: current,
215
- importName,
216
- });
217
-
218
- return this.filterImplicitImports(result, moduleDescriptor.importedSymbols);
219
- }
220
-
221
- let success;
222
- [success, current] = this._tryWalkUp(current);
223
- if (!success) {
224
- break;
225
- }
226
- }
227
-
228
- this.cachedParentImportResults.checked(current, importName, importPath);
229
- return importResult;
230
- }
231
-
232
- private _resolveImportStrict(
233
- importName: string,
234
- sourceFilePath: string,
235
- execEnv: ExecutionEnvironment,
236
- moduleDescriptor: ImportedModuleDescriptor,
237
- importFailureInfo: string[]
238
- ) {
239
- const notFoundResult: ImportResult = {
240
- importName,
241
- isRelative: false,
242
- isImportFound: false,
243
- isPartlyResolved: false,
244
- isNamespacePackage: false,
245
- isStubPackage: false,
246
- importFailureInfo,
247
- resolvedPaths: [],
248
- importType: ImportType.Local,
249
- isStubFile: false,
250
- isNativeLib: false,
251
- implicitImports: [],
252
- filteredImplicitImports: [],
253
- nonStubImportResult: undefined,
254
- };
255
-
256
- this.ensurePartialStubPackages(execEnv);
257
-
258
- // Is it a relative import?
259
- if (moduleDescriptor.leadingDots > 0) {
260
- const relativeImport = this._resolveRelativeImport(
261
- sourceFilePath,
262
- execEnv,
263
- moduleDescriptor,
264
- importName,
265
- importFailureInfo
266
- );
267
-
268
- if (relativeImport) {
269
- relativeImport.isRelative = true;
270
- return relativeImport;
271
- }
272
- } else {
273
- // Is it already cached?
274
- const cachedResults = this._lookUpResultsInCache(execEnv, importName, moduleDescriptor.importedSymbols);
275
-
276
- if (cachedResults) {
277
- // In most cases, we can simply return a cached entry. However, there are cases
278
- // where the cached entry refers to a previously-resolved namespace package
279
- // that does not resolve the symbols specified in the module descriptor.
280
- // In this case, we will ignore the cached value and run the full import
281
- // resolution again to try to find a package that resolves the import.
282
- const isUnresolvedNamespace =
283
- cachedResults.isImportFound &&
284
- cachedResults.isNamespacePackage &&
285
- !this._isNamespacePackageResolved(moduleDescriptor, cachedResults.implicitImports);
286
-
287
- if (!isUnresolvedNamespace) {
288
- return cachedResults;
289
- }
290
- }
291
-
292
- const bestImport = this._resolveBestAbsoluteImport(
293
- sourceFilePath,
294
- execEnv,
295
- moduleDescriptor,
296
- /* allowPyi */ true
297
- );
298
-
299
- if (bestImport) {
300
- if (bestImport.isStubFile) {
301
- bestImport.nonStubImportResult =
302
- this._resolveBestAbsoluteImport(
303
- sourceFilePath,
304
- execEnv,
305
- moduleDescriptor,
306
- /* allowPyi */ false
307
- ) || notFoundResult;
308
- }
309
-
310
- return this.addResultsToCache(execEnv, importName, bestImport, moduleDescriptor.importedSymbols);
311
- }
312
- }
313
-
314
- return this.addResultsToCache(execEnv, importName, notFoundResult, /* importedSymbols */ undefined);
315
- }
316
-
317
- getCompletionSuggestions(
318
- sourceFilePath: string,
319
- execEnv: ExecutionEnvironment,
320
- moduleDescriptor: ImportedModuleDescriptor
321
- ) {
322
- const suggestions = this._getCompletionSuggestionsStrict(sourceFilePath, execEnv, moduleDescriptor);
323
-
324
- // We only do parent import resolution for absolute path.
325
- if (moduleDescriptor.leadingDots > 0) {
326
- return suggestions;
327
- }
328
-
329
- const root = this.getParentImportResolutionRoot(sourceFilePath, execEnv.root);
330
- const origin = ensureTrailingDirectorySeparator(
331
- getDirectoryPath(normalizePathCase(this.fileSystem, normalizePath(sourceFilePath)))
332
- );
333
-
334
- let current = origin;
335
- while (this._shouldWalkUp(current, root, execEnv)) {
336
- this._getCompletionSuggestionsAbsolute(
337
- sourceFilePath,
338
- execEnv,
339
- current,
340
- moduleDescriptor,
341
- suggestions,
342
- /* strictOnly */ false
343
- );
344
-
345
- let success;
346
- [success, current] = this._tryWalkUp(current);
347
- if (!success) {
348
- break;
349
- }
350
- }
351
-
352
- return suggestions;
353
- }
354
-
355
- getConfigOption() {
356
- return this._configOptions;
357
- }
358
-
359
- private _getCompletionSuggestionsStrict(
360
- sourceFilePath: string,
361
- execEnv: ExecutionEnvironment,
362
- moduleDescriptor: ImportedModuleDescriptor
363
- ): Set<string> {
364
- const importFailureInfo: string[] = [];
365
- const suggestions = new Set<string>();
366
-
367
- // Is it a relative import?
368
- if (moduleDescriptor.leadingDots > 0) {
369
- this._getCompletionSuggestionsRelative(sourceFilePath, execEnv, moduleDescriptor, suggestions);
370
- } else {
371
- // First check for a typeshed file.
372
- if (moduleDescriptor.nameParts.length > 0) {
373
- this._getCompletionSuggestionsTypeshedPath(
374
- sourceFilePath,
375
- execEnv,
376
- moduleDescriptor,
377
- true,
378
- suggestions
379
- );
380
- }
381
-
382
- // Look for it in the root directory of the execution environment.
383
- if (execEnv.root) {
384
- this._getCompletionSuggestionsAbsolute(
385
- sourceFilePath,
386
- execEnv,
387
- execEnv.root,
388
- moduleDescriptor,
389
- suggestions
390
- );
391
- }
392
-
393
- for (const extraPath of execEnv.extraPaths) {
394
- this._getCompletionSuggestionsAbsolute(
395
- sourceFilePath,
396
- execEnv,
397
- extraPath,
398
- moduleDescriptor,
399
- suggestions
400
- );
401
- }
402
-
403
- // Check for a typings file.
404
- if (this._configOptions.stubPath) {
405
- this._getCompletionSuggestionsAbsolute(
406
- sourceFilePath,
407
- execEnv,
408
- this._configOptions.stubPath,
409
- moduleDescriptor,
410
- suggestions
411
- );
412
- }
413
-
414
- // Check for a typeshed file.
415
- this._getCompletionSuggestionsTypeshedPath(sourceFilePath, execEnv, moduleDescriptor, false, suggestions);
416
-
417
- // Look for the import in the list of third-party packages.
418
- const pythonSearchPaths = this.getPythonSearchPaths(importFailureInfo);
419
- for (const searchPath of pythonSearchPaths) {
420
- this._getCompletionSuggestionsAbsolute(
421
- sourceFilePath,
422
- execEnv,
423
- searchPath,
424
- moduleDescriptor,
425
- suggestions
426
- );
427
- }
428
- }
429
-
430
- return suggestions;
431
- }
432
-
433
- // Returns the implementation file(s) for the given stub file.
434
- getSourceFilesFromStub(stubFilePath: string, execEnv: ExecutionEnvironment, _mapCompiled: boolean): string[] {
435
- const sourceFilePaths: string[] = [];
436
-
437
- // When ImportResolver resolves an import to a stub file, a second resolve is done
438
- // ignoring stub files, which gives us an approximation of where the implementation
439
- // for that stub is located.
440
- this._cachedImportResults.forEach((map) => {
441
- map.forEach((result) => {
442
- if (result.isStubFile && result.isImportFound && result.nonStubImportResult) {
443
- if (result.resolvedPaths[result.resolvedPaths.length - 1] === stubFilePath) {
444
- if (result.nonStubImportResult.isImportFound) {
445
- const nonEmptyPath =
446
- result.nonStubImportResult.resolvedPaths[
447
- result.nonStubImportResult.resolvedPaths.length - 1
448
- ];
449
-
450
- if (nonEmptyPath.endsWith('.py') || nonEmptyPath.endsWith('.pyi')) {
451
- // We allow pyi in case there are multiple pyi for a compiled module such as
452
- // numpy.random.mtrand
453
- sourceFilePaths.push(nonEmptyPath);
454
- }
455
- }
456
- }
457
- }
458
- });
459
- });
460
-
461
- // We haven't seen an import of that stub, attempt to find the source
462
- // in some other ways.
463
- if (sourceFilePaths.length === 0) {
464
- // Simple case where the stub and source files are next to each other.
465
- const sourceFilePath = changeAnyExtension(stubFilePath, '.py');
466
- if (this.dirExistsCached(sourceFilePath)) {
467
- sourceFilePaths.push(sourceFilePath);
468
- }
469
- }
470
-
471
- if (sourceFilePaths.length === 0) {
472
- // The stub and the source file may have the same name, but be located
473
- // in different folder hierarchies.
474
- // Example:
475
- // <stubPath>\package\module.pyi
476
- // <site-packages>\package\module.py
477
- // We get the relative path(s) of the stub to its import root(s),
478
- // in theory there can be more than one, then look for source
479
- // files in all the import roots using the same relative path(s).
480
- const importRootPaths = this.getImportRoots(execEnv);
481
-
482
- const relativeStubPaths: string[] = [];
483
- for (const importRootPath of importRootPaths) {
484
- if (containsPath(importRootPath, stubFilePath, true)) {
485
- const parts = getRelativePathComponentsFromDirectory(importRootPath, stubFilePath, true);
486
-
487
- // Note that relative paths have an empty parts[0]
488
- if (parts.length > 1) {
489
- // Handle the case where the symbol was resolved to a stubs package
490
- // rather than the real package. We'll strip off the "-stubs" suffix
491
- // in this case.
492
- if (parts[1].endsWith(stubsSuffix)) {
493
- parts[1] = parts[1].substr(0, parts[1].length - stubsSuffix.length);
494
- }
495
-
496
- const relativeStubPath = combinePathComponents(parts);
497
- if (relativeStubPath) {
498
- relativeStubPaths.push(relativeStubPath);
499
- }
500
- }
501
- }
502
- }
503
-
504
- for (const relativeStubPath of relativeStubPaths) {
505
- for (const importRootPath of importRootPaths) {
506
- const absoluteStubPath = resolvePaths(importRootPath, relativeStubPath);
507
- let absoluteSourcePath = changeAnyExtension(absoluteStubPath, '.py');
508
- if (this.fileExistsCached(absoluteSourcePath)) {
509
- sourceFilePaths.push(absoluteSourcePath);
510
- } else {
511
- const filePathWithoutExtension = stripFileExtension(absoluteSourcePath);
512
-
513
- if (filePathWithoutExtension.endsWith('__init__')) {
514
- // Did not match: <root>/package/__init__.py
515
- // Try equivalent: <root>/package.py
516
- absoluteSourcePath =
517
- filePathWithoutExtension.substr(0, filePathWithoutExtension.length - 9) + '.py';
518
- if (this.fileExistsCached(absoluteSourcePath)) {
519
- sourceFilePaths.push(absoluteSourcePath);
520
- }
521
- } else {
522
- // Did not match: <root>/package.py
523
- // Try equivalent: <root>/package/__init__.py
524
- absoluteSourcePath = combinePaths(filePathWithoutExtension, '__init__.py');
525
- if (this.fileExistsCached(absoluteSourcePath)) {
526
- sourceFilePaths.push(absoluteSourcePath);
527
- }
528
- }
529
- }
530
- }
531
- }
532
- }
533
-
534
- return sourceFilePaths;
535
- }
536
-
537
- // Returns the module name (of the form X.Y.Z) that needs to be imported
538
- // from the current context to access the module with the specified file path.
539
- // In a sense, it's performing the inverse of resolveImport.
540
- getModuleNameForImport(filePath: string, execEnv: ExecutionEnvironment) {
541
- // Cache results of the reverse of resolveImport as we cache resolveImport.
542
- const cache = getOrAdd(this._cachedModuleNameResults, execEnv.root, () => new Map<string, ModuleNameAndType>());
543
- return getOrAdd(cache, filePath, () => this._getModuleNameForImport(filePath, execEnv));
544
- }
545
-
546
- private _getModuleNameForImport(filePath: string, execEnv: ExecutionEnvironment): ModuleNameAndType {
547
- let moduleName: string | undefined;
548
- let importType = ImportType.BuiltIn;
549
- let isLocalTypingsFile = false;
550
-
551
- const importFailureInfo: string[] = [];
552
-
553
- // Is this a stdlib typeshed path?
554
- const stdLibTypeshedPath = this._getStdlibTypeshedPath(execEnv, importFailureInfo);
555
- if (stdLibTypeshedPath) {
556
- moduleName = this.getModuleNameFromPath(stdLibTypeshedPath, filePath);
557
- if (moduleName) {
558
- const moduleDescriptor: ImportedModuleDescriptor = {
559
- leadingDots: 0,
560
- nameParts: moduleName.split('.'),
561
- importedSymbols: undefined,
562
- };
563
-
564
- if (this._isStdlibTypeshedStubValidForVersion(moduleDescriptor, execEnv, [])) {
565
- return { moduleName, importType, isLocalTypingsFile };
566
- }
567
- }
568
- }
569
-
570
- // Look for it in the root directory of the execution environment.
571
- if (execEnv.root) {
572
- moduleName = this.getModuleNameFromPath(execEnv.root, filePath);
573
- importType = ImportType.Local;
574
- }
575
-
576
- for (const extraPath of execEnv.extraPaths) {
577
- const candidateModuleName = this.getModuleNameFromPath(extraPath, filePath);
578
-
579
- // Does this candidate look better than the previous best module name?
580
- // We'll always try to use the shortest version.
581
- if (!moduleName || (candidateModuleName && candidateModuleName.length < moduleName.length)) {
582
- moduleName = candidateModuleName;
583
- importType = ImportType.Local;
584
- }
585
- }
586
-
587
- // Check for a typings file.
588
- if (this._configOptions.stubPath) {
589
- const candidateModuleName = this.getModuleNameFromPath(this._configOptions.stubPath, filePath);
590
-
591
- // Does this candidate look better than the previous best module name?
592
- // We'll always try to use the shortest version.
593
- if (!moduleName || (candidateModuleName && candidateModuleName.length < moduleName.length)) {
594
- moduleName = candidateModuleName;
595
-
596
- // Treat the typings path as a local import so errors are reported for it.
597
- importType = ImportType.Local;
598
- isLocalTypingsFile = true;
599
- }
600
- }
601
-
602
- // Check for a typeshed file.
603
- const thirdPartyTypeshedPath = this._getThirdPartyTypeshedPath(execEnv, importFailureInfo);
604
- if (thirdPartyTypeshedPath) {
605
- const candidateModuleName = this.getModuleNameFromPath(
606
- thirdPartyTypeshedPath,
607
- filePath,
608
- /* stripTopContainerDir */ true
609
- );
610
-
611
- // Does this candidate look better than the previous best module name?
612
- // We'll always try to use the shortest version.
613
- if (!moduleName || (candidateModuleName && candidateModuleName.length < moduleName.length)) {
614
- moduleName = candidateModuleName;
615
- importType = ImportType.ThirdParty;
616
- }
617
- }
618
-
619
- const thirdPartyTypeshedPathEx = this.getTypeshedPathEx(execEnv, importFailureInfo);
620
- if (thirdPartyTypeshedPathEx) {
621
- const candidateModuleName = this.getModuleNameFromPath(thirdPartyTypeshedPathEx, filePath);
622
-
623
- // Does this candidate look better than the previous best module name?
624
- // We'll always try to use the shortest version.
625
- if (!moduleName || (candidateModuleName && candidateModuleName.length < moduleName.length)) {
626
- moduleName = candidateModuleName;
627
- importType = ImportType.ThirdParty;
628
- }
629
- }
630
-
631
- // Look for the import in the list of third-party packages.
632
- const pythonSearchPaths = this.getPythonSearchPaths(importFailureInfo);
633
- for (const searchPath of pythonSearchPaths) {
634
- const candidateModuleName = this.getModuleNameFromPath(searchPath, filePath);
635
-
636
- // Does this candidate look better than the previous best module name?
637
- // We'll always try to use the shortest version.
638
- if (!moduleName || (candidateModuleName && candidateModuleName.length < moduleName.length)) {
639
- moduleName = candidateModuleName;
640
- importType = ImportType.ThirdParty;
641
- }
642
- }
643
-
644
- if (moduleName) {
645
- return { moduleName, importType, isLocalTypingsFile };
646
- }
647
-
648
- // We didn't find any module name.
649
- return { moduleName: '', importType: ImportType.Local, isLocalTypingsFile };
650
- }
651
-
652
- getTypeshedStdLibPath(execEnv: ExecutionEnvironment) {
653
- const unused: string[] = [];
654
- return this._getStdlibTypeshedPath(execEnv, unused);
655
- }
656
-
657
- getImportRoots(execEnv: ExecutionEnvironment, forLogging = false) {
658
- const importFailureInfo: string[] = [];
659
- const roots = [];
660
-
661
- const stdTypeshed = this._getStdlibTypeshedPath(execEnv, importFailureInfo);
662
- if (stdTypeshed) {
663
- roots.push(stdTypeshed);
664
- }
665
-
666
- // The "default" workspace has a root-less execution environment; ignore it.
667
- if (execEnv.root) {
668
- roots.push(execEnv.root);
669
- }
670
-
671
- appendArray(roots, execEnv.extraPaths);
672
-
673
- if (this._configOptions.stubPath) {
674
- roots.push(this._configOptions.stubPath);
675
- }
676
-
677
- if (forLogging) {
678
- // There's one path for each third party package, which blows up logging.
679
- // Just get the root directly and show it with `...` to indicate that this
680
- // is where the third party folder is in the roots.
681
- const thirdPartyRoot = this._getThirdPartyTypeshedPath(execEnv, importFailureInfo);
682
- if (thirdPartyRoot) {
683
- roots.push(combinePaths(thirdPartyRoot, '...'));
684
- }
685
- } else {
686
- const thirdPartyPaths = this._getThirdPartyTypeshedPackageRoots(execEnv, importFailureInfo);
687
- appendArray(roots, thirdPartyPaths);
688
- }
689
-
690
- const typeshedPathEx = this.getTypeshedPathEx(execEnv, importFailureInfo);
691
- if (typeshedPathEx) {
692
- roots.push(typeshedPathEx);
693
- }
694
-
695
- const pythonSearchPaths = this.getPythonSearchPaths(importFailureInfo);
696
- if (pythonSearchPaths.length > 0) {
697
- appendArray(roots, pythonSearchPaths);
698
- }
699
-
700
- return roots;
701
- }
702
-
703
- protected readdirEntriesCached(path: string): Dirent[] {
704
- const cachedValue = this._cachedEntriesForPath.get(path);
705
- if (cachedValue) {
706
- return cachedValue;
707
- }
708
-
709
- let newCacheValue: Dirent[];
710
- try {
711
- newCacheValue = this.fileSystem.readdirEntriesSync(path);
712
- } catch {
713
- newCacheValue = [];
714
- }
715
-
716
- // Populate cache for next time.
717
- this._cachedEntriesForPath.set(path, newCacheValue);
718
- return newCacheValue;
719
- }
720
-
721
- protected fileExistsCached(path: string): boolean {
722
- const splitPath = this._splitPath(path);
723
-
724
- if (!splitPath[0] || !splitPath[1]) {
725
- if (!this.fileSystem.existsSync(path)) {
726
- return false;
727
- }
728
- return tryStat(this.fileSystem, path)?.isFile() ?? false;
729
- }
730
-
731
- const entries = this.readdirEntriesCached(splitPath[0]);
732
- const entry = entries.find((entry) => entry.name === splitPath[1]);
733
- if (entry?.isFile()) {
734
- return true;
735
- }
736
-
737
- if (entry?.isSymbolicLink()) {
738
- const realPath = tryRealpath(this.fileSystem, path);
739
- if (realPath && this.fileSystem.existsSync(realPath) && isFile(this.fileSystem, realPath)) {
740
- return true;
741
- }
742
- }
743
-
744
- return false;
745
- }
746
-
747
- protected dirExistsCached(path: string): boolean {
748
- const splitPath = this._splitPath(path);
749
-
750
- if (!splitPath[0] || !splitPath[1]) {
751
- if (!this.fileSystem.existsSync(path)) {
752
- return false;
753
- }
754
- return tryStat(this.fileSystem, path)?.isDirectory() ?? false;
755
- }
756
-
757
- const entries = this.readdirEntriesCached(splitPath[0]);
758
- const entry = entries.find((entry) => entry.name === splitPath[1]);
759
- if (entry?.isDirectory()) {
760
- return true;
761
- }
762
-
763
- if (entry?.isSymbolicLink()) {
764
- const realPath = tryRealpath(this.fileSystem, path);
765
- if (realPath && this.fileSystem.existsSync(realPath) && isDirectory(this.fileSystem, realPath)) {
766
- return true;
767
- }
768
- }
769
-
770
- return false;
771
- }
772
-
773
- ensurePartialStubPackages(execEnv: ExecutionEnvironment) {
774
- if (!(this.fileSystem instanceof PyrightFileSystem)) {
775
- return false;
776
- }
777
-
778
- if (this.fileSystem.isPartialStubPackagesScanned(execEnv)) {
779
- return false;
780
- }
781
-
782
- const fs = this.fileSystem;
783
- const ignored: string[] = [];
784
- const paths: string[] = [];
785
-
786
- // Add paths to search stub packages.
787
- addPaths(this._configOptions.stubPath);
788
- addPaths(execEnv.root);
789
- execEnv.extraPaths.forEach((p) => addPaths(p));
790
- addPaths(this.getTypeshedPathEx(execEnv, ignored));
791
- this.getPythonSearchPaths(ignored).forEach((p) => addPaths(p));
792
-
793
- this.fileSystem.processPartialStubPackages(paths, this.getImportRoots(execEnv));
794
- this._invalidateFileSystemCache();
795
- return true;
796
-
797
- function addPaths(path?: string) {
798
- if (!path || fs.isPathScanned(path)) {
799
- return;
800
- }
801
-
802
- paths.push(path);
803
- }
804
- }
805
-
806
- protected addResultsToCache(
807
- execEnv: ExecutionEnvironment,
808
- importName: string,
809
- importResult: ImportResult,
810
- importedSymbols: string[] | undefined
811
- ) {
812
- getOrAdd(this._cachedImportResults, execEnv.root, () => new Map<string, ImportResult>()).set(
813
- importName,
814
- importResult
815
- );
816
-
817
- return this.filterImplicitImports(importResult, importedSymbols);
818
- }
819
-
820
- // Follows import resolution algorithm defined in PEP-420:
821
- // https://www.python.org/dev/peps/pep-0420/
822
- protected resolveAbsoluteImport(
823
- rootPath: string,
824
- execEnv: ExecutionEnvironment,
825
- moduleDescriptor: ImportedModuleDescriptor,
826
- importName: string,
827
- importFailureInfo: string[],
828
- allowPartial = false,
829
- allowNativeLib = false,
830
- useStubPackage = false,
831
- allowPyi = true,
832
- lookForPyTyped = false
833
- ): ImportResult {
834
- if (allowPyi && useStubPackage) {
835
- // Look for packaged stubs first. PEP 561 indicates that package authors can ship
836
- // their stubs separately from their package implementation by appending the string
837
- // '-stubs' to its top - level directory name. We'll look there first.
838
- const importResult = this._resolveAbsoluteImport(
839
- rootPath,
840
- execEnv,
841
- moduleDescriptor,
842
- importName,
843
- importFailureInfo,
844
- allowPartial,
845
- /* allowNativeLib */ false,
846
- /* useStubPackage */ true,
847
- /* allowPyi */ true,
848
- /* lookForPyTyped */ true
849
- );
850
-
851
- // We found fully typed stub packages.
852
- if (importResult.packageDirectory) {
853
- // If this is a namespace package that wasn't resolved, assume that
854
- // it's a partial stub package and continue looking for a real package.
855
- if (!importResult.isNamespacePackage || importResult.isImportFound) {
856
- return importResult;
857
- }
858
- }
859
- }
860
-
861
- return this._resolveAbsoluteImport(
862
- rootPath,
863
- execEnv,
864
- moduleDescriptor,
865
- importName,
866
- importFailureInfo,
867
- allowPartial,
868
- allowNativeLib,
869
- /* useStubPackage */ false,
870
- allowPyi,
871
- lookForPyTyped
872
- );
873
- }
874
-
875
- private _invalidateFileSystemCache() {
876
- this._cachedEntriesForPath.clear();
877
- }
878
-
879
- // Splits a path into the name of the containing directory and
880
- // a file or dir within that containing directory.
881
- private _splitPath(path: string): [string, string] {
882
- const pathComponents = getPathComponents(path);
883
- if (pathComponents.length <= 1) {
884
- return [path, ''];
885
- }
886
-
887
- const containingPath = combinePathComponents(pathComponents.slice(0, -1));
888
- const fileOrDirName = pathComponents[pathComponents.length - 1];
889
-
890
- return [containingPath, fileOrDirName];
891
- }
892
-
893
- private _resolveAbsoluteImport(
894
- rootPath: string,
895
- execEnv: ExecutionEnvironment,
896
- moduleDescriptor: ImportedModuleDescriptor,
897
- importName: string,
898
- importFailureInfo: string[],
899
- allowPartial: boolean,
900
- allowNativeLib: boolean,
901
- useStubPackage: boolean,
902
- allowPyi: boolean,
903
- lookForPyTyped: boolean
904
- ): ImportResult {
905
- if (useStubPackage) {
906
- importFailureInfo.push(`Attempting to resolve stub package using root path '${rootPath}'`);
907
- } else {
908
- importFailureInfo.push(`Attempting to resolve using root path '${rootPath}'`);
909
- }
910
-
911
- // Starting at the specified path, walk the file system to find the
912
- // specified module.
913
- const resolvedPaths: string[] = [];
914
- let dirPath = rootPath;
915
- let isNamespacePackage = false;
916
- let isStubPackage = false;
917
- let isStubFile = false;
918
- let isNativeLib = false;
919
- let implicitImports: ImplicitImport[] = [];
920
- let packageDirectory: string | undefined;
921
- let pyTypedInfo: PyTypedInfo | undefined;
922
-
923
- // Handle the "from . import XXX" case.
924
- if (moduleDescriptor.nameParts.length === 0) {
925
- const fileNameWithoutExtension = '__init__';
926
- const pyFilePath = combinePaths(dirPath, fileNameWithoutExtension + '.py');
927
- const pyiFilePath = combinePaths(dirPath, fileNameWithoutExtension + '.pyi');
928
-
929
- if (allowPyi && this.fileExistsCached(pyiFilePath)) {
930
- importFailureInfo.push(`Resolved import with file '${pyiFilePath}'`);
931
- resolvedPaths.push(pyiFilePath);
932
- isStubFile = true;
933
- } else if (this.fileExistsCached(pyFilePath)) {
934
- importFailureInfo.push(`Resolved import with file '${pyFilePath}'`);
935
- resolvedPaths.push(pyFilePath);
936
- } else {
937
- importFailureInfo.push(`Partially resolved import with directory '${dirPath}'`);
938
- resolvedPaths.push('');
939
- isNamespacePackage = true;
940
- }
941
-
942
- implicitImports = this._findImplicitImports(importName, dirPath, [pyFilePath, pyiFilePath]);
943
- } else {
944
- for (let i = 0; i < moduleDescriptor.nameParts.length; i++) {
945
- const isFirstPart = i === 0;
946
- const isLastPart = i === moduleDescriptor.nameParts.length - 1;
947
- dirPath = combinePaths(dirPath, moduleDescriptor.nameParts[i]);
948
-
949
- if (useStubPackage && isFirstPart) {
950
- dirPath += stubsSuffix;
951
- isStubPackage = true;
952
- }
953
-
954
- const foundDirectory = this.dirExistsCached(dirPath);
955
-
956
- if (foundDirectory) {
957
- if (isFirstPart) {
958
- packageDirectory = dirPath;
959
- }
960
-
961
- // See if we can find an __init__.py[i] in this directory.
962
- const fileNameWithoutExtension = '__init__';
963
- const pyFilePath = combinePaths(dirPath, fileNameWithoutExtension + '.py');
964
- const pyiFilePath = combinePaths(dirPath, fileNameWithoutExtension + '.pyi');
965
- let foundInit = false;
966
-
967
- if (allowPyi && this.fileExistsCached(pyiFilePath)) {
968
- importFailureInfo.push(`Resolved import with file '${pyiFilePath}'`);
969
- resolvedPaths.push(pyiFilePath);
970
- if (isLastPart) {
971
- isStubFile = true;
972
- }
973
- foundInit = true;
974
- } else if (this.fileExistsCached(pyFilePath)) {
975
- importFailureInfo.push(`Resolved import with file '${pyFilePath}'`);
976
- resolvedPaths.push(pyFilePath);
977
- foundInit = true;
978
- }
979
-
980
- if (!pyTypedInfo && lookForPyTyped) {
981
- if (this.fileExistsCached(combinePaths(dirPath, 'py.typed'))) {
982
- pyTypedInfo = getPyTypedInfo(this.fileSystem, dirPath);
983
- }
984
- }
985
-
986
- if (!isLastPart) {
987
- // We are not at the last part, and we found a directory,
988
- // so continue to look for the next part.
989
- if (!foundInit) {
990
- resolvedPaths.push('');
991
- isNamespacePackage = true;
992
- pyTypedInfo = undefined;
993
- }
994
- continue;
995
- }
996
-
997
- if (foundInit) {
998
- implicitImports = this._findImplicitImports(moduleDescriptor.nameParts.join('.'), dirPath, [
999
- pyFilePath,
1000
- pyiFilePath,
1001
- ]);
1002
- break;
1003
- }
1004
- }
1005
-
1006
- // We weren't able to find a directory or we found a directory with
1007
- // no __init__.py[i] file. See if we can find a ".py" or ".pyi" file
1008
- // with this name.
1009
- let fileDirectory = stripTrailingDirectorySeparator(dirPath);
1010
- const fileNameWithoutExtension = getFileName(fileDirectory);
1011
- fileDirectory = getDirectoryPath(fileDirectory);
1012
- const pyFilePath = combinePaths(fileDirectory, fileNameWithoutExtension + '.py');
1013
- const pyiFilePath = combinePaths(fileDirectory, fileNameWithoutExtension + '.pyi');
1014
-
1015
- if (allowPyi && this.fileExistsCached(pyiFilePath)) {
1016
- importFailureInfo.push(`Resolved import with file '${pyiFilePath}'`);
1017
- resolvedPaths.push(pyiFilePath);
1018
- if (isLastPart) {
1019
- isStubFile = true;
1020
- }
1021
- } else if (this.fileExistsCached(pyFilePath)) {
1022
- importFailureInfo.push(`Resolved import with file '${pyFilePath}'`);
1023
- resolvedPaths.push(pyFilePath);
1024
- } else {
1025
- if (allowNativeLib && this.dirExistsCached(fileDirectory)) {
1026
- const filesInDir = this._getFilesInDirectory(fileDirectory);
1027
- const nativeLibFileName = filesInDir.find((f) =>
1028
- this._isNativeModuleFileName(fileNameWithoutExtension, f)
1029
- );
1030
- if (nativeLibFileName) {
1031
- const nativeLibPath = combinePaths(fileDirectory, nativeLibFileName);
1032
- // Try resolving native library to a custom stub.
1033
- isNativeLib = this._resolveNativeModuleStub(
1034
- nativeLibPath,
1035
- execEnv,
1036
- importName,
1037
- moduleDescriptor,
1038
- importFailureInfo,
1039
- resolvedPaths
1040
- );
1041
- }
1042
- }
1043
-
1044
- if (!isNativeLib && foundDirectory) {
1045
- importFailureInfo.push(`Partially resolved import with directory '${dirPath}'`);
1046
- resolvedPaths.push('');
1047
- if (isLastPart) {
1048
- implicitImports = this._findImplicitImports(importName, dirPath, [pyFilePath, pyiFilePath]);
1049
- isNamespacePackage = true;
1050
- }
1051
- } else if (isNativeLib) {
1052
- importFailureInfo.push(`Did not find file '${pyiFilePath}' or '${pyFilePath}'`);
1053
- }
1054
- }
1055
- break;
1056
- }
1057
- }
1058
-
1059
- let importFound: boolean;
1060
- const isPartlyResolved = resolvedPaths.length > 0 && resolvedPaths.length < moduleDescriptor.nameParts.length;
1061
- if (allowPartial) {
1062
- importFound = resolvedPaths.length > 0;
1063
- } else {
1064
- importFound = resolvedPaths.length >= moduleDescriptor.nameParts.length;
1065
- }
1066
-
1067
- return {
1068
- importName,
1069
- isRelative: false,
1070
- isNamespacePackage,
1071
- isStubPackage,
1072
- isImportFound: importFound,
1073
- isPartlyResolved,
1074
- importFailureInfo,
1075
- importType: ImportType.Local,
1076
- resolvedPaths,
1077
- searchPath: rootPath,
1078
- isStubFile,
1079
- isNativeLib,
1080
- implicitImports,
1081
- pyTypedInfo,
1082
- filteredImplicitImports: implicitImports,
1083
- packageDirectory,
1084
- };
1085
- }
1086
-
1087
- // Intended to be overridden by subclasses to provide additional stub
1088
- // path capabilities. Return undefined if no extra stub path were found.
1089
- protected getTypeshedPathEx(execEnv: ExecutionEnvironment, importFailureInfo: string[]): string | undefined {
1090
- return undefined;
1091
- }
1092
-
1093
- // Intended to be overridden by subclasses to provide additional stub
1094
- // resolving capabilities. Return undefined if no stubs were found for
1095
- // this import.
1096
- protected resolveImportEx(
1097
- sourceFilePath: string,
1098
- execEnv: ExecutionEnvironment,
1099
- moduleDescriptor: ImportedModuleDescriptor,
1100
- importName: string,
1101
- importFailureInfo: string[] = [],
1102
- allowPyi = true
1103
- ): ImportResult | undefined {
1104
- return undefined;
1105
- }
1106
-
1107
- // Intended to be overridden by subclasses to provide additional stub
1108
- // resolving capabilities for native (compiled) modules. Returns undefined
1109
- // if no stubs were found for this import.
1110
- protected resolveNativeImportEx(
1111
- libraryFilePath: string,
1112
- importName: string,
1113
- importFailureInfo: string[] = []
1114
- ): string | undefined {
1115
- return undefined;
1116
- }
1117
-
1118
- protected getNativeModuleName(fileName: string): string | undefined {
1119
- const fileExtension = getFileExtension(fileName, /* multiDotExtension */ false).toLowerCase();
1120
- if (this._isNativeModuleFileExtension(fileExtension)) {
1121
- return stripFileExtension(stripFileExtension(fileName));
1122
- }
1123
- return undefined;
1124
- }
1125
-
1126
- private _lookUpResultsInCache(
1127
- execEnv: ExecutionEnvironment,
1128
- importName: string,
1129
- importedSymbols: string[] | undefined
1130
- ) {
1131
- const cacheForExecEnv = this._cachedImportResults.get(execEnv.root);
1132
- if (!cacheForExecEnv) {
1133
- return undefined;
1134
- }
1135
-
1136
- const cachedEntry = cacheForExecEnv.get(importName);
1137
- if (!cachedEntry) {
1138
- return undefined;
1139
- }
1140
-
1141
- return this.filterImplicitImports(cachedEntry, importedSymbols);
1142
- }
1143
-
1144
- // Determines whether a namespace package resolves all of the symbols
1145
- // requested in the module descriptor. Namespace packages have no "__init__.py"
1146
- // file, so the only way that symbols can be resolved is if submodules
1147
- // are present. If specific symbols were requested, make sure they
1148
- // are all satisfied by submodules (as listed in the implicit imports).
1149
- private _isNamespacePackageResolved(moduleDescriptor: ImportedModuleDescriptor, implicitImports: ImplicitImport[]) {
1150
- if (moduleDescriptor.importedSymbols) {
1151
- if (
1152
- !moduleDescriptor.importedSymbols.some((symbol) => {
1153
- return implicitImports.some((implicitImport) => {
1154
- return implicitImport.name === symbol;
1155
- });
1156
- })
1157
- ) {
1158
- return false;
1159
- }
1160
- } else if (implicitImports.length === 0) {
1161
- return false;
1162
- }
1163
- return true;
1164
- }
1165
-
1166
- protected getModuleNameFromPath(
1167
- containerPath: string,
1168
- filePath: string,
1169
- stripTopContainerDir = false
1170
- ): string | undefined {
1171
- containerPath = ensureTrailingDirectorySeparator(containerPath);
1172
- let filePathWithoutExtension = stripFileExtension(filePath);
1173
-
1174
- // If module is native, strip platform part, such as 'cp36-win_amd64' in 'mtrand.cp36-win_amd64'.
1175
- if (this._isNativeModuleFileExtension(getFileExtension(filePath))) {
1176
- filePathWithoutExtension = stripFileExtension(filePathWithoutExtension);
1177
- }
1178
-
1179
- if (!filePathWithoutExtension.startsWith(containerPath)) {
1180
- return undefined;
1181
- }
1182
-
1183
- // Strip off the '/__init__' if it's present.
1184
- if (filePathWithoutExtension.endsWith('__init__')) {
1185
- filePathWithoutExtension = filePathWithoutExtension.substr(0, filePathWithoutExtension.length - 9);
1186
- }
1187
-
1188
- const relativeFilePath = filePathWithoutExtension.substr(containerPath.length);
1189
- const parts = getPathComponents(relativeFilePath);
1190
- parts.shift();
1191
- if (stripTopContainerDir) {
1192
- if (parts.length === 0) {
1193
- return undefined;
1194
- }
1195
- parts.shift();
1196
- }
1197
-
1198
- if (parts.length === 0) {
1199
- return undefined;
1200
- }
1201
-
1202
- // Handle the case where the symbol was resolved to a stubs package
1203
- // rather than the real package. We'll strip off the "-stubs" suffix
1204
- // in this case.
1205
- if (parts[0].endsWith(stubsSuffix)) {
1206
- parts[0] = parts[0].substr(0, parts[0].length - stubsSuffix.length);
1207
- }
1208
-
1209
- // Check whether parts contains invalid characters.
1210
- if (parts.some((p) => !this._isIdentifier(p))) {
1211
- return undefined;
1212
- }
1213
-
1214
- return parts.join('.');
1215
- }
1216
-
1217
- private _resolveBestAbsoluteImport(
1218
- sourceFilePath: string,
1219
- execEnv: ExecutionEnvironment,
1220
- moduleDescriptor: ImportedModuleDescriptor,
1221
- allowPyi: boolean
1222
- ): ImportResult | undefined {
1223
- const importName = this.formatImportName(moduleDescriptor);
1224
- const importFailureInfo: string[] = [];
1225
-
1226
- // Check for a local stub file using stubPath.
1227
- if (allowPyi && this._configOptions.stubPath) {
1228
- importFailureInfo.push(`Looking in stubPath '${this._configOptions.stubPath}'`);
1229
- const typingsImport = this.resolveAbsoluteImport(
1230
- this._configOptions.stubPath,
1231
- execEnv,
1232
- moduleDescriptor,
1233
- importName,
1234
- importFailureInfo,
1235
- /* allowPartial */ undefined,
1236
- /* allowNativeLib */ false,
1237
- /* useStubPackage */ true,
1238
- allowPyi,
1239
- /* lookForPyTyped */ false
1240
- );
1241
-
1242
- if (typingsImport.isImportFound) {
1243
- // We will treat typings files as "local" rather than "third party".
1244
- typingsImport.importType = ImportType.Local;
1245
- typingsImport.isLocalTypingsFile = true;
1246
-
1247
- // If it's a namespace package that didn't resolve to a file, make sure that
1248
- // the imported symbols are present in the implicit imports. If not, we'll
1249
- // skip the typings import and continue searching.
1250
- if (
1251
- typingsImport.isNamespacePackage &&
1252
- !typingsImport.resolvedPaths[typingsImport.resolvedPaths.length - 1]
1253
- ) {
1254
- if (this._isNamespacePackageResolved(moduleDescriptor, typingsImport.implicitImports)) {
1255
- return typingsImport;
1256
- }
1257
- } else {
1258
- return typingsImport;
1259
- }
1260
- }
1261
- }
1262
-
1263
- let bestResultSoFar: ImportResult | undefined;
1264
- let localImport: ImportResult | undefined;
1265
-
1266
- // Look for it in the root directory of the execution environment.
1267
- if (execEnv.root) {
1268
- importFailureInfo.push(`Looking in root directory of execution environment ` + `'${execEnv.root}'`);
1269
-
1270
- localImport = this.resolveAbsoluteImport(
1271
- execEnv.root,
1272
- execEnv,
1273
- moduleDescriptor,
1274
- importName,
1275
- importFailureInfo,
1276
- /* allowPartial */ undefined,
1277
- /* allowNativeLib */ true,
1278
- /* useStubPackage */ true,
1279
- allowPyi,
1280
- /* lookForPyTyped */ false
1281
- );
1282
- bestResultSoFar = localImport;
1283
- }
1284
-
1285
- for (const extraPath of execEnv.extraPaths) {
1286
- importFailureInfo.push(`Looking in extraPath '${extraPath}'`);
1287
- localImport = this.resolveAbsoluteImport(
1288
- extraPath,
1289
- execEnv,
1290
- moduleDescriptor,
1291
- importName,
1292
- importFailureInfo,
1293
- /* allowPartial */ undefined,
1294
- /* allowNativeLib */ true,
1295
- /* useStubPackage */ true,
1296
- allowPyi,
1297
- /* lookForPyTyped */ false
1298
- );
1299
- bestResultSoFar = this._pickBestImport(bestResultSoFar, localImport, moduleDescriptor);
1300
- }
1301
-
1302
- // Look for the import in the list of third-party packages.
1303
- const pythonSearchPaths = this.getPythonSearchPaths(importFailureInfo);
1304
- if (pythonSearchPaths.length > 0) {
1305
- for (const searchPath of pythonSearchPaths) {
1306
- importFailureInfo.push(`Looking in python search path '${searchPath}'`);
1307
-
1308
- const thirdPartyImport = this.resolveAbsoluteImport(
1309
- searchPath,
1310
- execEnv,
1311
- moduleDescriptor,
1312
- importName,
1313
- importFailureInfo,
1314
- /* allowPartial */ allowPartialResolutionForThirdPartyPackages,
1315
- /* allowNativeLib */ true,
1316
- /* useStubPackage */ true,
1317
- allowPyi,
1318
- /* lookForPyTyped */ true
1319
- );
1320
-
1321
- if (thirdPartyImport) {
1322
- thirdPartyImport.importType = ImportType.ThirdParty;
1323
-
1324
- bestResultSoFar = this._pickBestImport(bestResultSoFar, thirdPartyImport, moduleDescriptor);
1325
- }
1326
- }
1327
- } else {
1328
- importFailureInfo.push('No python interpreter search path');
1329
- }
1330
-
1331
- // If a library is fully py.typed, then we have found the best match,
1332
- // unless the execution environment is typeshed itself, in which case
1333
- // we don't want to favor py.typed libraries. Use the typeshed lookup below.
1334
- if (execEnv.root !== this._getTypeshedRoot(execEnv, importFailureInfo)) {
1335
- if (bestResultSoFar?.pyTypedInfo && !bestResultSoFar.isPartlyResolved) {
1336
- return bestResultSoFar;
1337
- }
1338
- }
1339
-
1340
- // Call the extensibility hook for subclasses.
1341
- const extraResults = this.resolveImportEx(
1342
- sourceFilePath,
1343
- execEnv,
1344
- moduleDescriptor,
1345
- importName,
1346
- importFailureInfo,
1347
- allowPyi
1348
- );
1349
-
1350
- if (extraResults) {
1351
- return extraResults;
1352
- }
1353
-
1354
- if (allowPyi && moduleDescriptor.nameParts.length > 0) {
1355
- // Check for a stdlib typeshed file.
1356
- importFailureInfo.push(`Looking for typeshed stdlib path`);
1357
- const typeshedStdlibImport = this._findTypeshedPath(
1358
- execEnv,
1359
- moduleDescriptor,
1360
- importName,
1361
- /* isStdLib */ true,
1362
- importFailureInfo
1363
- );
1364
-
1365
- if (typeshedStdlibImport) {
1366
- typeshedStdlibImport.isTypeshedFile = true;
1367
- return typeshedStdlibImport;
1368
- }
1369
-
1370
- // Check for a third-party typeshed file.
1371
- importFailureInfo.push(`Looking for typeshed third-party path`);
1372
- const typeshedImport = this._findTypeshedPath(
1373
- execEnv,
1374
- moduleDescriptor,
1375
- importName,
1376
- /* isStdLib */ false,
1377
- importFailureInfo
1378
- );
1379
-
1380
- if (typeshedImport) {
1381
- typeshedImport.isTypeshedFile = true;
1382
- bestResultSoFar = this._pickBestImport(bestResultSoFar, typeshedImport, moduleDescriptor);
1383
- }
1384
- }
1385
-
1386
- // We weren't able to find an exact match, so return the best
1387
- // partial match.
1388
- return bestResultSoFar;
1389
- }
1390
-
1391
- private _pickBestImport(
1392
- bestImportSoFar: ImportResult | undefined,
1393
- newImport: ImportResult | undefined,
1394
- moduleDescriptor: ImportedModuleDescriptor
1395
- ) {
1396
- if (!bestImportSoFar) {
1397
- return newImport;
1398
- }
1399
-
1400
- if (!newImport) {
1401
- return bestImportSoFar;
1402
- }
1403
-
1404
- if (newImport.isImportFound) {
1405
- // Prefer found over not found.
1406
- if (!bestImportSoFar.isImportFound) {
1407
- return newImport;
1408
- }
1409
-
1410
- // Prefer traditional over namespace imports.
1411
- if (bestImportSoFar.isNamespacePackage && !newImport.isNamespacePackage) {
1412
- return newImport;
1413
- }
1414
-
1415
- // Prefer local packages.
1416
- if (bestImportSoFar.importType === ImportType.Local && !bestImportSoFar.isNamespacePackage) {
1417
- return bestImportSoFar;
1418
- }
1419
-
1420
- // If both are namespace imports, select the one that resolves the symbols.
1421
- if (
1422
- bestImportSoFar.isNamespacePackage &&
1423
- newImport.isNamespacePackage &&
1424
- moduleDescriptor.importedSymbols
1425
- ) {
1426
- if (
1427
- !this._isNamespacePackageResolved(moduleDescriptor, bestImportSoFar.implicitImports) &&
1428
- this._isNamespacePackageResolved(moduleDescriptor, newImport.implicitImports)
1429
- ) {
1430
- return newImport;
1431
- }
1432
- }
1433
-
1434
- // Prefer py.typed over non-py.typed.
1435
- if (bestImportSoFar.pyTypedInfo && !newImport.pyTypedInfo) {
1436
- return bestImportSoFar;
1437
- } else if (!bestImportSoFar.pyTypedInfo && newImport.pyTypedInfo) {
1438
- return newImport;
1439
- }
1440
-
1441
- // Prefer pyi over py.
1442
- if (bestImportSoFar.isStubFile && !newImport.isStubFile) {
1443
- return bestImportSoFar;
1444
- } else if (!bestImportSoFar.isStubFile && newImport.isStubFile) {
1445
- return newImport;
1446
- }
1447
-
1448
- // All else equal, prefer shorter resolution paths.
1449
- if (bestImportSoFar.resolvedPaths.length > newImport.resolvedPaths.length) {
1450
- return newImport;
1451
- }
1452
- } else if (newImport.isPartlyResolved && bestImportSoFar.isNamespacePackage && !newImport.isNamespacePackage) {
1453
- // Always prefer a traditional over namespace import even
1454
- // if the traditional import is only partly resolved.
1455
- return newImport;
1456
- }
1457
-
1458
- return bestImportSoFar;
1459
- }
1460
-
1461
- private _isIdentifier(value: string) {
1462
- for (let i = 0; i < value.length; i++) {
1463
- if (i === 0 ? !isIdentifierStartChar(value.charCodeAt(i)) : !isIdentifierChar(value.charCodeAt(i))) {
1464
- return false;
1465
- }
1466
- }
1467
-
1468
- return true;
1469
- }
1470
-
1471
- protected getPythonSearchPaths(importFailureInfo: string[]) {
1472
- // Find the site packages for the configured virtual environment.
1473
- if (!this._cachedPythonSearchPaths) {
1474
- const paths = (
1475
- PythonPathUtils.findPythonSearchPaths(
1476
- this.fileSystem,
1477
- this._configOptions,
1478
- this.host,
1479
- importFailureInfo
1480
- ) || []
1481
- ).map((p) => this.fileSystem.realCasePath(p));
1482
-
1483
- // Remove duplicates (yes, it happens).
1484
- this._cachedPythonSearchPaths = [...new Set(paths)];
1485
- }
1486
-
1487
- return this._cachedPythonSearchPaths;
1488
- }
1489
-
1490
- private _findTypeshedPath(
1491
- execEnv: ExecutionEnvironment,
1492
- moduleDescriptor: ImportedModuleDescriptor,
1493
- importName: string,
1494
- isStdLib: boolean,
1495
- importFailureInfo: string[]
1496
- ): ImportResult | undefined {
1497
- importFailureInfo.push(
1498
- `Looking for typeshed ${
1499
- isStdLib ? PythonPathUtils.stdLibFolderName : PythonPathUtils.thirdPartyFolderName
1500
- } path`
1501
- );
1502
-
1503
- let typeshedPaths: string[] | undefined;
1504
- if (isStdLib) {
1505
- const path = this._getStdlibTypeshedPath(execEnv, importFailureInfo, moduleDescriptor);
1506
- if (path) {
1507
- typeshedPaths = [path];
1508
- }
1509
- } else {
1510
- typeshedPaths = this._getThirdPartyTypeshedPackagePaths(moduleDescriptor, execEnv, importFailureInfo);
1511
- }
1512
-
1513
- if (typeshedPaths) {
1514
- for (const typeshedPath of typeshedPaths) {
1515
- if (this.dirExistsCached(typeshedPath)) {
1516
- const importInfo = this.resolveAbsoluteImport(
1517
- typeshedPath,
1518
- execEnv,
1519
- moduleDescriptor,
1520
- importName,
1521
- importFailureInfo
1522
- );
1523
-
1524
- if (importInfo.isImportFound) {
1525
- importInfo.importType = isStdLib ? ImportType.BuiltIn : ImportType.ThirdParty;
1526
- return importInfo;
1527
- }
1528
- }
1529
- }
1530
- }
1531
-
1532
- importFailureInfo.push(`Typeshed path not found`);
1533
- return undefined;
1534
- }
1535
-
1536
- // Populates a cache of third-party packages found within the typeshed
1537
- // directory. They are organized such that top-level directories contain
1538
- // the pypi-registered name of the package and an inner directory contains
1539
- // the name of the package as it is referenced by import statements. These
1540
- // don't always match.
1541
- private _buildTypeshedThirdPartyPackageMap(thirdPartyDir: string | undefined) {
1542
- this._cachedTypeshedThirdPartyPackagePaths = new Map<string, string[]>();
1543
-
1544
- if (thirdPartyDir) {
1545
- this.readdirEntriesCached(thirdPartyDir).forEach((outerEntry) => {
1546
- if (outerEntry.isDirectory()) {
1547
- const innerDirPath = combinePaths(thirdPartyDir, outerEntry.name);
1548
-
1549
- this.readdirEntriesCached(innerDirPath).forEach((innerEntry) => {
1550
- if (innerEntry.name === '@python2') {
1551
- return;
1552
- }
1553
-
1554
- if (innerEntry.isDirectory()) {
1555
- const pathList = this._cachedTypeshedThirdPartyPackagePaths!.get(innerEntry.name);
1556
- if (pathList) {
1557
- pathList.push(innerDirPath);
1558
- } else {
1559
- this._cachedTypeshedThirdPartyPackagePaths!.set(innerEntry.name, [innerDirPath]);
1560
- }
1561
- } else if (innerEntry.isFile()) {
1562
- if (innerEntry.name.endsWith('.pyi')) {
1563
- const strippedFileName = stripFileExtension(innerEntry.name);
1564
- const pathList = this._cachedTypeshedThirdPartyPackagePaths!.get(strippedFileName);
1565
- if (pathList) {
1566
- pathList.push(innerDirPath);
1567
- } else {
1568
- this._cachedTypeshedThirdPartyPackagePaths!.set(strippedFileName, [innerDirPath]);
1569
- }
1570
- }
1571
- }
1572
- });
1573
- }
1574
- });
1575
- }
1576
-
1577
- const flattenPaths = [...this._cachedTypeshedThirdPartyPackagePaths.values()].flatMap((v) => v);
1578
- this._cachedTypeshedThirdPartyPackageRoots = [...new Set(flattenPaths)].sort();
1579
- }
1580
-
1581
- private _getCompletionSuggestionsTypeshedPath(
1582
- sourceFilePath: string,
1583
- execEnv: ExecutionEnvironment,
1584
- moduleDescriptor: ImportedModuleDescriptor,
1585
- isStdLib: boolean,
1586
- suggestions: Set<string>
1587
- ) {
1588
- const importFailureInfo: string[] = [];
1589
-
1590
- let typeshedPaths: string[] | undefined;
1591
- if (isStdLib) {
1592
- const path = this._getStdlibTypeshedPath(execEnv, importFailureInfo, moduleDescriptor);
1593
- if (path) {
1594
- typeshedPaths = [path];
1595
- }
1596
- } else {
1597
- typeshedPaths = this._getThirdPartyTypeshedPackagePaths(
1598
- moduleDescriptor,
1599
- execEnv,
1600
- importFailureInfo,
1601
- /* includeMatchOnly */ false
1602
- );
1603
-
1604
- const typeshedPathEx = this.getTypeshedPathEx(execEnv, importFailureInfo);
1605
- if (typeshedPathEx) {
1606
- typeshedPaths = typeshedPaths ?? [];
1607
- typeshedPaths.push(typeshedPathEx);
1608
- }
1609
- }
1610
-
1611
- if (!typeshedPaths) {
1612
- return;
1613
- }
1614
-
1615
- typeshedPaths.forEach((typeshedPath) => {
1616
- if (this.dirExistsCached(typeshedPath)) {
1617
- this._getCompletionSuggestionsAbsolute(
1618
- sourceFilePath,
1619
- execEnv,
1620
- typeshedPath,
1621
- moduleDescriptor,
1622
- suggestions
1623
- );
1624
- }
1625
- });
1626
- }
1627
-
1628
- // Returns the directory for a module within the stdlib typeshed directory.
1629
- // If moduleDescriptor is provided, it is filtered based on the VERSIONS
1630
- // file in the typeshed stubs.
1631
- private _getStdlibTypeshedPath(
1632
- execEnv: ExecutionEnvironment,
1633
- importFailureInfo: string[],
1634
- moduleDescriptor?: ImportedModuleDescriptor
1635
- ) {
1636
- const subdirectory = this._getTypeshedSubdirectory(/* isStdLib */ true, execEnv, importFailureInfo);
1637
- if (
1638
- subdirectory &&
1639
- moduleDescriptor &&
1640
- !this._isStdlibTypeshedStubValidForVersion(moduleDescriptor, execEnv, importFailureInfo)
1641
- ) {
1642
- return undefined;
1643
- }
1644
-
1645
- return subdirectory;
1646
- }
1647
-
1648
- private _getThirdPartyTypeshedPath(execEnv: ExecutionEnvironment, importFailureInfo: string[]) {
1649
- return this._getTypeshedSubdirectory(/* isStdLib */ false, execEnv, importFailureInfo);
1650
- }
1651
-
1652
- private _isStdlibTypeshedStubValidForVersion(
1653
- moduleDescriptor: ImportedModuleDescriptor,
1654
- execEnv: ExecutionEnvironment,
1655
- importFailureInfo: string[]
1656
- ) {
1657
- if (!this._cachedTypeshedStdLibModuleVersions) {
1658
- this._cachedTypeshedStdLibModuleVersions = this._readTypeshedStdLibVersions(execEnv, importFailureInfo);
1659
- }
1660
-
1661
- // Loop through the name parts to make sure the module and submodules
1662
- // referenced in the import statement are valid for this version of Python.
1663
- for (let namePartCount = 1; namePartCount <= moduleDescriptor.nameParts.length; namePartCount++) {
1664
- const namePartsToConsider = moduleDescriptor.nameParts.slice(0, namePartCount);
1665
- const versionRange = this._cachedTypeshedStdLibModuleVersions.get(namePartsToConsider.join('.'));
1666
- if (versionRange) {
1667
- if (execEnv.pythonVersion < versionRange.min) {
1668
- return false;
1669
- }
1670
-
1671
- if (versionRange.max !== undefined && execEnv.pythonVersion > versionRange.max) {
1672
- return false;
1673
- }
1674
- }
1675
- }
1676
-
1677
- return true;
1678
- }
1679
-
1680
- private _readTypeshedStdLibVersions(
1681
- execEnv: ExecutionEnvironment,
1682
- importFailureInfo: string[]
1683
- ): Map<string, SupportedVersionRange> {
1684
- const versionRangeMap = new Map<string, SupportedVersionRange>();
1685
-
1686
- // Read the VERSIONS file from typeshed.
1687
- const typeshedStdLibPath = this._getTypeshedSubdirectory(/* isStdLib */ true, execEnv, importFailureInfo);
1688
-
1689
- if (typeshedStdLibPath) {
1690
- const versionsFilePath = combinePaths(typeshedStdLibPath, 'VERSIONS');
1691
- try {
1692
- const fileStats = this.fileSystem.statSync(versionsFilePath);
1693
- if (fileStats.size > 0 && fileStats.size < 256 * 1024) {
1694
- const fileContents = this.fileSystem.readFileSync(versionsFilePath, 'utf8');
1695
- fileContents.split(/\r?\n/).forEach((line) => {
1696
- const commentSplit = line.split('#');
1697
- const colonSplit = commentSplit[0].split(':');
1698
- if (colonSplit.length !== 2) {
1699
- return;
1700
- }
1701
-
1702
- const versionSplit = colonSplit[1].split('-');
1703
- if (versionSplit.length > 2) {
1704
- return;
1705
- }
1706
-
1707
- const moduleName = colonSplit[0].trim();
1708
- if (!moduleName) {
1709
- return;
1710
- }
1711
-
1712
- let minVersionString = versionSplit[0].trim();
1713
- if (minVersionString.endsWith('+')) {
1714
- // If the version ends in "+", strip it off.
1715
- minVersionString = minVersionString.substr(0, minVersionString.length - 1);
1716
- }
1717
- let minVersion = versionFromString(minVersionString);
1718
- if (!minVersion) {
1719
- minVersion = PythonVersion.V3_0;
1720
- }
1721
-
1722
- let maxVersion: PythonVersion | undefined;
1723
- if (versionSplit.length > 1) {
1724
- maxVersion = versionFromString(versionSplit[1].trim());
1725
- }
1726
-
1727
- versionRangeMap.set(moduleName, { min: minVersion, max: maxVersion });
1728
- });
1729
- } else {
1730
- importFailureInfo.push(`Typeshed stdlib VERSIONS file is unexpectedly large`);
1731
- }
1732
- } catch (e: any) {
1733
- importFailureInfo.push(`Could not read typeshed stdlib VERSIONS file: '${JSON.stringify(e)}'`);
1734
- }
1735
- }
1736
-
1737
- return versionRangeMap;
1738
- }
1739
-
1740
- private _getThirdPartyTypeshedPackagePaths(
1741
- moduleDescriptor: ImportedModuleDescriptor,
1742
- execEnv: ExecutionEnvironment,
1743
- importFailureInfo: string[],
1744
- includeMatchOnly = true
1745
- ): string[] | undefined {
1746
- const typeshedPath = this._getThirdPartyTypeshedPath(execEnv, importFailureInfo);
1747
-
1748
- if (!this._cachedTypeshedThirdPartyPackagePaths) {
1749
- this._buildTypeshedThirdPartyPackageMap(typeshedPath);
1750
- }
1751
-
1752
- const firstNamePart = moduleDescriptor.nameParts.length > 0 ? moduleDescriptor.nameParts[0] : '';
1753
- if (includeMatchOnly) {
1754
- return this._cachedTypeshedThirdPartyPackagePaths!.get(firstNamePart);
1755
- }
1756
-
1757
- if (firstNamePart) {
1758
- return flatten(
1759
- getMapValues(this._cachedTypeshedThirdPartyPackagePaths!, (k) => k.startsWith(firstNamePart))
1760
- );
1761
- }
1762
-
1763
- return [];
1764
- }
1765
-
1766
- private _getThirdPartyTypeshedPackageRoots(execEnv: ExecutionEnvironment, importFailureInfo: string[]) {
1767
- const typeshedPath = this._getThirdPartyTypeshedPath(execEnv, importFailureInfo);
1768
-
1769
- if (!this._cachedTypeshedThirdPartyPackagePaths) {
1770
- this._buildTypeshedThirdPartyPackageMap(typeshedPath);
1771
- }
1772
-
1773
- return this._cachedTypeshedThirdPartyPackageRoots!;
1774
- }
1775
-
1776
- private _getTypeshedRoot(execEnv: ExecutionEnvironment, importFailureInfo: string[]) {
1777
- if (this._cachedTypeshedRoot !== undefined) {
1778
- return this._cachedTypeshedRoot;
1779
- }
1780
-
1781
- let typeshedPath = '';
1782
-
1783
- // Did the user specify a typeshed path? If not, we'll look in the
1784
- // python search paths, then in the typeshed-fallback directory.
1785
- if (this._configOptions.typeshedPath) {
1786
- const possibleTypeshedPath = this._configOptions.typeshedPath;
1787
- if (this.dirExistsCached(possibleTypeshedPath)) {
1788
- typeshedPath = possibleTypeshedPath;
1789
- }
1790
- } else {
1791
- const pythonSearchPaths = this.getPythonSearchPaths(importFailureInfo);
1792
- for (const searchPath of pythonSearchPaths) {
1793
- const possibleTypeshedPath = combinePaths(searchPath, 'typeshed');
1794
- if (this.dirExistsCached(possibleTypeshedPath)) {
1795
- typeshedPath = possibleTypeshedPath;
1796
- break;
1797
- }
1798
- }
1799
- }
1800
-
1801
- // If typeshed directory wasn't found in other locations, use the fallback.
1802
- if (!typeshedPath) {
1803
- typeshedPath = PythonPathUtils.getTypeShedFallbackPath(this.fileSystem) || '';
1804
- }
1805
-
1806
- this._cachedTypeshedRoot = typeshedPath;
1807
- return typeshedPath;
1808
- }
1809
-
1810
- private _getTypeshedSubdirectory(isStdLib: boolean, execEnv: ExecutionEnvironment, importFailureInfo: string[]) {
1811
- // See if we have it cached.
1812
- if (isStdLib) {
1813
- if (this._cachedTypeshedStdLibPath !== undefined) {
1814
- return this._cachedTypeshedStdLibPath;
1815
- }
1816
- } else {
1817
- if (this._cachedTypeshedThirdPartyPath !== undefined) {
1818
- return this._cachedTypeshedThirdPartyPath;
1819
- }
1820
- }
1821
-
1822
- let typeshedPath = this._getTypeshedRoot(execEnv, importFailureInfo);
1823
- typeshedPath = PythonPathUtils.getTypeshedSubdirectory(typeshedPath, isStdLib);
1824
-
1825
- if (!this.dirExistsCached(typeshedPath)) {
1826
- return undefined;
1827
- }
1828
-
1829
- // Cache the results.
1830
- if (isStdLib) {
1831
- this._cachedTypeshedStdLibPath = typeshedPath;
1832
- } else {
1833
- this._cachedTypeshedThirdPartyPath = typeshedPath;
1834
- }
1835
-
1836
- return typeshedPath;
1837
- }
1838
-
1839
- private _resolveRelativeImport(
1840
- sourceFilePath: string,
1841
- execEnv: ExecutionEnvironment,
1842
- moduleDescriptor: ImportedModuleDescriptor,
1843
- importName: string,
1844
- importFailureInfo: string[]
1845
- ): ImportResult | undefined {
1846
- importFailureInfo.push('Attempting to resolve relative import');
1847
-
1848
- // Determine which search path this file is part of.
1849
- const directory = getDirectoryLeadingDotsPointsTo(
1850
- getDirectoryPath(sourceFilePath),
1851
- moduleDescriptor.leadingDots
1852
- );
1853
- if (!directory) {
1854
- importFailureInfo.push(`Invalid relative path '${importName}'`);
1855
- return undefined;
1856
- }
1857
-
1858
- // Now try to match the module parts from the current directory location.
1859
- const absImport = this.resolveAbsoluteImport(
1860
- directory,
1861
- execEnv,
1862
- moduleDescriptor,
1863
- importName,
1864
- importFailureInfo,
1865
- /* allowPartial */ false,
1866
- /* allowNativeLib */ true
1867
- );
1868
-
1869
- if (absImport && absImport.isStubFile) {
1870
- // If we found a stub for a relative import, only search
1871
- // the same folder for the real module. Otherwise, it will
1872
- // error out on runtime.
1873
- absImport.nonStubImportResult = this.resolveAbsoluteImport(
1874
- directory,
1875
- execEnv,
1876
- moduleDescriptor,
1877
- importName,
1878
- importFailureInfo,
1879
- /* allowPartial */ false,
1880
- /* allowNativeLib */ true,
1881
- /* useStubPackage */ false,
1882
- /* allowPyi */ false
1883
- ) || {
1884
- importName,
1885
- isRelative: true,
1886
- isImportFound: false,
1887
- isPartlyResolved: false,
1888
- isNamespacePackage: false,
1889
- isStubPackage: false,
1890
- importFailureInfo,
1891
- resolvedPaths: [],
1892
- importType: ImportType.Local,
1893
- isStubFile: false,
1894
- isNativeLib: false,
1895
- implicitImports: [],
1896
- filteredImplicitImports: [],
1897
- nonStubImportResult: undefined,
1898
- };
1899
- }
1900
-
1901
- return this.filterImplicitImports(absImport, moduleDescriptor.importedSymbols);
1902
- }
1903
-
1904
- private _getCompletionSuggestionsRelative(
1905
- sourceFilePath: string,
1906
- execEnv: ExecutionEnvironment,
1907
- moduleDescriptor: ImportedModuleDescriptor,
1908
- suggestions: Set<string>
1909
- ) {
1910
- // Determine which search path this file is part of.
1911
- const directory = getDirectoryLeadingDotsPointsTo(
1912
- getDirectoryPath(sourceFilePath),
1913
- moduleDescriptor.leadingDots
1914
- );
1915
- if (!directory) {
1916
- return;
1917
- }
1918
-
1919
- // Now try to match the module parts from the current directory location.
1920
- this._getCompletionSuggestionsAbsolute(sourceFilePath, execEnv, directory, moduleDescriptor, suggestions);
1921
- }
1922
-
1923
- private _getFilesInDirectory(dirPath: string): string[] {
1924
- const entriesInDir = this.readdirEntriesCached(dirPath);
1925
- const filesInDir = entriesInDir.filter((f) => f.isFile()).map((f) => f.name);
1926
-
1927
- // Add any symbolic links that point to files.
1928
- entriesInDir.forEach((f) => {
1929
- const linkPath = combinePaths(dirPath, f.name);
1930
- if (f.isSymbolicLink() && tryStat(this.fileSystem, linkPath)?.isFile()) {
1931
- filesInDir.push(f.name);
1932
- }
1933
- });
1934
-
1935
- return filesInDir;
1936
- }
1937
-
1938
- private _getCompletionSuggestionsAbsolute(
1939
- sourceFilePath: string,
1940
- execEnv: ExecutionEnvironment,
1941
- rootPath: string,
1942
- moduleDescriptor: ImportedModuleDescriptor,
1943
- suggestions: Set<string>,
1944
- strictOnly = true
1945
- ) {
1946
- // Starting at the specified path, walk the file system to find the
1947
- // specified module.
1948
- let dirPath = rootPath;
1949
-
1950
- // Copy the nameParts into a new directory and add an extra empty
1951
- // part if there is a trailing dot.
1952
- const nameParts = moduleDescriptor.nameParts.map((name) => name);
1953
- if (moduleDescriptor.hasTrailingDot) {
1954
- nameParts.push('');
1955
- }
1956
-
1957
- // We need to track this since a module might be resolvable using relative path
1958
- // but can't resolved by absolute path.
1959
- const leadingDots = moduleDescriptor.leadingDots;
1960
- const parentNameParts = nameParts.slice(0, -1);
1961
-
1962
- // Handle the case where the user has typed the first
1963
- // dot (or multiple) in a relative path.
1964
- if (nameParts.length === 0) {
1965
- this._addFilteredSuggestionsAbsolute(
1966
- sourceFilePath,
1967
- execEnv,
1968
- dirPath,
1969
- '',
1970
- suggestions,
1971
- leadingDots,
1972
- parentNameParts,
1973
- strictOnly
1974
- );
1975
- } else {
1976
- for (let i = 0; i < nameParts.length; i++) {
1977
- // Provide completions only if we're on the last part
1978
- // of the name.
1979
- if (i === nameParts.length - 1) {
1980
- this._addFilteredSuggestionsAbsolute(
1981
- sourceFilePath,
1982
- execEnv,
1983
- dirPath,
1984
- nameParts[i],
1985
- suggestions,
1986
- leadingDots,
1987
- parentNameParts,
1988
- strictOnly
1989
- );
1990
- }
1991
-
1992
- dirPath = combinePaths(dirPath, nameParts[i]);
1993
- if (!this.dirExistsCached(dirPath)) {
1994
- break;
1995
- }
1996
- }
1997
- }
1998
- }
1999
-
2000
- private _addFilteredSuggestionsAbsolute(
2001
- sourceFilePath: string,
2002
- execEnv: ExecutionEnvironment,
2003
- currentPath: string,
2004
- filter: string,
2005
- suggestions: Set<string>,
2006
- leadingDots: number,
2007
- parentNameParts: string[],
2008
- strictOnly: boolean
2009
- ) {
2010
- // Enumerate all of the files and directories in the path, expanding links.
2011
- const entries = getFileSystemEntriesFromDirEntries(
2012
- this.readdirEntriesCached(currentPath),
2013
- this.fileSystem,
2014
- currentPath
2015
- );
2016
-
2017
- entries.files.forEach((file) => {
2018
- // Strip multi-dot extensions to handle file names like "foo.cpython-32m.so". We want
2019
- // to detect the ".so" but strip off the entire ".cpython-32m.so" extension.
2020
- const fileExtension = getFileExtension(file, /* multiDotExtension */ false).toLowerCase();
2021
- const fileWithoutExtension = stripFileExtension(file, /* multiDotExtension */ true);
2022
-
2023
- if (supportedFileExtensions.some((ext) => ext === fileExtension)) {
2024
- if (fileWithoutExtension === '__init__') {
2025
- return;
2026
- }
2027
-
2028
- if (filter && !StringUtils.isPatternInSymbol(filter, fileWithoutExtension)) {
2029
- return;
2030
- }
2031
-
2032
- if (
2033
- !this._isUniqueValidSuggestion(fileWithoutExtension, suggestions) ||
2034
- !this._isResolvableSuggestion(
2035
- fileWithoutExtension,
2036
- leadingDots,
2037
- parentNameParts,
2038
- sourceFilePath,
2039
- execEnv,
2040
- strictOnly
2041
- )
2042
- ) {
2043
- return;
2044
- }
2045
-
2046
- suggestions.add(fileWithoutExtension);
2047
- }
2048
- });
2049
-
2050
- entries.directories.forEach((dir) => {
2051
- if (filter && !dir.startsWith(filter)) {
2052
- return;
2053
- }
2054
-
2055
- if (
2056
- !this._isUniqueValidSuggestion(dir, suggestions) ||
2057
- !this._isResolvableSuggestion(dir, leadingDots, parentNameParts, sourceFilePath, execEnv, strictOnly)
2058
- ) {
2059
- return;
2060
- }
2061
-
2062
- suggestions.add(dir);
2063
- });
2064
- }
2065
-
2066
- // Fix for editable installed submodules where the suggested directory was a namespace directory that wouldn't resolve.
2067
- // only used for absolute imports
2068
- private _isResolvableSuggestion(
2069
- name: string,
2070
- leadingDots: number,
2071
- parentNameParts: string[],
2072
- sourceFilePath: string,
2073
- execEnv: ExecutionEnvironment,
2074
- strictOnly: boolean
2075
- ) {
2076
- // We always resolve names based on sourceFilePath.
2077
- const moduleDescriptor = {
2078
- leadingDots: leadingDots,
2079
- nameParts: [...parentNameParts, name],
2080
- importedSymbols: [],
2081
- };
2082
-
2083
- // Make sure we don't use parent folder resolution when checking whether the given name is resolvable.
2084
- if (strictOnly) {
2085
- const importName = this.formatImportName(moduleDescriptor);
2086
- const importFailureInfo: string[] = [];
2087
-
2088
- return this._resolveImportStrict(importName, sourceFilePath, execEnv, moduleDescriptor, importFailureInfo)
2089
- .isImportFound;
2090
- }
2091
-
2092
- return this._resolveImport(sourceFilePath, execEnv, moduleDescriptor).isImportFound;
2093
- }
2094
-
2095
- private _isUniqueValidSuggestion(suggestionToAdd: string, suggestions: Set<string>) {
2096
- if (suggestions.has(suggestionToAdd)) {
2097
- return false;
2098
- }
2099
-
2100
- // Don't add directories with illegal module names.
2101
- if (/[.-]/.test(suggestionToAdd)) {
2102
- return false;
2103
- }
2104
-
2105
- // Don't add directories with dunder names like "__pycache__".
2106
- if (isDunderName(suggestionToAdd) && suggestionToAdd !== '__future__') {
2107
- return false;
2108
- }
2109
-
2110
- return true;
2111
- }
2112
-
2113
- // Potentially modifies the ImportResult by removing some or all of the
2114
- // implicit import entries. Only the imported symbols should be included.
2115
- protected filterImplicitImports(importResult: ImportResult, importedSymbols: string[] | undefined): ImportResult {
2116
- if (importedSymbols === undefined) {
2117
- const newImportResult = Object.assign({}, importResult);
2118
- newImportResult.filteredImplicitImports = [];
2119
- return newImportResult;
2120
- }
2121
-
2122
- if (importedSymbols.length === 0) {
2123
- return importResult;
2124
- }
2125
-
2126
- if (importResult.implicitImports.length === 0) {
2127
- return importResult;
2128
- }
2129
-
2130
- const filteredImplicitImports = importResult.implicitImports.filter((implicitImport) => {
2131
- return importedSymbols.some((sym) => sym === implicitImport.name);
2132
- });
2133
-
2134
- if (filteredImplicitImports.length === importResult.implicitImports.length) {
2135
- return importResult;
2136
- }
2137
-
2138
- const newImportResult = Object.assign({}, importResult);
2139
- newImportResult.filteredImplicitImports = filteredImplicitImports;
2140
- return newImportResult;
2141
- }
2142
-
2143
- private _findImplicitImports(importingModuleName: string, dirPath: string, exclusions: string[]): ImplicitImport[] {
2144
- const implicitImportMap = new Map<string, ImplicitImport>();
2145
-
2146
- // Enumerate all of the files and directories in the path, expanding links.
2147
- const entries = getFileSystemEntriesFromDirEntries(
2148
- this.readdirEntriesCached(dirPath),
2149
- this.fileSystem,
2150
- dirPath
2151
- );
2152
-
2153
- // Add implicit file-based modules.
2154
- for (const fileName of entries.files) {
2155
- const fileExt = getFileExtension(fileName);
2156
- let strippedFileName: string;
2157
- let isNativeLib = false;
2158
-
2159
- if (fileExt === '.py' || fileExt === '.pyi') {
2160
- strippedFileName = stripFileExtension(fileName);
2161
- } else if (
2162
- this._isNativeModuleFileExtension(fileExt) &&
2163
- !this.fileExistsCached(`${fileName}.py`) &&
2164
- !this.fileExistsCached(`${fileName}.pyi`)
2165
- ) {
2166
- // Native module.
2167
- strippedFileName = fileName.substr(0, fileName.indexOf('.'));
2168
- isNativeLib = true;
2169
- } else {
2170
- continue;
2171
- }
2172
-
2173
- const filePath = combinePaths(dirPath, fileName);
2174
- if (!exclusions.find((exclusion) => exclusion === filePath)) {
2175
- const implicitImport: ImplicitImport = {
2176
- isStubFile: fileName.endsWith('.pyi'),
2177
- isNativeLib,
2178
- name: strippedFileName,
2179
- path: filePath,
2180
- };
2181
-
2182
- // Always prefer stub files over non-stub files.
2183
- const entry = implicitImportMap.get(implicitImport.name);
2184
- if (!entry || !entry.isStubFile) {
2185
- // Try resolving resolving native lib to a custom stub.
2186
- if (isNativeLib) {
2187
- const nativeLibPath = combinePaths(dirPath, fileName);
2188
- const nativeStubPath = this.resolveNativeImportEx(
2189
- nativeLibPath,
2190
- `${importingModuleName}.${strippedFileName}`,
2191
- []
2192
- );
2193
- if (nativeStubPath) {
2194
- implicitImport.path = nativeStubPath;
2195
- implicitImport.isNativeLib = false;
2196
- }
2197
- }
2198
- implicitImportMap.set(implicitImport.name, implicitImport);
2199
- }
2200
- }
2201
- }
2202
-
2203
- // Add implicit directory-based modules.
2204
- for (const dirName of entries.directories) {
2205
- const pyFilePath = combinePaths(dirPath, dirName, '__init__.py');
2206
- const pyiFilePath = pyFilePath + 'i';
2207
- let isStubFile = false;
2208
- let path = '';
2209
-
2210
- if (this.fileExistsCached(pyiFilePath)) {
2211
- isStubFile = true;
2212
- path = pyiFilePath;
2213
- } else if (this.fileExistsCached(pyFilePath)) {
2214
- path = pyFilePath;
2215
- }
2216
-
2217
- if (path) {
2218
- if (!exclusions.find((exclusion) => exclusion === path)) {
2219
- const implicitImport: ImplicitImport = {
2220
- isStubFile,
2221
- isNativeLib: false,
2222
- name: dirName,
2223
- path,
2224
- };
2225
-
2226
- implicitImportMap.set(implicitImport.name, implicitImport);
2227
- }
2228
- }
2229
- }
2230
-
2231
- return [...implicitImportMap.values()];
2232
- }
2233
-
2234
- protected formatImportName(moduleDescriptor: ImportedModuleDescriptor) {
2235
- return '.'.repeat(moduleDescriptor.leadingDots) + moduleDescriptor.nameParts.join('.');
2236
- }
2237
-
2238
- private _resolveNativeModuleStub(
2239
- nativeLibPath: string,
2240
- execEnv: ExecutionEnvironment,
2241
- importName: string,
2242
- moduleDescriptor: ImportedModuleDescriptor,
2243
- importFailureInfo: string[],
2244
- resolvedPaths: string[]
2245
- ): boolean {
2246
- let moduleFullName = importName;
2247
-
2248
- if (moduleDescriptor.leadingDots > 0) {
2249
- // Relative path. Convert `.mtrand` to `numpy.random.mtrand` based on search path.
2250
- const info = this.getModuleNameForImport(nativeLibPath, execEnv);
2251
- moduleFullName = info.moduleName.length > 0 ? info.moduleName : moduleFullName;
2252
- }
2253
-
2254
- const compiledStubPath = this.resolveNativeImportEx(nativeLibPath, moduleFullName, importFailureInfo);
2255
- if (compiledStubPath) {
2256
- importFailureInfo.push(`Resolved native import ${importName} with stub '${compiledStubPath}'`);
2257
- resolvedPaths.push(compiledStubPath);
2258
- return false; // Resolved to a stub.
2259
- }
2260
-
2261
- importFailureInfo.push(`Resolved import with file '${nativeLibPath}'`);
2262
- resolvedPaths.push(nativeLibPath);
2263
- return true;
2264
- }
2265
-
2266
- private _isNativeModuleFileName(moduleName: string, fileName: string): boolean {
2267
- // Strip off the final file extension and the part of the file name
2268
- // that excludes all (multi-part) file extensions. This allows us to
2269
- // handle file names like "foo.cpython-32m.so".
2270
- const fileExtension = getFileExtension(fileName, /* multiDotExtension */ false).toLowerCase();
2271
- const withoutExtension = stripFileExtension(fileName, /* multiDotExtension */ true);
2272
- return (
2273
- this._isNativeModuleFileExtension(fileExtension) &&
2274
- equateStringsCaseInsensitive(moduleName, withoutExtension)
2275
- );
2276
- }
2277
-
2278
- private _isNativeModuleFileExtension(fileExtension: string): boolean {
2279
- return supportedNativeLibExtensions.some((ext) => ext === fileExtension);
2280
- }
2281
-
2282
- private _tryWalkUp(current: string): [success: boolean, path: string] {
2283
- if (isDiskPathRoot(current)) {
2284
- return [false, ''];
2285
- }
2286
-
2287
- return [
2288
- true,
2289
- ensureTrailingDirectorySeparator(
2290
- normalizePathCase(this.fileSystem, normalizePath(combinePaths(current, '..')))
2291
- ),
2292
- ];
2293
- }
2294
-
2295
- private _shouldWalkUp(current: string, root: string, execEnv: ExecutionEnvironment) {
2296
- return current.length > root.length || (current === root && !execEnv.root);
2297
- }
2298
-
2299
- protected getParentImportResolutionRoot(sourceFilePath: string, executionRoot: string | undefined) {
2300
- if (executionRoot) {
2301
- return ensureTrailingDirectorySeparator(normalizePathCase(this.fileSystem, normalizePath(executionRoot)));
2302
- }
2303
-
2304
- return ensureTrailingDirectorySeparator(getDirectoryPath(sourceFilePath));
2305
- }
2306
- }
2307
-
2308
- export type ImportResolverFactory = (fs: FileSystem, options: ConfigOptions, host: Host) => ImportResolver;