@zzzen/pyright-internal 1.1.255 → 1.2.0-beta

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1409) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +1 -0
  3. package/dist/analyzer/analyzerFileInfo.d.ts +1 -1
  4. package/dist/analyzer/backgroundAnalysisProgram.d.ts +1 -0
  5. package/dist/analyzer/backgroundAnalysisProgram.js +3 -0
  6. package/dist/analyzer/backgroundAnalysisProgram.js.map +1 -1
  7. package/dist/analyzer/binder.js +9 -2
  8. package/dist/analyzer/binder.js.map +1 -1
  9. package/dist/analyzer/checker.js +19 -26
  10. package/dist/analyzer/checker.js.map +1 -1
  11. package/dist/analyzer/codeFlowUtils.js +33 -0
  12. package/dist/analyzer/codeFlowUtils.js.map +1 -1
  13. package/dist/analyzer/dataClasses.js +6 -4
  14. package/dist/analyzer/dataClasses.js.map +1 -1
  15. package/dist/analyzer/declaration.js +11 -1
  16. package/dist/analyzer/declaration.js.map +1 -1
  17. package/dist/analyzer/importResult.js +7 -0
  18. package/dist/analyzer/importResult.js.map +1 -1
  19. package/dist/analyzer/importStatementUtils.js +10 -1
  20. package/dist/analyzer/importStatementUtils.js.map +1 -1
  21. package/dist/analyzer/namedTuples.js +1 -1
  22. package/dist/analyzer/namedTuples.js.map +1 -1
  23. package/dist/analyzer/packageTypeReport.js +10 -1
  24. package/dist/analyzer/packageTypeReport.js.map +1 -1
  25. package/dist/analyzer/parseTreeUtils.js +11 -2
  26. package/dist/analyzer/parseTreeUtils.js.map +1 -1
  27. package/dist/analyzer/program.d.ts +2 -1
  28. package/dist/analyzer/program.js +27 -23
  29. package/dist/analyzer/program.js.map +1 -1
  30. package/dist/analyzer/protocols.js +3 -1
  31. package/dist/analyzer/protocols.js.map +1 -1
  32. package/dist/analyzer/scope.js +22 -1
  33. package/dist/analyzer/scope.js.map +1 -1
  34. package/dist/analyzer/service.d.ts +20 -8
  35. package/dist/analyzer/service.js +39 -19
  36. package/dist/analyzer/service.js.map +1 -1
  37. package/dist/analyzer/sourceFile.js +1 -1
  38. package/dist/analyzer/sourceFile.js.map +1 -1
  39. package/dist/analyzer/sourceFileInfoUtils.d.ts +2 -0
  40. package/dist/analyzer/sourceFileInfoUtils.js +15 -0
  41. package/dist/analyzer/sourceFileInfoUtils.js.map +1 -0
  42. package/dist/analyzer/symbol.d.ts +3 -1
  43. package/dist/analyzer/symbol.js +39 -1
  44. package/dist/analyzer/symbol.js.map +1 -1
  45. package/dist/analyzer/typeDocStringUtils.js +10 -2
  46. package/dist/analyzer/typeDocStringUtils.js.map +1 -1
  47. package/dist/analyzer/typeEvaluator.js +86 -32
  48. package/dist/analyzer/typeEvaluator.js.map +1 -1
  49. package/dist/analyzer/typeEvaluatorTypes.d.ts +0 -1
  50. package/dist/analyzer/typeEvaluatorTypes.js +65 -1
  51. package/dist/analyzer/typeEvaluatorTypes.js.map +1 -1
  52. package/dist/analyzer/typeGuards.d.ts +2 -0
  53. package/dist/analyzer/typeGuards.js +113 -69
  54. package/dist/analyzer/typeGuards.js.map +1 -1
  55. package/dist/analyzer/typePrinter.js +23 -1
  56. package/dist/analyzer/typePrinter.js.map +1 -1
  57. package/dist/analyzer/typeUtils.js +119 -28
  58. package/dist/analyzer/typeUtils.js.map +1 -1
  59. package/dist/analyzer/typedDicts.js +2 -1
  60. package/dist/analyzer/typedDicts.js.map +1 -1
  61. package/dist/analyzer/types.d.ts +1 -0
  62. package/dist/analyzer/types.js +195 -1
  63. package/dist/analyzer/types.js.map +1 -1
  64. package/dist/backgroundAnalysisBase.d.ts +1 -1
  65. package/dist/commands/commands.js +9 -0
  66. package/dist/commands/commands.js.map +1 -1
  67. package/dist/common/commandLineOptions.js +8 -1
  68. package/dist/common/commandLineOptions.js.map +1 -1
  69. package/dist/common/core.js +7 -1
  70. package/dist/common/core.js.map +1 -1
  71. package/dist/common/diagnostic.js +9 -1
  72. package/dist/common/diagnostic.js.map +1 -1
  73. package/dist/common/host.js +7 -1
  74. package/dist/common/host.js.map +1 -1
  75. package/dist/common/pathUtils.d.ts +1 -0
  76. package/dist/common/pathUtils.js +34 -1
  77. package/dist/common/pathUtils.js.map +1 -1
  78. package/dist/common/stringUtils.d.ts +1 -0
  79. package/dist/common/stringUtils.js +8 -1
  80. package/dist/common/stringUtils.js.map +1 -1
  81. package/dist/languageServerBase.d.ts +10 -3
  82. package/dist/languageServerBase.js +40 -14
  83. package/dist/languageServerBase.js.map +1 -1
  84. package/dist/languageService/analyzerServiceExecutor.js +3 -0
  85. package/dist/languageService/analyzerServiceExecutor.js.map +1 -1
  86. package/dist/languageService/autoImporter.js +2 -1
  87. package/dist/languageService/autoImporter.js.map +1 -1
  88. package/dist/languageService/completionProvider.d.ts +2 -2
  89. package/dist/languageService/completionProvider.js +3 -5
  90. package/dist/languageService/completionProvider.js.map +1 -1
  91. package/dist/parser/parseNodes.d.ts +3 -0
  92. package/dist/parser/parseNodes.js +110 -2
  93. package/dist/parser/parseNodes.js.map +1 -1
  94. package/dist/parser/parser.d.ts +0 -1
  95. package/dist/parser/parser.js +26 -12
  96. package/dist/parser/parser.js.map +1 -1
  97. package/dist/parser/stringTokenUtils.js +8 -1
  98. package/dist/parser/stringTokenUtils.js.map +1 -1
  99. package/dist/parser/tokenizerTypes.js +155 -1
  100. package/dist/parser/tokenizerTypes.js.map +1 -1
  101. package/dist/pyright.js +6 -1
  102. package/dist/pyright.js.map +1 -1
  103. package/dist/tests/chainedSourceFiles.test.js +12 -9
  104. package/dist/tests/chainedSourceFiles.test.js.map +1 -1
  105. package/dist/tests/checker.test.js +4 -0
  106. package/dist/tests/checker.test.js.map +1 -1
  107. package/dist/tests/config.test.js +14 -13
  108. package/dist/tests/config.test.js.map +1 -1
  109. package/dist/tests/debug.test.js +6 -0
  110. package/dist/tests/debug.test.js.map +1 -1
  111. package/dist/tests/fourslash/completions.autoimport.lib.alias.fourslash.d.ts +1 -0
  112. package/dist/tests/fourslash/completions.autoimport.lib.alias.fourslash.js +53 -0
  113. package/dist/tests/fourslash/completions.autoimport.lib.alias.fourslash.js.map +1 -0
  114. package/dist/tests/fourslash/fourslash.d.ts +16 -0
  115. package/dist/tests/fourslash/hover.class.docString.fourslash.d.ts +1 -0
  116. package/dist/tests/fourslash/hover.class.docString.fourslash.js +24 -0
  117. package/dist/tests/fourslash/hover.class.docString.fourslash.js.map +1 -0
  118. package/dist/tests/harness/fourslash/fourSlashParser.js +6 -0
  119. package/dist/tests/harness/fourslash/fourSlashParser.js.map +1 -1
  120. package/dist/tests/harness/fourslash/fourSlashTypes.js +19 -1
  121. package/dist/tests/harness/fourslash/fourSlashTypes.js.map +1 -1
  122. package/dist/tests/harness/fourslash/testLanguageService.js +9 -1
  123. package/dist/tests/harness/fourslash/testLanguageService.js.map +1 -1
  124. package/dist/tests/harness/fourslash/testState.Consts.d.ts +1 -0
  125. package/dist/tests/harness/fourslash/testState.Consts.js +1 -0
  126. package/dist/tests/harness/fourslash/testState.Consts.js.map +1 -1
  127. package/dist/tests/harness/fourslash/testState.d.ts +4 -3
  128. package/dist/tests/harness/fourslash/testState.js +27 -11
  129. package/dist/tests/harness/fourslash/testState.js.map +1 -1
  130. package/dist/tests/harness/vfs/pathValidation.js +25 -1
  131. package/dist/tests/harness/vfs/pathValidation.js.map +1 -1
  132. package/dist/tests/pathUtils.test.js +17 -0
  133. package/dist/tests/pathUtils.test.js.map +1 -1
  134. package/dist/tests/testUtils.js +1 -1
  135. package/dist/tests/testUtils.js.map +1 -1
  136. package/dist/tests/typeEvaluator1.test.js +9 -1
  137. package/dist/tests/typeEvaluator1.test.js.map +1 -1
  138. package/dist/tests/typeEvaluator2.test.js +9 -1
  139. package/dist/tests/typeEvaluator2.test.js.map +1 -1
  140. package/dist/tests/typeEvaluator3.test.js +4 -0
  141. package/dist/tests/typeEvaluator3.test.js.map +1 -1
  142. package/dist/workspaceMap.d.ts +2 -1
  143. package/dist/workspaceMap.js +25 -3
  144. package/dist/workspaceMap.js.map +1 -1
  145. package/package.json +45 -45
  146. package/src/analyzer/aliasDeclarationUtils.ts +0 -169
  147. package/src/analyzer/analysis.ts +0 -92
  148. package/src/analyzer/analyzerFileInfo.ts +0 -56
  149. package/src/analyzer/analyzerNodeInfo.ts +0 -198
  150. package/src/analyzer/backgroundAnalysisProgram.ts +0 -311
  151. package/src/analyzer/binder.ts +0 -4081
  152. package/src/analyzer/checker.ts +0 -5507
  153. package/src/analyzer/circularDependency.ts +0 -52
  154. package/src/analyzer/codeFlowEngine.ts +0 -1548
  155. package/src/analyzer/codeFlowTypes.ts +0 -266
  156. package/src/analyzer/codeFlowUtils.ts +0 -436
  157. package/src/analyzer/commentUtils.ts +0 -174
  158. package/src/analyzer/constraintSolver.ts +0 -926
  159. package/src/analyzer/constructorTransform.ts +0 -317
  160. package/src/analyzer/dataClasses.ts +0 -999
  161. package/src/analyzer/declaration.ts +0 -252
  162. package/src/analyzer/declarationUtils.ts +0 -238
  163. package/src/analyzer/docStringConversion.ts +0 -850
  164. package/src/analyzer/docStringUtils.ts +0 -112
  165. package/src/analyzer/functionTransform.ts +0 -137
  166. package/src/analyzer/importResolver.ts +0 -2308
  167. package/src/analyzer/importResult.ts +0 -98
  168. package/src/analyzer/importStatementUtils.ts +0 -834
  169. package/src/analyzer/namedTuples.ts +0 -422
  170. package/src/analyzer/packageTypeReport.ts +0 -108
  171. package/src/analyzer/packageTypeVerifier.ts +0 -1466
  172. package/src/analyzer/parentDirectoryCache.ts +0 -88
  173. package/src/analyzer/parseTreeCleaner.ts +0 -35
  174. package/src/analyzer/parseTreeUtils.ts +0 -2165
  175. package/src/analyzer/parseTreeWalker.ts +0 -663
  176. package/src/analyzer/patternMatching.ts +0 -1356
  177. package/src/analyzer/program.ts +0 -2778
  178. package/src/analyzer/properties.ts +0 -534
  179. package/src/analyzer/protocols.ts +0 -660
  180. package/src/analyzer/pyTypedUtils.ts +0 -52
  181. package/src/analyzer/pythonPathUtils.ts +0 -201
  182. package/src/analyzer/scope.ts +0 -202
  183. package/src/analyzer/scopeUtils.ts +0 -81
  184. package/src/analyzer/service.ts +0 -1679
  185. package/src/analyzer/sourceFile.ts +0 -1401
  186. package/src/analyzer/sourceMapper.ts +0 -717
  187. package/src/analyzer/staticExpressions.ts +0 -308
  188. package/src/analyzer/symbol.ts +0 -249
  189. package/src/analyzer/symbolNameUtils.ts +0 -50
  190. package/src/analyzer/symbolUtils.ts +0 -49
  191. package/src/analyzer/testWalker.ts +0 -101
  192. package/src/analyzer/tracePrinter.ts +0 -264
  193. package/src/analyzer/typeCache.ts +0 -181
  194. package/src/analyzer/typeDocStringUtils.ts +0 -371
  195. package/src/analyzer/typeEvaluator.ts +0 -23395
  196. package/src/analyzer/typeEvaluatorTypes.ts +0 -452
  197. package/src/analyzer/typeEvaluatorWithTracker.ts +0 -161
  198. package/src/analyzer/typeGuards.ts +0 -1828
  199. package/src/analyzer/typePrinter.ts +0 -807
  200. package/src/analyzer/typeStubWriter.ts +0 -727
  201. package/src/analyzer/typeUtils.ts +0 -3126
  202. package/src/analyzer/typeVarContext.ts +0 -330
  203. package/src/analyzer/typedDicts.ts +0 -950
  204. package/src/analyzer/types.ts +0 -2857
  205. package/src/backgroundAnalysis.ts +0 -49
  206. package/src/backgroundAnalysisBase.ts +0 -606
  207. package/src/backgroundThreadBase.ts +0 -143
  208. package/src/commands/commandController.ts +0 -62
  209. package/src/commands/commandResult.ts +0 -21
  210. package/src/commands/commands.ts +0 -16
  211. package/src/commands/createTypeStub.ts +0 -56
  212. package/src/commands/quickActionCommand.ts +0 -40
  213. package/src/commands/restartServer.ts +0 -20
  214. package/src/common/cancellationUtils.ts +0 -71
  215. package/src/common/chokidarFileWatcherProvider.ts +0 -74
  216. package/src/common/collectionUtils.ts +0 -379
  217. package/src/common/commandLineOptions.ts +0 -132
  218. package/src/common/configOptions.ts +0 -1291
  219. package/src/common/console.ts +0 -201
  220. package/src/common/core.ts +0 -152
  221. package/src/common/crypto.ts +0 -60
  222. package/src/common/debug.ts +0 -144
  223. package/src/common/deferred.ts +0 -78
  224. package/src/common/diagnostic.ts +0 -191
  225. package/src/common/diagnosticRules.ts +0 -80
  226. package/src/common/diagnosticSink.ts +0 -150
  227. package/src/common/editAction.ts +0 -46
  228. package/src/common/extensibility.ts +0 -35
  229. package/src/common/extensions.ts +0 -21
  230. package/src/common/fileBasedCancellationUtils.ts +0 -274
  231. package/src/common/fileSystem.ts +0 -152
  232. package/src/common/fullAccessHost.ts +0 -203
  233. package/src/common/host.ts +0 -49
  234. package/src/common/logTracker.ts +0 -157
  235. package/src/common/lspUtils.ts +0 -18
  236. package/src/common/memUtils.ts +0 -36
  237. package/src/common/pathConsts.ts +0 -16
  238. package/src/common/pathUtils.ts +0 -987
  239. package/src/common/positionUtils.ts +0 -78
  240. package/src/common/progressReporter.ts +0 -53
  241. package/src/common/pythonVersion.ts +0 -74
  242. package/src/common/realFileSystem.ts +0 -433
  243. package/src/common/stringUtils.ts +0 -161
  244. package/src/common/textEditUtils.ts +0 -31
  245. package/src/common/textRange.ts +0 -225
  246. package/src/common/textRangeCollection.ts +0 -122
  247. package/src/common/timing.ts +0 -105
  248. package/src/common/uriParser.ts +0 -26
  249. package/src/common/workspaceEditUtils.ts +0 -100
  250. package/src/languageServerBase.ts +0 -1556
  251. package/src/languageService/analyzerServiceExecutor.ts +0 -144
  252. package/src/languageService/autoImporter.ts +0 -926
  253. package/src/languageService/callHierarchyProvider.ts +0 -476
  254. package/src/languageService/codeActionProvider.ts +0 -85
  255. package/src/languageService/completionProvider.ts +0 -3103
  256. package/src/languageService/definitionProvider.ts +0 -235
  257. package/src/languageService/documentHighlightProvider.ts +0 -61
  258. package/src/languageService/documentSymbolCollector.ts +0 -466
  259. package/src/languageService/documentSymbolProvider.ts +0 -466
  260. package/src/languageService/hoverProvider.ts +0 -499
  261. package/src/languageService/importAdder.ts +0 -437
  262. package/src/languageService/importSorter.ts +0 -196
  263. package/src/languageService/indentationUtils.ts +0 -813
  264. package/src/languageService/quickActions.ts +0 -113
  265. package/src/languageService/referencesProvider.ts +0 -316
  266. package/src/languageService/renameModuleProvider.ts +0 -1400
  267. package/src/languageService/signatureHelpProvider.ts +0 -227
  268. package/src/languageService/tooltipUtils.ts +0 -147
  269. package/src/localization/localize.ts +0 -1272
  270. package/src/localization/package.nls.de.json +0 -3
  271. package/src/localization/package.nls.en-us.json +0 -636
  272. package/src/localization/package.nls.es.json +0 -3
  273. package/src/localization/package.nls.fr.json +0 -3
  274. package/src/localization/package.nls.ja.json +0 -3
  275. package/src/localization/package.nls.ru.json +0 -3
  276. package/src/localization/package.nls.zh-cn.json +0 -3
  277. package/src/localization/package.nls.zh-tw.json +0 -3
  278. package/src/nodeMain.ts +0 -21
  279. package/src/nodeServer.ts +0 -30
  280. package/src/parser/characterStream.ts +0 -145
  281. package/src/parser/characters.ts +0 -285
  282. package/src/parser/parseNodes.ts +0 -2338
  283. package/src/parser/parser.ts +0 -4859
  284. package/src/parser/stringTokenUtils.ts +0 -564
  285. package/src/parser/tokenizer.ts +0 -1379
  286. package/src/parser/tokenizerTypes.ts +0 -420
  287. package/src/parser/unicode.ts +0 -2917
  288. package/src/pyright.ts +0 -824
  289. package/src/pyrightFileSystem.ts +0 -237
  290. package/src/readonlyAugmentedFileSystem.ts +0 -204
  291. package/src/server.ts +0 -298
  292. package/src/tests/chainedSourceFiles.test.ts +0 -183
  293. package/src/tests/checker.test.ts +0 -445
  294. package/src/tests/collectionUtils.test.ts +0 -178
  295. package/src/tests/common.test.ts +0 -117
  296. package/src/tests/config.test.ts +0 -291
  297. package/src/tests/debug.test.ts +0 -120
  298. package/src/tests/deferred.test.ts +0 -54
  299. package/src/tests/diagnosticOverrides.test.ts +0 -104
  300. package/src/tests/docStringConversion.test.ts +0 -823
  301. package/src/tests/docStringUtils.test.ts +0 -57
  302. package/src/tests/documentSymbolCollector.test.ts +0 -735
  303. package/src/tests/filesystem.test.ts +0 -215
  304. package/src/tests/fourSlashParser.test.ts +0 -330
  305. package/src/tests/fourSlashRunner.test.ts +0 -36
  306. package/src/tests/fourslash/completions.autoimport.Lib.Found.Type.fourslash.ts +0 -33
  307. package/src/tests/fourslash/completions.autoimport.Lib.Found.duplication.fourslash.ts +0 -47
  308. package/src/tests/fourslash/completions.autoimport.Lib.NotFound.fourslash.ts +0 -14
  309. package/src/tests/fourslash/completions.autoimport.disabled.fourslash.ts +0 -25
  310. package/src/tests/fourslash/completions.autoimport.duplicates.fourslash.ts +0 -36
  311. package/src/tests/fourslash/completions.autoimport.fourslash.ts +0 -29
  312. package/src/tests/fourslash/completions.autoimport.fromImport.fourslash.ts +0 -130
  313. package/src/tests/fourslash/completions.autoimport.plainText.fourslash.ts +0 -29
  314. package/src/tests/fourslash/completions.autoimport.shadow.fourslash.ts +0 -48
  315. package/src/tests/fourslash/completions.autoimport.submodule.fourslash.ts +0 -31
  316. package/src/tests/fourslash/completions.autoimport.topLevel.fourslash.ts +0 -57
  317. package/src/tests/fourslash/completions.builtinDocstrings.fourslash.ts +0 -117
  318. package/src/tests/fourslash/completions.builtinOverride.fourslash.ts +0 -22
  319. package/src/tests/fourslash/completions.call.stringLiteral.fourslash.ts +0 -55
  320. package/src/tests/fourslash/completions.call.typedDict.fourslash.ts +0 -247
  321. package/src/tests/fourslash/completions.call.typedDict.list.fourslash.ts +0 -163
  322. package/src/tests/fourslash/completions.call.typedDict.states.fourslash.ts +0 -135
  323. package/src/tests/fourslash/completions.classVariable.fourslash.ts +0 -37
  324. package/src/tests/fourslash/completions.comment.fourslash.ts +0 -28
  325. package/src/tests/fourslash/completions.declNames.class.fourslash.ts +0 -35
  326. package/src/tests/fourslash/completions.declNames.exception.fourslash.ts +0 -18
  327. package/src/tests/fourslash/completions.declNames.for.fourslash.ts +0 -30
  328. package/src/tests/fourslash/completions.declNames.importAlias.fourslash.ts +0 -15
  329. package/src/tests/fourslash/completions.declNames.lambda.fourslash.ts +0 -45
  330. package/src/tests/fourslash/completions.declNames.method.fourslash.ts +0 -71
  331. package/src/tests/fourslash/completions.declNames.overload.fourslash.ts +0 -156
  332. package/src/tests/fourslash/completions.declNames.topLevelOverload.fourslash.ts +0 -141
  333. package/src/tests/fourslash/completions.dictionary.keys.complex.fourslash.ts +0 -76
  334. package/src/tests/fourslash/completions.dictionary.keys.expression.fourslash.ts +0 -63
  335. package/src/tests/fourslash/completions.dictionary.keys.literalTypes.fourslash.ts +0 -161
  336. package/src/tests/fourslash/completions.dictionary.keys.simple.fourslash.ts +0 -151
  337. package/src/tests/fourslash/completions.dictionary.keys.stringLiterals.fourslash.ts +0 -116
  338. package/src/tests/fourslash/completions.dictionary.keys.symbols.fourslash.ts +0 -53
  339. package/src/tests/fourslash/completions.enums.members.fourslash.ts +0 -44
  340. package/src/tests/fourslash/completions.excluded.fourslash.ts +0 -12
  341. package/src/tests/fourslash/completions.fourslash.ts +0 -51
  342. package/src/tests/fourslash/completions.fstring.fourslash.ts +0 -33
  343. package/src/tests/fourslash/completions.fstring.stringLiteral.fourslash.ts +0 -96
  344. package/src/tests/fourslash/completions.fuzzyMatching.fourslash.ts +0 -30
  345. package/src/tests/fourslash/completions.importDunderNames.fourslash.ts +0 -31
  346. package/src/tests/fourslash/completions.importSubmodule.fourslash.ts +0 -26
  347. package/src/tests/fourslash/completions.importsDuplicates.fourslash.ts +0 -23
  348. package/src/tests/fourslash/completions.inList.fourslash.ts +0 -33
  349. package/src/tests/fourslash/completions.included.fourslash.ts +0 -12
  350. package/src/tests/fourslash/completions.indexer.keys.getitem.fourslash.ts +0 -57
  351. package/src/tests/fourslash/completions.inherited.function.docFromStub.fourslash.ts +0 -28
  352. package/src/tests/fourslash/completions.inherited.overload.docFromScrWithStub.fourslash.ts +0 -52
  353. package/src/tests/fourslash/completions.inherited.overload.docFromStub.fourslash.ts +0 -53
  354. package/src/tests/fourslash/completions.inherited.property.docFromSrc.fourslash.ts +0 -104
  355. package/src/tests/fourslash/completions.inherited.property.docFromStub.fourslash.ts +0 -108
  356. package/src/tests/fourslash/completions.keywords.pythonVersion.fourslash.ts +0 -72
  357. package/src/tests/fourslash/completions.libCodeAndStub.fourslash.ts +0 -79
  358. package/src/tests/fourslash/completions.libCodeNoStub.fourslash.ts +0 -69
  359. package/src/tests/fourslash/completions.libStub.fourslash.ts +0 -69
  360. package/src/tests/fourslash/completions.literals.fourslash.ts +0 -33
  361. package/src/tests/fourslash/completions.localCode.fourslash.ts +0 -74
  362. package/src/tests/fourslash/completions.moduleContext.UnknownMemberOnInstance.fourslash.ts +0 -17
  363. package/src/tests/fourslash/completions.moduleContext.UnknownStaticFunctionOnClass.fourslash.ts +0 -57
  364. package/src/tests/fourslash/completions.moduleContext.libCodeNoStub.fourslash.ts +0 -30
  365. package/src/tests/fourslash/completions.overloads.fourslash.ts +0 -40
  366. package/src/tests/fourslash/completions.override.default.fourslash.ts +0 -47
  367. package/src/tests/fourslash/completions.override.default.importStub.ts +0 -50
  368. package/src/tests/fourslash/completions.override.default.imported.fourslash.ts +0 -61
  369. package/src/tests/fourslash/completions.override.default.stub.fourslash.ts +0 -47
  370. package/src/tests/fourslash/completions.override.fourslash.ts +0 -47
  371. package/src/tests/fourslash/completions.override.property.fourslash.ts +0 -31
  372. package/src/tests/fourslash/completions.override.property.stub.fourslash.ts +0 -31
  373. package/src/tests/fourslash/completions.override.staticAndClassmethod.fourslash.ts +0 -64
  374. package/src/tests/fourslash/completions.override.stub.fourslash.ts +0 -47
  375. package/src/tests/fourslash/completions.override2.fourslash.ts +0 -71
  376. package/src/tests/fourslash/completions.parameters.fourslash.ts +0 -23
  377. package/src/tests/fourslash/completions.params.fourslash.ts +0 -24
  378. package/src/tests/fourslash/completions.parentFolder.fourslash.ts +0 -17
  379. package/src/tests/fourslash/completions.parentFolders.fourslash.ts +0 -77
  380. package/src/tests/fourslash/completions.plainText.fourslash.ts +0 -34
  381. package/src/tests/fourslash/completions.private.fourslash.ts +0 -64
  382. package/src/tests/fourslash/completions.property.fourslash.ts +0 -28
  383. package/src/tests/fourslash/completions.propertyDocStrings.fourslash.ts +0 -64
  384. package/src/tests/fourslash/completions.self.fourslash.ts +0 -43
  385. package/src/tests/fourslash/completions.stringLiteral.escape.fourslash.ts +0 -71
  386. package/src/tests/fourslash/completions.stringLiteral.fourslash.ts +0 -79
  387. package/src/tests/fourslash/completions.typeAlias.fourslash.ts +0 -29
  388. package/src/tests/fourslash/completions.typeshed.fourslash.ts +0 -9
  389. package/src/tests/fourslash/completions.vardecls.fourslash.ts +0 -40
  390. package/src/tests/fourslash/completions.variableDocStrings.fourslash.ts +0 -69
  391. package/src/tests/fourslash/completions.wildcardimports.fourslash.ts +0 -116
  392. package/src/tests/fourslash/completions.with.fourslash.ts +0 -26
  393. package/src/tests/fourslash/diagnostics.missingModuleSource.fourslash.ts +0 -69
  394. package/src/tests/fourslash/findDefinitions.builtinClass.fourslash.ts +0 -29
  395. package/src/tests/fourslash/findDefinitions.classes.fourslash.ts +0 -101
  396. package/src/tests/fourslash/findDefinitions.definitionFilter.preferSource.fourslash.ts +0 -29
  397. package/src/tests/fourslash/findDefinitions.definitionFilter.preferSource.onlyStubs.ts +0 -24
  398. package/src/tests/fourslash/findDefinitions.definitionFilter.preferStub.fourslash.ts +0 -29
  399. package/src/tests/fourslash/findDefinitions.definitionFilter.preferStub.onlySource.fourslash.ts +0 -25
  400. package/src/tests/fourslash/findDefinitions.fields.fourslash.ts +0 -131
  401. package/src/tests/fourslash/findDefinitions.functions.fourslash.ts +0 -87
  402. package/src/tests/fourslash/findDefinitions.methods.fourslash.ts +0 -162
  403. package/src/tests/fourslash/findDefinitions.modules.fourslash.ts +0 -50
  404. package/src/tests/fourslash/findDefinitions.namespaceImport.fourslash.ts +0 -40
  405. package/src/tests/fourslash/findDefinitions.overloads.fourslash.ts +0 -223
  406. package/src/tests/fourslash/findDefinitions.parameters.fourslash.ts +0 -162
  407. package/src/tests/fourslash/findDefinitions.sourceAndStub.function.fourslash.ts +0 -26
  408. package/src/tests/fourslash/findDefinitions.sourceAndStub.innerClass.fourslash.ts +0 -32
  409. package/src/tests/fourslash/findDefinitions.sourceAndStub.innerClassMethod.fourslash.ts +0 -33
  410. package/src/tests/fourslash/findDefinitions.sourceAndStub.outerClass.fourslash.ts +0 -28
  411. package/src/tests/fourslash/findDefinitions.sourceAndStub.outerClassMethod.fourslash.ts +0 -29
  412. package/src/tests/fourslash/findDefinitions.sourceAndStub.outerClassPropertyReadOnly.fourslash.ts +0 -31
  413. package/src/tests/fourslash/findDefinitions.sourceAndStub.outerClassPropertyReadWrite.fourslash.ts +0 -36
  414. package/src/tests/fourslash/findDefinitions.sourceOnly.class.fourslash.ts +0 -29
  415. package/src/tests/fourslash/findDefinitions.sourceOnly.function1.fourslash.ts +0 -28
  416. package/src/tests/fourslash/findDefinitions.sourceOnly.function2.fourslash.ts +0 -28
  417. package/src/tests/fourslash/findDefinitions.sourceOnly.relativeImport1.fourslash.ts +0 -22
  418. package/src/tests/fourslash/findDefinitions.sourceOnly.relativeImport2.fourslash.ts +0 -22
  419. package/src/tests/fourslash/findDefinitions.stubOnly.fourslash.ts +0 -61
  420. package/src/tests/fourslash/findDefinitions.stubPackages.fourslash.ts +0 -71
  421. package/src/tests/fourslash/findDefinitions.typedDict.keys.fourslash.ts +0 -99
  422. package/src/tests/fourslash/findDefinitions.variables.fourslash.ts +0 -88
  423. package/src/tests/fourslash/findDefinitions.wildcardimports.fourslash.ts +0 -117
  424. package/src/tests/fourslash/findTypeDefinitions.builtinClass.fourslash.ts +0 -26
  425. package/src/tests/fourslash/findTypeDefinitions.classes.fourslash.ts +0 -72
  426. package/src/tests/fourslash/findTypeDefinitions.unions.fourslash.ts +0 -26
  427. package/src/tests/fourslash/findallreferences.classPropertyReadWrite.ts +0 -39
  428. package/src/tests/fourslash/findallreferences.fourslash.ts +0 -34
  429. package/src/tests/fourslash/findallreferences.importalias.fourslash.ts +0 -34
  430. package/src/tests/fourslash/findallreferences.invokedFromLibrary.fourslash.ts +0 -52
  431. package/src/tests/fourslash/findallreferences.module.nested.fourslash.ts +0 -67
  432. package/src/tests/fourslash/findallreferences.modules.duplicated.fourslash.ts +0 -59
  433. package/src/tests/fourslash/findallreferences.modules.fourslash.ts +0 -46
  434. package/src/tests/fourslash/findallreferences.modules.shadow.fourslash.ts +0 -95
  435. package/src/tests/fourslash/findallreferences.openFiles.fourslash.ts +0 -37
  436. package/src/tests/fourslash/findallreferences.parameter.fourslash.ts +0 -24
  437. package/src/tests/fourslash/findallreferences.sourceAndStub.class.fourslash.ts +0 -33
  438. package/src/tests/fourslash/findallreferences.sourceAndStub.classMethod.fourslash.ts +0 -37
  439. package/src/tests/fourslash/findallreferences.sourceAndStub.classPropertyReadOnly.fourslash.ts +0 -40
  440. package/src/tests/fourslash/findallreferences.sourceAndStub.classPropertyReadWrite.fourslash.skip.ts +0 -48
  441. package/src/tests/fourslash/findallreferences.sourceAndStub.function.fourslash.ts +0 -35
  442. package/src/tests/fourslash/findallreferences.variable.fourslash.ts +0 -24
  443. package/src/tests/fourslash/fourslash.ts +0 -411
  444. package/src/tests/fourslash/highlightreferences.attributes.fourslash.ts +0 -31
  445. package/src/tests/fourslash/hover.builtinDocstrings.fourslash.ts +0 -64
  446. package/src/tests/fourslash/hover.classNoInit.fourslash.ts +0 -14
  447. package/src/tests/fourslash/hover.docFromScr.stringFormat.fourslash.ts +0 -52
  448. package/src/tests/fourslash/hover.docFromSrc.fourslash.ts +0 -83
  449. package/src/tests/fourslash/hover.docFromSrc.pkg-vs-module1.fourslash.ts +0 -26
  450. package/src/tests/fourslash/hover.docFromSrc.pkg-vs-module2.fourslash.ts +0 -26
  451. package/src/tests/fourslash/hover.docFromSrc.relativeImport1.fourslash.ts +0 -23
  452. package/src/tests/fourslash/hover.docFromSrc.relativeImport2.fourslash.ts +0 -22
  453. package/src/tests/fourslash/hover.docFromSrc.relativeImport3.fourslash.ts +0 -46
  454. package/src/tests/fourslash/hover.docFromSrc.stubs-package.fourslash.ts +0 -29
  455. package/src/tests/fourslash/hover.docFromSrc.typeshed.fourslash.ts +0 -20
  456. package/src/tests/fourslash/hover.docstring.links.fourslash.ts +0 -12
  457. package/src/tests/fourslash/hover.docstring.overloads.fourslash.ts +0 -41
  458. package/src/tests/fourslash/hover.docstring.split.fourslash.ts +0 -24
  459. package/src/tests/fourslash/hover.fourslash.ts +0 -20
  460. package/src/tests/fourslash/hover.import.django.view.fourslash.ts +0 -27
  461. package/src/tests/fourslash/hover.import.fourslash.ts +0 -11
  462. package/src/tests/fourslash/hover.inherited.docFromSrc.fourslash.ts +0 -63
  463. package/src/tests/fourslash/hover.inherited.docFromSrcWithStub.fourslash.ts +0 -54
  464. package/src/tests/fourslash/hover.inherited.docFromStub.fourslash.ts +0 -42
  465. package/src/tests/fourslash/hover.inherited.overload.docFromSrcWithStub.fourslash.ts +0 -46
  466. package/src/tests/fourslash/hover.inherited.overload.docFromStub.fourslash.ts +0 -47
  467. package/src/tests/fourslash/hover.inherited.property.docFromSrcWithStub.fourslash.ts +0 -87
  468. package/src/tests/fourslash/hover.inherited.property.docFromStub.fourslash.ts +0 -91
  469. package/src/tests/fourslash/hover.init.fourslash.ts +0 -39
  470. package/src/tests/fourslash/hover.libCodeAndStub.fourslash.ts +0 -52
  471. package/src/tests/fourslash/hover.libCodeNoStub.fourslash.ts +0 -41
  472. package/src/tests/fourslash/hover.libStub.fourslash.ts +0 -41
  473. package/src/tests/fourslash/hover.optionalAliasParameter.fourslash.ts +0 -14
  474. package/src/tests/fourslash/hover.plainText.fourslash.ts +0 -21
  475. package/src/tests/fourslash/hover.typedDict.key.fourslash.ts +0 -51
  476. package/src/tests/fourslash/hover.variable.docString.fourslash.ts +0 -41
  477. package/src/tests/fourslash/hover.wildcardimports.fourslash.ts +0 -80
  478. package/src/tests/fourslash/import.publicSymbols.fourslash.ts +0 -65
  479. package/src/tests/fourslash/import.pytyped.dunderAll.fourslash.ts +0 -77
  480. package/src/tests/fourslash/import.pytyped.privateSymbols.fourslash.ts +0 -65
  481. package/src/tests/fourslash/import.pytyped.typeCheckingBasic.fourslash.ts +0 -38
  482. package/src/tests/fourslash/import.pytyped.typeCheckingOff.fourslash.ts +0 -38
  483. package/src/tests/fourslash/import.wildcard.fourslash.ts +0 -27
  484. package/src/tests/fourslash/importnotresolved.fourslash.ts +0 -13
  485. package/src/tests/fourslash/missingModuleSource.disablingInStrictMode.fourslash.ts +0 -20
  486. package/src/tests/fourslash/missingModuleSource.fourslash.ts +0 -14
  487. package/src/tests/fourslash/missingTypeStub.codeAction.fourslash.ts +0 -33
  488. package/src/tests/fourslash/missingTypeStub.command.multipart.fourslash.ts +0 -48
  489. package/src/tests/fourslash/missingTypeStub.command.singlefile.fourslash.ts +0 -38
  490. package/src/tests/fourslash/missingTypeStub.command.singlepart.fourslash.ts +0 -38
  491. package/src/tests/fourslash/missingTypeStub.fourslash.ts +0 -20
  492. package/src/tests/fourslash/missingTypeStub.invokeCodeAction.fourslash.ts +0 -36
  493. package/src/tests/fourslash/noerrors.fourslash.ts +0 -9
  494. package/src/tests/fourslash/orderImports1.command.fourslash.ts +0 -20
  495. package/src/tests/fourslash/orderImports2.command.fourslash.ts +0 -24
  496. package/src/tests/fourslash/rename.externallyHidden.fourslash.ts +0 -24
  497. package/src/tests/fourslash/rename.externallyHidden.params.fourslash.ts +0 -24
  498. package/src/tests/fourslash/rename.fourslash.ts +0 -29
  499. package/src/tests/fourslash/rename.library.fourslash.ts +0 -29
  500. package/src/tests/fourslash/rename.library.sourceAndStub.fourslash.ts +0 -33
  501. package/src/tests/fourslash/rename.multipleDecl.fourslash.ts +0 -21
  502. package/src/tests/fourslash/rename.sourceAndStub.fourslash.ts +0 -37
  503. package/src/tests/fourslash/rename.string.excluded.fourslash.ts +0 -43
  504. package/src/tests/fourslash/rename.string.fourslash.ts +0 -26
  505. package/src/tests/fourslash/signature.builtinDocstrings.fourslash.ts +0 -63
  506. package/src/tests/fourslash/signature.complicated.fourslash.ts +0 -100
  507. package/src/tests/fourslash/signature.cornercases.fourslash.ts +0 -23
  508. package/src/tests/fourslash/signature.docstrings.fourslash.ts +0 -43
  509. package/src/tests/fourslash/signature.docstrings.overloaded.fourslash.ts +0 -50
  510. package/src/tests/fourslash/signature.docstrings.wildcardimports.fourslash.ts +0 -122
  511. package/src/tests/fourslash/signature.overload.fourslash.ts +0 -64
  512. package/src/tests/fourslash/signature.simple.fourslash.ts +0 -104
  513. package/src/tests/harness/fourslash/fourSlashParser.ts +0 -441
  514. package/src/tests/harness/fourslash/fourSlashTypes.ts +0 -134
  515. package/src/tests/harness/fourslash/runner.ts +0 -99
  516. package/src/tests/harness/fourslash/testLanguageService.ts +0 -142
  517. package/src/tests/harness/fourslash/testState.Consts.ts +0 -29
  518. package/src/tests/harness/fourslash/testState.ts +0 -1993
  519. package/src/tests/harness/testAccessHost.ts +0 -23
  520. package/src/tests/harness/testHost.ts +0 -177
  521. package/src/tests/harness/utils.ts +0 -355
  522. package/src/tests/harness/vfs/factory.ts +0 -199
  523. package/src/tests/harness/vfs/filesystem.ts +0 -1893
  524. package/src/tests/harness/vfs/pathValidation.ts +0 -154
  525. package/src/tests/importAdder.test.ts +0 -1361
  526. package/src/tests/importResolver.test.ts +0 -534
  527. package/src/tests/importStatementUtils.test.ts +0 -526
  528. package/src/tests/indentationUtils.ptvs.test.ts +0 -388
  529. package/src/tests/indentationUtils.reindent.test.ts +0 -403
  530. package/src/tests/indentationUtils.test.ts +0 -455
  531. package/src/tests/ipythonMode.test.ts +0 -365
  532. package/src/tests/localizer.test.ts +0 -47
  533. package/src/tests/parseTreeUtils.test.ts +0 -281
  534. package/src/tests/parser.test.ts +0 -99
  535. package/src/tests/pathUtils.test.ts +0 -321
  536. package/src/tests/pyrightFileSystem.test.ts +0 -183
  537. package/src/tests/renameModule.folder.test.ts +0 -261
  538. package/src/tests/renameModule.fromImports.test.ts +0 -952
  539. package/src/tests/renameModule.imports.test.ts +0 -450
  540. package/src/tests/renameModule.misc.test.ts +0 -765
  541. package/src/tests/renameModule.relativePath.test.ts +0 -277
  542. package/src/tests/renameModuleTestUtils.ts +0 -210
  543. package/src/tests/samples/abstractClass1.py +0 -51
  544. package/src/tests/samples/abstractClass2.py +0 -25
  545. package/src/tests/samples/abstractClass3.py +0 -30
  546. package/src/tests/samples/abstractClass4.py +0 -30
  547. package/src/tests/samples/abstractClass5.py +0 -42
  548. package/src/tests/samples/abstractClass6.py +0 -25
  549. package/src/tests/samples/abstractClass7.py +0 -22
  550. package/src/tests/samples/abstractClass8.py +0 -27
  551. package/src/tests/samples/annotated1.py +0 -72
  552. package/src/tests/samples/annotatedVar1.py +0 -22
  553. package/src/tests/samples/annotatedVar2.py +0 -28
  554. package/src/tests/samples/annotatedVar3.py +0 -54
  555. package/src/tests/samples/annotatedVar4.py +0 -24
  556. package/src/tests/samples/annotatedVar5.py +0 -37
  557. package/src/tests/samples/annotatedVar6.py +0 -22
  558. package/src/tests/samples/annotatedVar7.py +0 -13
  559. package/src/tests/samples/annotatedVar8.py +0 -29
  560. package/src/tests/samples/annotations1.py +0 -98
  561. package/src/tests/samples/annotations2.py +0 -33
  562. package/src/tests/samples/annotations3.py +0 -43
  563. package/src/tests/samples/annotations4.py +0 -54
  564. package/src/tests/samples/annotations5.py +0 -9
  565. package/src/tests/samples/annotations6.py +0 -29
  566. package/src/tests/samples/assert1.py +0 -22
  567. package/src/tests/samples/assertType1.py +0 -46
  568. package/src/tests/samples/assignment1.py +0 -58
  569. package/src/tests/samples/assignment10.py +0 -14
  570. package/src/tests/samples/assignment2.py +0 -40
  571. package/src/tests/samples/assignment3.py +0 -46
  572. package/src/tests/samples/assignment4.py +0 -20
  573. package/src/tests/samples/assignment5.py +0 -16
  574. package/src/tests/samples/assignment6.py +0 -25
  575. package/src/tests/samples/assignment7.py +0 -13
  576. package/src/tests/samples/assignment8.py +0 -40
  577. package/src/tests/samples/assignment9.py +0 -25
  578. package/src/tests/samples/assignmentExpr1.py +0 -23
  579. package/src/tests/samples/assignmentExpr2.py +0 -49
  580. package/src/tests/samples/assignmentExpr3.py +0 -27
  581. package/src/tests/samples/assignmentExpr4.py +0 -49
  582. package/src/tests/samples/assignmentExpr5.py +0 -15
  583. package/src/tests/samples/assignmentExpr6.py +0 -10
  584. package/src/tests/samples/assignmentExpr7.py +0 -13
  585. package/src/tests/samples/assignmentExpr8.py +0 -11
  586. package/src/tests/samples/assignmentExpr9.py +0 -28
  587. package/src/tests/samples/async1.py +0 -49
  588. package/src/tests/samples/augmentedAssignment1.py +0 -62
  589. package/src/tests/samples/augmentedAssignment2.py +0 -23
  590. package/src/tests/samples/augmentedAssignment3.py +0 -8
  591. package/src/tests/samples/await1.py +0 -23
  592. package/src/tests/samples/await2.py +0 -25
  593. package/src/tests/samples/badToken1.py +0 -6
  594. package/src/tests/samples/builtins1.py +0 -2
  595. package/src/tests/samples/call1.py +0 -93
  596. package/src/tests/samples/call2.py +0 -118
  597. package/src/tests/samples/call3.py +0 -168
  598. package/src/tests/samples/call4.py +0 -13
  599. package/src/tests/samples/call5.py +0 -95
  600. package/src/tests/samples/call6.py +0 -35
  601. package/src/tests/samples/call7.py +0 -57
  602. package/src/tests/samples/callSite1.py +0 -6
  603. package/src/tests/samples/callSite2.py +0 -12
  604. package/src/tests/samples/callable1.py +0 -53
  605. package/src/tests/samples/callable2.py +0 -58
  606. package/src/tests/samples/callable3.py +0 -28
  607. package/src/tests/samples/callable4.py +0 -32
  608. package/src/tests/samples/callable5.py +0 -40
  609. package/src/tests/samples/callable6.py +0 -83
  610. package/src/tests/samples/callbackProtocol1.py +0 -119
  611. package/src/tests/samples/callbackProtocol2.py +0 -29
  612. package/src/tests/samples/callbackProtocol3.py +0 -23
  613. package/src/tests/samples/callbackProtocol4.py +0 -73
  614. package/src/tests/samples/callbackProtocol5.py +0 -66
  615. package/src/tests/samples/callbackProtocol6.py +0 -66
  616. package/src/tests/samples/callbackProtocol7.py +0 -16
  617. package/src/tests/samples/callbackProtocol8.py +0 -16
  618. package/src/tests/samples/capturedVariable1.py +0 -106
  619. package/src/tests/samples/circular1.py +0 -16
  620. package/src/tests/samples/circular2.py +0 -38
  621. package/src/tests/samples/circularBaseClass.py +0 -17
  622. package/src/tests/samples/classGetItem1.py +0 -30
  623. package/src/tests/samples/classVar1.py +0 -41
  624. package/src/tests/samples/classVar2.py +0 -29
  625. package/src/tests/samples/classVar3.py +0 -46
  626. package/src/tests/samples/classVar4.py +0 -36
  627. package/src/tests/samples/classes1.py +0 -50
  628. package/src/tests/samples/classes3.py +0 -48
  629. package/src/tests/samples/classes4.py +0 -15
  630. package/src/tests/samples/classes5.py +0 -260
  631. package/src/tests/samples/classes6.py +0 -16
  632. package/src/tests/samples/classes7.py +0 -18
  633. package/src/tests/samples/classes8.py +0 -47
  634. package/src/tests/samples/codeFlow1.py +0 -65
  635. package/src/tests/samples/codeFlow2.py +0 -26
  636. package/src/tests/samples/codeFlow3.py +0 -8
  637. package/src/tests/samples/codeFlow4.py +0 -133
  638. package/src/tests/samples/codeFlow5.py +0 -10
  639. package/src/tests/samples/codeFlow6.py +0 -35
  640. package/src/tests/samples/codeFlow7.py +0 -35
  641. package/src/tests/samples/comparison1.py +0 -77
  642. package/src/tests/samples/comparison2.py +0 -37
  643. package/src/tests/samples/complex1.py +0 -17
  644. package/src/tests/samples/constant1.py +0 -40
  645. package/src/tests/samples/constants1.py +0 -64
  646. package/src/tests/samples/constructor1.py +0 -30
  647. package/src/tests/samples/constructor10.py +0 -19
  648. package/src/tests/samples/constructor11.py +0 -32
  649. package/src/tests/samples/constructor12.py +0 -20
  650. package/src/tests/samples/constructor13.py +0 -15
  651. package/src/tests/samples/constructor2.py +0 -180
  652. package/src/tests/samples/constructor3.py +0 -18
  653. package/src/tests/samples/constructor4.py +0 -25
  654. package/src/tests/samples/constructor5.py +0 -25
  655. package/src/tests/samples/constructor6.py +0 -70
  656. package/src/tests/samples/constructor7.py +0 -11
  657. package/src/tests/samples/constructor8.py +0 -99
  658. package/src/tests/samples/constructor9.py +0 -19
  659. package/src/tests/samples/coroutines1.py +0 -60
  660. package/src/tests/samples/coroutines2.py +0 -20
  661. package/src/tests/samples/coroutines3.py +0 -37
  662. package/src/tests/samples/dataclass1.py +0 -44
  663. package/src/tests/samples/dataclass10.py +0 -45
  664. package/src/tests/samples/dataclass11.py +0 -53
  665. package/src/tests/samples/dataclass12.py +0 -32
  666. package/src/tests/samples/dataclass13.py +0 -42
  667. package/src/tests/samples/dataclass14.py +0 -38
  668. package/src/tests/samples/dataclass15.py +0 -58
  669. package/src/tests/samples/dataclass16.py +0 -21
  670. package/src/tests/samples/dataclass17.py +0 -46
  671. package/src/tests/samples/dataclass18.py +0 -57
  672. package/src/tests/samples/dataclass19.py +0 -44
  673. package/src/tests/samples/dataclass2.py +0 -30
  674. package/src/tests/samples/dataclass20.py +0 -71
  675. package/src/tests/samples/dataclass21.py +0 -13
  676. package/src/tests/samples/dataclass3.py +0 -18
  677. package/src/tests/samples/dataclass4.py +0 -64
  678. package/src/tests/samples/dataclass5.py +0 -81
  679. package/src/tests/samples/dataclass6.py +0 -29
  680. package/src/tests/samples/dataclass7.py +0 -93
  681. package/src/tests/samples/dataclass8.py +0 -22
  682. package/src/tests/samples/dataclass9.py +0 -24
  683. package/src/tests/samples/dataclassPostInit1.py +0 -61
  684. package/src/tests/samples/dataclassTransform1.py +0 -71
  685. package/src/tests/samples/dataclassTransform2.py +0 -78
  686. package/src/tests/samples/dataclassTransform3.py +0 -83
  687. package/src/tests/samples/dataclassTransform4.py +0 -87
  688. package/src/tests/samples/decorator1.py +0 -20
  689. package/src/tests/samples/decorator2.py +0 -31
  690. package/src/tests/samples/decorator3.py +0 -27
  691. package/src/tests/samples/decorator4.py +0 -37
  692. package/src/tests/samples/decorator5.py +0 -29
  693. package/src/tests/samples/decorator6.py +0 -34
  694. package/src/tests/samples/defaultInitializer1.py +0 -26
  695. package/src/tests/samples/deprecated1.py +0 -37
  696. package/src/tests/samples/descriptor1.py +0 -134
  697. package/src/tests/samples/descriptor2.py +0 -29
  698. package/src/tests/samples/dictionary1.py +0 -42
  699. package/src/tests/samples/dictionary2.py +0 -14
  700. package/src/tests/samples/dictionary3.py +0 -30
  701. package/src/tests/samples/dictionary4.py +0 -106
  702. package/src/tests/samples/dunderAll1.py +0 -32
  703. package/src/tests/samples/dunderAll2.py +0 -16
  704. package/src/tests/samples/dunderAll3.pyi +0 -16
  705. package/src/tests/samples/duplicateDeclaration1.py +0 -115
  706. package/src/tests/samples/duplicateDeclaration2.py +0 -45
  707. package/src/tests/samples/duplicateImports1.py +0 -13
  708. package/src/tests/samples/ellipsis1.pyi +0 -48
  709. package/src/tests/samples/emptyContainers1.py +0 -89
  710. package/src/tests/samples/enums1.py +0 -52
  711. package/src/tests/samples/enums2.py +0 -15
  712. package/src/tests/samples/enums3.py +0 -24
  713. package/src/tests/samples/enums4.py +0 -23
  714. package/src/tests/samples/enums5.py +0 -16
  715. package/src/tests/samples/enums6.py +0 -33
  716. package/src/tests/samples/enums7.py +0 -54
  717. package/src/tests/samples/enums8.py +0 -14
  718. package/src/tests/samples/expressions1.py +0 -54
  719. package/src/tests/samples/expressions2.py +0 -29
  720. package/src/tests/samples/expressions3.py +0 -26
  721. package/src/tests/samples/expressions4.py +0 -23
  722. package/src/tests/samples/expressions5.py +0 -70
  723. package/src/tests/samples/expressions6.py +0 -14
  724. package/src/tests/samples/expressions7.py +0 -40
  725. package/src/tests/samples/expressions8.py +0 -26
  726. package/src/tests/samples/expressions9.py +0 -14
  727. package/src/tests/samples/final1.py +0 -14
  728. package/src/tests/samples/final2.py +0 -86
  729. package/src/tests/samples/final3.py +0 -179
  730. package/src/tests/samples/final4.pyi +0 -21
  731. package/src/tests/samples/final5.py +0 -18
  732. package/src/tests/samples/forLoop1.py +0 -88
  733. package/src/tests/samples/forLoop2.py +0 -48
  734. package/src/tests/samples/fstring1.py +0 -66
  735. package/src/tests/samples/fstring2.py +0 -12
  736. package/src/tests/samples/fstring3.py +0 -35
  737. package/src/tests/samples/fstring4.py +0 -17
  738. package/src/tests/samples/fstring5.py +0 -17
  739. package/src/tests/samples/fstring6.py +0 -14
  740. package/src/tests/samples/function1.py +0 -12
  741. package/src/tests/samples/function10.py +0 -20
  742. package/src/tests/samples/function11.py +0 -36
  743. package/src/tests/samples/function2.py +0 -7
  744. package/src/tests/samples/function3.py +0 -82
  745. package/src/tests/samples/function4.py +0 -13
  746. package/src/tests/samples/function6.py +0 -24
  747. package/src/tests/samples/function7.py +0 -13
  748. package/src/tests/samples/function8.py +0 -38
  749. package/src/tests/samples/function9.py +0 -75
  750. package/src/tests/samples/functionAnnotation1.py +0 -61
  751. package/src/tests/samples/functionAnnotation2.py +0 -26
  752. package/src/tests/samples/functionAnnotation3.py +0 -37
  753. package/src/tests/samples/functionAnnotation4.py +0 -22
  754. package/src/tests/samples/functionMember1.py +0 -18
  755. package/src/tests/samples/functionMember2.py +0 -45
  756. package/src/tests/samples/generators1.py +0 -122
  757. package/src/tests/samples/generators10.py +0 -18
  758. package/src/tests/samples/generators11.py +0 -27
  759. package/src/tests/samples/generators12.py +0 -25
  760. package/src/tests/samples/generators13.py +0 -65
  761. package/src/tests/samples/generators14.py +0 -19
  762. package/src/tests/samples/generators15.py +0 -26
  763. package/src/tests/samples/generators2.py +0 -31
  764. package/src/tests/samples/generators3.py +0 -42
  765. package/src/tests/samples/generators4.py +0 -33
  766. package/src/tests/samples/generators5.py +0 -24
  767. package/src/tests/samples/generators6.py +0 -14
  768. package/src/tests/samples/generators7.py +0 -18
  769. package/src/tests/samples/generators8.py +0 -12
  770. package/src/tests/samples/generators9.py +0 -19
  771. package/src/tests/samples/generic1.py +0 -41
  772. package/src/tests/samples/genericTypes1.py +0 -12
  773. package/src/tests/samples/genericTypes10.py +0 -38
  774. package/src/tests/samples/genericTypes11.py +0 -26
  775. package/src/tests/samples/genericTypes12.py +0 -14
  776. package/src/tests/samples/genericTypes13.py +0 -27
  777. package/src/tests/samples/genericTypes14.py +0 -22
  778. package/src/tests/samples/genericTypes15.py +0 -13
  779. package/src/tests/samples/genericTypes16.py +0 -15
  780. package/src/tests/samples/genericTypes17.py +0 -24
  781. package/src/tests/samples/genericTypes18.py +0 -135
  782. package/src/tests/samples/genericTypes19.py +0 -32
  783. package/src/tests/samples/genericTypes2.py +0 -40
  784. package/src/tests/samples/genericTypes20.py +0 -44
  785. package/src/tests/samples/genericTypes21.py +0 -29
  786. package/src/tests/samples/genericTypes22.py +0 -23
  787. package/src/tests/samples/genericTypes23.py +0 -27
  788. package/src/tests/samples/genericTypes24.py +0 -32
  789. package/src/tests/samples/genericTypes25.py +0 -37
  790. package/src/tests/samples/genericTypes26.py +0 -31
  791. package/src/tests/samples/genericTypes27.py +0 -14
  792. package/src/tests/samples/genericTypes28.py +0 -51
  793. package/src/tests/samples/genericTypes29.py +0 -24
  794. package/src/tests/samples/genericTypes3.py +0 -13
  795. package/src/tests/samples/genericTypes30.py +0 -32
  796. package/src/tests/samples/genericTypes31.py +0 -30
  797. package/src/tests/samples/genericTypes32.py +0 -25
  798. package/src/tests/samples/genericTypes33.py +0 -46
  799. package/src/tests/samples/genericTypes34.py +0 -54
  800. package/src/tests/samples/genericTypes35.py +0 -45
  801. package/src/tests/samples/genericTypes36.py +0 -35
  802. package/src/tests/samples/genericTypes37.py +0 -26
  803. package/src/tests/samples/genericTypes38.py +0 -15
  804. package/src/tests/samples/genericTypes39.py +0 -82
  805. package/src/tests/samples/genericTypes4.py +0 -37
  806. package/src/tests/samples/genericTypes40.py +0 -38
  807. package/src/tests/samples/genericTypes41.py +0 -16
  808. package/src/tests/samples/genericTypes42.py +0 -32
  809. package/src/tests/samples/genericTypes43.py +0 -24
  810. package/src/tests/samples/genericTypes44.py +0 -33
  811. package/src/tests/samples/genericTypes45.py +0 -43
  812. package/src/tests/samples/genericTypes46.py +0 -66
  813. package/src/tests/samples/genericTypes47.py +0 -39
  814. package/src/tests/samples/genericTypes48.py +0 -18
  815. package/src/tests/samples/genericTypes49.py +0 -41
  816. package/src/tests/samples/genericTypes5.py +0 -42
  817. package/src/tests/samples/genericTypes50.py +0 -62
  818. package/src/tests/samples/genericTypes51.py +0 -55
  819. package/src/tests/samples/genericTypes52.py +0 -34
  820. package/src/tests/samples/genericTypes53.py +0 -42
  821. package/src/tests/samples/genericTypes54.py +0 -31
  822. package/src/tests/samples/genericTypes55.py +0 -61
  823. package/src/tests/samples/genericTypes56.py +0 -19
  824. package/src/tests/samples/genericTypes57.py +0 -30
  825. package/src/tests/samples/genericTypes58.py +0 -52
  826. package/src/tests/samples/genericTypes59.py +0 -71
  827. package/src/tests/samples/genericTypes6.py +0 -49
  828. package/src/tests/samples/genericTypes60.py +0 -27
  829. package/src/tests/samples/genericTypes61.py +0 -34
  830. package/src/tests/samples/genericTypes62.py +0 -26
  831. package/src/tests/samples/genericTypes63.py +0 -32
  832. package/src/tests/samples/genericTypes64.py +0 -16
  833. package/src/tests/samples/genericTypes65.py +0 -15
  834. package/src/tests/samples/genericTypes66.py +0 -30
  835. package/src/tests/samples/genericTypes67.py +0 -57
  836. package/src/tests/samples/genericTypes68.py +0 -14
  837. package/src/tests/samples/genericTypes69.py +0 -45
  838. package/src/tests/samples/genericTypes7.py +0 -24
  839. package/src/tests/samples/genericTypes70.py +0 -31
  840. package/src/tests/samples/genericTypes71.py +0 -72
  841. package/src/tests/samples/genericTypes72.py +0 -24
  842. package/src/tests/samples/genericTypes73.py +0 -14
  843. package/src/tests/samples/genericTypes74.py +0 -23
  844. package/src/tests/samples/genericTypes75.py +0 -45
  845. package/src/tests/samples/genericTypes76.py +0 -107
  846. package/src/tests/samples/genericTypes77.py +0 -26
  847. package/src/tests/samples/genericTypes78.py +0 -23
  848. package/src/tests/samples/genericTypes79.py +0 -37
  849. package/src/tests/samples/genericTypes8.py +0 -26
  850. package/src/tests/samples/genericTypes80.py +0 -10
  851. package/src/tests/samples/genericTypes81.py +0 -32
  852. package/src/tests/samples/genericTypes82.py +0 -19
  853. package/src/tests/samples/genericTypes83.py +0 -28
  854. package/src/tests/samples/genericTypes84.py +0 -11
  855. package/src/tests/samples/genericTypes85.py +0 -20
  856. package/src/tests/samples/genericTypes86.py +0 -15
  857. package/src/tests/samples/genericTypes87.py +0 -21
  858. package/src/tests/samples/genericTypes88.py +0 -25
  859. package/src/tests/samples/genericTypes89.py +0 -17
  860. package/src/tests/samples/genericTypes9.py +0 -109
  861. package/src/tests/samples/genericTypes90.py +0 -12
  862. package/src/tests/samples/genericTypes91.py +0 -20
  863. package/src/tests/samples/import1.py +0 -7
  864. package/src/tests/samples/import10.py +0 -11
  865. package/src/tests/samples/import11.py +0 -11
  866. package/src/tests/samples/import12.py +0 -5
  867. package/src/tests/samples/import13.py +0 -6
  868. package/src/tests/samples/import14.py +0 -10
  869. package/src/tests/samples/import2.py +0 -27
  870. package/src/tests/samples/import3.py +0 -8
  871. package/src/tests/samples/import4.py +0 -15
  872. package/src/tests/samples/import5.py +0 -6
  873. package/src/tests/samples/import6.py +0 -17
  874. package/src/tests/samples/import7.py +0 -14
  875. package/src/tests/samples/import8.py +0 -7
  876. package/src/tests/samples/import9.py +0 -7
  877. package/src/tests/samples/inconsistentConstructor1.py +0 -23
  878. package/src/tests/samples/inconsistentSpaceTab1.py +0 -9
  879. package/src/tests/samples/inconsistentSpaceTab2.py +0 -10
  880. package/src/tests/samples/index1.py +0 -97
  881. package/src/tests/samples/inferredTypes1.py +0 -25
  882. package/src/tests/samples/initVar1.py +0 -23
  883. package/src/tests/samples/initsubclass1.py +0 -46
  884. package/src/tests/samples/initsubclass2.py +0 -16
  885. package/src/tests/samples/isinstance1.py +0 -57
  886. package/src/tests/samples/isinstance10.py +0 -15
  887. package/src/tests/samples/isinstance2.py +0 -28
  888. package/src/tests/samples/isinstance3.py +0 -59
  889. package/src/tests/samples/isinstance4.py +0 -57
  890. package/src/tests/samples/isinstance5.py +0 -8
  891. package/src/tests/samples/isinstance6.py +0 -19
  892. package/src/tests/samples/isinstance7.py +0 -42
  893. package/src/tests/samples/isinstance9.py +0 -26
  894. package/src/tests/samples/kwargsUnpack1.py +0 -116
  895. package/src/tests/samples/lambda1.py +0 -77
  896. package/src/tests/samples/lambda2.py +0 -26
  897. package/src/tests/samples/lambda3.py +0 -34
  898. package/src/tests/samples/lambda4.py +0 -70
  899. package/src/tests/samples/lambda5.py +0 -23
  900. package/src/tests/samples/lambda6.py +0 -15
  901. package/src/tests/samples/lines1.py +0 -14
  902. package/src/tests/samples/list1.py +0 -90
  903. package/src/tests/samples/listComprehension1.py +0 -45
  904. package/src/tests/samples/listComprehension2.py +0 -17
  905. package/src/tests/samples/listComprehension3.py +0 -12
  906. package/src/tests/samples/listComprehension4.py +0 -15
  907. package/src/tests/samples/listComprehension5.py +0 -20
  908. package/src/tests/samples/listComprehension6.py +0 -14
  909. package/src/tests/samples/listComprehension7.py +0 -15
  910. package/src/tests/samples/listComprehension8.py +0 -15
  911. package/src/tests/samples/literalString1.py +0 -43
  912. package/src/tests/samples/literals1.py +0 -48
  913. package/src/tests/samples/literals2.py +0 -30
  914. package/src/tests/samples/literals3.py +0 -40
  915. package/src/tests/samples/literals4.py +0 -10
  916. package/src/tests/samples/literals5.py +0 -28
  917. package/src/tests/samples/literals6.py +0 -90
  918. package/src/tests/samples/literals7.py +0 -38
  919. package/src/tests/samples/loops1.py +0 -45
  920. package/src/tests/samples/loops10.py +0 -11
  921. package/src/tests/samples/loops11.py +0 -22
  922. package/src/tests/samples/loops12.py +0 -18
  923. package/src/tests/samples/loops13.py +0 -13
  924. package/src/tests/samples/loops14.py +0 -22
  925. package/src/tests/samples/loops15.py +0 -22
  926. package/src/tests/samples/loops16.py +0 -322
  927. package/src/tests/samples/loops17.py +0 -9
  928. package/src/tests/samples/loops18.py +0 -23
  929. package/src/tests/samples/loops19.py +0 -14
  930. package/src/tests/samples/loops2.py +0 -25
  931. package/src/tests/samples/loops20.py +0 -41
  932. package/src/tests/samples/loops21.py +0 -18
  933. package/src/tests/samples/loops22.py +0 -21
  934. package/src/tests/samples/loops23.py +0 -16
  935. package/src/tests/samples/loops24.py +0 -12
  936. package/src/tests/samples/loops25.py +0 -45
  937. package/src/tests/samples/loops26.py +0 -12
  938. package/src/tests/samples/loops3.py +0 -11
  939. package/src/tests/samples/loops4.py +0 -17
  940. package/src/tests/samples/loops5.py +0 -14
  941. package/src/tests/samples/loops6.py +0 -25
  942. package/src/tests/samples/loops7.py +0 -14
  943. package/src/tests/samples/loops8.py +0 -17
  944. package/src/tests/samples/loops9.py +0 -25
  945. package/src/tests/samples/match1.py +0 -190
  946. package/src/tests/samples/match10.py +0 -67
  947. package/src/tests/samples/match2.py +0 -340
  948. package/src/tests/samples/match3.py +0 -364
  949. package/src/tests/samples/match4.py +0 -100
  950. package/src/tests/samples/match5.py +0 -70
  951. package/src/tests/samples/match6.py +0 -64
  952. package/src/tests/samples/match7.py +0 -65
  953. package/src/tests/samples/match8.py +0 -19
  954. package/src/tests/samples/match9.py +0 -53
  955. package/src/tests/samples/maxParseDepth1.py +0 -499
  956. package/src/tests/samples/maxParseDepth2.py +0 -16
  957. package/src/tests/samples/memberAccess1.py +0 -70
  958. package/src/tests/samples/memberAccess10.py +0 -65
  959. package/src/tests/samples/memberAccess11.py +0 -37
  960. package/src/tests/samples/memberAccess12.py +0 -36
  961. package/src/tests/samples/memberAccess13.py +0 -17
  962. package/src/tests/samples/memberAccess14.py +0 -63
  963. package/src/tests/samples/memberAccess15.py +0 -20
  964. package/src/tests/samples/memberAccess16.py +0 -12
  965. package/src/tests/samples/memberAccess17.py +0 -31
  966. package/src/tests/samples/memberAccess18.py +0 -31
  967. package/src/tests/samples/memberAccess2.py +0 -45
  968. package/src/tests/samples/memberAccess3.py +0 -64
  969. package/src/tests/samples/memberAccess4.py +0 -91
  970. package/src/tests/samples/memberAccess5.py +0 -26
  971. package/src/tests/samples/memberAccess6.py +0 -52
  972. package/src/tests/samples/memberAccess7.py +0 -36
  973. package/src/tests/samples/memberAccess8.py +0 -75
  974. package/src/tests/samples/memberAccess9.py +0 -11
  975. package/src/tests/samples/metaclass1.py +0 -7
  976. package/src/tests/samples/metaclass2.py +0 -35
  977. package/src/tests/samples/metaclass3.py +0 -43
  978. package/src/tests/samples/metaclass4.py +0 -26
  979. package/src/tests/samples/metaclass5.py +0 -33
  980. package/src/tests/samples/metaclass6.py +0 -15
  981. package/src/tests/samples/metaclass7.py +0 -38
  982. package/src/tests/samples/metaclass8.py +0 -20
  983. package/src/tests/samples/metaclass9.py +0 -77
  984. package/src/tests/samples/methodOverride1.py +0 -507
  985. package/src/tests/samples/methodOverride2.py +0 -74
  986. package/src/tests/samples/methodOverride3.py +0 -111
  987. package/src/tests/samples/methodOverride4.py +0 -36
  988. package/src/tests/samples/missingSuper1.py +0 -73
  989. package/src/tests/samples/module1.py +0 -13
  990. package/src/tests/samples/module2.py +0 -7
  991. package/src/tests/samples/mro1.py +0 -16
  992. package/src/tests/samples/mro2.py +0 -45
  993. package/src/tests/samples/mro3.py +0 -30
  994. package/src/tests/samples/mro4.py +0 -30
  995. package/src/tests/samples/nameBindings1.py +0 -48
  996. package/src/tests/samples/nameBindings2.py +0 -9
  997. package/src/tests/samples/nameBindings3.py +0 -36
  998. package/src/tests/samples/nameBindings4.py +0 -10
  999. package/src/tests/samples/nameBindings5.py +0 -53
  1000. package/src/tests/samples/namedTuples1.py +0 -103
  1001. package/src/tests/samples/namedTuples2.py +0 -56
  1002. package/src/tests/samples/namedTuples3.py +0 -15
  1003. package/src/tests/samples/namedTuples4.py +0 -24
  1004. package/src/tests/samples/namedTuples5.py +0 -15
  1005. package/src/tests/samples/namedTuples6.py +0 -31
  1006. package/src/tests/samples/namedTuples7.py +0 -27
  1007. package/src/tests/samples/never1.py +0 -12
  1008. package/src/tests/samples/never2.py +0 -43
  1009. package/src/tests/samples/newType1.py +0 -34
  1010. package/src/tests/samples/newType2.py +0 -25
  1011. package/src/tests/samples/newType3.py +0 -34
  1012. package/src/tests/samples/newType4.py +0 -8
  1013. package/src/tests/samples/none1.py +0 -29
  1014. package/src/tests/samples/none2.py +0 -22
  1015. package/src/tests/samples/noreturn1.py +0 -78
  1016. package/src/tests/samples/noreturn2.py +0 -37
  1017. package/src/tests/samples/noreturn3.py +0 -16
  1018. package/src/tests/samples/noreturn4.py +0 -29
  1019. package/src/tests/samples/operators1.py +0 -101
  1020. package/src/tests/samples/operators2.py +0 -30
  1021. package/src/tests/samples/operators3.py +0 -8
  1022. package/src/tests/samples/operators4.py +0 -22
  1023. package/src/tests/samples/operators5.py +0 -5
  1024. package/src/tests/samples/operators6.py +0 -10
  1025. package/src/tests/samples/operators7.py +0 -24
  1026. package/src/tests/samples/operators8.py +0 -125
  1027. package/src/tests/samples/optional1.py +0 -77
  1028. package/src/tests/samples/optional2.py +0 -23
  1029. package/src/tests/samples/overload1.py +0 -50
  1030. package/src/tests/samples/overload10.py +0 -48
  1031. package/src/tests/samples/overload2.py +0 -37
  1032. package/src/tests/samples/overload3.py +0 -29
  1033. package/src/tests/samples/overload4.py +0 -46
  1034. package/src/tests/samples/overload5.py +0 -333
  1035. package/src/tests/samples/overload6.py +0 -64
  1036. package/src/tests/samples/overload7.py +0 -376
  1037. package/src/tests/samples/overload8.py +0 -89
  1038. package/src/tests/samples/overload9.py +0 -19
  1039. package/src/tests/samples/package1/__init__.py +0 -3
  1040. package/src/tests/samples/package1/psyche/pysche.py +0 -4
  1041. package/src/tests/samples/package1/psyche.py +0 -4
  1042. package/src/tests/samples/package1/sub/__init__.py +0 -5
  1043. package/src/tests/samples/package1/sub.py +0 -4
  1044. package/src/tests/samples/package1/sub.pyi +0 -2
  1045. package/src/tests/samples/paramInference1.py +0 -27
  1046. package/src/tests/samples/paramNames1.py +0 -39
  1047. package/src/tests/samples/paramSpec1.py +0 -64
  1048. package/src/tests/samples/paramSpec10.py +0 -57
  1049. package/src/tests/samples/paramSpec11.py +0 -36
  1050. package/src/tests/samples/paramSpec12.py +0 -88
  1051. package/src/tests/samples/paramSpec13.py +0 -112
  1052. package/src/tests/samples/paramSpec14.py +0 -30
  1053. package/src/tests/samples/paramSpec15.py +0 -28
  1054. package/src/tests/samples/paramSpec16.py +0 -28
  1055. package/src/tests/samples/paramSpec17.py +0 -34
  1056. package/src/tests/samples/paramSpec18.py +0 -43
  1057. package/src/tests/samples/paramSpec19.py +0 -93
  1058. package/src/tests/samples/paramSpec2.py +0 -29
  1059. package/src/tests/samples/paramSpec20.py +0 -87
  1060. package/src/tests/samples/paramSpec21.py +0 -58
  1061. package/src/tests/samples/paramSpec22.py +0 -26
  1062. package/src/tests/samples/paramSpec23.py +0 -21
  1063. package/src/tests/samples/paramSpec24.py +0 -67
  1064. package/src/tests/samples/paramSpec25.py +0 -36
  1065. package/src/tests/samples/paramSpec26.py +0 -25
  1066. package/src/tests/samples/paramSpec27.py +0 -57
  1067. package/src/tests/samples/paramSpec28.py +0 -39
  1068. package/src/tests/samples/paramSpec29.py +0 -37
  1069. package/src/tests/samples/paramSpec3.py +0 -71
  1070. package/src/tests/samples/paramSpec30.py +0 -49
  1071. package/src/tests/samples/paramSpec31.py +0 -16
  1072. package/src/tests/samples/paramSpec32.py +0 -57
  1073. package/src/tests/samples/paramSpec33.py +0 -29
  1074. package/src/tests/samples/paramSpec34.py +0 -29
  1075. package/src/tests/samples/paramSpec35.py +0 -24
  1076. package/src/tests/samples/paramSpec36.py +0 -43
  1077. package/src/tests/samples/paramSpec37.py +0 -25
  1078. package/src/tests/samples/paramSpec4.py +0 -109
  1079. package/src/tests/samples/paramSpec5.py +0 -29
  1080. package/src/tests/samples/paramSpec6.py +0 -17
  1081. package/src/tests/samples/paramSpec7.py +0 -22
  1082. package/src/tests/samples/paramSpec8.py +0 -45
  1083. package/src/tests/samples/paramSpec9.py +0 -57
  1084. package/src/tests/samples/paramType1.py +0 -71
  1085. package/src/tests/samples/parameters1.py +0 -16
  1086. package/src/tests/samples/partial1.py +0 -163
  1087. package/src/tests/samples/partial2.py +0 -31
  1088. package/src/tests/samples/private1.py +0 -55
  1089. package/src/tests/samples/private2.py +0 -11
  1090. package/src/tests/samples/project1/pyrightconfig.json +0 -5
  1091. package/src/tests/samples/project1/sample1.py +0 -0
  1092. package/src/tests/samples/project1/subfolder1/sample2.py +0 -0
  1093. package/src/tests/samples/project1/subfolder1/subfolder1-1/sample3.py +0 -0
  1094. package/src/tests/samples/project2/pyrightconfig.json +0 -3
  1095. package/src/tests/samples/project3/pyrightconfig.json +0 -7
  1096. package/src/tests/samples/project4/presentfile.py +0 -0
  1097. package/src/tests/samples/project4/pyrightconfig.json +0 -11
  1098. package/src/tests/samples/project4/subfolder/presentfile2.py +0 -0
  1099. package/src/tests/samples/project4/subfolder/presentfile3.py +0 -0
  1100. package/src/tests/samples/project5/pyrightconfig.json +0 -4
  1101. package/src/tests/samples/project6/app1.py +0 -0
  1102. package/src/tests/samples/project6/app2.py +0 -0
  1103. package/src/tests/samples/project6/projectA/foo/__init__.py +0 -0
  1104. package/src/tests/samples/project6/projectA/foo/bar/__init__.py +0 -0
  1105. package/src/tests/samples/project6/projectB/foo/__init__.py +0 -0
  1106. package/src/tests/samples/project6/projectB/foo/baz/__init__.py +0 -0
  1107. package/src/tests/samples/project_src/src/module1.py +0 -0
  1108. package/src/tests/samples/project_src_is_pkg/src/__init__.py +0 -0
  1109. package/src/tests/samples/project_src_is_pkg/src/module1.py +0 -0
  1110. package/src/tests/samples/project_src_with_config_extra_paths/pyrightconfig.json +0 -3
  1111. package/src/tests/samples/project_src_with_config_extra_paths/src/module1.py +0 -0
  1112. package/src/tests/samples/project_src_with_config_no_extra_paths/pyrightconfig.json +0 -2
  1113. package/src/tests/samples/project_src_with_config_no_extra_paths/src/module1.py +0 -0
  1114. package/src/tests/samples/project_src_with_extra_paths/src/_vendored/vendored1.py +0 -1
  1115. package/src/tests/samples/project_src_with_extra_paths/src/module1.py +0 -2
  1116. package/src/tests/samples/project_with_pyproject_toml/pyproject.toml +0 -7
  1117. package/src/tests/samples/project_with_venv_auto_detect_exclude/myvenv/Lib/site-packages/library1.py +0 -0
  1118. package/src/tests/samples/project_with_venv_auto_detect_exclude/myvenv/pyvenv.cfg +0 -0
  1119. package/src/tests/samples/project_with_venv_auto_detect_exclude/pyrightconfig.json +0 -2
  1120. package/src/tests/samples/project_with_venv_auto_detect_exclude/sample1.py +0 -0
  1121. package/src/tests/samples/project_with_venv_auto_detect_exclude/subfolder1/sample2.py +0 -0
  1122. package/src/tests/samples/project_with_venv_auto_detect_exclude/subfolder1/subfolder1-1/sample3.py +0 -0
  1123. package/src/tests/samples/project_with_venv_auto_detect_include/excluded/excluded1.py +0 -0
  1124. package/src/tests/samples/project_with_venv_auto_detect_include/myvenv/Lib/site-packages/library1.py +0 -0
  1125. package/src/tests/samples/project_with_venv_auto_detect_include/myvenv/pyvenv.cfg +0 -0
  1126. package/src/tests/samples/project_with_venv_auto_detect_include/pyrightconfig.json +0 -3
  1127. package/src/tests/samples/project_with_venv_auto_detect_include/sample1.py +0 -0
  1128. package/src/tests/samples/project_with_venv_auto_detect_include/subfolder1/sample2.py +0 -0
  1129. package/src/tests/samples/project_with_venv_auto_detect_include/subfolder1/subfolder1-1/sample3.py +0 -0
  1130. package/src/tests/samples/properties1.py +0 -64
  1131. package/src/tests/samples/properties10.py +0 -19
  1132. package/src/tests/samples/properties11.py +0 -45
  1133. package/src/tests/samples/properties12.py +0 -23
  1134. package/src/tests/samples/properties13.py +0 -15
  1135. package/src/tests/samples/properties2.py +0 -34
  1136. package/src/tests/samples/properties3.py +0 -93
  1137. package/src/tests/samples/properties4.py +0 -17
  1138. package/src/tests/samples/properties5.py +0 -29
  1139. package/src/tests/samples/properties6.py +0 -35
  1140. package/src/tests/samples/properties7.py +0 -30
  1141. package/src/tests/samples/properties8.py +0 -26
  1142. package/src/tests/samples/properties9.py +0 -24
  1143. package/src/tests/samples/protocol1.py +0 -132
  1144. package/src/tests/samples/protocol10.py +0 -36
  1145. package/src/tests/samples/protocol11.py +0 -32
  1146. package/src/tests/samples/protocol12.py +0 -12
  1147. package/src/tests/samples/protocol13.py +0 -26
  1148. package/src/tests/samples/protocol14.py +0 -27
  1149. package/src/tests/samples/protocol15.py +0 -27
  1150. package/src/tests/samples/protocol16.py +0 -22
  1151. package/src/tests/samples/protocol17.py +0 -94
  1152. package/src/tests/samples/protocol18.py +0 -27
  1153. package/src/tests/samples/protocol19.py +0 -39
  1154. package/src/tests/samples/protocol2.py +0 -38
  1155. package/src/tests/samples/protocol20.py +0 -22
  1156. package/src/tests/samples/protocol21.py +0 -26
  1157. package/src/tests/samples/protocol22.py +0 -43
  1158. package/src/tests/samples/protocol23.py +0 -41
  1159. package/src/tests/samples/protocol24.py +0 -74
  1160. package/src/tests/samples/protocol25.py +0 -31
  1161. package/src/tests/samples/protocol26.py +0 -40
  1162. package/src/tests/samples/protocol27.py +0 -76
  1163. package/src/tests/samples/protocol28.py +0 -32
  1164. package/src/tests/samples/protocol29.py +0 -26
  1165. package/src/tests/samples/protocol3.py +0 -110
  1166. package/src/tests/samples/protocol30.py +0 -30
  1167. package/src/tests/samples/protocol31.py +0 -22
  1168. package/src/tests/samples/protocol32.py +0 -67
  1169. package/src/tests/samples/protocol33.py +0 -39
  1170. package/src/tests/samples/protocol34.py +0 -21
  1171. package/src/tests/samples/protocol4.py +0 -22
  1172. package/src/tests/samples/protocol5.py +0 -25
  1173. package/src/tests/samples/protocol6.py +0 -65
  1174. package/src/tests/samples/protocol7.py +0 -24
  1175. package/src/tests/samples/protocol8.py +0 -34
  1176. package/src/tests/samples/protocol9.py +0 -35
  1177. package/src/tests/samples/protocolModule1.py +0 -15
  1178. package/src/tests/samples/protocolModule2.py +0 -83
  1179. package/src/tests/samples/protocolModule3.py +0 -14
  1180. package/src/tests/samples/protocolModule4.py +0 -26
  1181. package/src/tests/samples/pseudoGeneric1.py +0 -20
  1182. package/src/tests/samples/pyrightIgnore1.py +0 -11
  1183. package/src/tests/samples/pyrightIgnore2.py +0 -24
  1184. package/src/tests/samples/python2.py +0 -31
  1185. package/src/tests/samples/recursiveTypeAlias1.py +0 -79
  1186. package/src/tests/samples/recursiveTypeAlias2.py +0 -32
  1187. package/src/tests/samples/recursiveTypeAlias3.py +0 -26
  1188. package/src/tests/samples/recursiveTypeAlias4.py +0 -55
  1189. package/src/tests/samples/recursiveTypeAlias5.pyi +0 -10
  1190. package/src/tests/samples/recursiveTypeAlias6.py +0 -25
  1191. package/src/tests/samples/recursiveTypeAlias7.py +0 -15
  1192. package/src/tests/samples/recursiveTypeAlias8.py +0 -38
  1193. package/src/tests/samples/recursiveTypeAlias9.py +0 -22
  1194. package/src/tests/samples/required1.py +0 -47
  1195. package/src/tests/samples/required2.py +0 -56
  1196. package/src/tests/samples/required3.py +0 -22
  1197. package/src/tests/samples/returnTypes1.py +0 -26
  1198. package/src/tests/samples/revealedType1.py +0 -30
  1199. package/src/tests/samples/sample1.py +0 -6
  1200. package/src/tests/samples/self1.py +0 -93
  1201. package/src/tests/samples/self2.py +0 -195
  1202. package/src/tests/samples/self3.py +0 -9
  1203. package/src/tests/samples/self4.py +0 -18
  1204. package/src/tests/samples/self5.py +0 -26
  1205. package/src/tests/samples/setComprehension1.py +0 -34
  1206. package/src/tests/samples/slots1.py +0 -63
  1207. package/src/tests/samples/slots2.py +0 -38
  1208. package/src/tests/samples/slots3.py +0 -35
  1209. package/src/tests/samples/specialization1.py +0 -78
  1210. package/src/tests/samples/specialization2.py +0 -51
  1211. package/src/tests/samples/staticExpressions1.py +0 -52
  1212. package/src/tests/samples/strings1.py +0 -22
  1213. package/src/tests/samples/subscript1.py +0 -74
  1214. package/src/tests/samples/subscript2.py +0 -55
  1215. package/src/tests/samples/subscript3.py +0 -135
  1216. package/src/tests/samples/suiteExpectedColon1.py +0 -4
  1217. package/src/tests/samples/suiteExpectedColon2.py +0 -2
  1218. package/src/tests/samples/suiteExpectedColon3.py +0 -2
  1219. package/src/tests/samples/super1.py +0 -57
  1220. package/src/tests/samples/super2.py +0 -29
  1221. package/src/tests/samples/super3.py +0 -10
  1222. package/src/tests/samples/super4.py +0 -24
  1223. package/src/tests/samples/super5.py +0 -28
  1224. package/src/tests/samples/super6.py +0 -17
  1225. package/src/tests/samples/super7.py +0 -52
  1226. package/src/tests/samples/super8.py +0 -7
  1227. package/src/tests/samples/super9.py +0 -36
  1228. package/src/tests/samples/test_file1.py +0 -0
  1229. package/src/tests/samples/threePartVersion1.py +0 -33
  1230. package/src/tests/samples/totalOrdering1.py +0 -52
  1231. package/src/tests/samples/tryExcept1.py +0 -39
  1232. package/src/tests/samples/tryExcept10.py +0 -12
  1233. package/src/tests/samples/tryExcept2.py +0 -16
  1234. package/src/tests/samples/tryExcept3.py +0 -12
  1235. package/src/tests/samples/tryExcept4.py +0 -28
  1236. package/src/tests/samples/tryExcept5.py +0 -30
  1237. package/src/tests/samples/tryExcept6.py +0 -27
  1238. package/src/tests/samples/tryExcept7.py +0 -17
  1239. package/src/tests/samples/tryExcept8.py +0 -69
  1240. package/src/tests/samples/tryExcept9.py +0 -42
  1241. package/src/tests/samples/tupleUnpack1.py +0 -63
  1242. package/src/tests/samples/tupleUnpack2.py +0 -56
  1243. package/src/tests/samples/tupleUnpack3.py +0 -28
  1244. package/src/tests/samples/tuples1.py +0 -185
  1245. package/src/tests/samples/tuples10.py +0 -30
  1246. package/src/tests/samples/tuples11.py +0 -21
  1247. package/src/tests/samples/tuples12.py +0 -31
  1248. package/src/tests/samples/tuples13.py +0 -26
  1249. package/src/tests/samples/tuples15.py +0 -16
  1250. package/src/tests/samples/tuples16.py +0 -14
  1251. package/src/tests/samples/tuples2.py +0 -23
  1252. package/src/tests/samples/tuples3.py +0 -15
  1253. package/src/tests/samples/tuples4.py +0 -21
  1254. package/src/tests/samples/tuples5.py +0 -16
  1255. package/src/tests/samples/tuples6.py +0 -56
  1256. package/src/tests/samples/tuples7.py +0 -61
  1257. package/src/tests/samples/tuples8.py +0 -98
  1258. package/src/tests/samples/tuples9.py +0 -17
  1259. package/src/tests/samples/typeAlias1.py +0 -37
  1260. package/src/tests/samples/typeAlias10.py +0 -45
  1261. package/src/tests/samples/typeAlias11.py +0 -37
  1262. package/src/tests/samples/typeAlias12.py +0 -20
  1263. package/src/tests/samples/typeAlias13.py +0 -53
  1264. package/src/tests/samples/typeAlias14.py +0 -29
  1265. package/src/tests/samples/typeAlias15.py +0 -24
  1266. package/src/tests/samples/typeAlias16.py +0 -24
  1267. package/src/tests/samples/typeAlias2.py +0 -26
  1268. package/src/tests/samples/typeAlias3.py +0 -35
  1269. package/src/tests/samples/typeAlias4.py +0 -68
  1270. package/src/tests/samples/typeAlias5.py +0 -56
  1271. package/src/tests/samples/typeAlias6.py +0 -51
  1272. package/src/tests/samples/typeAlias7.py +0 -50
  1273. package/src/tests/samples/typeAlias8.py +0 -24
  1274. package/src/tests/samples/typeAlias9.py +0 -35
  1275. package/src/tests/samples/typeGuard1.py +0 -68
  1276. package/src/tests/samples/typeGuard2.py +0 -58
  1277. package/src/tests/samples/typeGuard3.py +0 -98
  1278. package/src/tests/samples/typeIgnore1.py +0 -10
  1279. package/src/tests/samples/typeIgnore2.py +0 -20
  1280. package/src/tests/samples/typeIgnore3.py +0 -22
  1281. package/src/tests/samples/typeIgnore4.py +0 -10
  1282. package/src/tests/samples/typeIgnore5.py +0 -7
  1283. package/src/tests/samples/typeNarrowing1.py +0 -56
  1284. package/src/tests/samples/typeNarrowing2.py +0 -14
  1285. package/src/tests/samples/typeNarrowing3.py +0 -47
  1286. package/src/tests/samples/typeNarrowing4.py +0 -24
  1287. package/src/tests/samples/typeNarrowing5.py +0 -19
  1288. package/src/tests/samples/typeNarrowing6.py +0 -27
  1289. package/src/tests/samples/typeNarrowing7.py +0 -71
  1290. package/src/tests/samples/typeNarrowingAssert1.py +0 -24
  1291. package/src/tests/samples/typeNarrowingCallable1.py +0 -78
  1292. package/src/tests/samples/typeNarrowingEnum1.py +0 -58
  1293. package/src/tests/samples/typeNarrowingEnum2.py +0 -71
  1294. package/src/tests/samples/typeNarrowingFalsy1.py +0 -50
  1295. package/src/tests/samples/typeNarrowingIn1.py +0 -97
  1296. package/src/tests/samples/typeNarrowingIsNone1.py +0 -56
  1297. package/src/tests/samples/typeNarrowingIsNone2.py +0 -8
  1298. package/src/tests/samples/typeNarrowingIsNoneTuple1.py +0 -42
  1299. package/src/tests/samples/typeNarrowingIsNoneTuple2.py +0 -35
  1300. package/src/tests/samples/typeNarrowingIsinstance1.py +0 -162
  1301. package/src/tests/samples/typeNarrowingIsinstance2.py +0 -14
  1302. package/src/tests/samples/typeNarrowingIsinstance3.py +0 -78
  1303. package/src/tests/samples/typeNarrowingIsinstance4.py +0 -50
  1304. package/src/tests/samples/typeNarrowingIsinstance5.py +0 -39
  1305. package/src/tests/samples/typeNarrowingIsinstance6.py +0 -77
  1306. package/src/tests/samples/typeNarrowingIsinstance7.py +0 -19
  1307. package/src/tests/samples/typeNarrowingIsinstance8.py +0 -19
  1308. package/src/tests/samples/typeNarrowingLiteral1.py +0 -35
  1309. package/src/tests/samples/typeNarrowingLiteral2.py +0 -63
  1310. package/src/tests/samples/typeNarrowingLiteralMember1.py +0 -140
  1311. package/src/tests/samples/typeNarrowingLocalConst1.py +0 -136
  1312. package/src/tests/samples/typeNarrowingNoneMember1.py +0 -102
  1313. package/src/tests/samples/typeNarrowingTuple1.py +0 -23
  1314. package/src/tests/samples/typeNarrowingTupleLength1.py +0 -47
  1315. package/src/tests/samples/typeNarrowingTypeIs1.py +0 -95
  1316. package/src/tests/samples/typeNarrowingTypedDict1.py +0 -99
  1317. package/src/tests/samples/typeNarrowingTypedDict2.py +0 -35
  1318. package/src/tests/samples/typeNarrowingTypedDict3.py +0 -45
  1319. package/src/tests/samples/typePromotions1.py +0 -30
  1320. package/src/tests/samples/typeVar1.py +0 -23
  1321. package/src/tests/samples/typeVar10.py +0 -21
  1322. package/src/tests/samples/typeVar11.py +0 -12
  1323. package/src/tests/samples/typeVar2.py +0 -26
  1324. package/src/tests/samples/typeVar3.py +0 -73
  1325. package/src/tests/samples/typeVar4.py +0 -45
  1326. package/src/tests/samples/typeVar5.py +0 -75
  1327. package/src/tests/samples/typeVar6.py +0 -115
  1328. package/src/tests/samples/typeVar7.py +0 -171
  1329. package/src/tests/samples/typeVar8.py +0 -30
  1330. package/src/tests/samples/typeVar9.py +0 -118
  1331. package/src/tests/samples/typedDict1.py +0 -63
  1332. package/src/tests/samples/typedDict10.py +0 -34
  1333. package/src/tests/samples/typedDict11.py +0 -12
  1334. package/src/tests/samples/typedDict12.py +0 -103
  1335. package/src/tests/samples/typedDict13.py +0 -14
  1336. package/src/tests/samples/typedDict14.py +0 -25
  1337. package/src/tests/samples/typedDict15.py +0 -53
  1338. package/src/tests/samples/typedDict16.py +0 -103
  1339. package/src/tests/samples/typedDict17.py +0 -24
  1340. package/src/tests/samples/typedDict18.py +0 -43
  1341. package/src/tests/samples/typedDict2.py +0 -56
  1342. package/src/tests/samples/typedDict3.py +0 -40
  1343. package/src/tests/samples/typedDict4.py +0 -68
  1344. package/src/tests/samples/typedDict5.py +0 -50
  1345. package/src/tests/samples/typedDict6.py +0 -77
  1346. package/src/tests/samples/typedDict7.py +0 -22
  1347. package/src/tests/samples/typedDict8.py +0 -19
  1348. package/src/tests/samples/typedDict9.py +0 -22
  1349. package/src/tests/samples/unbound1.py +0 -18
  1350. package/src/tests/samples/unbound2.py +0 -12
  1351. package/src/tests/samples/unbound3.py +0 -13
  1352. package/src/tests/samples/unbound4.py +0 -25
  1353. package/src/tests/samples/unicode1.py +0 -39
  1354. package/src/tests/samples/uninitializedVariable1.py +0 -27
  1355. package/src/tests/samples/unions1.py +0 -79
  1356. package/src/tests/samples/unions2.py +0 -15
  1357. package/src/tests/samples/unions3.py +0 -48
  1358. package/src/tests/samples/unions4.py +0 -20
  1359. package/src/tests/samples/unions5.py +0 -43
  1360. package/src/tests/samples/unnecessaryCast1.py +0 -13
  1361. package/src/tests/samples/unnecessaryIsInstance1.py +0 -91
  1362. package/src/tests/samples/unnecessaryIsSubclass1.py +0 -22
  1363. package/src/tests/samples/unpack1.py +0 -56
  1364. package/src/tests/samples/unpack2.py +0 -27
  1365. package/src/tests/samples/unpack3.py +0 -16
  1366. package/src/tests/samples/unpack4.py +0 -15
  1367. package/src/tests/samples/unreachable1.py +0 -112
  1368. package/src/tests/samples/unusedCallResult1.py +0 -67
  1369. package/src/tests/samples/unusedCoroutine1.py +0 -23
  1370. package/src/tests/samples/unusedExpression1.py +0 -34
  1371. package/src/tests/samples/unusedVariable1.py +0 -21
  1372. package/src/tests/samples/variadicTypeVar1.py +0 -51
  1373. package/src/tests/samples/variadicTypeVar10.py +0 -65
  1374. package/src/tests/samples/variadicTypeVar11.py +0 -72
  1375. package/src/tests/samples/variadicTypeVar12.py +0 -26
  1376. package/src/tests/samples/variadicTypeVar13.py +0 -35
  1377. package/src/tests/samples/variadicTypeVar14.py +0 -72
  1378. package/src/tests/samples/variadicTypeVar2.py +0 -63
  1379. package/src/tests/samples/variadicTypeVar3.py +0 -86
  1380. package/src/tests/samples/variadicTypeVar4.py +0 -71
  1381. package/src/tests/samples/variadicTypeVar5.py +0 -131
  1382. package/src/tests/samples/variadicTypeVar6.py +0 -78
  1383. package/src/tests/samples/variadicTypeVar7.py +0 -59
  1384. package/src/tests/samples/variadicTypeVar8.py +0 -116
  1385. package/src/tests/samples/variadicTypeVar9.py +0 -38
  1386. package/src/tests/samples/with1.py +0 -117
  1387. package/src/tests/samples/with2.py +0 -63
  1388. package/src/tests/samples/with3.py +0 -66
  1389. package/src/tests/samples/with4.py +0 -24
  1390. package/src/tests/samples/with5.py +0 -33
  1391. package/src/tests/samples/zipfs/bad.egg +0 -1
  1392. package/src/tests/samples/zipfs/bad.zip +0 -1
  1393. package/src/tests/samples/zipfs/basic.egg +0 -0
  1394. package/src/tests/samples/zipfs/basic.zip +0 -0
  1395. package/src/tests/samples/zipfs/corrupt.egg +0 -0
  1396. package/src/tests/samples/zipfs/corrupt.zip +0 -0
  1397. package/src/tests/sourceFile.test.ts +0 -25
  1398. package/src/tests/stringUtils.test.ts +0 -63
  1399. package/src/tests/symbolNameUtils.test.ts +0 -77
  1400. package/src/tests/testState.test.ts +0 -579
  1401. package/src/tests/testUtils.ts +0 -251
  1402. package/src/tests/tokenizer.test.ts +0 -1534
  1403. package/src/tests/typeEvaluator1.test.ts +0 -1372
  1404. package/src/tests/typeEvaluator2.test.ts +0 -1253
  1405. package/src/tests/typeEvaluator3.test.ts +0 -1279
  1406. package/src/tests/typeEvaluator4.test.ts +0 -1178
  1407. package/src/tests/updateSymbolReference.test.ts +0 -1107
  1408. package/src/tests/zipfs.test.ts +0 -116
  1409. package/src/workspaceMap.ts +0 -76
@@ -1,1828 +0,0 @@
1
- /*
2
- * typeGuards.ts
3
- * Copyright (c) Microsoft Corporation.
4
- * Licensed under the MIT license.
5
- * Author: Eric Traut
6
- *
7
- * Provides logic for narrowing types based on conditional
8
- * expressions. The logic handles both positive ("if") and
9
- * negative ("else") narrowing cases.
10
- */
11
-
12
- import {
13
- ArgumentCategory,
14
- AssignmentExpressionNode,
15
- ExpressionNode,
16
- isExpressionNode,
17
- NameNode,
18
- ParameterCategory,
19
- ParseNode,
20
- ParseNodeType,
21
- } from '../parser/parseNodes';
22
- import { KeywordType, OperatorType } from '../parser/tokenizerTypes';
23
- import { getFileInfo } from './analyzerNodeInfo';
24
- import { populateTypeVarContextBasedOnExpectedType } from './constraintSolver';
25
- import { Declaration, DeclarationType } from './declaration';
26
- import * as ParseTreeUtils from './parseTreeUtils';
27
- import { ScopeType } from './scope';
28
- import { getScopeForNode } from './scopeUtils';
29
- import { Symbol, SymbolFlags } from './symbol';
30
- import { getTypedDictMembersForClass } from './typedDicts';
31
- import { EvaluatorFlags, TypeEvaluator } from './typeEvaluatorTypes';
32
- import {
33
- ClassType,
34
- ClassTypeFlags,
35
- combineTypes,
36
- FunctionParameter,
37
- FunctionType,
38
- isAnyOrUnknown,
39
- isClass,
40
- isClassInstance,
41
- isFunction,
42
- isInstantiableClass,
43
- isModule,
44
- isNever,
45
- isNoneInstance,
46
- isNoneTypeClass,
47
- isOverloadedFunction,
48
- isSameWithoutLiteralValue,
49
- isTypeSame,
50
- isTypeVar,
51
- maxTypeRecursionCount,
52
- NoneType,
53
- OverloadedFunctionType,
54
- Type,
55
- TypeBase,
56
- TypeCategory,
57
- TypeCondition,
58
- TypedDictEntry,
59
- TypeVarType,
60
- UnknownType,
61
- } from './types';
62
- import {
63
- addConditionToType,
64
- applySolvedTypeVars,
65
- ClassMember,
66
- computeMroLinearization,
67
- convertToInstance,
68
- convertToInstantiable,
69
- doForEachSubtype,
70
- getSpecializedTupleType,
71
- getTypeCondition,
72
- getTypeVarScopeId,
73
- isLiteralType,
74
- isLiteralTypeOrUnion,
75
- isMaybeDescriptorInstance,
76
- isProperty,
77
- isTupleClass,
78
- isUnboundedTupleClass,
79
- lookUpClassMember,
80
- lookUpObjectMember,
81
- mapSubtypes,
82
- stripLiteralValue,
83
- transformPossibleRecursiveTypeAlias,
84
- } from './typeUtils';
85
- import { TypeVarContext } from './typeVarContext';
86
-
87
- export type TypeNarrowingCallback = (type: Type) => Type | undefined;
88
-
89
- // Given a reference expression and a test expression, returns a callback that
90
- // can be used to narrow the type described by the reference expression.
91
- // If the specified flow node is not associated with the test expression,
92
- // it returns undefined.
93
- export function getTypeNarrowingCallback(
94
- evaluator: TypeEvaluator,
95
- reference: ExpressionNode,
96
- testExpression: ExpressionNode,
97
- isPositiveTest: boolean,
98
- recursionCount = 0
99
- ): TypeNarrowingCallback | undefined {
100
- if (recursionCount > maxTypeRecursionCount) {
101
- return undefined;
102
- }
103
-
104
- recursionCount++;
105
-
106
- if (testExpression.nodeType === ParseNodeType.AssignmentExpression) {
107
- return getTypeNarrowingCallbackForAssignmentExpression(
108
- evaluator,
109
- reference,
110
- testExpression,
111
- isPositiveTest,
112
- recursionCount
113
- );
114
- }
115
-
116
- if (testExpression.nodeType === ParseNodeType.BinaryOperation) {
117
- const isOrIsNotOperator =
118
- testExpression.operator === OperatorType.Is || testExpression.operator === OperatorType.IsNot;
119
- const equalsOrNotEqualsOperator =
120
- testExpression.operator === OperatorType.Equals || testExpression.operator === OperatorType.NotEquals;
121
-
122
- if (isOrIsNotOperator || equalsOrNotEqualsOperator) {
123
- // Invert the "isPositiveTest" value if this is an "is not" operation.
124
- const adjIsPositiveTest =
125
- testExpression.operator === OperatorType.Is || testExpression.operator === OperatorType.Equals
126
- ? isPositiveTest
127
- : !isPositiveTest;
128
-
129
- // Look for "X is None", "X is not None", "X == None", and "X != None".
130
- // These are commonly-used patterns used in control flow.
131
- if (
132
- testExpression.rightExpression.nodeType === ParseNodeType.Constant &&
133
- testExpression.rightExpression.constType === KeywordType.None
134
- ) {
135
- // Allow the LHS to be either a simple expression or an assignment
136
- // expression that assigns to a simple name.
137
- let leftExpression = testExpression.leftExpression;
138
- if (leftExpression.nodeType === ParseNodeType.AssignmentExpression) {
139
- leftExpression = leftExpression.name;
140
- }
141
-
142
- if (ParseTreeUtils.isMatchingExpression(reference, leftExpression)) {
143
- return (type: Type) => {
144
- return narrowTypeForIsNone(evaluator, type, adjIsPositiveTest);
145
- };
146
- }
147
-
148
- if (
149
- leftExpression.nodeType === ParseNodeType.Index &&
150
- ParseTreeUtils.isMatchingExpression(reference, leftExpression.baseExpression) &&
151
- leftExpression.items.length === 1 &&
152
- !leftExpression.trailingComma &&
153
- leftExpression.items[0].argumentCategory === ArgumentCategory.Simple &&
154
- !leftExpression.items[0].name &&
155
- leftExpression.items[0].valueExpression.nodeType === ParseNodeType.Number &&
156
- leftExpression.items[0].valueExpression.isInteger &&
157
- !leftExpression.items[0].valueExpression.isImaginary
158
- ) {
159
- const indexValue = leftExpression.items[0].valueExpression.value;
160
- if (typeof indexValue === 'number') {
161
- return (type: Type) => {
162
- return narrowTupleTypeForIsNone(evaluator, type, adjIsPositiveTest, indexValue);
163
- };
164
- }
165
- }
166
- }
167
-
168
- // Look for "type(X) is Y" or "type(X) is not Y".
169
- if (isOrIsNotOperator && testExpression.leftExpression.nodeType === ParseNodeType.Call) {
170
- const callType = evaluator.getTypeOfExpression(
171
- testExpression.leftExpression.leftExpression,
172
- EvaluatorFlags.DoNotSpecialize
173
- ).type;
174
-
175
- if (
176
- isInstantiableClass(callType) &&
177
- ClassType.isBuiltIn(callType, 'type') &&
178
- testExpression.leftExpression.arguments.length === 1 &&
179
- testExpression.leftExpression.arguments[0].argumentCategory === ArgumentCategory.Simple
180
- ) {
181
- const arg0Expr = testExpression.leftExpression.arguments[0].valueExpression;
182
- if (ParseTreeUtils.isMatchingExpression(reference, arg0Expr)) {
183
- const classType = evaluator.makeTopLevelTypeVarsConcrete(
184
- evaluator.getTypeOfExpression(testExpression.rightExpression).type
185
- );
186
-
187
- if (isInstantiableClass(classType)) {
188
- return (type: Type) => {
189
- return narrowTypeForTypeIs(type, classType, adjIsPositiveTest);
190
- };
191
- }
192
- }
193
- }
194
- }
195
-
196
- // Look for "X is Y" or "X is not Y" where Y is a an enum or bool literal.
197
- if (isOrIsNotOperator) {
198
- if (ParseTreeUtils.isMatchingExpression(reference, testExpression.leftExpression)) {
199
- const rightType = evaluator.getTypeOfExpression(testExpression.rightExpression).type;
200
- if (
201
- isClassInstance(rightType) &&
202
- (ClassType.isEnumClass(rightType) || ClassType.isBuiltIn(rightType, 'bool')) &&
203
- rightType.literalValue !== undefined
204
- ) {
205
- return (type: Type) => {
206
- return narrowTypeForLiteralComparison(
207
- evaluator,
208
- type,
209
- rightType,
210
- adjIsPositiveTest,
211
- /* isIsOperator */ true
212
- );
213
- };
214
- }
215
- }
216
- }
217
-
218
- if (equalsOrNotEqualsOperator) {
219
- // Look for X == <literal> or X != <literal>
220
- const adjIsPositiveTest =
221
- testExpression.operator === OperatorType.Equals ? isPositiveTest : !isPositiveTest;
222
-
223
- if (ParseTreeUtils.isMatchingExpression(reference, testExpression.leftExpression)) {
224
- const rightType = evaluator.getTypeOfExpression(testExpression.rightExpression).type;
225
- if (isClassInstance(rightType) && rightType.literalValue !== undefined) {
226
- return (type: Type) => {
227
- return narrowTypeForLiteralComparison(
228
- evaluator,
229
- type,
230
- rightType,
231
- adjIsPositiveTest,
232
- /* isIsOperator */ false
233
- );
234
- };
235
- }
236
- }
237
-
238
- // Look for <literal> == X or <literal> != X
239
- if (ParseTreeUtils.isMatchingExpression(reference, testExpression.rightExpression)) {
240
- const leftType = evaluator.getTypeOfExpression(testExpression.leftExpression).type;
241
- if (isClassInstance(leftType) && leftType.literalValue !== undefined) {
242
- return (type: Type) => {
243
- return narrowTypeForLiteralComparison(
244
- evaluator,
245
- type,
246
- leftType,
247
- adjIsPositiveTest,
248
- /* isIsOperator */ false
249
- );
250
- };
251
- }
252
- }
253
-
254
- // Look for X[<literal>] == <literal> or X[<literal>] != <literal>
255
- if (
256
- testExpression.leftExpression.nodeType === ParseNodeType.Index &&
257
- testExpression.leftExpression.items.length === 1 &&
258
- !testExpression.leftExpression.trailingComma &&
259
- testExpression.leftExpression.items[0].argumentCategory === ArgumentCategory.Simple &&
260
- ParseTreeUtils.isMatchingExpression(reference, testExpression.leftExpression.baseExpression)
261
- ) {
262
- const indexType = evaluator.getTypeOfExpression(
263
- testExpression.leftExpression.items[0].valueExpression
264
- ).type;
265
-
266
- if (isClassInstance(indexType) && isLiteralType(indexType)) {
267
- if (ClassType.isBuiltIn(indexType, 'str')) {
268
- const rightType = evaluator.getTypeOfExpression(testExpression.rightExpression).type;
269
- if (isClassInstance(rightType) && rightType.literalValue !== undefined) {
270
- return (type: Type) => {
271
- return narrowTypeForDiscriminatedDictEntryComparison(
272
- evaluator,
273
- type,
274
- indexType,
275
- rightType,
276
- adjIsPositiveTest
277
- );
278
- };
279
- }
280
- } else if (ClassType.isBuiltIn(indexType, 'int')) {
281
- const rightType = evaluator.getTypeOfExpression(testExpression.rightExpression).type;
282
- if (isClassInstance(rightType) && rightType.literalValue !== undefined) {
283
- return (type: Type) => {
284
- return narrowTypeForDiscriminatedTupleComparison(
285
- evaluator,
286
- type,
287
- indexType,
288
- rightType,
289
- adjIsPositiveTest
290
- );
291
- };
292
- }
293
- }
294
- }
295
- }
296
- }
297
-
298
- // Look for len(x) == <literal> or len(x) != <literal>
299
- if (
300
- equalsOrNotEqualsOperator &&
301
- testExpression.leftExpression.nodeType === ParseNodeType.Call &&
302
- testExpression.leftExpression.arguments.length === 1 &&
303
- testExpression.rightExpression.nodeType === ParseNodeType.Number &&
304
- testExpression.rightExpression.isInteger
305
- ) {
306
- const arg0Expr = testExpression.leftExpression.arguments[0].valueExpression;
307
-
308
- if (ParseTreeUtils.isMatchingExpression(reference, arg0Expr)) {
309
- const callType = evaluator.getTypeOfExpression(
310
- testExpression.leftExpression.leftExpression,
311
- EvaluatorFlags.DoNotSpecialize
312
- ).type;
313
-
314
- if (isFunction(callType) && callType.details.fullName === 'builtins.len') {
315
- const tupleLength = testExpression.rightExpression.value;
316
-
317
- if (typeof tupleLength === 'number') {
318
- return (type: Type) => {
319
- return narrowTypeForTupleLength(evaluator, type, tupleLength, adjIsPositiveTest);
320
- };
321
- }
322
- }
323
- }
324
- }
325
-
326
- // Look for X.Y == <literal> or X.Y != <literal>
327
- if (
328
- equalsOrNotEqualsOperator &&
329
- testExpression.leftExpression.nodeType === ParseNodeType.MemberAccess &&
330
- ParseTreeUtils.isMatchingExpression(reference, testExpression.leftExpression.leftExpression)
331
- ) {
332
- const rightType = evaluator.getTypeOfExpression(testExpression.rightExpression).type;
333
- const memberName = testExpression.leftExpression.memberName;
334
- if (isClassInstance(rightType) && rightType.literalValue !== undefined) {
335
- return (type: Type) => {
336
- return narrowTypeForDiscriminatedLiteralFieldComparison(
337
- evaluator,
338
- type,
339
- memberName.value,
340
- rightType,
341
- adjIsPositiveTest
342
- );
343
- };
344
- }
345
- }
346
-
347
- // Look for X.Y is <literal> or X.Y is not <literal> where <literal> is
348
- // an enum or bool literal
349
- if (
350
- testExpression.leftExpression.nodeType === ParseNodeType.MemberAccess &&
351
- ParseTreeUtils.isMatchingExpression(reference, testExpression.leftExpression.leftExpression)
352
- ) {
353
- const rightType = evaluator.getTypeOfExpression(testExpression.rightExpression).type;
354
- const memberName = testExpression.leftExpression.memberName;
355
- if (
356
- isClassInstance(rightType) &&
357
- (ClassType.isEnumClass(rightType) || ClassType.isBuiltIn(rightType, 'bool')) &&
358
- rightType.literalValue !== undefined
359
- ) {
360
- return (type: Type) => {
361
- return narrowTypeForDiscriminatedLiteralFieldComparison(
362
- evaluator,
363
- type,
364
- memberName.value,
365
- rightType,
366
- adjIsPositiveTest
367
- );
368
- };
369
- }
370
- }
371
-
372
- // Look for X.Y is None or X.Y is not None
373
- // These are commonly-used patterns used in control flow.
374
- if (
375
- testExpression.leftExpression.nodeType === ParseNodeType.MemberAccess &&
376
- ParseTreeUtils.isMatchingExpression(reference, testExpression.leftExpression.leftExpression) &&
377
- testExpression.rightExpression.nodeType === ParseNodeType.Constant &&
378
- testExpression.rightExpression.constType === KeywordType.None
379
- ) {
380
- const memberName = testExpression.leftExpression.memberName;
381
- return (type: Type) => {
382
- return narrowTypeForDiscriminatedFieldNoneComparison(
383
- evaluator,
384
- type,
385
- memberName.value,
386
- adjIsPositiveTest
387
- );
388
- };
389
- }
390
- }
391
-
392
- if (testExpression.operator === OperatorType.In || testExpression.operator === OperatorType.NotIn) {
393
- // Look for "x in y" or "x not in y" where y is one of several built-in types.
394
- if (ParseTreeUtils.isMatchingExpression(reference, testExpression.leftExpression)) {
395
- const rightType = evaluator.getTypeOfExpression(testExpression.rightExpression).type;
396
- const adjIsPositiveTest =
397
- testExpression.operator === OperatorType.In ? isPositiveTest : !isPositiveTest;
398
-
399
- if (adjIsPositiveTest) {
400
- return (type: Type) => {
401
- return narrowTypeForContains(evaluator, type, rightType);
402
- };
403
- }
404
- }
405
-
406
- if (ParseTreeUtils.isMatchingExpression(reference, testExpression.rightExpression)) {
407
- // Look for <string literal> in y where y is a union that contains
408
- // one or more TypedDicts.
409
- const leftType = evaluator.getTypeOfExpression(testExpression.leftExpression).type;
410
- if (isClassInstance(leftType) && ClassType.isBuiltIn(leftType, 'str') && isLiteralType(leftType)) {
411
- const adjIsPositiveTest =
412
- testExpression.operator === OperatorType.In ? isPositiveTest : !isPositiveTest;
413
- return (type: Type) => {
414
- return narrowTypeForTypedDictKey(
415
- evaluator,
416
- type,
417
- ClassType.cloneAsInstantiable(leftType),
418
- adjIsPositiveTest
419
- );
420
- };
421
- }
422
- }
423
- }
424
- }
425
-
426
- if (testExpression.nodeType === ParseNodeType.Call) {
427
- const callType = evaluator.getTypeOfExpression(
428
- testExpression.leftExpression,
429
- EvaluatorFlags.DoNotSpecialize
430
- ).type;
431
-
432
- // Look for "isinstance(X, Y)" or "issubclass(X, Y)".
433
- if (
434
- isFunction(callType) &&
435
- (callType.details.builtInName === 'isinstance' || callType.details.builtInName === 'issubclass') &&
436
- testExpression.arguments.length === 2
437
- ) {
438
- // Make sure the first parameter is a supported expression type
439
- // and the second parameter is a valid class type or a tuple
440
- // of valid class types.
441
- const isInstanceCheck = callType.details.builtInName === 'isinstance';
442
- const arg0Expr = testExpression.arguments[0].valueExpression;
443
- const arg1Expr = testExpression.arguments[1].valueExpression;
444
- if (ParseTreeUtils.isMatchingExpression(reference, arg0Expr)) {
445
- const arg1Type = evaluator.getTypeOfExpression(
446
- arg1Expr,
447
- EvaluatorFlags.EvaluateStringLiteralAsType |
448
- EvaluatorFlags.ParamSpecDisallowed |
449
- EvaluatorFlags.TypeVarTupleDisallowed
450
- ).type;
451
-
452
- const classTypeList = getIsInstanceClassTypes(arg1Type);
453
-
454
- if (classTypeList) {
455
- return (type: Type) => {
456
- const narrowedType = narrowTypeForIsInstance(
457
- evaluator,
458
- type,
459
- classTypeList,
460
- isInstanceCheck,
461
- isPositiveTest,
462
- /* allowIntersections */ false,
463
- testExpression
464
- );
465
- if (!isNever(narrowedType)) {
466
- return narrowedType;
467
- }
468
-
469
- // Try again with intersection types allowed.
470
- return narrowTypeForIsInstance(
471
- evaluator,
472
- type,
473
- classTypeList,
474
- isInstanceCheck,
475
- isPositiveTest,
476
- /* allowIntersections */ true,
477
- testExpression
478
- );
479
- };
480
- }
481
- }
482
- }
483
-
484
- // Look for "callable(X)"
485
- if (
486
- isFunction(callType) &&
487
- callType.details.builtInName === 'callable' &&
488
- testExpression.arguments.length === 1
489
- ) {
490
- const arg0Expr = testExpression.arguments[0].valueExpression;
491
- if (ParseTreeUtils.isMatchingExpression(reference, arg0Expr)) {
492
- return (type: Type) => {
493
- let narrowedType = narrowTypeForCallable(
494
- evaluator,
495
- type,
496
- isPositiveTest,
497
- testExpression,
498
- /* allowIntersections */ false
499
- );
500
- if (isPositiveTest && isNever(narrowedType)) {
501
- // Try again with intersections allowed.
502
- narrowedType = narrowTypeForCallable(
503
- evaluator,
504
- type,
505
- isPositiveTest,
506
- testExpression,
507
- /* allowIntersections */ true
508
- );
509
- }
510
-
511
- return narrowedType;
512
- };
513
- }
514
- }
515
-
516
- // Look for "bool(X)"
517
- if (
518
- isInstantiableClass(callType) &&
519
- ClassType.isBuiltIn(callType, 'bool') &&
520
- testExpression.arguments.length === 1 &&
521
- !testExpression.arguments[0].name
522
- ) {
523
- if (ParseTreeUtils.isMatchingExpression(reference, testExpression.arguments[0].valueExpression)) {
524
- return (type: Type) => {
525
- return narrowTypeForTruthiness(evaluator, type, isPositiveTest);
526
- };
527
- }
528
- }
529
-
530
- // Look for a TypeGuard function.
531
- if (testExpression.arguments.length >= 1) {
532
- const arg0Expr = testExpression.arguments[0].valueExpression;
533
- if (ParseTreeUtils.isMatchingExpression(reference, arg0Expr)) {
534
- // Does this look like it's a custom type guard function?
535
- if (
536
- isFunction(callType) &&
537
- callType.details.declaredReturnType &&
538
- isClassInstance(callType.details.declaredReturnType) &&
539
- ClassType.isBuiltIn(callType.details.declaredReturnType, ['TypeGuard', 'StrictTypeGuard'])
540
- ) {
541
- // Evaluate the type guard call expression.
542
- const functionReturnType = evaluator.getTypeOfExpression(testExpression).type;
543
- if (
544
- isClassInstance(functionReturnType) &&
545
- ClassType.isBuiltIn(functionReturnType, 'bool') &&
546
- functionReturnType.typeGuardType
547
- ) {
548
- const isStrictTypeGuard = ClassType.isBuiltIn(
549
- callType.details.declaredReturnType,
550
- 'StrictTypeGuard'
551
- );
552
- const typeGuardType = functionReturnType.typeGuardType;
553
-
554
- return (type: Type) => {
555
- return narrowTypeForUserDefinedTypeGuard(
556
- evaluator,
557
- type,
558
- typeGuardType,
559
- isPositiveTest,
560
- isStrictTypeGuard
561
- );
562
- };
563
- }
564
- }
565
- }
566
- }
567
- }
568
-
569
- if (ParseTreeUtils.isMatchingExpression(reference, testExpression)) {
570
- return (type: Type) => {
571
- return narrowTypeForTruthiness(evaluator, type, isPositiveTest);
572
- };
573
- }
574
-
575
- // Is this a reference to an aliased conditional expression (a local variable
576
- // that was assigned a value that can inform type narrowing of the reference expression)?
577
- const narrowingCallback = getTypeNarrowingCallbackForAliasedCondition(
578
- evaluator,
579
- reference,
580
- testExpression,
581
- isPositiveTest,
582
- recursionCount
583
- );
584
- if (narrowingCallback) {
585
- return narrowingCallback;
586
- }
587
-
588
- // We normally won't find a "not" operator here because they are stripped out
589
- // by the binder when it creates condition flow nodes, but we can find this
590
- // in the case of local variables type narrowing.
591
- if (reference.nodeType === ParseNodeType.Name) {
592
- if (testExpression.nodeType === ParseNodeType.UnaryOperation && testExpression.operator === OperatorType.Not) {
593
- return getTypeNarrowingCallback(
594
- evaluator,
595
- reference,
596
- testExpression.expression,
597
- !isPositiveTest,
598
- recursionCount
599
- );
600
- }
601
- }
602
-
603
- return undefined;
604
- }
605
-
606
- function getTypeNarrowingCallbackForAliasedCondition(
607
- evaluator: TypeEvaluator,
608
- reference: ExpressionNode,
609
- testExpression: ExpressionNode,
610
- isPositiveTest: boolean,
611
- recursionCount: number
612
- ) {
613
- if (
614
- testExpression.nodeType !== ParseNodeType.Name ||
615
- reference.nodeType !== ParseNodeType.Name ||
616
- testExpression === reference
617
- ) {
618
- return undefined;
619
- }
620
-
621
- // Make sure the reference expression is a constant parameter or variable.
622
- // If the reference expression is modified within the scope multiple times,
623
- // we need to validate that it is not modified between the test expression
624
- // evaluation and the conditional check.
625
- const testExprDecl = getDeclsForLocalVar(evaluator, testExpression, testExpression);
626
- if (!testExprDecl || testExprDecl.length !== 1 || testExprDecl[0].type !== DeclarationType.Variable) {
627
- return undefined;
628
- }
629
-
630
- const referenceDecls = getDeclsForLocalVar(evaluator, reference, testExpression);
631
- if (!referenceDecls) {
632
- return undefined;
633
- }
634
-
635
- let modifyingDecls: Declaration[] = [];
636
- if (referenceDecls.length > 1) {
637
- // If there is more than one assignment to the reference variable within
638
- // the local scope, make sure that none of these assignments are done
639
- // after the test expression but before the condition check.
640
- //
641
- // This is OK:
642
- // val = None
643
- // is_none = val is None
644
- // if is_none: ...
645
- //
646
- // This is not OK:
647
- // val = None
648
- // is_none = val is None
649
- // val = 1
650
- // if is_none: ...
651
- modifyingDecls = referenceDecls.filter((decl) => {
652
- return (
653
- evaluator.isNodeReachable(testExpression, decl.node) &&
654
- evaluator.isNodeReachable(decl.node, testExprDecl[0].node)
655
- );
656
- });
657
- }
658
-
659
- if (modifyingDecls.length !== 0) {
660
- return undefined;
661
- }
662
-
663
- const initNode = testExprDecl[0].inferredTypeSource;
664
-
665
- if (!initNode || ParseTreeUtils.isNodeContainedWithin(testExpression, initNode) || !isExpressionNode(initNode)) {
666
- return undefined;
667
- }
668
-
669
- return getTypeNarrowingCallback(evaluator, reference, initNode, isPositiveTest, recursionCount);
670
- }
671
-
672
- // Determines whether the symbol is a local variable or parameter within
673
- // the current scope.
674
- function getDeclsForLocalVar(
675
- evaluator: TypeEvaluator,
676
- name: NameNode,
677
- reachableFrom: ParseNode
678
- ): Declaration[] | undefined {
679
- const scope = getScopeForNode(name);
680
- if (scope?.type !== ScopeType.Function && scope?.type !== ScopeType.Module) {
681
- return undefined;
682
- }
683
-
684
- const symbol = scope.lookUpSymbol(name.value);
685
- if (!symbol) {
686
- return undefined;
687
- }
688
-
689
- const decls = symbol.getDeclarations();
690
- if (
691
- decls.length === 0 ||
692
- decls.some((decl) => decl.type !== DeclarationType.Variable && decl.type !== DeclarationType.Parameter)
693
- ) {
694
- return undefined;
695
- }
696
-
697
- // If there are any assignments within different scopes (e.g. via a "global" or
698
- // "nonlocal" reference), don't consider it a local variable.
699
- let prevDeclScope: ParseNode | undefined;
700
- if (
701
- decls.some((decl) => {
702
- const nodeToConsider = decl.type === DeclarationType.Parameter ? decl.node.name! : decl.node;
703
- const declScopeNode = ParseTreeUtils.getExecutionScopeNode(nodeToConsider);
704
- if (prevDeclScope && declScopeNode !== prevDeclScope) {
705
- return true;
706
- }
707
- prevDeclScope = declScopeNode;
708
- return false;
709
- })
710
- ) {
711
- return undefined;
712
- }
713
-
714
- const reachableDecls = decls.filter((decl) => evaluator.isNodeReachable(reachableFrom, decl.node));
715
-
716
- return reachableDecls.length > 0 ? reachableDecls : undefined;
717
- }
718
-
719
- function getTypeNarrowingCallbackForAssignmentExpression(
720
- evaluator: TypeEvaluator,
721
- reference: ExpressionNode,
722
- testExpression: AssignmentExpressionNode,
723
- isPositiveTest: boolean,
724
- recursionCount: number
725
- ) {
726
- return (
727
- getTypeNarrowingCallback(
728
- evaluator,
729
- reference,
730
- testExpression.rightExpression,
731
- isPositiveTest,
732
- recursionCount
733
- ) ?? getTypeNarrowingCallback(evaluator, reference, testExpression.name, isPositiveTest, recursionCount)
734
- );
735
- }
736
-
737
- function narrowTypeForUserDefinedTypeGuard(
738
- evaluator: TypeEvaluator,
739
- type: Type,
740
- typeGuardType: Type,
741
- isPositiveTest: boolean,
742
- isStrictTypeGuard: boolean
743
- ): Type {
744
- // For non-strict type guards, always narrow to the typeGuardType
745
- // in the positive case and don't narrow in the negative case.
746
- if (!isStrictTypeGuard) {
747
- return isPositiveTest ? typeGuardType : type;
748
- }
749
-
750
- // For strict type guards, narrow the current type.
751
- return mapSubtypes(type, (subtype) => {
752
- return mapSubtypes(typeGuardType, (typeGuardSubtype) => {
753
- const isSubType = evaluator.assignType(typeGuardType, subtype);
754
- const isSuperType = evaluator.assignType(subtype, typeGuardSubtype);
755
-
756
- if (isPositiveTest) {
757
- if (isSubType) {
758
- return subtype;
759
- } else if (isSuperType) {
760
- return typeGuardSubtype;
761
- }
762
- } else {
763
- if (!isSubType && !isSubType) {
764
- return subtype;
765
- }
766
- }
767
-
768
- return undefined;
769
- });
770
- });
771
- }
772
-
773
- // Narrow the type based on whether the subtype can be true or false.
774
- function narrowTypeForTruthiness(evaluator: TypeEvaluator, type: Type, isPositiveTest: boolean) {
775
- return mapSubtypes(type, (subtype) => {
776
- if (isPositiveTest) {
777
- if (evaluator.canBeTruthy(subtype)) {
778
- return evaluator.removeFalsinessFromType(subtype);
779
- }
780
- } else {
781
- if (evaluator.canBeFalsy(subtype)) {
782
- return evaluator.removeTruthinessFromType(subtype);
783
- }
784
- }
785
- return undefined;
786
- });
787
- }
788
-
789
- // Handle type narrowing for expressions of the form "a[I] is None" and "a[I] is not None" where
790
- // I is an integer and a is a union of Tuples (or subtypes thereof) with known lengths and entry types.
791
- function narrowTupleTypeForIsNone(evaluator: TypeEvaluator, type: Type, isPositiveTest: boolean, indexValue: number) {
792
- return evaluator.mapSubtypesExpandTypeVars(type, /* conditionFilter */ undefined, (subtype) => {
793
- const tupleType = getSpecializedTupleType(subtype);
794
- if (!tupleType || isUnboundedTupleClass(tupleType) || !tupleType.tupleTypeArguments) {
795
- return subtype;
796
- }
797
-
798
- const tupleLength = tupleType.tupleTypeArguments.length;
799
- if (indexValue < 0 || indexValue >= tupleLength) {
800
- return subtype;
801
- }
802
-
803
- const typeOfEntry = evaluator.makeTopLevelTypeVarsConcrete(tupleType.tupleTypeArguments[indexValue].type);
804
-
805
- if (isPositiveTest) {
806
- if (!evaluator.assignType(typeOfEntry, NoneType.createInstance())) {
807
- return undefined;
808
- }
809
- } else {
810
- if (isNoneInstance(typeOfEntry)) {
811
- return undefined;
812
- }
813
- }
814
-
815
- return subtype;
816
- });
817
- }
818
-
819
- // Handle type narrowing for expressions of the form "x is None" and "x is not None".
820
- function narrowTypeForIsNone(evaluator: TypeEvaluator, type: Type, isPositiveTest: boolean) {
821
- const expandedType = mapSubtypes(type, (subtype) => {
822
- return transformPossibleRecursiveTypeAlias(subtype);
823
- });
824
-
825
- return evaluator.mapSubtypesExpandTypeVars(
826
- expandedType,
827
- /* conditionFilter */ undefined,
828
- (subtype, unexpandedSubtype) => {
829
- if (isAnyOrUnknown(subtype)) {
830
- // We need to assume that "Any" is always both None and not None,
831
- // so it matches regardless of whether the test is positive or negative.
832
- return subtype;
833
- }
834
-
835
- // If this is a TypeVar that isn't constrained, use the unexpanded
836
- // TypeVar. For all other cases (including constrained TypeVars),
837
- // use the expanded subtype.
838
- const adjustedSubtype =
839
- isTypeVar(unexpandedSubtype) && unexpandedSubtype.details.constraints.length === 0
840
- ? unexpandedSubtype
841
- : subtype;
842
-
843
- // See if it's a match for object.
844
- if (isClassInstance(subtype) && ClassType.isBuiltIn(subtype, 'object')) {
845
- return isPositiveTest
846
- ? addConditionToType(NoneType.createInstance(), subtype.condition)
847
- : adjustedSubtype;
848
- }
849
-
850
- // See if it's a match for None.
851
- if (isNoneInstance(subtype) === isPositiveTest) {
852
- return subtype;
853
- }
854
-
855
- return undefined;
856
- }
857
- );
858
- }
859
-
860
- // The "isinstance" and "issubclass" calls support two forms - a simple form
861
- // that accepts a single class, and a more complex form that accepts a tuple
862
- // of classes (including arbitrarily-nested tuples). This method determines
863
- // which form and returns a list of classes or undefined.
864
- function getIsInstanceClassTypes(argType: Type): (ClassType | TypeVarType | NoneType | FunctionType)[] | undefined {
865
- let foundNonClassType = false;
866
- const classTypeList: (ClassType | TypeVarType | NoneType | FunctionType)[] = [];
867
-
868
- // Create a helper function that returns a list of class types or
869
- // undefined if any of the types are not valid.
870
- const addClassTypesToList = (types: Type[]) => {
871
- types.forEach((subtype) => {
872
- if (isInstantiableClass(subtype) || (isTypeVar(subtype) && TypeBase.isInstantiable(subtype))) {
873
- classTypeList.push(subtype);
874
- } else if (isNoneTypeClass(subtype)) {
875
- classTypeList.push(subtype);
876
- } else if (
877
- isFunction(subtype) &&
878
- subtype.details.parameters.length === 2 &&
879
- subtype.details.parameters[0].category === ParameterCategory.VarArgList &&
880
- subtype.details.parameters[1].category === ParameterCategory.VarArgDictionary
881
- ) {
882
- classTypeList.push(subtype);
883
- } else {
884
- foundNonClassType = true;
885
- }
886
- });
887
- };
888
-
889
- const addClassTypesRecursive = (subtype: Type, recursionCount = 0) => {
890
- if (recursionCount > maxTypeRecursionCount) {
891
- return;
892
- }
893
-
894
- if (isClass(subtype) && TypeBase.isInstance(subtype) && isTupleClass(subtype)) {
895
- if (subtype.tupleTypeArguments) {
896
- subtype.tupleTypeArguments.forEach((tupleEntry) => {
897
- addClassTypesRecursive(tupleEntry.type, recursionCount + 1);
898
- });
899
- }
900
- } else {
901
- addClassTypesToList([subtype]);
902
- }
903
- };
904
-
905
- doForEachSubtype(argType, (subtype) => {
906
- addClassTypesRecursive(subtype);
907
- });
908
-
909
- return foundNonClassType ? undefined : classTypeList;
910
- }
911
-
912
- // Attempts to narrow a type (make it more constrained) based on a
913
- // call to isinstance or issubclass. For example, if the original
914
- // type of expression "x" is "Mammal" and the test expression is
915
- // "isinstance(x, Cow)", (assuming "Cow" is a subclass of "Mammal"),
916
- // we can conclude that x must be constrained to "Cow".
917
- function narrowTypeForIsInstance(
918
- evaluator: TypeEvaluator,
919
- type: Type,
920
- classTypeList: (ClassType | TypeVarType | NoneType | FunctionType)[],
921
- isInstanceCheck: boolean,
922
- isPositiveTest: boolean,
923
- allowIntersections: boolean,
924
- errorNode: ExpressionNode
925
- ): Type {
926
- const expandedTypes = mapSubtypes(type, (subtype) => {
927
- return transformPossibleRecursiveTypeAlias(subtype);
928
- });
929
-
930
- // Filters the varType by the parameters of the isinstance
931
- // and returns the list of types the varType could be after
932
- // applying the filter.
933
- const filterClassType = (
934
- varType: ClassType,
935
- unexpandedType: Type,
936
- constraints: TypeCondition[] | undefined,
937
- negativeFallbackType: Type
938
- ): Type[] => {
939
- const filteredTypes: Type[] = [];
940
-
941
- let foundSuperclass = false;
942
- let isClassRelationshipIndeterminate = false;
943
-
944
- for (const filterType of classTypeList) {
945
- const concreteFilterType = evaluator.makeTopLevelTypeVarsConcrete(filterType);
946
-
947
- if (isInstantiableClass(concreteFilterType)) {
948
- // Handle the special case where the variable type is a TypedDict and
949
- // we're filtering against 'dict'. TypedDict isn't derived from dict,
950
- // but at runtime, isinstance returns True.
951
- const filterIsSuperclass =
952
- !isTypeVar(filterType) &&
953
- (ClassType.isDerivedFrom(varType, concreteFilterType) ||
954
- (isInstanceCheck &&
955
- ClassType.isProtocolClass(concreteFilterType) &&
956
- evaluator.assignType(concreteFilterType, varType)) ||
957
- (ClassType.isBuiltIn(concreteFilterType, 'dict') && ClassType.isTypedDictClass(varType)));
958
- const filterIsSubclass =
959
- ClassType.isDerivedFrom(concreteFilterType, varType) ||
960
- (isInstanceCheck &&
961
- ClassType.isProtocolClass(varType) &&
962
- evaluator.assignType(varType, concreteFilterType));
963
-
964
- if (filterIsSuperclass) {
965
- foundSuperclass = true;
966
- }
967
-
968
- // Normally, a type should never be both a subclass or a superclass.
969
- // This can happen if either of the class types derives from a
970
- // class whose type is unknown (e.g. an import failed). We'll
971
- // note this case specially so we don't do any narrowing, which
972
- // will generate false positives.
973
- if (
974
- filterIsSubclass &&
975
- filterIsSuperclass &&
976
- !ClassType.isSameGenericClass(varType, concreteFilterType)
977
- ) {
978
- isClassRelationshipIndeterminate = true;
979
- }
980
-
981
- if (isPositiveTest) {
982
- if (filterIsSuperclass) {
983
- // If the variable type is a subclass of the isinstance filter,
984
- // we haven't learned anything new about the variable type.
985
- filteredTypes.push(addConditionToType(varType, constraints));
986
- } else if (filterIsSubclass) {
987
- // If the variable type is a superclass of the isinstance
988
- // filter, we can narrow the type to the subclass.
989
- let specializedFilterType = filterType;
990
-
991
- // Try to retain the type arguments for the filter type. This is
992
- // important because a specialized version of the filter cannot
993
- // be passed to isinstance or issubclass.
994
- if (isClass(filterType)) {
995
- if (
996
- ClassType.isSpecialBuiltIn(filterType) ||
997
- filterType.details.typeParameters.length > 0
998
- ) {
999
- const typeVarContext = new TypeVarContext(getTypeVarScopeId(filterType));
1000
- const unspecializedFilterType = ClassType.cloneForSpecialization(
1001
- filterType,
1002
- /* typeArguments */ undefined,
1003
- /* isTypeArgumentExplicit */ false
1004
- );
1005
-
1006
- if (
1007
- populateTypeVarContextBasedOnExpectedType(
1008
- evaluator,
1009
- unspecializedFilterType,
1010
- varType,
1011
- typeVarContext,
1012
- /* liveTypeVarScopes */ undefined
1013
- )
1014
- ) {
1015
- specializedFilterType = applySolvedTypeVars(
1016
- unspecializedFilterType,
1017
- typeVarContext,
1018
- /* unknownIfNotFound */ true
1019
- ) as ClassType;
1020
- }
1021
- }
1022
- }
1023
-
1024
- filteredTypes.push(addConditionToType(specializedFilterType, constraints));
1025
- } else if (allowIntersections) {
1026
- // The two types appear to have no relation. It's possible that the
1027
- // two types are protocols or the program is expecting one type to
1028
- // be a mix-in class used with the other. In this case, we'll
1029
- // synthesize a new class type that represents an intersection of
1030
- // the two types.
1031
- const className = `<subclass of ${varType.details.name} and ${concreteFilterType.details.name}>`;
1032
- const fileInfo = getFileInfo(errorNode);
1033
- let newClassType = ClassType.createInstantiable(
1034
- className,
1035
- ParseTreeUtils.getClassFullName(errorNode, fileInfo.moduleName, className),
1036
- fileInfo.moduleName,
1037
- fileInfo.filePath,
1038
- ClassTypeFlags.None,
1039
- ParseTreeUtils.getTypeSourceId(errorNode),
1040
- /* declaredMetaclass */ undefined,
1041
- varType.details.effectiveMetaclass,
1042
- varType.details.docString
1043
- );
1044
- newClassType.details.baseClasses = [ClassType.cloneAsInstantiable(varType), concreteFilterType];
1045
- computeMroLinearization(newClassType);
1046
-
1047
- newClassType = addConditionToType(newClassType, concreteFilterType.condition) as ClassType;
1048
-
1049
- if (
1050
- isTypeVar(unexpandedType) &&
1051
- !unexpandedType.details.isParamSpec &&
1052
- unexpandedType.details.constraints.length === 0
1053
- ) {
1054
- newClassType = addConditionToType(newClassType, [
1055
- {
1056
- typeVarName: TypeVarType.getNameWithScope(unexpandedType),
1057
- constraintIndex: 0,
1058
- isConstrainedTypeVar: false,
1059
- },
1060
- ]) as ClassType;
1061
- }
1062
-
1063
- const newClassInstanceType = ClassType.cloneAsInstance(newClassType);
1064
-
1065
- // If this is a issubclass check, we do a double conversion from instantiable
1066
- // to instance back to instantiable to make sure that the includeSubclasses flag
1067
- // gets cleared.
1068
- filteredTypes.push(
1069
- isInstanceCheck ? newClassInstanceType : ClassType.cloneAsInstantiable(newClassInstanceType)
1070
- );
1071
- }
1072
- }
1073
- } else if (isTypeVar(filterType) && TypeBase.isInstantiable(filterType)) {
1074
- // Handle the case where the filter type is Type[T] and the unexpanded
1075
- // subtype is some instance type, possibly T.
1076
- if (isInstanceCheck && TypeBase.isInstance(unexpandedType)) {
1077
- if (isTypeVar(unexpandedType) && isTypeSame(convertToInstance(filterType), unexpandedType)) {
1078
- // If the unexpanded subtype is T, we can definitively filter
1079
- // in both the positive and negative cases.
1080
- if (isPositiveTest) {
1081
- filteredTypes.push(unexpandedType);
1082
- }
1083
- } else {
1084
- if (isPositiveTest) {
1085
- filteredTypes.push(convertToInstance(filterType));
1086
- } else {
1087
- // If the unexpanded subtype is some other instance, we can't
1088
- // filter anything because it might be an instance.
1089
- filteredTypes.push(unexpandedType);
1090
- isClassRelationshipIndeterminate = true;
1091
- }
1092
- }
1093
- } else if (!isInstanceCheck && TypeBase.isInstantiable(unexpandedType)) {
1094
- if (isTypeVar(unexpandedType) && isTypeSame(filterType, unexpandedType)) {
1095
- if (isPositiveTest) {
1096
- filteredTypes.push(unexpandedType);
1097
- }
1098
- } else {
1099
- if (isPositiveTest) {
1100
- filteredTypes.push(filterType);
1101
- } else {
1102
- filteredTypes.push(unexpandedType);
1103
- isClassRelationshipIndeterminate = true;
1104
- }
1105
- }
1106
- }
1107
- } else if (isFunction(filterType)) {
1108
- // Handle an isinstance check against Callable.
1109
- if (isInstanceCheck) {
1110
- let isCallable = false;
1111
-
1112
- if (isClass(varType)) {
1113
- if (TypeBase.isInstantiable(unexpandedType)) {
1114
- isCallable = true;
1115
- } else {
1116
- isCallable = !!lookUpClassMember(varType, '__call__');
1117
- }
1118
- }
1119
-
1120
- if (isCallable) {
1121
- if (isPositiveTest) {
1122
- filteredTypes.push(unexpandedType);
1123
- } else {
1124
- foundSuperclass = true;
1125
- }
1126
- }
1127
- }
1128
- }
1129
- }
1130
-
1131
- // In the negative case, if one or more of the filters
1132
- // always match the type (i.e. they are an exact match or
1133
- // a superclass of the type), then there's nothing left after
1134
- // the filter is applied. If we didn't find any superclass
1135
- // match, then the original variable type survives the filter.
1136
- if (!isPositiveTest) {
1137
- if (!foundSuperclass || isClassRelationshipIndeterminate) {
1138
- filteredTypes.push(negativeFallbackType);
1139
- }
1140
- }
1141
-
1142
- if (!isInstanceCheck) {
1143
- return filteredTypes;
1144
- }
1145
-
1146
- return filteredTypes.map((t) => convertToInstance(t));
1147
- };
1148
-
1149
- const filterFunctionType = (varType: FunctionType | OverloadedFunctionType, unexpandedType: Type): Type[] => {
1150
- const filteredTypes: Type[] = [];
1151
-
1152
- if (isPositiveTest) {
1153
- for (const filterType of classTypeList) {
1154
- const concreteFilterType = evaluator.makeTopLevelTypeVarsConcrete(filterType);
1155
-
1156
- if (evaluator.assignType(varType, convertToInstance(concreteFilterType))) {
1157
- // If the filter type is a Callable, use the original type. If the
1158
- // filter type is a callback protocol, use the filter type.
1159
- if (isFunction(filterType)) {
1160
- filteredTypes.push(unexpandedType);
1161
- } else {
1162
- filteredTypes.push(convertToInstance(filterType));
1163
- }
1164
- }
1165
- }
1166
- } else if (
1167
- !classTypeList.some((filterType) => {
1168
- // If the filter type is a runtime checkable protocol class, it can
1169
- // be used in an instance check.
1170
- const concreteFilterType = evaluator.makeTopLevelTypeVarsConcrete(filterType);
1171
- if (isClass(concreteFilterType) && !ClassType.isProtocolClass(concreteFilterType)) {
1172
- return false;
1173
- }
1174
-
1175
- return evaluator.assignType(varType, convertToInstance(concreteFilterType));
1176
- })
1177
- ) {
1178
- filteredTypes.push(unexpandedType);
1179
- }
1180
-
1181
- return filteredTypes;
1182
- };
1183
-
1184
- const anyOrUnknownSubstitutions: Type[] = [];
1185
- const anyOrUnknown: Type[] = [];
1186
-
1187
- const filteredType = evaluator.mapSubtypesExpandTypeVars(
1188
- expandedTypes,
1189
- /* conditionFilter */ undefined,
1190
- (subtype, unexpandedSubtype) => {
1191
- // If we fail to filter anything in the negative case, we need to decide
1192
- // whether to retain the original TypeVar or replace it with its specialized
1193
- // type(s). We'll assume that if someone is using isinstance or issubclass
1194
- // on a constrained TypeVar that they want to filter based on its constrained
1195
- // parts.
1196
- const negativeFallback = getTypeCondition(subtype) ? subtype : unexpandedSubtype;
1197
- const isSubtypeTypeObject = isClassInstance(subtype) && ClassType.isBuiltIn(subtype, 'type');
1198
-
1199
- if (isPositiveTest && isAnyOrUnknown(subtype)) {
1200
- // If this is a positive test and the effective type is Any or
1201
- // Unknown, we can assume that the type matches one of the
1202
- // specified types.
1203
- if (isInstanceCheck) {
1204
- anyOrUnknownSubstitutions.push(
1205
- combineTypes(classTypeList.map((classType) => convertToInstance(classType)))
1206
- );
1207
- } else {
1208
- // We perform a double conversion from instance to instantiable
1209
- // here to make sure that the includeSubclasses flag is cleared
1210
- // if it's a class.
1211
- anyOrUnknownSubstitutions.push(
1212
- combineTypes(
1213
- classTypeList.map((classType) => convertToInstantiable(convertToInstance(classType)))
1214
- )
1215
- );
1216
- }
1217
-
1218
- anyOrUnknown.push(subtype);
1219
- return undefined;
1220
- }
1221
-
1222
- if (isInstanceCheck) {
1223
- if (isNoneInstance(subtype)) {
1224
- const containsNoneType = classTypeList.some((t) => isNoneTypeClass(t));
1225
- if (isPositiveTest) {
1226
- return containsNoneType ? subtype : undefined;
1227
- } else {
1228
- return containsNoneType ? undefined : subtype;
1229
- }
1230
- }
1231
-
1232
- if (isModule(subtype) || (isClassInstance(subtype) && ClassType.isBuiltIn(subtype, 'ModuleType'))) {
1233
- // Handle type narrowing for runtime-checkable protocols
1234
- // when applied to modules.
1235
- if (isPositiveTest) {
1236
- const filteredTypes = classTypeList.filter((classType) => {
1237
- const concreteClassType = evaluator.makeTopLevelTypeVarsConcrete(classType);
1238
- return (
1239
- isInstantiableClass(concreteClassType) && ClassType.isProtocolClass(concreteClassType)
1240
- );
1241
- });
1242
-
1243
- if (filteredTypes.length > 0) {
1244
- return convertToInstance(combineTypes(filteredTypes));
1245
- }
1246
- }
1247
- }
1248
-
1249
- if (isClassInstance(subtype) && !isSubtypeTypeObject) {
1250
- return combineTypes(
1251
- filterClassType(
1252
- ClassType.cloneAsInstantiable(subtype),
1253
- convertToInstance(unexpandedSubtype),
1254
- getTypeCondition(subtype),
1255
- negativeFallback
1256
- )
1257
- );
1258
- }
1259
-
1260
- if ((isFunction(subtype) || isOverloadedFunction(subtype)) && isInstanceCheck) {
1261
- return combineTypes(filterFunctionType(subtype, convertToInstance(unexpandedSubtype)));
1262
- }
1263
-
1264
- if (isInstantiableClass(subtype) || isSubtypeTypeObject) {
1265
- // Handle the special case of isinstance(x, type).
1266
- const includesTypeType = classTypeList.some(
1267
- (classType) => isInstantiableClass(classType) && ClassType.isBuiltIn(classType, 'type')
1268
- );
1269
- if (isPositiveTest) {
1270
- return includesTypeType ? negativeFallback : undefined;
1271
- } else {
1272
- return includesTypeType ? undefined : negativeFallback;
1273
- }
1274
- }
1275
- } else {
1276
- if (isInstantiableClass(subtype)) {
1277
- return combineTypes(
1278
- filterClassType(subtype, unexpandedSubtype, getTypeCondition(subtype), negativeFallback)
1279
- );
1280
- }
1281
-
1282
- if (isSubtypeTypeObject) {
1283
- const objectType = evaluator.getBuiltInObject(errorNode, 'object');
1284
- if (objectType && isClassInstance(objectType)) {
1285
- return combineTypes(
1286
- filterClassType(
1287
- ClassType.cloneAsInstantiable(objectType),
1288
- convertToInstantiable(unexpandedSubtype),
1289
- getTypeCondition(subtype),
1290
- negativeFallback
1291
- )
1292
- );
1293
- }
1294
- }
1295
- }
1296
-
1297
- return isPositiveTest ? undefined : negativeFallback;
1298
- }
1299
- );
1300
-
1301
- // If the result is Any/Unknown and contains no other subtypes and
1302
- // we have substitutions for Any/Unknown, use those instead. We don't
1303
- // want to apply this if the filtering produced something other than
1304
- // Any/Unknown. For example, if the statement is "isinstance(x, list)"
1305
- // and the type of x is "List[str] | int | Any", the result should be
1306
- // "List[str]", not "List[str] | List[Unknown]".
1307
- if (isNever(filteredType) && anyOrUnknownSubstitutions.length > 0) {
1308
- return combineTypes(anyOrUnknownSubstitutions);
1309
- }
1310
-
1311
- if (anyOrUnknown.length > 0) {
1312
- return combineTypes([filteredType, ...anyOrUnknown]);
1313
- }
1314
-
1315
- return filteredType;
1316
- }
1317
-
1318
- // Attempts to narrow a union of tuples based on their known length.
1319
- function narrowTypeForTupleLength(
1320
- evaluator: TypeEvaluator,
1321
- referenceType: Type,
1322
- lengthValue: number,
1323
- isPositiveTest: boolean
1324
- ) {
1325
- return mapSubtypes(referenceType, (subtype) => {
1326
- const concreteSubtype = evaluator.makeTopLevelTypeVarsConcrete(subtype);
1327
-
1328
- // If it's not a tuple, we can't narrow it.
1329
- if (
1330
- !isClassInstance(concreteSubtype) ||
1331
- !isTupleClass(concreteSubtype) ||
1332
- isUnboundedTupleClass(concreteSubtype) ||
1333
- !concreteSubtype.tupleTypeArguments
1334
- ) {
1335
- return subtype;
1336
- }
1337
-
1338
- const tupleLengthMatches = concreteSubtype.tupleTypeArguments.length === lengthValue;
1339
- return tupleLengthMatches === isPositiveTest ? subtype : undefined;
1340
- });
1341
- }
1342
-
1343
- // Attempts to narrow a type (make it more constrained) based on an "in" or
1344
- // "not in" binary expression.
1345
- function narrowTypeForContains(evaluator: TypeEvaluator, referenceType: Type, containerType: Type) {
1346
- // We support contains narrowing only for certain built-in types that have been specialized.
1347
- if (!isClassInstance(containerType) || !ClassType.isBuiltIn(containerType)) {
1348
- return referenceType;
1349
- }
1350
-
1351
- const builtInName = containerType.details.name;
1352
-
1353
- if (
1354
- !['list', 'set', 'frozenset', 'deque', 'tuple', 'dict', 'defaultdict', 'OrderedDict'].some(
1355
- (name) => name === builtInName
1356
- )
1357
- ) {
1358
- return referenceType;
1359
- }
1360
-
1361
- if (!containerType.typeArguments || containerType.typeArguments.length < 1) {
1362
- return referenceType;
1363
- }
1364
-
1365
- let elementType = containerType.typeArguments[0];
1366
- if (isTupleClass(containerType) && containerType.tupleTypeArguments) {
1367
- elementType = combineTypes(containerType.tupleTypeArguments.map((t) => t.type));
1368
- }
1369
-
1370
- let canNarrow = true;
1371
- const elementTypeWithoutLiteral = stripLiteralValue(elementType);
1372
-
1373
- const narrowedType = mapSubtypes(referenceType, (referenceSubtype) => {
1374
- const concreteReferenceType = evaluator.makeTopLevelTypeVarsConcrete(referenceSubtype);
1375
-
1376
- if (isAnyOrUnknown(concreteReferenceType)) {
1377
- canNarrow = false;
1378
- return referenceSubtype;
1379
- }
1380
-
1381
- if (evaluator.assignType(elementType, concreteReferenceType)) {
1382
- return referenceSubtype;
1383
- }
1384
-
1385
- if (evaluator.assignType(elementTypeWithoutLiteral, concreteReferenceType)) {
1386
- return mapSubtypes(elementType, (elementSubtype) => {
1387
- if (isClassInstance(elementSubtype) && isSameWithoutLiteralValue(referenceSubtype, elementSubtype)) {
1388
- return elementSubtype;
1389
- }
1390
- return undefined;
1391
- });
1392
- }
1393
-
1394
- return undefined;
1395
- });
1396
-
1397
- return canNarrow ? narrowedType : referenceType;
1398
- }
1399
-
1400
- // Attempts to narrow a type based on whether it is a TypedDict with
1401
- // a literal key value.
1402
- function narrowTypeForTypedDictKey(
1403
- evaluator: TypeEvaluator,
1404
- referenceType: Type,
1405
- literalKey: ClassType,
1406
- isPositiveTest: boolean
1407
- ): Type {
1408
- const narrowedType = mapSubtypes(referenceType, (subtype) => {
1409
- if (isClassInstance(subtype) && ClassType.isTypedDictClass(subtype)) {
1410
- const entries = getTypedDictMembersForClass(evaluator, subtype, /* allowNarrowed */ true);
1411
- const tdEntry = entries.get(literalKey.literalValue as string);
1412
-
1413
- if (isPositiveTest) {
1414
- if (!tdEntry) {
1415
- // If the class is final, we can say with certainty that if
1416
- // the TypedDict doesn't define this entry, it is not this type.
1417
- // If it's not final, we can't say this because it could be a
1418
- // subclass of this TypedDict that adds more fields.
1419
- return ClassType.isFinal(subtype) ? undefined : subtype;
1420
- }
1421
-
1422
- // If the entry is currently not required and not marked provided, we can mark
1423
- // it as provided after this guard expression confirms it is.
1424
- if (tdEntry.isRequired || tdEntry.isProvided) {
1425
- return subtype;
1426
- }
1427
-
1428
- const oldNarrowedEntriesMap = subtype.typedDictNarrowedEntries;
1429
- const newNarrowedEntriesMap = new Map<string, TypedDictEntry>();
1430
- if (oldNarrowedEntriesMap) {
1431
- // Copy the old entries.
1432
- oldNarrowedEntriesMap.forEach((value, key) => {
1433
- newNarrowedEntriesMap.set(key, value);
1434
- });
1435
- }
1436
-
1437
- // Add the new entry.
1438
- newNarrowedEntriesMap.set(literalKey.literalValue as string, {
1439
- valueType: tdEntry.valueType,
1440
- isRequired: false,
1441
- isProvided: true,
1442
- });
1443
-
1444
- // Clone the TypedDict object with the new entries.
1445
- return ClassType.cloneAsInstance(
1446
- ClassType.cloneForNarrowedTypedDictEntries(
1447
- ClassType.cloneAsInstantiable(subtype),
1448
- newNarrowedEntriesMap
1449
- )
1450
- );
1451
- } else {
1452
- return tdEntry !== undefined && (tdEntry.isRequired || tdEntry.isProvided) ? undefined : subtype;
1453
- }
1454
- }
1455
-
1456
- return subtype;
1457
- });
1458
-
1459
- return narrowedType;
1460
- }
1461
-
1462
- // Attempts to narrow a TypedDict type based on a comparison (equal or not
1463
- // equal) between a discriminating entry type that has a declared literal
1464
- // type to a literal value.
1465
- function narrowTypeForDiscriminatedDictEntryComparison(
1466
- evaluator: TypeEvaluator,
1467
- referenceType: Type,
1468
- indexLiteralType: ClassType,
1469
- literalType: ClassType,
1470
- isPositiveTest: boolean
1471
- ): Type {
1472
- let canNarrow = true;
1473
-
1474
- const narrowedType = mapSubtypes(referenceType, (subtype) => {
1475
- if (isClassInstance(subtype) && ClassType.isTypedDictClass(subtype)) {
1476
- const symbolMap = getTypedDictMembersForClass(evaluator, subtype);
1477
- const tdEntry = symbolMap.get(indexLiteralType.literalValue as string);
1478
-
1479
- if (tdEntry && isLiteralTypeOrUnion(tdEntry.valueType)) {
1480
- if (isPositiveTest) {
1481
- return evaluator.assignType(tdEntry.valueType, literalType) ? subtype : undefined;
1482
- } else {
1483
- return evaluator.assignType(literalType, tdEntry.valueType) ? undefined : subtype;
1484
- }
1485
- }
1486
- }
1487
-
1488
- canNarrow = false;
1489
- return subtype;
1490
- });
1491
-
1492
- return canNarrow ? narrowedType : referenceType;
1493
- }
1494
-
1495
- function narrowTypeForDiscriminatedTupleComparison(
1496
- evaluator: TypeEvaluator,
1497
- referenceType: Type,
1498
- indexLiteralType: ClassType,
1499
- literalType: ClassType,
1500
- isPositiveTest: boolean
1501
- ): Type {
1502
- let canNarrow = true;
1503
-
1504
- const narrowedType = mapSubtypes(referenceType, (subtype) => {
1505
- if (
1506
- isClassInstance(subtype) &&
1507
- ClassType.isTupleClass(subtype) &&
1508
- !isUnboundedTupleClass(subtype) &&
1509
- typeof indexLiteralType.literalValue === 'number'
1510
- ) {
1511
- const indexValue = indexLiteralType.literalValue;
1512
- if (subtype.tupleTypeArguments && indexValue >= 0 && indexValue < subtype.tupleTypeArguments.length) {
1513
- const tupleEntryType = subtype.tupleTypeArguments[indexValue]?.type;
1514
- if (tupleEntryType && isLiteralTypeOrUnion(tupleEntryType)) {
1515
- if (isPositiveTest) {
1516
- return evaluator.assignType(tupleEntryType, literalType) ? subtype : undefined;
1517
- } else {
1518
- return evaluator.assignType(literalType, tupleEntryType) ? undefined : subtype;
1519
- }
1520
- }
1521
- }
1522
- }
1523
-
1524
- canNarrow = false;
1525
- return subtype;
1526
- });
1527
-
1528
- return canNarrow ? narrowedType : referenceType;
1529
- }
1530
-
1531
- // Attempts to narrow a type based on a comparison (equal or not equal)
1532
- // between a discriminating field that has a declared literal type to a
1533
- // literal value.
1534
- function narrowTypeForDiscriminatedLiteralFieldComparison(
1535
- evaluator: TypeEvaluator,
1536
- referenceType: Type,
1537
- memberName: string,
1538
- literalType: ClassType,
1539
- isPositiveTest: boolean
1540
- ): Type {
1541
- const narrowedType = mapSubtypes(referenceType, (subtype) => {
1542
- let memberInfo: ClassMember | undefined;
1543
-
1544
- if (isClassInstance(subtype)) {
1545
- memberInfo = lookUpObjectMember(subtype, memberName);
1546
- } else if (isInstantiableClass(subtype)) {
1547
- memberInfo = lookUpClassMember(subtype, memberName);
1548
- }
1549
-
1550
- if (memberInfo && memberInfo.isTypeDeclared) {
1551
- let memberType = evaluator.getTypeOfMember(memberInfo);
1552
-
1553
- // Handle the case where the field is a property
1554
- // that has a declared literal return type for its getter.
1555
- if (isClassInstance(subtype) && isProperty(memberType)) {
1556
- const getterInfo = lookUpObjectMember(memberType, 'fget');
1557
-
1558
- if (getterInfo && getterInfo.isTypeDeclared) {
1559
- const getterType = evaluator.getTypeOfMember(getterInfo);
1560
- if (isFunction(getterType) && getterType.details.declaredReturnType) {
1561
- const getterReturnType = FunctionType.getSpecializedReturnType(getterType);
1562
- if (getterReturnType) {
1563
- memberType = getterReturnType;
1564
- }
1565
- }
1566
- }
1567
- }
1568
-
1569
- if (isLiteralTypeOrUnion(memberType)) {
1570
- if (isPositiveTest) {
1571
- return evaluator.assignType(memberType, literalType) ? subtype : undefined;
1572
- } else {
1573
- return evaluator.assignType(literalType, memberType) ? undefined : subtype;
1574
- }
1575
- }
1576
- }
1577
-
1578
- return subtype;
1579
- });
1580
-
1581
- return narrowedType;
1582
- }
1583
-
1584
- // Attempts to narrow a type based on a comparison (equal or not equal)
1585
- // between a discriminating field that has a declared None type to a
1586
- // None.
1587
- function narrowTypeForDiscriminatedFieldNoneComparison(
1588
- evaluator: TypeEvaluator,
1589
- referenceType: Type,
1590
- memberName: string,
1591
- isPositiveTest: boolean
1592
- ): Type {
1593
- return mapSubtypes(referenceType, (subtype) => {
1594
- let memberInfo: ClassMember | undefined;
1595
- if (isClassInstance(subtype)) {
1596
- memberInfo = lookUpObjectMember(subtype, memberName);
1597
- } else if (isInstantiableClass(subtype)) {
1598
- memberInfo = lookUpClassMember(subtype, memberName);
1599
- }
1600
-
1601
- if (memberInfo && memberInfo.isTypeDeclared) {
1602
- const memberType = evaluator.makeTopLevelTypeVarsConcrete(evaluator.getTypeOfMember(memberInfo));
1603
- let canNarrow = true;
1604
-
1605
- if (isPositiveTest) {
1606
- doForEachSubtype(memberType, (memberSubtype) => {
1607
- memberSubtype = evaluator.makeTopLevelTypeVarsConcrete(memberSubtype);
1608
-
1609
- // Don't attempt to narrow if the member is a descriptor or property.
1610
- if (isProperty(memberSubtype) || isMaybeDescriptorInstance(memberSubtype)) {
1611
- canNarrow = false;
1612
- }
1613
-
1614
- if (isAnyOrUnknown(memberSubtype) || isNoneInstance(memberSubtype) || isNever(memberSubtype)) {
1615
- canNarrow = false;
1616
- }
1617
- });
1618
- } else {
1619
- canNarrow = isNoneInstance(memberType);
1620
- }
1621
-
1622
- if (canNarrow) {
1623
- return undefined;
1624
- }
1625
- }
1626
-
1627
- return subtype;
1628
- });
1629
- }
1630
-
1631
- // Attempts to narrow a type based on a "type(x) is y" or "type(x) is not y" check.
1632
- function narrowTypeForTypeIs(type: Type, classType: ClassType, isPositiveTest: boolean) {
1633
- return mapSubtypes(type, (subtype) => {
1634
- if (isClassInstance(subtype)) {
1635
- const matches = ClassType.isDerivedFrom(classType, ClassType.cloneAsInstantiable(subtype));
1636
- if (isPositiveTest) {
1637
- if (matches) {
1638
- if (ClassType.isSameGenericClass(subtype, classType)) {
1639
- return subtype;
1640
- }
1641
- return ClassType.cloneAsInstance(classType);
1642
- }
1643
- return undefined;
1644
- } else {
1645
- // If the class if marked final and it matches, then
1646
- // we can eliminate it in the negative case.
1647
- if (matches && ClassType.isFinal(subtype)) {
1648
- return undefined;
1649
- }
1650
-
1651
- // We can't eliminate the subtype in the negative
1652
- // case because it could be a subclass of the type,
1653
- // in which case `type(x) is y` would fail.
1654
- return subtype;
1655
- }
1656
- } else if (isNoneInstance(subtype)) {
1657
- return isPositiveTest ? undefined : subtype;
1658
- } else if (isAnyOrUnknown(subtype)) {
1659
- return isPositiveTest ? ClassType.cloneAsInstance(classType) : subtype;
1660
- }
1661
-
1662
- return subtype;
1663
- });
1664
- }
1665
-
1666
- // Attempts to narrow a type (make it more constrained) based on a comparison
1667
- // (equal or not equal) to a literal value. It also handles "is" or "is not"
1668
- // operators if isIsOperator is true.
1669
- function narrowTypeForLiteralComparison(
1670
- evaluator: TypeEvaluator,
1671
- referenceType: Type,
1672
- literalType: ClassType,
1673
- isPositiveTest: boolean,
1674
- isIsOperator: boolean
1675
- ): Type {
1676
- return mapSubtypes(referenceType, (subtype) => {
1677
- subtype = evaluator.makeTopLevelTypeVarsConcrete(subtype);
1678
- if (isClassInstance(subtype) && ClassType.isSameGenericClass(literalType, subtype)) {
1679
- if (subtype.literalValue !== undefined) {
1680
- const literalValueMatches = ClassType.isLiteralValueSame(subtype, literalType);
1681
- if ((literalValueMatches && !isPositiveTest) || (!literalValueMatches && isPositiveTest)) {
1682
- return undefined;
1683
- }
1684
- return subtype;
1685
- } else if (isPositiveTest) {
1686
- return literalType;
1687
- } else {
1688
- // If we're able to enumerate all possible literal values
1689
- // (for bool or enum), we can eliminate all others in a negative test.
1690
- const allLiteralTypes = enumerateLiteralsForType(evaluator, subtype);
1691
- if (allLiteralTypes && allLiteralTypes.length > 0) {
1692
- return combineTypes(
1693
- allLiteralTypes.filter((type) => !ClassType.isLiteralValueSame(type, literalType))
1694
- );
1695
- }
1696
- }
1697
- } else if (isPositiveTest) {
1698
- if (isIsOperator || isNoneInstance(subtype)) {
1699
- return undefined;
1700
- }
1701
- }
1702
-
1703
- return subtype;
1704
- });
1705
- }
1706
-
1707
- export function enumerateLiteralsForType(evaluator: TypeEvaluator, type: ClassType): ClassType[] | undefined {
1708
- if (ClassType.isBuiltIn(type, 'bool')) {
1709
- // Booleans have only two types: True and False.
1710
- return [
1711
- ClassType.cloneWithLiteral(type, /* value */ true),
1712
- ClassType.cloneWithLiteral(type, /* value */ false),
1713
- ];
1714
- }
1715
-
1716
- if (ClassType.isEnumClass(type)) {
1717
- // Enumerate all of the values in this enumeration.
1718
- const enumList: ClassType[] = [];
1719
- const fields = type.details.fields;
1720
- fields.forEach((symbol) => {
1721
- if (!symbol.isIgnoredForProtocolMatch()) {
1722
- const symbolType = evaluator.getEffectiveTypeOfSymbol(symbol);
1723
- if (
1724
- isClassInstance(symbolType) &&
1725
- ClassType.isSameGenericClass(type, symbolType) &&
1726
- symbolType.literalValue !== undefined
1727
- ) {
1728
- enumList.push(symbolType);
1729
- }
1730
- }
1731
- });
1732
-
1733
- return enumList;
1734
- }
1735
-
1736
- return undefined;
1737
- }
1738
-
1739
- // Attempts to narrow a type (make it more constrained) based on a
1740
- // call to "callable". For example, if the original type of expression "x" is
1741
- // Union[Callable[..., Any], Type[int], int], it would remove the "int" because
1742
- // it's not callable.
1743
- function narrowTypeForCallable(
1744
- evaluator: TypeEvaluator,
1745
- type: Type,
1746
- isPositiveTest: boolean,
1747
- errorNode: ExpressionNode,
1748
- allowIntersections: boolean
1749
- ): Type {
1750
- return evaluator.mapSubtypesExpandTypeVars(type, /* conditionFilter */ undefined, (subtype) => {
1751
- switch (subtype.category) {
1752
- case TypeCategory.Function:
1753
- case TypeCategory.OverloadedFunction: {
1754
- return isPositiveTest ? subtype : undefined;
1755
- }
1756
-
1757
- case TypeCategory.None:
1758
- case TypeCategory.Module: {
1759
- return isPositiveTest ? undefined : subtype;
1760
- }
1761
-
1762
- case TypeCategory.Class: {
1763
- if (TypeBase.isInstantiable(subtype)) {
1764
- return isPositiveTest ? subtype : undefined;
1765
- }
1766
-
1767
- // See if the object is callable.
1768
- const callMemberType = lookUpClassMember(subtype, '__call__');
1769
- if (!callMemberType) {
1770
- if (!isPositiveTest) {
1771
- return subtype;
1772
- }
1773
-
1774
- if (allowIntersections) {
1775
- // The type appears to not be callable. It's possible that the
1776
- // two type is a subclass that is callable. We'll synthesize a
1777
- // new intersection type.
1778
- const className = `<callable subtype of ${subtype.details.name}>`;
1779
- const fileInfo = getFileInfo(errorNode);
1780
- let newClassType = ClassType.createInstantiable(
1781
- className,
1782
- ParseTreeUtils.getClassFullName(errorNode, fileInfo.moduleName, className),
1783
- fileInfo.moduleName,
1784
- fileInfo.filePath,
1785
- ClassTypeFlags.None,
1786
- ParseTreeUtils.getTypeSourceId(errorNode),
1787
- /* declaredMetaclass */ undefined,
1788
- subtype.details.effectiveMetaclass,
1789
- subtype.details.docString
1790
- );
1791
- newClassType.details.baseClasses = [ClassType.cloneAsInstantiable(subtype)];
1792
- computeMroLinearization(newClassType);
1793
-
1794
- newClassType = addConditionToType(newClassType, subtype.condition) as ClassType;
1795
-
1796
- // Add a __call__ method to the new class.
1797
- const callMethod = FunctionType.createSynthesizedInstance('__call__');
1798
- const selfParam: FunctionParameter = {
1799
- category: ParameterCategory.Simple,
1800
- name: 'self',
1801
- type: ClassType.cloneAsInstance(newClassType),
1802
- hasDeclaredType: true,
1803
- };
1804
- FunctionType.addParameter(callMethod, selfParam);
1805
- FunctionType.addDefaultParameters(callMethod);
1806
- callMethod.details.declaredReturnType = UnknownType.create();
1807
- newClassType.details.fields.set(
1808
- '__call__',
1809
- Symbol.createWithType(SymbolFlags.ClassMember, callMethod)
1810
- );
1811
-
1812
- return ClassType.cloneAsInstance(newClassType);
1813
- }
1814
-
1815
- return undefined;
1816
- } else {
1817
- return isPositiveTest ? subtype : undefined;
1818
- }
1819
- }
1820
-
1821
- default: {
1822
- // For all other types, we can't determine whether it's
1823
- // callable or not, so we can't eliminate them.
1824
- return subtype;
1825
- }
1826
- }
1827
- });
1828
- }