@zzzen/pyright-internal 1.1.255 → 1.2.0-dev.20220703

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 (1456) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +1 -0
  3. package/dist/analyzer/aliasDeclarationUtils.js +2 -2
  4. package/dist/analyzer/analyzerFileInfo.d.ts +1 -1
  5. package/dist/analyzer/analyzerNodeInfo.d.ts +4 -1
  6. package/dist/analyzer/analyzerNodeInfo.js +12 -1
  7. package/dist/analyzer/analyzerNodeInfo.js.map +1 -1
  8. package/dist/analyzer/backgroundAnalysisProgram.d.ts +1 -0
  9. package/dist/analyzer/backgroundAnalysisProgram.js +3 -0
  10. package/dist/analyzer/backgroundAnalysisProgram.js.map +1 -1
  11. package/dist/analyzer/binder.d.ts +6 -1
  12. package/dist/analyzer/binder.js +142 -32
  13. package/dist/analyzer/binder.js.map +1 -1
  14. package/dist/analyzer/checker.d.ts +4 -1
  15. package/dist/analyzer/checker.js +144 -73
  16. package/dist/analyzer/checker.js.map +1 -1
  17. package/dist/analyzer/codeFlowUtils.js +33 -0
  18. package/dist/analyzer/codeFlowUtils.js.map +1 -1
  19. package/dist/analyzer/constraintSolver.js +6 -3
  20. package/dist/analyzer/constraintSolver.js.map +1 -1
  21. package/dist/analyzer/dataClasses.js +6 -4
  22. package/dist/analyzer/dataClasses.js.map +1 -1
  23. package/dist/analyzer/declaration.d.ts +18 -6
  24. package/dist/analyzer/declaration.js +25 -5
  25. package/dist/analyzer/declaration.js.map +1 -1
  26. package/dist/analyzer/declarationUtils.d.ts +1 -1
  27. package/dist/analyzer/declarationUtils.js +19 -16
  28. package/dist/analyzer/declarationUtils.js.map +1 -1
  29. package/dist/analyzer/importResult.js +7 -0
  30. package/dist/analyzer/importResult.js.map +1 -1
  31. package/dist/analyzer/importStatementUtils.js +10 -1
  32. package/dist/analyzer/importStatementUtils.js.map +1 -1
  33. package/dist/analyzer/namedTuples.js +1 -1
  34. package/dist/analyzer/namedTuples.js.map +1 -1
  35. package/dist/analyzer/packageTypeReport.js +10 -1
  36. package/dist/analyzer/packageTypeReport.js.map +1 -1
  37. package/dist/analyzer/packageTypeVerifier.js +6 -6
  38. package/dist/analyzer/parseTreeUtils.d.ts +3 -3
  39. package/dist/analyzer/parseTreeUtils.js +27 -13
  40. package/dist/analyzer/parseTreeUtils.js.map +1 -1
  41. package/dist/analyzer/parseTreeWalker.d.ts +4 -1
  42. package/dist/analyzer/parseTreeWalker.js +19 -1
  43. package/dist/analyzer/parseTreeWalker.js.map +1 -1
  44. package/dist/analyzer/program.d.ts +2 -1
  45. package/dist/analyzer/program.js +27 -23
  46. package/dist/analyzer/program.js.map +1 -1
  47. package/dist/analyzer/properties.js +2 -0
  48. package/dist/analyzer/properties.js.map +1 -1
  49. package/dist/analyzer/protocols.d.ts +0 -1
  50. package/dist/analyzer/protocols.js +4 -64
  51. package/dist/analyzer/protocols.js.map +1 -1
  52. package/dist/analyzer/scope.js +22 -1
  53. package/dist/analyzer/scope.js.map +1 -1
  54. package/dist/analyzer/service.d.ts +20 -8
  55. package/dist/analyzer/service.js +39 -19
  56. package/dist/analyzer/service.js.map +1 -1
  57. package/dist/analyzer/sourceFile.js +1 -1
  58. package/dist/analyzer/sourceFile.js.map +1 -1
  59. package/dist/analyzer/sourceFileInfoUtils.d.ts +2 -0
  60. package/dist/analyzer/sourceFileInfoUtils.js +15 -0
  61. package/dist/analyzer/sourceFileInfoUtils.js.map +1 -0
  62. package/dist/analyzer/symbol.d.ts +3 -1
  63. package/dist/analyzer/symbol.js +39 -1
  64. package/dist/analyzer/symbol.js.map +1 -1
  65. package/dist/analyzer/tracePrinter.js +8 -4
  66. package/dist/analyzer/tracePrinter.js.map +1 -1
  67. package/dist/analyzer/typeDocStringUtils.js +11 -3
  68. package/dist/analyzer/typeDocStringUtils.js.map +1 -1
  69. package/dist/analyzer/typeEvaluator.js +610 -208
  70. package/dist/analyzer/typeEvaluator.js.map +1 -1
  71. package/dist/analyzer/typeEvaluatorTypes.d.ts +2 -1
  72. package/dist/analyzer/typeEvaluatorTypes.js +65 -1
  73. package/dist/analyzer/typeEvaluatorTypes.js.map +1 -1
  74. package/dist/analyzer/typeEvaluatorWithTracker.js +2 -0
  75. package/dist/analyzer/typeEvaluatorWithTracker.js.map +1 -1
  76. package/dist/analyzer/typeGuards.d.ts +2 -0
  77. package/dist/analyzer/typeGuards.js +113 -69
  78. package/dist/analyzer/typeGuards.js.map +1 -1
  79. package/dist/analyzer/typePrinter.js +27 -2
  80. package/dist/analyzer/typePrinter.js.map +1 -1
  81. package/dist/analyzer/typeStubWriter.d.ts +4 -1
  82. package/dist/analyzer/typeStubWriter.js +36 -0
  83. package/dist/analyzer/typeStubWriter.js.map +1 -1
  84. package/dist/analyzer/typeUtils.js +129 -33
  85. package/dist/analyzer/typeUtils.js.map +1 -1
  86. package/dist/analyzer/typedDicts.js +2 -1
  87. package/dist/analyzer/typedDicts.js.map +1 -1
  88. package/dist/analyzer/types.d.ts +12 -4
  89. package/dist/analyzer/types.js +215 -6
  90. package/dist/analyzer/types.js.map +1 -1
  91. package/dist/backgroundAnalysisBase.d.ts +1 -1
  92. package/dist/commands/commands.js +9 -0
  93. package/dist/commands/commands.js.map +1 -1
  94. package/dist/common/commandLineOptions.js +8 -1
  95. package/dist/common/commandLineOptions.js.map +1 -1
  96. package/dist/common/core.js +7 -1
  97. package/dist/common/core.js.map +1 -1
  98. package/dist/common/diagnostic.js +9 -1
  99. package/dist/common/diagnostic.js.map +1 -1
  100. package/dist/common/host.js +7 -1
  101. package/dist/common/host.js.map +1 -1
  102. package/dist/common/pathUtils.d.ts +1 -0
  103. package/dist/common/pathUtils.js +34 -1
  104. package/dist/common/pathUtils.js.map +1 -1
  105. package/dist/common/stringUtils.d.ts +1 -0
  106. package/dist/common/stringUtils.js +8 -1
  107. package/dist/common/stringUtils.js.map +1 -1
  108. package/dist/languageServerBase.d.ts +10 -3
  109. package/dist/languageServerBase.js +40 -14
  110. package/dist/languageServerBase.js.map +1 -1
  111. package/dist/languageService/analyzerServiceExecutor.js +3 -0
  112. package/dist/languageService/analyzerServiceExecutor.js.map +1 -1
  113. package/dist/languageService/autoImporter.js +2 -1
  114. package/dist/languageService/autoImporter.js.map +1 -1
  115. package/dist/languageService/callHierarchyProvider.js +9 -9
  116. package/dist/languageService/completionProvider.d.ts +2 -2
  117. package/dist/languageService/completionProvider.js +22 -18
  118. package/dist/languageService/completionProvider.js.map +1 -1
  119. package/dist/languageService/definitionProvider.js +3 -3
  120. package/dist/languageService/documentSymbolCollector.js +1 -1
  121. package/dist/languageService/documentSymbolProvider.js +10 -7
  122. package/dist/languageService/documentSymbolProvider.js.map +1 -1
  123. package/dist/languageService/hoverProvider.js +19 -5
  124. package/dist/languageService/hoverProvider.js.map +1 -1
  125. package/dist/languageService/referencesProvider.js +8 -5
  126. package/dist/languageService/referencesProvider.js.map +1 -1
  127. package/dist/languageService/tooltipUtils.js +1 -1
  128. package/dist/localization/localize.d.ts +27 -0
  129. package/dist/localization/localize.js +16 -0
  130. package/dist/localization/localize.js.map +1 -1
  131. package/dist/localization/package.nls.en-us.json +18 -2
  132. package/dist/parser/parseNodes.d.ts +44 -5
  133. package/dist/parser/parseNodes.js +191 -4
  134. package/dist/parser/parseNodes.js.map +1 -1
  135. package/dist/parser/parser.d.ts +3 -1
  136. package/dist/parser/parser.js +155 -24
  137. package/dist/parser/parser.js.map +1 -1
  138. package/dist/parser/stringTokenUtils.js +8 -1
  139. package/dist/parser/stringTokenUtils.js.map +1 -1
  140. package/dist/parser/tokenizer.js +4 -3
  141. package/dist/parser/tokenizer.js.map +1 -1
  142. package/dist/parser/tokenizerTypes.d.ts +5 -3
  143. package/dist/parser/tokenizerTypes.js +157 -1
  144. package/dist/parser/tokenizerTypes.js.map +1 -1
  145. package/dist/pyright.js +6 -1
  146. package/dist/pyright.js.map +1 -1
  147. package/dist/tests/chainedSourceFiles.test.js +12 -9
  148. package/dist/tests/chainedSourceFiles.test.js.map +1 -1
  149. package/dist/tests/checker.test.js +4 -0
  150. package/dist/tests/checker.test.js.map +1 -1
  151. package/dist/tests/config.test.js +14 -13
  152. package/dist/tests/config.test.js.map +1 -1
  153. package/dist/tests/debug.test.js +6 -0
  154. package/dist/tests/debug.test.js.map +1 -1
  155. package/dist/tests/fourslash/completions.autoimport.lib.alias.fourslash.d.ts +1 -0
  156. package/dist/tests/fourslash/completions.autoimport.lib.alias.fourslash.js +53 -0
  157. package/dist/tests/fourslash/completions.autoimport.lib.alias.fourslash.js.map +1 -0
  158. package/dist/tests/fourslash/fourslash.d.ts +16 -0
  159. package/dist/tests/fourslash/hover.class.docString.fourslash.d.ts +1 -0
  160. package/dist/tests/fourslash/hover.class.docString.fourslash.js +24 -0
  161. package/dist/tests/fourslash/hover.class.docString.fourslash.js.map +1 -0
  162. package/dist/tests/harness/fourslash/fourSlashParser.js +6 -0
  163. package/dist/tests/harness/fourslash/fourSlashParser.js.map +1 -1
  164. package/dist/tests/harness/fourslash/fourSlashTypes.js +19 -1
  165. package/dist/tests/harness/fourslash/fourSlashTypes.js.map +1 -1
  166. package/dist/tests/harness/fourslash/testLanguageService.js +9 -1
  167. package/dist/tests/harness/fourslash/testLanguageService.js.map +1 -1
  168. package/dist/tests/harness/fourslash/testState.Consts.d.ts +1 -0
  169. package/dist/tests/harness/fourslash/testState.Consts.js +1 -0
  170. package/dist/tests/harness/fourslash/testState.Consts.js.map +1 -1
  171. package/dist/tests/harness/fourslash/testState.d.ts +4 -3
  172. package/dist/tests/harness/fourslash/testState.js +27 -11
  173. package/dist/tests/harness/fourslash/testState.js.map +1 -1
  174. package/dist/tests/harness/vfs/pathValidation.js +25 -1
  175. package/dist/tests/harness/vfs/pathValidation.js.map +1 -1
  176. package/dist/tests/pathUtils.test.js +17 -0
  177. package/dist/tests/pathUtils.test.js.map +1 -1
  178. package/dist/tests/testUtils.js +1 -1
  179. package/dist/tests/testUtils.js.map +1 -1
  180. package/dist/tests/typeEvaluator1.test.js +9 -1
  181. package/dist/tests/typeEvaluator1.test.js.map +1 -1
  182. package/dist/tests/typeEvaluator2.test.js +9 -1
  183. package/dist/tests/typeEvaluator2.test.js.map +1 -1
  184. package/dist/tests/typeEvaluator3.test.js +4 -0
  185. package/dist/tests/typeEvaluator3.test.js.map +1 -1
  186. package/dist/tests/typeEvaluator5.test.d.ts +1 -0
  187. package/dist/tests/typeEvaluator5.test.js +112 -0
  188. package/dist/tests/typeEvaluator5.test.js.map +1 -0
  189. package/dist/workspaceMap.d.ts +2 -1
  190. package/dist/workspaceMap.js +25 -3
  191. package/dist/workspaceMap.js.map +1 -1
  192. package/package.json +45 -45
  193. package/src/analyzer/aliasDeclarationUtils.ts +0 -169
  194. package/src/analyzer/analysis.ts +0 -92
  195. package/src/analyzer/analyzerFileInfo.ts +0 -56
  196. package/src/analyzer/analyzerNodeInfo.ts +0 -198
  197. package/src/analyzer/backgroundAnalysisProgram.ts +0 -311
  198. package/src/analyzer/binder.ts +0 -4081
  199. package/src/analyzer/checker.ts +0 -5507
  200. package/src/analyzer/circularDependency.ts +0 -52
  201. package/src/analyzer/codeFlowEngine.ts +0 -1548
  202. package/src/analyzer/codeFlowTypes.ts +0 -266
  203. package/src/analyzer/codeFlowUtils.ts +0 -436
  204. package/src/analyzer/commentUtils.ts +0 -174
  205. package/src/analyzer/constraintSolver.ts +0 -926
  206. package/src/analyzer/constructorTransform.ts +0 -317
  207. package/src/analyzer/dataClasses.ts +0 -999
  208. package/src/analyzer/declaration.ts +0 -252
  209. package/src/analyzer/declarationUtils.ts +0 -238
  210. package/src/analyzer/docStringConversion.ts +0 -850
  211. package/src/analyzer/docStringUtils.ts +0 -112
  212. package/src/analyzer/functionTransform.ts +0 -137
  213. package/src/analyzer/importResolver.ts +0 -2308
  214. package/src/analyzer/importResult.ts +0 -98
  215. package/src/analyzer/importStatementUtils.ts +0 -834
  216. package/src/analyzer/namedTuples.ts +0 -422
  217. package/src/analyzer/packageTypeReport.ts +0 -108
  218. package/src/analyzer/packageTypeVerifier.ts +0 -1466
  219. package/src/analyzer/parentDirectoryCache.ts +0 -88
  220. package/src/analyzer/parseTreeCleaner.ts +0 -35
  221. package/src/analyzer/parseTreeUtils.ts +0 -2165
  222. package/src/analyzer/parseTreeWalker.ts +0 -663
  223. package/src/analyzer/patternMatching.ts +0 -1356
  224. package/src/analyzer/program.ts +0 -2778
  225. package/src/analyzer/properties.ts +0 -534
  226. package/src/analyzer/protocols.ts +0 -660
  227. package/src/analyzer/pyTypedUtils.ts +0 -52
  228. package/src/analyzer/pythonPathUtils.ts +0 -201
  229. package/src/analyzer/scope.ts +0 -202
  230. package/src/analyzer/scopeUtils.ts +0 -81
  231. package/src/analyzer/service.ts +0 -1679
  232. package/src/analyzer/sourceFile.ts +0 -1401
  233. package/src/analyzer/sourceMapper.ts +0 -717
  234. package/src/analyzer/staticExpressions.ts +0 -308
  235. package/src/analyzer/symbol.ts +0 -249
  236. package/src/analyzer/symbolNameUtils.ts +0 -50
  237. package/src/analyzer/symbolUtils.ts +0 -49
  238. package/src/analyzer/testWalker.ts +0 -101
  239. package/src/analyzer/tracePrinter.ts +0 -264
  240. package/src/analyzer/typeCache.ts +0 -181
  241. package/src/analyzer/typeDocStringUtils.ts +0 -371
  242. package/src/analyzer/typeEvaluator.ts +0 -23395
  243. package/src/analyzer/typeEvaluatorTypes.ts +0 -452
  244. package/src/analyzer/typeEvaluatorWithTracker.ts +0 -161
  245. package/src/analyzer/typeGuards.ts +0 -1828
  246. package/src/analyzer/typePrinter.ts +0 -807
  247. package/src/analyzer/typeStubWriter.ts +0 -727
  248. package/src/analyzer/typeUtils.ts +0 -3126
  249. package/src/analyzer/typeVarContext.ts +0 -330
  250. package/src/analyzer/typedDicts.ts +0 -950
  251. package/src/analyzer/types.ts +0 -2857
  252. package/src/backgroundAnalysis.ts +0 -49
  253. package/src/backgroundAnalysisBase.ts +0 -606
  254. package/src/backgroundThreadBase.ts +0 -143
  255. package/src/commands/commandController.ts +0 -62
  256. package/src/commands/commandResult.ts +0 -21
  257. package/src/commands/commands.ts +0 -16
  258. package/src/commands/createTypeStub.ts +0 -56
  259. package/src/commands/quickActionCommand.ts +0 -40
  260. package/src/commands/restartServer.ts +0 -20
  261. package/src/common/cancellationUtils.ts +0 -71
  262. package/src/common/chokidarFileWatcherProvider.ts +0 -74
  263. package/src/common/collectionUtils.ts +0 -379
  264. package/src/common/commandLineOptions.ts +0 -132
  265. package/src/common/configOptions.ts +0 -1291
  266. package/src/common/console.ts +0 -201
  267. package/src/common/core.ts +0 -152
  268. package/src/common/crypto.ts +0 -60
  269. package/src/common/debug.ts +0 -144
  270. package/src/common/deferred.ts +0 -78
  271. package/src/common/diagnostic.ts +0 -191
  272. package/src/common/diagnosticRules.ts +0 -80
  273. package/src/common/diagnosticSink.ts +0 -150
  274. package/src/common/editAction.ts +0 -46
  275. package/src/common/extensibility.ts +0 -35
  276. package/src/common/extensions.ts +0 -21
  277. package/src/common/fileBasedCancellationUtils.ts +0 -274
  278. package/src/common/fileSystem.ts +0 -152
  279. package/src/common/fullAccessHost.ts +0 -203
  280. package/src/common/host.ts +0 -49
  281. package/src/common/logTracker.ts +0 -157
  282. package/src/common/lspUtils.ts +0 -18
  283. package/src/common/memUtils.ts +0 -36
  284. package/src/common/pathConsts.ts +0 -16
  285. package/src/common/pathUtils.ts +0 -987
  286. package/src/common/positionUtils.ts +0 -78
  287. package/src/common/progressReporter.ts +0 -53
  288. package/src/common/pythonVersion.ts +0 -74
  289. package/src/common/realFileSystem.ts +0 -433
  290. package/src/common/stringUtils.ts +0 -161
  291. package/src/common/textEditUtils.ts +0 -31
  292. package/src/common/textRange.ts +0 -225
  293. package/src/common/textRangeCollection.ts +0 -122
  294. package/src/common/timing.ts +0 -105
  295. package/src/common/uriParser.ts +0 -26
  296. package/src/common/workspaceEditUtils.ts +0 -100
  297. package/src/languageServerBase.ts +0 -1556
  298. package/src/languageService/analyzerServiceExecutor.ts +0 -144
  299. package/src/languageService/autoImporter.ts +0 -926
  300. package/src/languageService/callHierarchyProvider.ts +0 -476
  301. package/src/languageService/codeActionProvider.ts +0 -85
  302. package/src/languageService/completionProvider.ts +0 -3103
  303. package/src/languageService/definitionProvider.ts +0 -235
  304. package/src/languageService/documentHighlightProvider.ts +0 -61
  305. package/src/languageService/documentSymbolCollector.ts +0 -466
  306. package/src/languageService/documentSymbolProvider.ts +0 -466
  307. package/src/languageService/hoverProvider.ts +0 -499
  308. package/src/languageService/importAdder.ts +0 -437
  309. package/src/languageService/importSorter.ts +0 -196
  310. package/src/languageService/indentationUtils.ts +0 -813
  311. package/src/languageService/quickActions.ts +0 -113
  312. package/src/languageService/referencesProvider.ts +0 -316
  313. package/src/languageService/renameModuleProvider.ts +0 -1400
  314. package/src/languageService/signatureHelpProvider.ts +0 -227
  315. package/src/languageService/tooltipUtils.ts +0 -147
  316. package/src/localization/localize.ts +0 -1272
  317. package/src/localization/package.nls.de.json +0 -3
  318. package/src/localization/package.nls.en-us.json +0 -636
  319. package/src/localization/package.nls.es.json +0 -3
  320. package/src/localization/package.nls.fr.json +0 -3
  321. package/src/localization/package.nls.ja.json +0 -3
  322. package/src/localization/package.nls.ru.json +0 -3
  323. package/src/localization/package.nls.zh-cn.json +0 -3
  324. package/src/localization/package.nls.zh-tw.json +0 -3
  325. package/src/nodeMain.ts +0 -21
  326. package/src/nodeServer.ts +0 -30
  327. package/src/parser/characterStream.ts +0 -145
  328. package/src/parser/characters.ts +0 -285
  329. package/src/parser/parseNodes.ts +0 -2338
  330. package/src/parser/parser.ts +0 -4859
  331. package/src/parser/stringTokenUtils.ts +0 -564
  332. package/src/parser/tokenizer.ts +0 -1379
  333. package/src/parser/tokenizerTypes.ts +0 -420
  334. package/src/parser/unicode.ts +0 -2917
  335. package/src/pyright.ts +0 -824
  336. package/src/pyrightFileSystem.ts +0 -237
  337. package/src/readonlyAugmentedFileSystem.ts +0 -204
  338. package/src/server.ts +0 -298
  339. package/src/tests/chainedSourceFiles.test.ts +0 -183
  340. package/src/tests/checker.test.ts +0 -445
  341. package/src/tests/collectionUtils.test.ts +0 -178
  342. package/src/tests/common.test.ts +0 -117
  343. package/src/tests/config.test.ts +0 -291
  344. package/src/tests/debug.test.ts +0 -120
  345. package/src/tests/deferred.test.ts +0 -54
  346. package/src/tests/diagnosticOverrides.test.ts +0 -104
  347. package/src/tests/docStringConversion.test.ts +0 -823
  348. package/src/tests/docStringUtils.test.ts +0 -57
  349. package/src/tests/documentSymbolCollector.test.ts +0 -735
  350. package/src/tests/filesystem.test.ts +0 -215
  351. package/src/tests/fourSlashParser.test.ts +0 -330
  352. package/src/tests/fourSlashRunner.test.ts +0 -36
  353. package/src/tests/fourslash/completions.autoimport.Lib.Found.Type.fourslash.ts +0 -33
  354. package/src/tests/fourslash/completions.autoimport.Lib.Found.duplication.fourslash.ts +0 -47
  355. package/src/tests/fourslash/completions.autoimport.Lib.NotFound.fourslash.ts +0 -14
  356. package/src/tests/fourslash/completions.autoimport.disabled.fourslash.ts +0 -25
  357. package/src/tests/fourslash/completions.autoimport.duplicates.fourslash.ts +0 -36
  358. package/src/tests/fourslash/completions.autoimport.fourslash.ts +0 -29
  359. package/src/tests/fourslash/completions.autoimport.fromImport.fourslash.ts +0 -130
  360. package/src/tests/fourslash/completions.autoimport.plainText.fourslash.ts +0 -29
  361. package/src/tests/fourslash/completions.autoimport.shadow.fourslash.ts +0 -48
  362. package/src/tests/fourslash/completions.autoimport.submodule.fourslash.ts +0 -31
  363. package/src/tests/fourslash/completions.autoimport.topLevel.fourslash.ts +0 -57
  364. package/src/tests/fourslash/completions.builtinDocstrings.fourslash.ts +0 -117
  365. package/src/tests/fourslash/completions.builtinOverride.fourslash.ts +0 -22
  366. package/src/tests/fourslash/completions.call.stringLiteral.fourslash.ts +0 -55
  367. package/src/tests/fourslash/completions.call.typedDict.fourslash.ts +0 -247
  368. package/src/tests/fourslash/completions.call.typedDict.list.fourslash.ts +0 -163
  369. package/src/tests/fourslash/completions.call.typedDict.states.fourslash.ts +0 -135
  370. package/src/tests/fourslash/completions.classVariable.fourslash.ts +0 -37
  371. package/src/tests/fourslash/completions.comment.fourslash.ts +0 -28
  372. package/src/tests/fourslash/completions.declNames.class.fourslash.ts +0 -35
  373. package/src/tests/fourslash/completions.declNames.exception.fourslash.ts +0 -18
  374. package/src/tests/fourslash/completions.declNames.for.fourslash.ts +0 -30
  375. package/src/tests/fourslash/completions.declNames.importAlias.fourslash.ts +0 -15
  376. package/src/tests/fourslash/completions.declNames.lambda.fourslash.ts +0 -45
  377. package/src/tests/fourslash/completions.declNames.method.fourslash.ts +0 -71
  378. package/src/tests/fourslash/completions.declNames.overload.fourslash.ts +0 -156
  379. package/src/tests/fourslash/completions.declNames.topLevelOverload.fourslash.ts +0 -141
  380. package/src/tests/fourslash/completions.dictionary.keys.complex.fourslash.ts +0 -76
  381. package/src/tests/fourslash/completions.dictionary.keys.expression.fourslash.ts +0 -63
  382. package/src/tests/fourslash/completions.dictionary.keys.literalTypes.fourslash.ts +0 -161
  383. package/src/tests/fourslash/completions.dictionary.keys.simple.fourslash.ts +0 -151
  384. package/src/tests/fourslash/completions.dictionary.keys.stringLiterals.fourslash.ts +0 -116
  385. package/src/tests/fourslash/completions.dictionary.keys.symbols.fourslash.ts +0 -53
  386. package/src/tests/fourslash/completions.enums.members.fourslash.ts +0 -44
  387. package/src/tests/fourslash/completions.excluded.fourslash.ts +0 -12
  388. package/src/tests/fourslash/completions.fourslash.ts +0 -51
  389. package/src/tests/fourslash/completions.fstring.fourslash.ts +0 -33
  390. package/src/tests/fourslash/completions.fstring.stringLiteral.fourslash.ts +0 -96
  391. package/src/tests/fourslash/completions.fuzzyMatching.fourslash.ts +0 -30
  392. package/src/tests/fourslash/completions.importDunderNames.fourslash.ts +0 -31
  393. package/src/tests/fourslash/completions.importSubmodule.fourslash.ts +0 -26
  394. package/src/tests/fourslash/completions.importsDuplicates.fourslash.ts +0 -23
  395. package/src/tests/fourslash/completions.inList.fourslash.ts +0 -33
  396. package/src/tests/fourslash/completions.included.fourslash.ts +0 -12
  397. package/src/tests/fourslash/completions.indexer.keys.getitem.fourslash.ts +0 -57
  398. package/src/tests/fourslash/completions.inherited.function.docFromStub.fourslash.ts +0 -28
  399. package/src/tests/fourslash/completions.inherited.overload.docFromScrWithStub.fourslash.ts +0 -52
  400. package/src/tests/fourslash/completions.inherited.overload.docFromStub.fourslash.ts +0 -53
  401. package/src/tests/fourslash/completions.inherited.property.docFromSrc.fourslash.ts +0 -104
  402. package/src/tests/fourslash/completions.inherited.property.docFromStub.fourslash.ts +0 -108
  403. package/src/tests/fourslash/completions.keywords.pythonVersion.fourslash.ts +0 -72
  404. package/src/tests/fourslash/completions.libCodeAndStub.fourslash.ts +0 -79
  405. package/src/tests/fourslash/completions.libCodeNoStub.fourslash.ts +0 -69
  406. package/src/tests/fourslash/completions.libStub.fourslash.ts +0 -69
  407. package/src/tests/fourslash/completions.literals.fourslash.ts +0 -33
  408. package/src/tests/fourslash/completions.localCode.fourslash.ts +0 -74
  409. package/src/tests/fourslash/completions.moduleContext.UnknownMemberOnInstance.fourslash.ts +0 -17
  410. package/src/tests/fourslash/completions.moduleContext.UnknownStaticFunctionOnClass.fourslash.ts +0 -57
  411. package/src/tests/fourslash/completions.moduleContext.libCodeNoStub.fourslash.ts +0 -30
  412. package/src/tests/fourslash/completions.overloads.fourslash.ts +0 -40
  413. package/src/tests/fourslash/completions.override.default.fourslash.ts +0 -47
  414. package/src/tests/fourslash/completions.override.default.importStub.ts +0 -50
  415. package/src/tests/fourslash/completions.override.default.imported.fourslash.ts +0 -61
  416. package/src/tests/fourslash/completions.override.default.stub.fourslash.ts +0 -47
  417. package/src/tests/fourslash/completions.override.fourslash.ts +0 -47
  418. package/src/tests/fourslash/completions.override.property.fourslash.ts +0 -31
  419. package/src/tests/fourslash/completions.override.property.stub.fourslash.ts +0 -31
  420. package/src/tests/fourslash/completions.override.staticAndClassmethod.fourslash.ts +0 -64
  421. package/src/tests/fourslash/completions.override.stub.fourslash.ts +0 -47
  422. package/src/tests/fourslash/completions.override2.fourslash.ts +0 -71
  423. package/src/tests/fourslash/completions.parameters.fourslash.ts +0 -23
  424. package/src/tests/fourslash/completions.params.fourslash.ts +0 -24
  425. package/src/tests/fourslash/completions.parentFolder.fourslash.ts +0 -17
  426. package/src/tests/fourslash/completions.parentFolders.fourslash.ts +0 -77
  427. package/src/tests/fourslash/completions.plainText.fourslash.ts +0 -34
  428. package/src/tests/fourslash/completions.private.fourslash.ts +0 -64
  429. package/src/tests/fourslash/completions.property.fourslash.ts +0 -28
  430. package/src/tests/fourslash/completions.propertyDocStrings.fourslash.ts +0 -64
  431. package/src/tests/fourslash/completions.self.fourslash.ts +0 -43
  432. package/src/tests/fourslash/completions.stringLiteral.escape.fourslash.ts +0 -71
  433. package/src/tests/fourslash/completions.stringLiteral.fourslash.ts +0 -79
  434. package/src/tests/fourslash/completions.typeAlias.fourslash.ts +0 -29
  435. package/src/tests/fourslash/completions.typeshed.fourslash.ts +0 -9
  436. package/src/tests/fourslash/completions.vardecls.fourslash.ts +0 -40
  437. package/src/tests/fourslash/completions.variableDocStrings.fourslash.ts +0 -69
  438. package/src/tests/fourslash/completions.wildcardimports.fourslash.ts +0 -116
  439. package/src/tests/fourslash/completions.with.fourslash.ts +0 -26
  440. package/src/tests/fourslash/diagnostics.missingModuleSource.fourslash.ts +0 -69
  441. package/src/tests/fourslash/findDefinitions.builtinClass.fourslash.ts +0 -29
  442. package/src/tests/fourslash/findDefinitions.classes.fourslash.ts +0 -101
  443. package/src/tests/fourslash/findDefinitions.definitionFilter.preferSource.fourslash.ts +0 -29
  444. package/src/tests/fourslash/findDefinitions.definitionFilter.preferSource.onlyStubs.ts +0 -24
  445. package/src/tests/fourslash/findDefinitions.definitionFilter.preferStub.fourslash.ts +0 -29
  446. package/src/tests/fourslash/findDefinitions.definitionFilter.preferStub.onlySource.fourslash.ts +0 -25
  447. package/src/tests/fourslash/findDefinitions.fields.fourslash.ts +0 -131
  448. package/src/tests/fourslash/findDefinitions.functions.fourslash.ts +0 -87
  449. package/src/tests/fourslash/findDefinitions.methods.fourslash.ts +0 -162
  450. package/src/tests/fourslash/findDefinitions.modules.fourslash.ts +0 -50
  451. package/src/tests/fourslash/findDefinitions.namespaceImport.fourslash.ts +0 -40
  452. package/src/tests/fourslash/findDefinitions.overloads.fourslash.ts +0 -223
  453. package/src/tests/fourslash/findDefinitions.parameters.fourslash.ts +0 -162
  454. package/src/tests/fourslash/findDefinitions.sourceAndStub.function.fourslash.ts +0 -26
  455. package/src/tests/fourslash/findDefinitions.sourceAndStub.innerClass.fourslash.ts +0 -32
  456. package/src/tests/fourslash/findDefinitions.sourceAndStub.innerClassMethod.fourslash.ts +0 -33
  457. package/src/tests/fourslash/findDefinitions.sourceAndStub.outerClass.fourslash.ts +0 -28
  458. package/src/tests/fourslash/findDefinitions.sourceAndStub.outerClassMethod.fourslash.ts +0 -29
  459. package/src/tests/fourslash/findDefinitions.sourceAndStub.outerClassPropertyReadOnly.fourslash.ts +0 -31
  460. package/src/tests/fourslash/findDefinitions.sourceAndStub.outerClassPropertyReadWrite.fourslash.ts +0 -36
  461. package/src/tests/fourslash/findDefinitions.sourceOnly.class.fourslash.ts +0 -29
  462. package/src/tests/fourslash/findDefinitions.sourceOnly.function1.fourslash.ts +0 -28
  463. package/src/tests/fourslash/findDefinitions.sourceOnly.function2.fourslash.ts +0 -28
  464. package/src/tests/fourslash/findDefinitions.sourceOnly.relativeImport1.fourslash.ts +0 -22
  465. package/src/tests/fourslash/findDefinitions.sourceOnly.relativeImport2.fourslash.ts +0 -22
  466. package/src/tests/fourslash/findDefinitions.stubOnly.fourslash.ts +0 -61
  467. package/src/tests/fourslash/findDefinitions.stubPackages.fourslash.ts +0 -71
  468. package/src/tests/fourslash/findDefinitions.typedDict.keys.fourslash.ts +0 -99
  469. package/src/tests/fourslash/findDefinitions.variables.fourslash.ts +0 -88
  470. package/src/tests/fourslash/findDefinitions.wildcardimports.fourslash.ts +0 -117
  471. package/src/tests/fourslash/findTypeDefinitions.builtinClass.fourslash.ts +0 -26
  472. package/src/tests/fourslash/findTypeDefinitions.classes.fourslash.ts +0 -72
  473. package/src/tests/fourslash/findTypeDefinitions.unions.fourslash.ts +0 -26
  474. package/src/tests/fourslash/findallreferences.classPropertyReadWrite.ts +0 -39
  475. package/src/tests/fourslash/findallreferences.fourslash.ts +0 -34
  476. package/src/tests/fourslash/findallreferences.importalias.fourslash.ts +0 -34
  477. package/src/tests/fourslash/findallreferences.invokedFromLibrary.fourslash.ts +0 -52
  478. package/src/tests/fourslash/findallreferences.module.nested.fourslash.ts +0 -67
  479. package/src/tests/fourslash/findallreferences.modules.duplicated.fourslash.ts +0 -59
  480. package/src/tests/fourslash/findallreferences.modules.fourslash.ts +0 -46
  481. package/src/tests/fourslash/findallreferences.modules.shadow.fourslash.ts +0 -95
  482. package/src/tests/fourslash/findallreferences.openFiles.fourslash.ts +0 -37
  483. package/src/tests/fourslash/findallreferences.parameter.fourslash.ts +0 -24
  484. package/src/tests/fourslash/findallreferences.sourceAndStub.class.fourslash.ts +0 -33
  485. package/src/tests/fourslash/findallreferences.sourceAndStub.classMethod.fourslash.ts +0 -37
  486. package/src/tests/fourslash/findallreferences.sourceAndStub.classPropertyReadOnly.fourslash.ts +0 -40
  487. package/src/tests/fourslash/findallreferences.sourceAndStub.classPropertyReadWrite.fourslash.skip.ts +0 -48
  488. package/src/tests/fourslash/findallreferences.sourceAndStub.function.fourslash.ts +0 -35
  489. package/src/tests/fourslash/findallreferences.variable.fourslash.ts +0 -24
  490. package/src/tests/fourslash/fourslash.ts +0 -411
  491. package/src/tests/fourslash/highlightreferences.attributes.fourslash.ts +0 -31
  492. package/src/tests/fourslash/hover.builtinDocstrings.fourslash.ts +0 -64
  493. package/src/tests/fourslash/hover.classNoInit.fourslash.ts +0 -14
  494. package/src/tests/fourslash/hover.docFromScr.stringFormat.fourslash.ts +0 -52
  495. package/src/tests/fourslash/hover.docFromSrc.fourslash.ts +0 -83
  496. package/src/tests/fourslash/hover.docFromSrc.pkg-vs-module1.fourslash.ts +0 -26
  497. package/src/tests/fourslash/hover.docFromSrc.pkg-vs-module2.fourslash.ts +0 -26
  498. package/src/tests/fourslash/hover.docFromSrc.relativeImport1.fourslash.ts +0 -23
  499. package/src/tests/fourslash/hover.docFromSrc.relativeImport2.fourslash.ts +0 -22
  500. package/src/tests/fourslash/hover.docFromSrc.relativeImport3.fourslash.ts +0 -46
  501. package/src/tests/fourslash/hover.docFromSrc.stubs-package.fourslash.ts +0 -29
  502. package/src/tests/fourslash/hover.docFromSrc.typeshed.fourslash.ts +0 -20
  503. package/src/tests/fourslash/hover.docstring.links.fourslash.ts +0 -12
  504. package/src/tests/fourslash/hover.docstring.overloads.fourslash.ts +0 -41
  505. package/src/tests/fourslash/hover.docstring.split.fourslash.ts +0 -24
  506. package/src/tests/fourslash/hover.fourslash.ts +0 -20
  507. package/src/tests/fourslash/hover.import.django.view.fourslash.ts +0 -27
  508. package/src/tests/fourslash/hover.import.fourslash.ts +0 -11
  509. package/src/tests/fourslash/hover.inherited.docFromSrc.fourslash.ts +0 -63
  510. package/src/tests/fourslash/hover.inherited.docFromSrcWithStub.fourslash.ts +0 -54
  511. package/src/tests/fourslash/hover.inherited.docFromStub.fourslash.ts +0 -42
  512. package/src/tests/fourslash/hover.inherited.overload.docFromSrcWithStub.fourslash.ts +0 -46
  513. package/src/tests/fourslash/hover.inherited.overload.docFromStub.fourslash.ts +0 -47
  514. package/src/tests/fourslash/hover.inherited.property.docFromSrcWithStub.fourslash.ts +0 -87
  515. package/src/tests/fourslash/hover.inherited.property.docFromStub.fourslash.ts +0 -91
  516. package/src/tests/fourslash/hover.init.fourslash.ts +0 -39
  517. package/src/tests/fourslash/hover.libCodeAndStub.fourslash.ts +0 -52
  518. package/src/tests/fourslash/hover.libCodeNoStub.fourslash.ts +0 -41
  519. package/src/tests/fourslash/hover.libStub.fourslash.ts +0 -41
  520. package/src/tests/fourslash/hover.optionalAliasParameter.fourslash.ts +0 -14
  521. package/src/tests/fourslash/hover.plainText.fourslash.ts +0 -21
  522. package/src/tests/fourslash/hover.typedDict.key.fourslash.ts +0 -51
  523. package/src/tests/fourslash/hover.variable.docString.fourslash.ts +0 -41
  524. package/src/tests/fourslash/hover.wildcardimports.fourslash.ts +0 -80
  525. package/src/tests/fourslash/import.publicSymbols.fourslash.ts +0 -65
  526. package/src/tests/fourslash/import.pytyped.dunderAll.fourslash.ts +0 -77
  527. package/src/tests/fourslash/import.pytyped.privateSymbols.fourslash.ts +0 -65
  528. package/src/tests/fourslash/import.pytyped.typeCheckingBasic.fourslash.ts +0 -38
  529. package/src/tests/fourslash/import.pytyped.typeCheckingOff.fourslash.ts +0 -38
  530. package/src/tests/fourslash/import.wildcard.fourslash.ts +0 -27
  531. package/src/tests/fourslash/importnotresolved.fourslash.ts +0 -13
  532. package/src/tests/fourslash/missingModuleSource.disablingInStrictMode.fourslash.ts +0 -20
  533. package/src/tests/fourslash/missingModuleSource.fourslash.ts +0 -14
  534. package/src/tests/fourslash/missingTypeStub.codeAction.fourslash.ts +0 -33
  535. package/src/tests/fourslash/missingTypeStub.command.multipart.fourslash.ts +0 -48
  536. package/src/tests/fourslash/missingTypeStub.command.singlefile.fourslash.ts +0 -38
  537. package/src/tests/fourslash/missingTypeStub.command.singlepart.fourslash.ts +0 -38
  538. package/src/tests/fourslash/missingTypeStub.fourslash.ts +0 -20
  539. package/src/tests/fourslash/missingTypeStub.invokeCodeAction.fourslash.ts +0 -36
  540. package/src/tests/fourslash/noerrors.fourslash.ts +0 -9
  541. package/src/tests/fourslash/orderImports1.command.fourslash.ts +0 -20
  542. package/src/tests/fourslash/orderImports2.command.fourslash.ts +0 -24
  543. package/src/tests/fourslash/rename.externallyHidden.fourslash.ts +0 -24
  544. package/src/tests/fourslash/rename.externallyHidden.params.fourslash.ts +0 -24
  545. package/src/tests/fourslash/rename.fourslash.ts +0 -29
  546. package/src/tests/fourslash/rename.library.fourslash.ts +0 -29
  547. package/src/tests/fourslash/rename.library.sourceAndStub.fourslash.ts +0 -33
  548. package/src/tests/fourslash/rename.multipleDecl.fourslash.ts +0 -21
  549. package/src/tests/fourslash/rename.sourceAndStub.fourslash.ts +0 -37
  550. package/src/tests/fourslash/rename.string.excluded.fourslash.ts +0 -43
  551. package/src/tests/fourslash/rename.string.fourslash.ts +0 -26
  552. package/src/tests/fourslash/signature.builtinDocstrings.fourslash.ts +0 -63
  553. package/src/tests/fourslash/signature.complicated.fourslash.ts +0 -100
  554. package/src/tests/fourslash/signature.cornercases.fourslash.ts +0 -23
  555. package/src/tests/fourslash/signature.docstrings.fourslash.ts +0 -43
  556. package/src/tests/fourslash/signature.docstrings.overloaded.fourslash.ts +0 -50
  557. package/src/tests/fourslash/signature.docstrings.wildcardimports.fourslash.ts +0 -122
  558. package/src/tests/fourslash/signature.overload.fourslash.ts +0 -64
  559. package/src/tests/fourslash/signature.simple.fourslash.ts +0 -104
  560. package/src/tests/harness/fourslash/fourSlashParser.ts +0 -441
  561. package/src/tests/harness/fourslash/fourSlashTypes.ts +0 -134
  562. package/src/tests/harness/fourslash/runner.ts +0 -99
  563. package/src/tests/harness/fourslash/testLanguageService.ts +0 -142
  564. package/src/tests/harness/fourslash/testState.Consts.ts +0 -29
  565. package/src/tests/harness/fourslash/testState.ts +0 -1993
  566. package/src/tests/harness/testAccessHost.ts +0 -23
  567. package/src/tests/harness/testHost.ts +0 -177
  568. package/src/tests/harness/utils.ts +0 -355
  569. package/src/tests/harness/vfs/factory.ts +0 -199
  570. package/src/tests/harness/vfs/filesystem.ts +0 -1893
  571. package/src/tests/harness/vfs/pathValidation.ts +0 -154
  572. package/src/tests/importAdder.test.ts +0 -1361
  573. package/src/tests/importResolver.test.ts +0 -534
  574. package/src/tests/importStatementUtils.test.ts +0 -526
  575. package/src/tests/indentationUtils.ptvs.test.ts +0 -388
  576. package/src/tests/indentationUtils.reindent.test.ts +0 -403
  577. package/src/tests/indentationUtils.test.ts +0 -455
  578. package/src/tests/ipythonMode.test.ts +0 -365
  579. package/src/tests/localizer.test.ts +0 -47
  580. package/src/tests/parseTreeUtils.test.ts +0 -281
  581. package/src/tests/parser.test.ts +0 -99
  582. package/src/tests/pathUtils.test.ts +0 -321
  583. package/src/tests/pyrightFileSystem.test.ts +0 -183
  584. package/src/tests/renameModule.folder.test.ts +0 -261
  585. package/src/tests/renameModule.fromImports.test.ts +0 -952
  586. package/src/tests/renameModule.imports.test.ts +0 -450
  587. package/src/tests/renameModule.misc.test.ts +0 -765
  588. package/src/tests/renameModule.relativePath.test.ts +0 -277
  589. package/src/tests/renameModuleTestUtils.ts +0 -210
  590. package/src/tests/samples/abstractClass1.py +0 -51
  591. package/src/tests/samples/abstractClass2.py +0 -25
  592. package/src/tests/samples/abstractClass3.py +0 -30
  593. package/src/tests/samples/abstractClass4.py +0 -30
  594. package/src/tests/samples/abstractClass5.py +0 -42
  595. package/src/tests/samples/abstractClass6.py +0 -25
  596. package/src/tests/samples/abstractClass7.py +0 -22
  597. package/src/tests/samples/abstractClass8.py +0 -27
  598. package/src/tests/samples/annotated1.py +0 -72
  599. package/src/tests/samples/annotatedVar1.py +0 -22
  600. package/src/tests/samples/annotatedVar2.py +0 -28
  601. package/src/tests/samples/annotatedVar3.py +0 -54
  602. package/src/tests/samples/annotatedVar4.py +0 -24
  603. package/src/tests/samples/annotatedVar5.py +0 -37
  604. package/src/tests/samples/annotatedVar6.py +0 -22
  605. package/src/tests/samples/annotatedVar7.py +0 -13
  606. package/src/tests/samples/annotatedVar8.py +0 -29
  607. package/src/tests/samples/annotations1.py +0 -98
  608. package/src/tests/samples/annotations2.py +0 -33
  609. package/src/tests/samples/annotations3.py +0 -43
  610. package/src/tests/samples/annotations4.py +0 -54
  611. package/src/tests/samples/annotations5.py +0 -9
  612. package/src/tests/samples/annotations6.py +0 -29
  613. package/src/tests/samples/assert1.py +0 -22
  614. package/src/tests/samples/assertType1.py +0 -46
  615. package/src/tests/samples/assignment1.py +0 -58
  616. package/src/tests/samples/assignment10.py +0 -14
  617. package/src/tests/samples/assignment2.py +0 -40
  618. package/src/tests/samples/assignment3.py +0 -46
  619. package/src/tests/samples/assignment4.py +0 -20
  620. package/src/tests/samples/assignment5.py +0 -16
  621. package/src/tests/samples/assignment6.py +0 -25
  622. package/src/tests/samples/assignment7.py +0 -13
  623. package/src/tests/samples/assignment8.py +0 -40
  624. package/src/tests/samples/assignment9.py +0 -25
  625. package/src/tests/samples/assignmentExpr1.py +0 -23
  626. package/src/tests/samples/assignmentExpr2.py +0 -49
  627. package/src/tests/samples/assignmentExpr3.py +0 -27
  628. package/src/tests/samples/assignmentExpr4.py +0 -49
  629. package/src/tests/samples/assignmentExpr5.py +0 -15
  630. package/src/tests/samples/assignmentExpr6.py +0 -10
  631. package/src/tests/samples/assignmentExpr7.py +0 -13
  632. package/src/tests/samples/assignmentExpr8.py +0 -11
  633. package/src/tests/samples/assignmentExpr9.py +0 -28
  634. package/src/tests/samples/async1.py +0 -49
  635. package/src/tests/samples/augmentedAssignment1.py +0 -62
  636. package/src/tests/samples/augmentedAssignment2.py +0 -23
  637. package/src/tests/samples/augmentedAssignment3.py +0 -8
  638. package/src/tests/samples/await1.py +0 -23
  639. package/src/tests/samples/await2.py +0 -25
  640. package/src/tests/samples/badToken1.py +0 -6
  641. package/src/tests/samples/builtins1.py +0 -2
  642. package/src/tests/samples/call1.py +0 -93
  643. package/src/tests/samples/call2.py +0 -118
  644. package/src/tests/samples/call3.py +0 -168
  645. package/src/tests/samples/call4.py +0 -13
  646. package/src/tests/samples/call5.py +0 -95
  647. package/src/tests/samples/call6.py +0 -35
  648. package/src/tests/samples/call7.py +0 -57
  649. package/src/tests/samples/callSite1.py +0 -6
  650. package/src/tests/samples/callSite2.py +0 -12
  651. package/src/tests/samples/callable1.py +0 -53
  652. package/src/tests/samples/callable2.py +0 -58
  653. package/src/tests/samples/callable3.py +0 -28
  654. package/src/tests/samples/callable4.py +0 -32
  655. package/src/tests/samples/callable5.py +0 -40
  656. package/src/tests/samples/callable6.py +0 -83
  657. package/src/tests/samples/callbackProtocol1.py +0 -119
  658. package/src/tests/samples/callbackProtocol2.py +0 -29
  659. package/src/tests/samples/callbackProtocol3.py +0 -23
  660. package/src/tests/samples/callbackProtocol4.py +0 -73
  661. package/src/tests/samples/callbackProtocol5.py +0 -66
  662. package/src/tests/samples/callbackProtocol6.py +0 -66
  663. package/src/tests/samples/callbackProtocol7.py +0 -16
  664. package/src/tests/samples/callbackProtocol8.py +0 -16
  665. package/src/tests/samples/capturedVariable1.py +0 -106
  666. package/src/tests/samples/circular1.py +0 -16
  667. package/src/tests/samples/circular2.py +0 -38
  668. package/src/tests/samples/circularBaseClass.py +0 -17
  669. package/src/tests/samples/classGetItem1.py +0 -30
  670. package/src/tests/samples/classVar1.py +0 -41
  671. package/src/tests/samples/classVar2.py +0 -29
  672. package/src/tests/samples/classVar3.py +0 -46
  673. package/src/tests/samples/classVar4.py +0 -36
  674. package/src/tests/samples/classes1.py +0 -50
  675. package/src/tests/samples/classes3.py +0 -48
  676. package/src/tests/samples/classes4.py +0 -15
  677. package/src/tests/samples/classes5.py +0 -260
  678. package/src/tests/samples/classes6.py +0 -16
  679. package/src/tests/samples/classes7.py +0 -18
  680. package/src/tests/samples/classes8.py +0 -47
  681. package/src/tests/samples/codeFlow1.py +0 -65
  682. package/src/tests/samples/codeFlow2.py +0 -26
  683. package/src/tests/samples/codeFlow3.py +0 -8
  684. package/src/tests/samples/codeFlow4.py +0 -133
  685. package/src/tests/samples/codeFlow5.py +0 -10
  686. package/src/tests/samples/codeFlow6.py +0 -35
  687. package/src/tests/samples/codeFlow7.py +0 -35
  688. package/src/tests/samples/comparison1.py +0 -77
  689. package/src/tests/samples/comparison2.py +0 -37
  690. package/src/tests/samples/complex1.py +0 -17
  691. package/src/tests/samples/constant1.py +0 -40
  692. package/src/tests/samples/constants1.py +0 -64
  693. package/src/tests/samples/constructor1.py +0 -30
  694. package/src/tests/samples/constructor10.py +0 -19
  695. package/src/tests/samples/constructor11.py +0 -32
  696. package/src/tests/samples/constructor12.py +0 -20
  697. package/src/tests/samples/constructor13.py +0 -15
  698. package/src/tests/samples/constructor2.py +0 -180
  699. package/src/tests/samples/constructor3.py +0 -18
  700. package/src/tests/samples/constructor4.py +0 -25
  701. package/src/tests/samples/constructor5.py +0 -25
  702. package/src/tests/samples/constructor6.py +0 -70
  703. package/src/tests/samples/constructor7.py +0 -11
  704. package/src/tests/samples/constructor8.py +0 -99
  705. package/src/tests/samples/constructor9.py +0 -19
  706. package/src/tests/samples/coroutines1.py +0 -60
  707. package/src/tests/samples/coroutines2.py +0 -20
  708. package/src/tests/samples/coroutines3.py +0 -37
  709. package/src/tests/samples/dataclass1.py +0 -44
  710. package/src/tests/samples/dataclass10.py +0 -45
  711. package/src/tests/samples/dataclass11.py +0 -53
  712. package/src/tests/samples/dataclass12.py +0 -32
  713. package/src/tests/samples/dataclass13.py +0 -42
  714. package/src/tests/samples/dataclass14.py +0 -38
  715. package/src/tests/samples/dataclass15.py +0 -58
  716. package/src/tests/samples/dataclass16.py +0 -21
  717. package/src/tests/samples/dataclass17.py +0 -46
  718. package/src/tests/samples/dataclass18.py +0 -57
  719. package/src/tests/samples/dataclass19.py +0 -44
  720. package/src/tests/samples/dataclass2.py +0 -30
  721. package/src/tests/samples/dataclass20.py +0 -71
  722. package/src/tests/samples/dataclass21.py +0 -13
  723. package/src/tests/samples/dataclass3.py +0 -18
  724. package/src/tests/samples/dataclass4.py +0 -64
  725. package/src/tests/samples/dataclass5.py +0 -81
  726. package/src/tests/samples/dataclass6.py +0 -29
  727. package/src/tests/samples/dataclass7.py +0 -93
  728. package/src/tests/samples/dataclass8.py +0 -22
  729. package/src/tests/samples/dataclass9.py +0 -24
  730. package/src/tests/samples/dataclassPostInit1.py +0 -61
  731. package/src/tests/samples/dataclassTransform1.py +0 -71
  732. package/src/tests/samples/dataclassTransform2.py +0 -78
  733. package/src/tests/samples/dataclassTransform3.py +0 -83
  734. package/src/tests/samples/dataclassTransform4.py +0 -87
  735. package/src/tests/samples/decorator1.py +0 -20
  736. package/src/tests/samples/decorator2.py +0 -31
  737. package/src/tests/samples/decorator3.py +0 -27
  738. package/src/tests/samples/decorator4.py +0 -37
  739. package/src/tests/samples/decorator5.py +0 -29
  740. package/src/tests/samples/decorator6.py +0 -34
  741. package/src/tests/samples/defaultInitializer1.py +0 -26
  742. package/src/tests/samples/deprecated1.py +0 -37
  743. package/src/tests/samples/descriptor1.py +0 -134
  744. package/src/tests/samples/descriptor2.py +0 -29
  745. package/src/tests/samples/dictionary1.py +0 -42
  746. package/src/tests/samples/dictionary2.py +0 -14
  747. package/src/tests/samples/dictionary3.py +0 -30
  748. package/src/tests/samples/dictionary4.py +0 -106
  749. package/src/tests/samples/dunderAll1.py +0 -32
  750. package/src/tests/samples/dunderAll2.py +0 -16
  751. package/src/tests/samples/dunderAll3.pyi +0 -16
  752. package/src/tests/samples/duplicateDeclaration1.py +0 -115
  753. package/src/tests/samples/duplicateDeclaration2.py +0 -45
  754. package/src/tests/samples/duplicateImports1.py +0 -13
  755. package/src/tests/samples/ellipsis1.pyi +0 -48
  756. package/src/tests/samples/emptyContainers1.py +0 -89
  757. package/src/tests/samples/enums1.py +0 -52
  758. package/src/tests/samples/enums2.py +0 -15
  759. package/src/tests/samples/enums3.py +0 -24
  760. package/src/tests/samples/enums4.py +0 -23
  761. package/src/tests/samples/enums5.py +0 -16
  762. package/src/tests/samples/enums6.py +0 -33
  763. package/src/tests/samples/enums7.py +0 -54
  764. package/src/tests/samples/enums8.py +0 -14
  765. package/src/tests/samples/expressions1.py +0 -54
  766. package/src/tests/samples/expressions2.py +0 -29
  767. package/src/tests/samples/expressions3.py +0 -26
  768. package/src/tests/samples/expressions4.py +0 -23
  769. package/src/tests/samples/expressions5.py +0 -70
  770. package/src/tests/samples/expressions6.py +0 -14
  771. package/src/tests/samples/expressions7.py +0 -40
  772. package/src/tests/samples/expressions8.py +0 -26
  773. package/src/tests/samples/expressions9.py +0 -14
  774. package/src/tests/samples/final1.py +0 -14
  775. package/src/tests/samples/final2.py +0 -86
  776. package/src/tests/samples/final3.py +0 -179
  777. package/src/tests/samples/final4.pyi +0 -21
  778. package/src/tests/samples/final5.py +0 -18
  779. package/src/tests/samples/forLoop1.py +0 -88
  780. package/src/tests/samples/forLoop2.py +0 -48
  781. package/src/tests/samples/fstring1.py +0 -66
  782. package/src/tests/samples/fstring2.py +0 -12
  783. package/src/tests/samples/fstring3.py +0 -35
  784. package/src/tests/samples/fstring4.py +0 -17
  785. package/src/tests/samples/fstring5.py +0 -17
  786. package/src/tests/samples/fstring6.py +0 -14
  787. package/src/tests/samples/function1.py +0 -12
  788. package/src/tests/samples/function10.py +0 -20
  789. package/src/tests/samples/function11.py +0 -36
  790. package/src/tests/samples/function2.py +0 -7
  791. package/src/tests/samples/function3.py +0 -82
  792. package/src/tests/samples/function4.py +0 -13
  793. package/src/tests/samples/function6.py +0 -24
  794. package/src/tests/samples/function7.py +0 -13
  795. package/src/tests/samples/function8.py +0 -38
  796. package/src/tests/samples/function9.py +0 -75
  797. package/src/tests/samples/functionAnnotation1.py +0 -61
  798. package/src/tests/samples/functionAnnotation2.py +0 -26
  799. package/src/tests/samples/functionAnnotation3.py +0 -37
  800. package/src/tests/samples/functionAnnotation4.py +0 -22
  801. package/src/tests/samples/functionMember1.py +0 -18
  802. package/src/tests/samples/functionMember2.py +0 -45
  803. package/src/tests/samples/generators1.py +0 -122
  804. package/src/tests/samples/generators10.py +0 -18
  805. package/src/tests/samples/generators11.py +0 -27
  806. package/src/tests/samples/generators12.py +0 -25
  807. package/src/tests/samples/generators13.py +0 -65
  808. package/src/tests/samples/generators14.py +0 -19
  809. package/src/tests/samples/generators15.py +0 -26
  810. package/src/tests/samples/generators2.py +0 -31
  811. package/src/tests/samples/generators3.py +0 -42
  812. package/src/tests/samples/generators4.py +0 -33
  813. package/src/tests/samples/generators5.py +0 -24
  814. package/src/tests/samples/generators6.py +0 -14
  815. package/src/tests/samples/generators7.py +0 -18
  816. package/src/tests/samples/generators8.py +0 -12
  817. package/src/tests/samples/generators9.py +0 -19
  818. package/src/tests/samples/generic1.py +0 -41
  819. package/src/tests/samples/genericTypes1.py +0 -12
  820. package/src/tests/samples/genericTypes10.py +0 -38
  821. package/src/tests/samples/genericTypes11.py +0 -26
  822. package/src/tests/samples/genericTypes12.py +0 -14
  823. package/src/tests/samples/genericTypes13.py +0 -27
  824. package/src/tests/samples/genericTypes14.py +0 -22
  825. package/src/tests/samples/genericTypes15.py +0 -13
  826. package/src/tests/samples/genericTypes16.py +0 -15
  827. package/src/tests/samples/genericTypes17.py +0 -24
  828. package/src/tests/samples/genericTypes18.py +0 -135
  829. package/src/tests/samples/genericTypes19.py +0 -32
  830. package/src/tests/samples/genericTypes2.py +0 -40
  831. package/src/tests/samples/genericTypes20.py +0 -44
  832. package/src/tests/samples/genericTypes21.py +0 -29
  833. package/src/tests/samples/genericTypes22.py +0 -23
  834. package/src/tests/samples/genericTypes23.py +0 -27
  835. package/src/tests/samples/genericTypes24.py +0 -32
  836. package/src/tests/samples/genericTypes25.py +0 -37
  837. package/src/tests/samples/genericTypes26.py +0 -31
  838. package/src/tests/samples/genericTypes27.py +0 -14
  839. package/src/tests/samples/genericTypes28.py +0 -51
  840. package/src/tests/samples/genericTypes29.py +0 -24
  841. package/src/tests/samples/genericTypes3.py +0 -13
  842. package/src/tests/samples/genericTypes30.py +0 -32
  843. package/src/tests/samples/genericTypes31.py +0 -30
  844. package/src/tests/samples/genericTypes32.py +0 -25
  845. package/src/tests/samples/genericTypes33.py +0 -46
  846. package/src/tests/samples/genericTypes34.py +0 -54
  847. package/src/tests/samples/genericTypes35.py +0 -45
  848. package/src/tests/samples/genericTypes36.py +0 -35
  849. package/src/tests/samples/genericTypes37.py +0 -26
  850. package/src/tests/samples/genericTypes38.py +0 -15
  851. package/src/tests/samples/genericTypes39.py +0 -82
  852. package/src/tests/samples/genericTypes4.py +0 -37
  853. package/src/tests/samples/genericTypes40.py +0 -38
  854. package/src/tests/samples/genericTypes41.py +0 -16
  855. package/src/tests/samples/genericTypes42.py +0 -32
  856. package/src/tests/samples/genericTypes43.py +0 -24
  857. package/src/tests/samples/genericTypes44.py +0 -33
  858. package/src/tests/samples/genericTypes45.py +0 -43
  859. package/src/tests/samples/genericTypes46.py +0 -66
  860. package/src/tests/samples/genericTypes47.py +0 -39
  861. package/src/tests/samples/genericTypes48.py +0 -18
  862. package/src/tests/samples/genericTypes49.py +0 -41
  863. package/src/tests/samples/genericTypes5.py +0 -42
  864. package/src/tests/samples/genericTypes50.py +0 -62
  865. package/src/tests/samples/genericTypes51.py +0 -55
  866. package/src/tests/samples/genericTypes52.py +0 -34
  867. package/src/tests/samples/genericTypes53.py +0 -42
  868. package/src/tests/samples/genericTypes54.py +0 -31
  869. package/src/tests/samples/genericTypes55.py +0 -61
  870. package/src/tests/samples/genericTypes56.py +0 -19
  871. package/src/tests/samples/genericTypes57.py +0 -30
  872. package/src/tests/samples/genericTypes58.py +0 -52
  873. package/src/tests/samples/genericTypes59.py +0 -71
  874. package/src/tests/samples/genericTypes6.py +0 -49
  875. package/src/tests/samples/genericTypes60.py +0 -27
  876. package/src/tests/samples/genericTypes61.py +0 -34
  877. package/src/tests/samples/genericTypes62.py +0 -26
  878. package/src/tests/samples/genericTypes63.py +0 -32
  879. package/src/tests/samples/genericTypes64.py +0 -16
  880. package/src/tests/samples/genericTypes65.py +0 -15
  881. package/src/tests/samples/genericTypes66.py +0 -30
  882. package/src/tests/samples/genericTypes67.py +0 -57
  883. package/src/tests/samples/genericTypes68.py +0 -14
  884. package/src/tests/samples/genericTypes69.py +0 -45
  885. package/src/tests/samples/genericTypes7.py +0 -24
  886. package/src/tests/samples/genericTypes70.py +0 -31
  887. package/src/tests/samples/genericTypes71.py +0 -72
  888. package/src/tests/samples/genericTypes72.py +0 -24
  889. package/src/tests/samples/genericTypes73.py +0 -14
  890. package/src/tests/samples/genericTypes74.py +0 -23
  891. package/src/tests/samples/genericTypes75.py +0 -45
  892. package/src/tests/samples/genericTypes76.py +0 -107
  893. package/src/tests/samples/genericTypes77.py +0 -26
  894. package/src/tests/samples/genericTypes78.py +0 -23
  895. package/src/tests/samples/genericTypes79.py +0 -37
  896. package/src/tests/samples/genericTypes8.py +0 -26
  897. package/src/tests/samples/genericTypes80.py +0 -10
  898. package/src/tests/samples/genericTypes81.py +0 -32
  899. package/src/tests/samples/genericTypes82.py +0 -19
  900. package/src/tests/samples/genericTypes83.py +0 -28
  901. package/src/tests/samples/genericTypes84.py +0 -11
  902. package/src/tests/samples/genericTypes85.py +0 -20
  903. package/src/tests/samples/genericTypes86.py +0 -15
  904. package/src/tests/samples/genericTypes87.py +0 -21
  905. package/src/tests/samples/genericTypes88.py +0 -25
  906. package/src/tests/samples/genericTypes89.py +0 -17
  907. package/src/tests/samples/genericTypes9.py +0 -109
  908. package/src/tests/samples/genericTypes90.py +0 -12
  909. package/src/tests/samples/genericTypes91.py +0 -20
  910. package/src/tests/samples/import1.py +0 -7
  911. package/src/tests/samples/import10.py +0 -11
  912. package/src/tests/samples/import11.py +0 -11
  913. package/src/tests/samples/import12.py +0 -5
  914. package/src/tests/samples/import13.py +0 -6
  915. package/src/tests/samples/import14.py +0 -10
  916. package/src/tests/samples/import2.py +0 -27
  917. package/src/tests/samples/import3.py +0 -8
  918. package/src/tests/samples/import4.py +0 -15
  919. package/src/tests/samples/import5.py +0 -6
  920. package/src/tests/samples/import6.py +0 -17
  921. package/src/tests/samples/import7.py +0 -14
  922. package/src/tests/samples/import8.py +0 -7
  923. package/src/tests/samples/import9.py +0 -7
  924. package/src/tests/samples/inconsistentConstructor1.py +0 -23
  925. package/src/tests/samples/inconsistentSpaceTab1.py +0 -9
  926. package/src/tests/samples/inconsistentSpaceTab2.py +0 -10
  927. package/src/tests/samples/index1.py +0 -97
  928. package/src/tests/samples/inferredTypes1.py +0 -25
  929. package/src/tests/samples/initVar1.py +0 -23
  930. package/src/tests/samples/initsubclass1.py +0 -46
  931. package/src/tests/samples/initsubclass2.py +0 -16
  932. package/src/tests/samples/isinstance1.py +0 -57
  933. package/src/tests/samples/isinstance10.py +0 -15
  934. package/src/tests/samples/isinstance2.py +0 -28
  935. package/src/tests/samples/isinstance3.py +0 -59
  936. package/src/tests/samples/isinstance4.py +0 -57
  937. package/src/tests/samples/isinstance5.py +0 -8
  938. package/src/tests/samples/isinstance6.py +0 -19
  939. package/src/tests/samples/isinstance7.py +0 -42
  940. package/src/tests/samples/isinstance9.py +0 -26
  941. package/src/tests/samples/kwargsUnpack1.py +0 -116
  942. package/src/tests/samples/lambda1.py +0 -77
  943. package/src/tests/samples/lambda2.py +0 -26
  944. package/src/tests/samples/lambda3.py +0 -34
  945. package/src/tests/samples/lambda4.py +0 -70
  946. package/src/tests/samples/lambda5.py +0 -23
  947. package/src/tests/samples/lambda6.py +0 -15
  948. package/src/tests/samples/lines1.py +0 -14
  949. package/src/tests/samples/list1.py +0 -90
  950. package/src/tests/samples/listComprehension1.py +0 -45
  951. package/src/tests/samples/listComprehension2.py +0 -17
  952. package/src/tests/samples/listComprehension3.py +0 -12
  953. package/src/tests/samples/listComprehension4.py +0 -15
  954. package/src/tests/samples/listComprehension5.py +0 -20
  955. package/src/tests/samples/listComprehension6.py +0 -14
  956. package/src/tests/samples/listComprehension7.py +0 -15
  957. package/src/tests/samples/listComprehension8.py +0 -15
  958. package/src/tests/samples/literalString1.py +0 -43
  959. package/src/tests/samples/literals1.py +0 -48
  960. package/src/tests/samples/literals2.py +0 -30
  961. package/src/tests/samples/literals3.py +0 -40
  962. package/src/tests/samples/literals4.py +0 -10
  963. package/src/tests/samples/literals5.py +0 -28
  964. package/src/tests/samples/literals6.py +0 -90
  965. package/src/tests/samples/literals7.py +0 -38
  966. package/src/tests/samples/loops1.py +0 -45
  967. package/src/tests/samples/loops10.py +0 -11
  968. package/src/tests/samples/loops11.py +0 -22
  969. package/src/tests/samples/loops12.py +0 -18
  970. package/src/tests/samples/loops13.py +0 -13
  971. package/src/tests/samples/loops14.py +0 -22
  972. package/src/tests/samples/loops15.py +0 -22
  973. package/src/tests/samples/loops16.py +0 -322
  974. package/src/tests/samples/loops17.py +0 -9
  975. package/src/tests/samples/loops18.py +0 -23
  976. package/src/tests/samples/loops19.py +0 -14
  977. package/src/tests/samples/loops2.py +0 -25
  978. package/src/tests/samples/loops20.py +0 -41
  979. package/src/tests/samples/loops21.py +0 -18
  980. package/src/tests/samples/loops22.py +0 -21
  981. package/src/tests/samples/loops23.py +0 -16
  982. package/src/tests/samples/loops24.py +0 -12
  983. package/src/tests/samples/loops25.py +0 -45
  984. package/src/tests/samples/loops26.py +0 -12
  985. package/src/tests/samples/loops3.py +0 -11
  986. package/src/tests/samples/loops4.py +0 -17
  987. package/src/tests/samples/loops5.py +0 -14
  988. package/src/tests/samples/loops6.py +0 -25
  989. package/src/tests/samples/loops7.py +0 -14
  990. package/src/tests/samples/loops8.py +0 -17
  991. package/src/tests/samples/loops9.py +0 -25
  992. package/src/tests/samples/match1.py +0 -190
  993. package/src/tests/samples/match10.py +0 -67
  994. package/src/tests/samples/match2.py +0 -340
  995. package/src/tests/samples/match3.py +0 -364
  996. package/src/tests/samples/match4.py +0 -100
  997. package/src/tests/samples/match5.py +0 -70
  998. package/src/tests/samples/match6.py +0 -64
  999. package/src/tests/samples/match7.py +0 -65
  1000. package/src/tests/samples/match8.py +0 -19
  1001. package/src/tests/samples/match9.py +0 -53
  1002. package/src/tests/samples/maxParseDepth1.py +0 -499
  1003. package/src/tests/samples/maxParseDepth2.py +0 -16
  1004. package/src/tests/samples/memberAccess1.py +0 -70
  1005. package/src/tests/samples/memberAccess10.py +0 -65
  1006. package/src/tests/samples/memberAccess11.py +0 -37
  1007. package/src/tests/samples/memberAccess12.py +0 -36
  1008. package/src/tests/samples/memberAccess13.py +0 -17
  1009. package/src/tests/samples/memberAccess14.py +0 -63
  1010. package/src/tests/samples/memberAccess15.py +0 -20
  1011. package/src/tests/samples/memberAccess16.py +0 -12
  1012. package/src/tests/samples/memberAccess17.py +0 -31
  1013. package/src/tests/samples/memberAccess18.py +0 -31
  1014. package/src/tests/samples/memberAccess2.py +0 -45
  1015. package/src/tests/samples/memberAccess3.py +0 -64
  1016. package/src/tests/samples/memberAccess4.py +0 -91
  1017. package/src/tests/samples/memberAccess5.py +0 -26
  1018. package/src/tests/samples/memberAccess6.py +0 -52
  1019. package/src/tests/samples/memberAccess7.py +0 -36
  1020. package/src/tests/samples/memberAccess8.py +0 -75
  1021. package/src/tests/samples/memberAccess9.py +0 -11
  1022. package/src/tests/samples/metaclass1.py +0 -7
  1023. package/src/tests/samples/metaclass2.py +0 -35
  1024. package/src/tests/samples/metaclass3.py +0 -43
  1025. package/src/tests/samples/metaclass4.py +0 -26
  1026. package/src/tests/samples/metaclass5.py +0 -33
  1027. package/src/tests/samples/metaclass6.py +0 -15
  1028. package/src/tests/samples/metaclass7.py +0 -38
  1029. package/src/tests/samples/metaclass8.py +0 -20
  1030. package/src/tests/samples/metaclass9.py +0 -77
  1031. package/src/tests/samples/methodOverride1.py +0 -507
  1032. package/src/tests/samples/methodOverride2.py +0 -74
  1033. package/src/tests/samples/methodOverride3.py +0 -111
  1034. package/src/tests/samples/methodOverride4.py +0 -36
  1035. package/src/tests/samples/missingSuper1.py +0 -73
  1036. package/src/tests/samples/module1.py +0 -13
  1037. package/src/tests/samples/module2.py +0 -7
  1038. package/src/tests/samples/mro1.py +0 -16
  1039. package/src/tests/samples/mro2.py +0 -45
  1040. package/src/tests/samples/mro3.py +0 -30
  1041. package/src/tests/samples/mro4.py +0 -30
  1042. package/src/tests/samples/nameBindings1.py +0 -48
  1043. package/src/tests/samples/nameBindings2.py +0 -9
  1044. package/src/tests/samples/nameBindings3.py +0 -36
  1045. package/src/tests/samples/nameBindings4.py +0 -10
  1046. package/src/tests/samples/nameBindings5.py +0 -53
  1047. package/src/tests/samples/namedTuples1.py +0 -103
  1048. package/src/tests/samples/namedTuples2.py +0 -56
  1049. package/src/tests/samples/namedTuples3.py +0 -15
  1050. package/src/tests/samples/namedTuples4.py +0 -24
  1051. package/src/tests/samples/namedTuples5.py +0 -15
  1052. package/src/tests/samples/namedTuples6.py +0 -31
  1053. package/src/tests/samples/namedTuples7.py +0 -27
  1054. package/src/tests/samples/never1.py +0 -12
  1055. package/src/tests/samples/never2.py +0 -43
  1056. package/src/tests/samples/newType1.py +0 -34
  1057. package/src/tests/samples/newType2.py +0 -25
  1058. package/src/tests/samples/newType3.py +0 -34
  1059. package/src/tests/samples/newType4.py +0 -8
  1060. package/src/tests/samples/none1.py +0 -29
  1061. package/src/tests/samples/none2.py +0 -22
  1062. package/src/tests/samples/noreturn1.py +0 -78
  1063. package/src/tests/samples/noreturn2.py +0 -37
  1064. package/src/tests/samples/noreturn3.py +0 -16
  1065. package/src/tests/samples/noreturn4.py +0 -29
  1066. package/src/tests/samples/operators1.py +0 -101
  1067. package/src/tests/samples/operators2.py +0 -30
  1068. package/src/tests/samples/operators3.py +0 -8
  1069. package/src/tests/samples/operators4.py +0 -22
  1070. package/src/tests/samples/operators5.py +0 -5
  1071. package/src/tests/samples/operators6.py +0 -10
  1072. package/src/tests/samples/operators7.py +0 -24
  1073. package/src/tests/samples/operators8.py +0 -125
  1074. package/src/tests/samples/optional1.py +0 -77
  1075. package/src/tests/samples/optional2.py +0 -23
  1076. package/src/tests/samples/overload1.py +0 -50
  1077. package/src/tests/samples/overload10.py +0 -48
  1078. package/src/tests/samples/overload2.py +0 -37
  1079. package/src/tests/samples/overload3.py +0 -29
  1080. package/src/tests/samples/overload4.py +0 -46
  1081. package/src/tests/samples/overload5.py +0 -333
  1082. package/src/tests/samples/overload6.py +0 -64
  1083. package/src/tests/samples/overload7.py +0 -376
  1084. package/src/tests/samples/overload8.py +0 -89
  1085. package/src/tests/samples/overload9.py +0 -19
  1086. package/src/tests/samples/package1/__init__.py +0 -3
  1087. package/src/tests/samples/package1/psyche/pysche.py +0 -4
  1088. package/src/tests/samples/package1/psyche.py +0 -4
  1089. package/src/tests/samples/package1/sub/__init__.py +0 -5
  1090. package/src/tests/samples/package1/sub.py +0 -4
  1091. package/src/tests/samples/package1/sub.pyi +0 -2
  1092. package/src/tests/samples/paramInference1.py +0 -27
  1093. package/src/tests/samples/paramNames1.py +0 -39
  1094. package/src/tests/samples/paramSpec1.py +0 -64
  1095. package/src/tests/samples/paramSpec10.py +0 -57
  1096. package/src/tests/samples/paramSpec11.py +0 -36
  1097. package/src/tests/samples/paramSpec12.py +0 -88
  1098. package/src/tests/samples/paramSpec13.py +0 -112
  1099. package/src/tests/samples/paramSpec14.py +0 -30
  1100. package/src/tests/samples/paramSpec15.py +0 -28
  1101. package/src/tests/samples/paramSpec16.py +0 -28
  1102. package/src/tests/samples/paramSpec17.py +0 -34
  1103. package/src/tests/samples/paramSpec18.py +0 -43
  1104. package/src/tests/samples/paramSpec19.py +0 -93
  1105. package/src/tests/samples/paramSpec2.py +0 -29
  1106. package/src/tests/samples/paramSpec20.py +0 -87
  1107. package/src/tests/samples/paramSpec21.py +0 -58
  1108. package/src/tests/samples/paramSpec22.py +0 -26
  1109. package/src/tests/samples/paramSpec23.py +0 -21
  1110. package/src/tests/samples/paramSpec24.py +0 -67
  1111. package/src/tests/samples/paramSpec25.py +0 -36
  1112. package/src/tests/samples/paramSpec26.py +0 -25
  1113. package/src/tests/samples/paramSpec27.py +0 -57
  1114. package/src/tests/samples/paramSpec28.py +0 -39
  1115. package/src/tests/samples/paramSpec29.py +0 -37
  1116. package/src/tests/samples/paramSpec3.py +0 -71
  1117. package/src/tests/samples/paramSpec30.py +0 -49
  1118. package/src/tests/samples/paramSpec31.py +0 -16
  1119. package/src/tests/samples/paramSpec32.py +0 -57
  1120. package/src/tests/samples/paramSpec33.py +0 -29
  1121. package/src/tests/samples/paramSpec34.py +0 -29
  1122. package/src/tests/samples/paramSpec35.py +0 -24
  1123. package/src/tests/samples/paramSpec36.py +0 -43
  1124. package/src/tests/samples/paramSpec37.py +0 -25
  1125. package/src/tests/samples/paramSpec4.py +0 -109
  1126. package/src/tests/samples/paramSpec5.py +0 -29
  1127. package/src/tests/samples/paramSpec6.py +0 -17
  1128. package/src/tests/samples/paramSpec7.py +0 -22
  1129. package/src/tests/samples/paramSpec8.py +0 -45
  1130. package/src/tests/samples/paramSpec9.py +0 -57
  1131. package/src/tests/samples/paramType1.py +0 -71
  1132. package/src/tests/samples/parameters1.py +0 -16
  1133. package/src/tests/samples/partial1.py +0 -163
  1134. package/src/tests/samples/partial2.py +0 -31
  1135. package/src/tests/samples/private1.py +0 -55
  1136. package/src/tests/samples/private2.py +0 -11
  1137. package/src/tests/samples/project1/pyrightconfig.json +0 -5
  1138. package/src/tests/samples/project1/sample1.py +0 -0
  1139. package/src/tests/samples/project1/subfolder1/sample2.py +0 -0
  1140. package/src/tests/samples/project1/subfolder1/subfolder1-1/sample3.py +0 -0
  1141. package/src/tests/samples/project2/pyrightconfig.json +0 -3
  1142. package/src/tests/samples/project3/pyrightconfig.json +0 -7
  1143. package/src/tests/samples/project4/presentfile.py +0 -0
  1144. package/src/tests/samples/project4/pyrightconfig.json +0 -11
  1145. package/src/tests/samples/project4/subfolder/presentfile2.py +0 -0
  1146. package/src/tests/samples/project4/subfolder/presentfile3.py +0 -0
  1147. package/src/tests/samples/project5/pyrightconfig.json +0 -4
  1148. package/src/tests/samples/project6/app1.py +0 -0
  1149. package/src/tests/samples/project6/app2.py +0 -0
  1150. package/src/tests/samples/project6/projectA/foo/__init__.py +0 -0
  1151. package/src/tests/samples/project6/projectA/foo/bar/__init__.py +0 -0
  1152. package/src/tests/samples/project6/projectB/foo/__init__.py +0 -0
  1153. package/src/tests/samples/project6/projectB/foo/baz/__init__.py +0 -0
  1154. package/src/tests/samples/project_src/src/module1.py +0 -0
  1155. package/src/tests/samples/project_src_is_pkg/src/__init__.py +0 -0
  1156. package/src/tests/samples/project_src_is_pkg/src/module1.py +0 -0
  1157. package/src/tests/samples/project_src_with_config_extra_paths/pyrightconfig.json +0 -3
  1158. package/src/tests/samples/project_src_with_config_extra_paths/src/module1.py +0 -0
  1159. package/src/tests/samples/project_src_with_config_no_extra_paths/pyrightconfig.json +0 -2
  1160. package/src/tests/samples/project_src_with_config_no_extra_paths/src/module1.py +0 -0
  1161. package/src/tests/samples/project_src_with_extra_paths/src/_vendored/vendored1.py +0 -1
  1162. package/src/tests/samples/project_src_with_extra_paths/src/module1.py +0 -2
  1163. package/src/tests/samples/project_with_pyproject_toml/pyproject.toml +0 -7
  1164. package/src/tests/samples/project_with_venv_auto_detect_exclude/myvenv/Lib/site-packages/library1.py +0 -0
  1165. package/src/tests/samples/project_with_venv_auto_detect_exclude/myvenv/pyvenv.cfg +0 -0
  1166. package/src/tests/samples/project_with_venv_auto_detect_exclude/pyrightconfig.json +0 -2
  1167. package/src/tests/samples/project_with_venv_auto_detect_exclude/sample1.py +0 -0
  1168. package/src/tests/samples/project_with_venv_auto_detect_exclude/subfolder1/sample2.py +0 -0
  1169. package/src/tests/samples/project_with_venv_auto_detect_exclude/subfolder1/subfolder1-1/sample3.py +0 -0
  1170. package/src/tests/samples/project_with_venv_auto_detect_include/excluded/excluded1.py +0 -0
  1171. package/src/tests/samples/project_with_venv_auto_detect_include/myvenv/Lib/site-packages/library1.py +0 -0
  1172. package/src/tests/samples/project_with_venv_auto_detect_include/myvenv/pyvenv.cfg +0 -0
  1173. package/src/tests/samples/project_with_venv_auto_detect_include/pyrightconfig.json +0 -3
  1174. package/src/tests/samples/project_with_venv_auto_detect_include/sample1.py +0 -0
  1175. package/src/tests/samples/project_with_venv_auto_detect_include/subfolder1/sample2.py +0 -0
  1176. package/src/tests/samples/project_with_venv_auto_detect_include/subfolder1/subfolder1-1/sample3.py +0 -0
  1177. package/src/tests/samples/properties1.py +0 -64
  1178. package/src/tests/samples/properties10.py +0 -19
  1179. package/src/tests/samples/properties11.py +0 -45
  1180. package/src/tests/samples/properties12.py +0 -23
  1181. package/src/tests/samples/properties13.py +0 -15
  1182. package/src/tests/samples/properties2.py +0 -34
  1183. package/src/tests/samples/properties3.py +0 -93
  1184. package/src/tests/samples/properties4.py +0 -17
  1185. package/src/tests/samples/properties5.py +0 -29
  1186. package/src/tests/samples/properties6.py +0 -35
  1187. package/src/tests/samples/properties7.py +0 -30
  1188. package/src/tests/samples/properties8.py +0 -26
  1189. package/src/tests/samples/properties9.py +0 -24
  1190. package/src/tests/samples/protocol1.py +0 -132
  1191. package/src/tests/samples/protocol10.py +0 -36
  1192. package/src/tests/samples/protocol11.py +0 -32
  1193. package/src/tests/samples/protocol12.py +0 -12
  1194. package/src/tests/samples/protocol13.py +0 -26
  1195. package/src/tests/samples/protocol14.py +0 -27
  1196. package/src/tests/samples/protocol15.py +0 -27
  1197. package/src/tests/samples/protocol16.py +0 -22
  1198. package/src/tests/samples/protocol17.py +0 -94
  1199. package/src/tests/samples/protocol18.py +0 -27
  1200. package/src/tests/samples/protocol19.py +0 -39
  1201. package/src/tests/samples/protocol2.py +0 -38
  1202. package/src/tests/samples/protocol20.py +0 -22
  1203. package/src/tests/samples/protocol21.py +0 -26
  1204. package/src/tests/samples/protocol22.py +0 -43
  1205. package/src/tests/samples/protocol23.py +0 -41
  1206. package/src/tests/samples/protocol24.py +0 -74
  1207. package/src/tests/samples/protocol25.py +0 -31
  1208. package/src/tests/samples/protocol26.py +0 -40
  1209. package/src/tests/samples/protocol27.py +0 -76
  1210. package/src/tests/samples/protocol28.py +0 -32
  1211. package/src/tests/samples/protocol29.py +0 -26
  1212. package/src/tests/samples/protocol3.py +0 -110
  1213. package/src/tests/samples/protocol30.py +0 -30
  1214. package/src/tests/samples/protocol31.py +0 -22
  1215. package/src/tests/samples/protocol32.py +0 -67
  1216. package/src/tests/samples/protocol33.py +0 -39
  1217. package/src/tests/samples/protocol34.py +0 -21
  1218. package/src/tests/samples/protocol4.py +0 -22
  1219. package/src/tests/samples/protocol5.py +0 -25
  1220. package/src/tests/samples/protocol6.py +0 -65
  1221. package/src/tests/samples/protocol7.py +0 -24
  1222. package/src/tests/samples/protocol8.py +0 -34
  1223. package/src/tests/samples/protocol9.py +0 -35
  1224. package/src/tests/samples/protocolModule1.py +0 -15
  1225. package/src/tests/samples/protocolModule2.py +0 -83
  1226. package/src/tests/samples/protocolModule3.py +0 -14
  1227. package/src/tests/samples/protocolModule4.py +0 -26
  1228. package/src/tests/samples/pseudoGeneric1.py +0 -20
  1229. package/src/tests/samples/pyrightIgnore1.py +0 -11
  1230. package/src/tests/samples/pyrightIgnore2.py +0 -24
  1231. package/src/tests/samples/python2.py +0 -31
  1232. package/src/tests/samples/recursiveTypeAlias1.py +0 -79
  1233. package/src/tests/samples/recursiveTypeAlias2.py +0 -32
  1234. package/src/tests/samples/recursiveTypeAlias3.py +0 -26
  1235. package/src/tests/samples/recursiveTypeAlias4.py +0 -55
  1236. package/src/tests/samples/recursiveTypeAlias5.pyi +0 -10
  1237. package/src/tests/samples/recursiveTypeAlias6.py +0 -25
  1238. package/src/tests/samples/recursiveTypeAlias7.py +0 -15
  1239. package/src/tests/samples/recursiveTypeAlias8.py +0 -38
  1240. package/src/tests/samples/recursiveTypeAlias9.py +0 -22
  1241. package/src/tests/samples/required1.py +0 -47
  1242. package/src/tests/samples/required2.py +0 -56
  1243. package/src/tests/samples/required3.py +0 -22
  1244. package/src/tests/samples/returnTypes1.py +0 -26
  1245. package/src/tests/samples/revealedType1.py +0 -30
  1246. package/src/tests/samples/sample1.py +0 -6
  1247. package/src/tests/samples/self1.py +0 -93
  1248. package/src/tests/samples/self2.py +0 -195
  1249. package/src/tests/samples/self3.py +0 -9
  1250. package/src/tests/samples/self4.py +0 -18
  1251. package/src/tests/samples/self5.py +0 -26
  1252. package/src/tests/samples/setComprehension1.py +0 -34
  1253. package/src/tests/samples/slots1.py +0 -63
  1254. package/src/tests/samples/slots2.py +0 -38
  1255. package/src/tests/samples/slots3.py +0 -35
  1256. package/src/tests/samples/specialization1.py +0 -78
  1257. package/src/tests/samples/specialization2.py +0 -51
  1258. package/src/tests/samples/staticExpressions1.py +0 -52
  1259. package/src/tests/samples/strings1.py +0 -22
  1260. package/src/tests/samples/subscript1.py +0 -74
  1261. package/src/tests/samples/subscript2.py +0 -55
  1262. package/src/tests/samples/subscript3.py +0 -135
  1263. package/src/tests/samples/suiteExpectedColon1.py +0 -4
  1264. package/src/tests/samples/suiteExpectedColon2.py +0 -2
  1265. package/src/tests/samples/suiteExpectedColon3.py +0 -2
  1266. package/src/tests/samples/super1.py +0 -57
  1267. package/src/tests/samples/super2.py +0 -29
  1268. package/src/tests/samples/super3.py +0 -10
  1269. package/src/tests/samples/super4.py +0 -24
  1270. package/src/tests/samples/super5.py +0 -28
  1271. package/src/tests/samples/super6.py +0 -17
  1272. package/src/tests/samples/super7.py +0 -52
  1273. package/src/tests/samples/super8.py +0 -7
  1274. package/src/tests/samples/super9.py +0 -36
  1275. package/src/tests/samples/test_file1.py +0 -0
  1276. package/src/tests/samples/threePartVersion1.py +0 -33
  1277. package/src/tests/samples/totalOrdering1.py +0 -52
  1278. package/src/tests/samples/tryExcept1.py +0 -39
  1279. package/src/tests/samples/tryExcept10.py +0 -12
  1280. package/src/tests/samples/tryExcept2.py +0 -16
  1281. package/src/tests/samples/tryExcept3.py +0 -12
  1282. package/src/tests/samples/tryExcept4.py +0 -28
  1283. package/src/tests/samples/tryExcept5.py +0 -30
  1284. package/src/tests/samples/tryExcept6.py +0 -27
  1285. package/src/tests/samples/tryExcept7.py +0 -17
  1286. package/src/tests/samples/tryExcept8.py +0 -69
  1287. package/src/tests/samples/tryExcept9.py +0 -42
  1288. package/src/tests/samples/tupleUnpack1.py +0 -63
  1289. package/src/tests/samples/tupleUnpack2.py +0 -56
  1290. package/src/tests/samples/tupleUnpack3.py +0 -28
  1291. package/src/tests/samples/tuples1.py +0 -185
  1292. package/src/tests/samples/tuples10.py +0 -30
  1293. package/src/tests/samples/tuples11.py +0 -21
  1294. package/src/tests/samples/tuples12.py +0 -31
  1295. package/src/tests/samples/tuples13.py +0 -26
  1296. package/src/tests/samples/tuples15.py +0 -16
  1297. package/src/tests/samples/tuples16.py +0 -14
  1298. package/src/tests/samples/tuples2.py +0 -23
  1299. package/src/tests/samples/tuples3.py +0 -15
  1300. package/src/tests/samples/tuples4.py +0 -21
  1301. package/src/tests/samples/tuples5.py +0 -16
  1302. package/src/tests/samples/tuples6.py +0 -56
  1303. package/src/tests/samples/tuples7.py +0 -61
  1304. package/src/tests/samples/tuples8.py +0 -98
  1305. package/src/tests/samples/tuples9.py +0 -17
  1306. package/src/tests/samples/typeAlias1.py +0 -37
  1307. package/src/tests/samples/typeAlias10.py +0 -45
  1308. package/src/tests/samples/typeAlias11.py +0 -37
  1309. package/src/tests/samples/typeAlias12.py +0 -20
  1310. package/src/tests/samples/typeAlias13.py +0 -53
  1311. package/src/tests/samples/typeAlias14.py +0 -29
  1312. package/src/tests/samples/typeAlias15.py +0 -24
  1313. package/src/tests/samples/typeAlias16.py +0 -24
  1314. package/src/tests/samples/typeAlias2.py +0 -26
  1315. package/src/tests/samples/typeAlias3.py +0 -35
  1316. package/src/tests/samples/typeAlias4.py +0 -68
  1317. package/src/tests/samples/typeAlias5.py +0 -56
  1318. package/src/tests/samples/typeAlias6.py +0 -51
  1319. package/src/tests/samples/typeAlias7.py +0 -50
  1320. package/src/tests/samples/typeAlias8.py +0 -24
  1321. package/src/tests/samples/typeAlias9.py +0 -35
  1322. package/src/tests/samples/typeGuard1.py +0 -68
  1323. package/src/tests/samples/typeGuard2.py +0 -58
  1324. package/src/tests/samples/typeGuard3.py +0 -98
  1325. package/src/tests/samples/typeIgnore1.py +0 -10
  1326. package/src/tests/samples/typeIgnore2.py +0 -20
  1327. package/src/tests/samples/typeIgnore3.py +0 -22
  1328. package/src/tests/samples/typeIgnore4.py +0 -10
  1329. package/src/tests/samples/typeIgnore5.py +0 -7
  1330. package/src/tests/samples/typeNarrowing1.py +0 -56
  1331. package/src/tests/samples/typeNarrowing2.py +0 -14
  1332. package/src/tests/samples/typeNarrowing3.py +0 -47
  1333. package/src/tests/samples/typeNarrowing4.py +0 -24
  1334. package/src/tests/samples/typeNarrowing5.py +0 -19
  1335. package/src/tests/samples/typeNarrowing6.py +0 -27
  1336. package/src/tests/samples/typeNarrowing7.py +0 -71
  1337. package/src/tests/samples/typeNarrowingAssert1.py +0 -24
  1338. package/src/tests/samples/typeNarrowingCallable1.py +0 -78
  1339. package/src/tests/samples/typeNarrowingEnum1.py +0 -58
  1340. package/src/tests/samples/typeNarrowingEnum2.py +0 -71
  1341. package/src/tests/samples/typeNarrowingFalsy1.py +0 -50
  1342. package/src/tests/samples/typeNarrowingIn1.py +0 -97
  1343. package/src/tests/samples/typeNarrowingIsNone1.py +0 -56
  1344. package/src/tests/samples/typeNarrowingIsNone2.py +0 -8
  1345. package/src/tests/samples/typeNarrowingIsNoneTuple1.py +0 -42
  1346. package/src/tests/samples/typeNarrowingIsNoneTuple2.py +0 -35
  1347. package/src/tests/samples/typeNarrowingIsinstance1.py +0 -162
  1348. package/src/tests/samples/typeNarrowingIsinstance2.py +0 -14
  1349. package/src/tests/samples/typeNarrowingIsinstance3.py +0 -78
  1350. package/src/tests/samples/typeNarrowingIsinstance4.py +0 -50
  1351. package/src/tests/samples/typeNarrowingIsinstance5.py +0 -39
  1352. package/src/tests/samples/typeNarrowingIsinstance6.py +0 -77
  1353. package/src/tests/samples/typeNarrowingIsinstance7.py +0 -19
  1354. package/src/tests/samples/typeNarrowingIsinstance8.py +0 -19
  1355. package/src/tests/samples/typeNarrowingLiteral1.py +0 -35
  1356. package/src/tests/samples/typeNarrowingLiteral2.py +0 -63
  1357. package/src/tests/samples/typeNarrowingLiteralMember1.py +0 -140
  1358. package/src/tests/samples/typeNarrowingLocalConst1.py +0 -136
  1359. package/src/tests/samples/typeNarrowingNoneMember1.py +0 -102
  1360. package/src/tests/samples/typeNarrowingTuple1.py +0 -23
  1361. package/src/tests/samples/typeNarrowingTupleLength1.py +0 -47
  1362. package/src/tests/samples/typeNarrowingTypeIs1.py +0 -95
  1363. package/src/tests/samples/typeNarrowingTypedDict1.py +0 -99
  1364. package/src/tests/samples/typeNarrowingTypedDict2.py +0 -35
  1365. package/src/tests/samples/typeNarrowingTypedDict3.py +0 -45
  1366. package/src/tests/samples/typePromotions1.py +0 -30
  1367. package/src/tests/samples/typeVar1.py +0 -23
  1368. package/src/tests/samples/typeVar10.py +0 -21
  1369. package/src/tests/samples/typeVar11.py +0 -12
  1370. package/src/tests/samples/typeVar2.py +0 -26
  1371. package/src/tests/samples/typeVar3.py +0 -73
  1372. package/src/tests/samples/typeVar4.py +0 -45
  1373. package/src/tests/samples/typeVar5.py +0 -75
  1374. package/src/tests/samples/typeVar6.py +0 -115
  1375. package/src/tests/samples/typeVar7.py +0 -171
  1376. package/src/tests/samples/typeVar8.py +0 -30
  1377. package/src/tests/samples/typeVar9.py +0 -118
  1378. package/src/tests/samples/typedDict1.py +0 -63
  1379. package/src/tests/samples/typedDict10.py +0 -34
  1380. package/src/tests/samples/typedDict11.py +0 -12
  1381. package/src/tests/samples/typedDict12.py +0 -103
  1382. package/src/tests/samples/typedDict13.py +0 -14
  1383. package/src/tests/samples/typedDict14.py +0 -25
  1384. package/src/tests/samples/typedDict15.py +0 -53
  1385. package/src/tests/samples/typedDict16.py +0 -103
  1386. package/src/tests/samples/typedDict17.py +0 -24
  1387. package/src/tests/samples/typedDict18.py +0 -43
  1388. package/src/tests/samples/typedDict2.py +0 -56
  1389. package/src/tests/samples/typedDict3.py +0 -40
  1390. package/src/tests/samples/typedDict4.py +0 -68
  1391. package/src/tests/samples/typedDict5.py +0 -50
  1392. package/src/tests/samples/typedDict6.py +0 -77
  1393. package/src/tests/samples/typedDict7.py +0 -22
  1394. package/src/tests/samples/typedDict8.py +0 -19
  1395. package/src/tests/samples/typedDict9.py +0 -22
  1396. package/src/tests/samples/unbound1.py +0 -18
  1397. package/src/tests/samples/unbound2.py +0 -12
  1398. package/src/tests/samples/unbound3.py +0 -13
  1399. package/src/tests/samples/unbound4.py +0 -25
  1400. package/src/tests/samples/unicode1.py +0 -39
  1401. package/src/tests/samples/uninitializedVariable1.py +0 -27
  1402. package/src/tests/samples/unions1.py +0 -79
  1403. package/src/tests/samples/unions2.py +0 -15
  1404. package/src/tests/samples/unions3.py +0 -48
  1405. package/src/tests/samples/unions4.py +0 -20
  1406. package/src/tests/samples/unions5.py +0 -43
  1407. package/src/tests/samples/unnecessaryCast1.py +0 -13
  1408. package/src/tests/samples/unnecessaryIsInstance1.py +0 -91
  1409. package/src/tests/samples/unnecessaryIsSubclass1.py +0 -22
  1410. package/src/tests/samples/unpack1.py +0 -56
  1411. package/src/tests/samples/unpack2.py +0 -27
  1412. package/src/tests/samples/unpack3.py +0 -16
  1413. package/src/tests/samples/unpack4.py +0 -15
  1414. package/src/tests/samples/unreachable1.py +0 -112
  1415. package/src/tests/samples/unusedCallResult1.py +0 -67
  1416. package/src/tests/samples/unusedCoroutine1.py +0 -23
  1417. package/src/tests/samples/unusedExpression1.py +0 -34
  1418. package/src/tests/samples/unusedVariable1.py +0 -21
  1419. package/src/tests/samples/variadicTypeVar1.py +0 -51
  1420. package/src/tests/samples/variadicTypeVar10.py +0 -65
  1421. package/src/tests/samples/variadicTypeVar11.py +0 -72
  1422. package/src/tests/samples/variadicTypeVar12.py +0 -26
  1423. package/src/tests/samples/variadicTypeVar13.py +0 -35
  1424. package/src/tests/samples/variadicTypeVar14.py +0 -72
  1425. package/src/tests/samples/variadicTypeVar2.py +0 -63
  1426. package/src/tests/samples/variadicTypeVar3.py +0 -86
  1427. package/src/tests/samples/variadicTypeVar4.py +0 -71
  1428. package/src/tests/samples/variadicTypeVar5.py +0 -131
  1429. package/src/tests/samples/variadicTypeVar6.py +0 -78
  1430. package/src/tests/samples/variadicTypeVar7.py +0 -59
  1431. package/src/tests/samples/variadicTypeVar8.py +0 -116
  1432. package/src/tests/samples/variadicTypeVar9.py +0 -38
  1433. package/src/tests/samples/with1.py +0 -117
  1434. package/src/tests/samples/with2.py +0 -63
  1435. package/src/tests/samples/with3.py +0 -66
  1436. package/src/tests/samples/with4.py +0 -24
  1437. package/src/tests/samples/with5.py +0 -33
  1438. package/src/tests/samples/zipfs/bad.egg +0 -1
  1439. package/src/tests/samples/zipfs/bad.zip +0 -1
  1440. package/src/tests/samples/zipfs/basic.egg +0 -0
  1441. package/src/tests/samples/zipfs/basic.zip +0 -0
  1442. package/src/tests/samples/zipfs/corrupt.egg +0 -0
  1443. package/src/tests/samples/zipfs/corrupt.zip +0 -0
  1444. package/src/tests/sourceFile.test.ts +0 -25
  1445. package/src/tests/stringUtils.test.ts +0 -63
  1446. package/src/tests/symbolNameUtils.test.ts +0 -77
  1447. package/src/tests/testState.test.ts +0 -579
  1448. package/src/tests/testUtils.ts +0 -251
  1449. package/src/tests/tokenizer.test.ts +0 -1534
  1450. package/src/tests/typeEvaluator1.test.ts +0 -1372
  1451. package/src/tests/typeEvaluator2.test.ts +0 -1253
  1452. package/src/tests/typeEvaluator3.test.ts +0 -1279
  1453. package/src/tests/typeEvaluator4.test.ts +0 -1178
  1454. package/src/tests/updateSymbolReference.test.ts +0 -1107
  1455. package/src/tests/zipfs.test.ts +0 -116
  1456. 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;