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

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