@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
@@ -73,6 +73,38 @@ const TypePrinter = __importStar(require("./typePrinter"));
73
73
  const types_1 = require("./types");
74
74
  const typeUtils_1 = require("./typeUtils");
75
75
  const typeVarContext_1 = require("./typeVarContext");
76
+ var MemberAccessFlags;
77
+ (function (MemberAccessFlags) {
78
+ MemberAccessFlags[MemberAccessFlags["None"] = 0] = "None";
79
+ // By default, member accesses are assumed to access the attributes
80
+ // of a class instance. By setting this flag, only attributes of
81
+ // the class are considered.
82
+ MemberAccessFlags[MemberAccessFlags["AccessClassMembersOnly"] = 1] = "AccessClassMembersOnly";
83
+ // By default, members of base classes are also searched.
84
+ // Set this flag to consider only the specified class' members.
85
+ MemberAccessFlags[MemberAccessFlags["SkipBaseClasses"] = 2] = "SkipBaseClasses";
86
+ // Do not include the "object" base class in the search.
87
+ MemberAccessFlags[MemberAccessFlags["SkipObjectBaseClass"] = 4] = "SkipObjectBaseClass";
88
+ // Consider writes to symbols flagged as ClassVars as an error.
89
+ MemberAccessFlags[MemberAccessFlags["DisallowClassVarWrites"] = 8] = "DisallowClassVarWrites";
90
+ // Normally __new__ is treated as a static method, but when
91
+ // it is invoked implicitly through a constructor call, it
92
+ // acts like a class method instead.
93
+ MemberAccessFlags[MemberAccessFlags["TreatConstructorAsClassMethod"] = 16] = "TreatConstructorAsClassMethod";
94
+ // By default, class member lookups start with the class itself
95
+ // and fall back on the metaclass if it's not found. This option
96
+ // skips the first check.
97
+ MemberAccessFlags[MemberAccessFlags["ConsiderMetaclassOnly"] = 32] = "ConsiderMetaclassOnly";
98
+ // If an attribute cannot be found when looking for instance
99
+ // members, normally an attribute access override method
100
+ // (__getattr__, etc.) may provide the missing attribute type.
101
+ // This disables this check.
102
+ MemberAccessFlags[MemberAccessFlags["SkipAttributeAccessOverride"] = 64] = "SkipAttributeAccessOverride";
103
+ // Do not include the class itself, only base classes.
104
+ MemberAccessFlags[MemberAccessFlags["SkipOriginalClass"] = 128] = "SkipOriginalClass";
105
+ // Do not include the "type" base class in the search.
106
+ MemberAccessFlags[MemberAccessFlags["SkipTypeBaseClass"] = 256] = "SkipTypeBaseClass";
107
+ })(MemberAccessFlags || (MemberAccessFlags = {}));
76
108
  // Maps binary operators to the magic methods that implement them.
77
109
  // The boolean indicates whether the operators "chain" together.
78
110
  const binaryOperatorMap = {
@@ -628,15 +660,10 @@ function createTypeEvaluator(importLookup, evaluatorOptions) {
628
660
  typeResult.type.details.illegalRecursionDetected = true;
629
661
  }
630
662
  }
631
- // Don't update the type cache with an unbound type that results from
632
- // a resolution cycle. The cache will be updated when the stack unwinds
633
- // and the type is fully evaluated.
634
- if (!(0, typeUtils_1.isTypeAliasPlaceholder)(typeResult.type)) {
635
- writeTypeCache(node, typeResult.type, flags, !!typeResult.isIncomplete, expectedType,
636
- /* allowSpeculativeCaching */ true);
637
- if (expectedType && !(0, types_1.isAnyOrUnknown)(expectedType) && !(0, types_1.isNever)(expectedType)) {
638
- expectedTypeCache.set(node.id, expectedType);
639
- }
663
+ writeTypeCache(node, typeResult.type, flags, !!typeResult.isIncomplete, expectedType,
664
+ /* allowSpeculativeCaching */ true);
665
+ if (expectedType && !(0, types_1.isAnyOrUnknown)(expectedType) && !(0, types_1.isNever)(expectedType)) {
666
+ expectedTypeCache.set(node.id, expectedType);
640
667
  }
641
668
  if (printExpressionTypes) {
642
669
  printExpressionSpaceCount--;
@@ -1336,7 +1363,7 @@ function createTypeEvaluator(importLookup, evaluatorOptions) {
1336
1363
  // Handle the case where the symbol is a class-level variable
1337
1364
  // where the type isn't declared in this class but is in
1338
1365
  // a parent class.
1339
- if (getDeclaredTypeOfSymbol(symbol) === undefined &&
1366
+ if (getDeclaredTypeOfSymbol(symbol, expression) === undefined &&
1340
1367
  symbolWithScope.scope.type === 2 /* Class */) {
1341
1368
  const enclosingClass = ParseTreeUtils.getEnclosingClassOrFunction(expression);
1342
1369
  if (enclosingClass && enclosingClass.nodeType === 10 /* Class */) {
@@ -1354,7 +1381,7 @@ function createTypeEvaluator(importLookup, evaluatorOptions) {
1354
1381
  break;
1355
1382
  }
1356
1383
  case 54 /* TypeAnnotation */: {
1357
- return getDeclaredTypeForExpression(expression.valueExpression);
1384
+ return getDeclaredTypeForExpression(expression.valueExpression, usage);
1358
1385
  }
1359
1386
  case 35 /* MemberAccess */: {
1360
1387
  const baseType = makeTopLevelTypeVarsConcrete(getTypeOfExpression(expression.leftExpression, 2 /* DoNotSpecialize */).type);
@@ -2468,7 +2495,7 @@ function createTypeEvaluator(importLookup, evaluatorOptions) {
2468
2495
  }
2469
2496
  function setSymbolAccessed(fileInfo, symbol, node) {
2470
2497
  if (!speculativeTypeTracker.isSpeculative(node)) {
2471
- fileInfo.accessedSymbolMap.set(symbol.id, true);
2498
+ fileInfo.accessedSymbolSet.add(symbol.id);
2472
2499
  }
2473
2500
  }
2474
2501
  function getReturnTypeFromGenerator(type) {
@@ -2508,9 +2535,10 @@ function createTypeEvaluator(importLookup, evaluatorOptions) {
2508
2535
  return undefined;
2509
2536
  }
2510
2537
  function getTypeOfName(node, flags) {
2511
- var _a;
2538
+ var _a, _b;
2512
2539
  const fileInfo = AnalyzerNodeInfo.getFileInfo(node);
2513
2540
  const name = node.value;
2541
+ let symbol;
2514
2542
  let type;
2515
2543
  let isIncomplete = false;
2516
2544
  const allowForwardReferences = (flags & 4 /* AllowForwardReferences */) !== 0 || fileInfo.isStubFile;
@@ -2524,96 +2552,104 @@ function createTypeEvaluator(importLookup, evaluatorOptions) {
2524
2552
  };
2525
2553
  }
2526
2554
  }
2527
- // Look for the scope that contains the value definition and
2528
- // see if it has a declared type.
2529
- const symbolWithScope = lookUpSymbolRecursive(node, name, !allowForwardReferences, allowForwardReferences && (flags & 1024 /* ExpectingTypeAnnotation */) !== 0);
2530
- if (symbolWithScope) {
2531
- let useCodeFlowAnalysis = !allowForwardReferences;
2532
- // If the symbol is implicitly imported from the builtin
2533
- // scope, there's no need to use code flow analysis.
2534
- if (symbolWithScope.scope.type === 4 /* Builtin */) {
2535
- useCodeFlowAnalysis = false;
2536
- }
2537
- const symbol = symbolWithScope.symbol;
2538
- // Get the effective type (either the declared type or the inferred type).
2539
- // If we're using code flow analysis, pass the usage node so we consider
2540
- // only the assignment nodes that are reachable from this usage.
2541
- const effectiveTypeInfo = getEffectiveTypeOfSymbolForUsage(symbol, useCodeFlowAnalysis ? node : undefined);
2542
- let effectiveType = (0, typeUtils_1.transformPossibleRecursiveTypeAlias)(effectiveTypeInfo.type);
2543
- if (effectiveTypeInfo.isIncomplete) {
2544
- if ((0, types_1.isUnbound)(effectiveType)) {
2545
- effectiveType = types_1.UnknownType.create(/* isIncomplete */ true);
2546
- }
2547
- isIncomplete = true;
2548
- }
2549
- if (effectiveTypeInfo.isRecursiveDefinition && isNodeReachable(node)) {
2550
- addDiagnostic(AnalyzerNodeInfo.getFileInfo(node).diagnosticRuleSet.reportGeneralTypeIssues, diagnosticRules_1.DiagnosticRule.reportGeneralTypeIssues, localize_1.Localizer.Diagnostic.recursiveDefinition().format({ name }), node);
2551
- }
2552
- const isSpecialBuiltIn = !!effectiveType && (0, types_1.isInstantiableClass)(effectiveType) && types_1.ClassType.isSpecialBuiltIn(effectiveType);
2553
- type = effectiveType;
2554
- if (useCodeFlowAnalysis && !isSpecialBuiltIn) {
2555
- // See if code flow analysis can tell us anything more about the type.
2556
- // If the symbol is declared outside of our execution scope, use its effective
2557
- // type. If it's declared inside our execution scope, it generally starts
2558
- // as unbound at the start of the code flow.
2559
- const typeAtStart = symbolWithScope.isBeyondExecutionScope || !symbol.isInitiallyUnbound()
2560
- ? effectiveType
2561
- : types_1.UnboundType.create();
2562
- const codeFlowTypeResult = getFlowTypeOfReference(node, symbol.id, typeAtStart,
2563
- /* isInitialTypeIncomplete */ false,
2564
- /* startNode */ undefined);
2565
- if (codeFlowTypeResult.type) {
2566
- type = codeFlowTypeResult.type;
2567
- }
2568
- if (codeFlowTypeResult.isIncomplete) {
2555
+ const typeParamSymbol = AnalyzerNodeInfo.getTypeParameterSymbol(node);
2556
+ if (typeParamSymbol) {
2557
+ symbol = typeParamSymbol;
2558
+ type = (_a = getDeclaredTypeOfSymbol(typeParamSymbol)) !== null && _a !== void 0 ? _a : types_1.UnknownType.create();
2559
+ setSymbolAccessed(fileInfo, symbol, node);
2560
+ }
2561
+ else {
2562
+ // Look for the scope that contains the value definition and
2563
+ // see if it has a declared type.
2564
+ const symbolWithScope = lookUpSymbolRecursive(node, name, !allowForwardReferences, allowForwardReferences && (flags & 1024 /* ExpectingTypeAnnotation */) !== 0);
2565
+ if (symbolWithScope) {
2566
+ let useCodeFlowAnalysis = !allowForwardReferences;
2567
+ // If the symbol is implicitly imported from the builtin
2568
+ // scope, there's no need to use code flow analysis.
2569
+ if (symbolWithScope.scope.type === 4 /* Builtin */) {
2570
+ useCodeFlowAnalysis = false;
2571
+ }
2572
+ symbol = symbolWithScope.symbol;
2573
+ // Get the effective type (either the declared type or the inferred type).
2574
+ // If we're using code flow analysis, pass the usage node so we consider
2575
+ // only the assignment nodes that are reachable from this usage.
2576
+ const effectiveTypeInfo = getEffectiveTypeOfSymbolForUsage(symbol, useCodeFlowAnalysis ? node : undefined);
2577
+ let effectiveType = (0, typeUtils_1.transformPossibleRecursiveTypeAlias)(effectiveTypeInfo.type);
2578
+ if (effectiveTypeInfo.isIncomplete) {
2579
+ if ((0, types_1.isUnbound)(effectiveType)) {
2580
+ effectiveType = types_1.UnknownType.create(/* isIncomplete */ true);
2581
+ }
2569
2582
  isIncomplete = true;
2570
2583
  }
2571
- if (!codeFlowTypeResult.type && symbolWithScope.isBeyondExecutionScope) {
2572
- const outerScopeTypeResult = getCodeFlowTypeForCapturedVariable(node, symbolWithScope, effectiveType);
2573
- if (outerScopeTypeResult === null || outerScopeTypeResult === void 0 ? void 0 : outerScopeTypeResult.type) {
2574
- type = outerScopeTypeResult.type;
2575
- }
2576
- if (outerScopeTypeResult === null || outerScopeTypeResult === void 0 ? void 0 : outerScopeTypeResult.isIncomplete) {
2584
+ if (effectiveTypeInfo.isRecursiveDefinition && isNodeReachable(node)) {
2585
+ addDiagnostic(AnalyzerNodeInfo.getFileInfo(node).diagnosticRuleSet.reportGeneralTypeIssues, diagnosticRules_1.DiagnosticRule.reportGeneralTypeIssues, localize_1.Localizer.Diagnostic.recursiveDefinition().format({ name }), node);
2586
+ }
2587
+ const isSpecialBuiltIn = !!effectiveType && (0, types_1.isInstantiableClass)(effectiveType) && types_1.ClassType.isSpecialBuiltIn(effectiveType);
2588
+ type = effectiveType;
2589
+ if (useCodeFlowAnalysis && !isSpecialBuiltIn) {
2590
+ // See if code flow analysis can tell us anything more about the type.
2591
+ // If the symbol is declared outside of our execution scope, use its effective
2592
+ // type. If it's declared inside our execution scope, it generally starts
2593
+ // as unbound at the start of the code flow.
2594
+ const typeAtStart = symbolWithScope.isBeyondExecutionScope || !symbol.isInitiallyUnbound()
2595
+ ? effectiveType
2596
+ : types_1.UnboundType.create();
2597
+ const codeFlowTypeResult = getFlowTypeOfReference(node, symbol.id, typeAtStart,
2598
+ /* isInitialTypeIncomplete */ false,
2599
+ /* startNode */ undefined);
2600
+ if (codeFlowTypeResult.type) {
2601
+ type = codeFlowTypeResult.type;
2602
+ }
2603
+ if (codeFlowTypeResult.isIncomplete) {
2577
2604
  isIncomplete = true;
2578
2605
  }
2606
+ if (!codeFlowTypeResult.type && symbolWithScope.isBeyondExecutionScope) {
2607
+ const outerScopeTypeResult = getCodeFlowTypeForCapturedVariable(node, symbolWithScope, effectiveType);
2608
+ if (outerScopeTypeResult === null || outerScopeTypeResult === void 0 ? void 0 : outerScopeTypeResult.type) {
2609
+ type = outerScopeTypeResult.type;
2610
+ }
2611
+ if (outerScopeTypeResult === null || outerScopeTypeResult === void 0 ? void 0 : outerScopeTypeResult.isIncomplete) {
2612
+ isIncomplete = true;
2613
+ }
2614
+ }
2579
2615
  }
2580
- }
2581
- // Detect, report, and fill in missing type arguments if appropriate.
2582
- type = reportMissingTypeArguments(node, type, flags);
2583
- setSymbolAccessed(fileInfo, symbol, node);
2584
- if ((flags & 1024 /* ExpectingTypeAnnotation */) !== 0) {
2585
- // Verify that the name does not refer to a (non type alias) variable.
2586
- if (effectiveTypeInfo.includesVariableDecl && !type.typeAliasInfo) {
2587
- let isAllowedTypeForVariable = (0, types_1.isTypeVar)(type) || (0, typeUtils_1.isTypeAliasPlaceholder)(type);
2588
- if ((0, types_1.isClass)(type) && !type.includeSubclasses) {
2589
- // This check exempts class types that are created by calling
2590
- // NewType, NamedTuple, and by invoking a metaclass directly.
2591
- isAllowedTypeForVariable = true;
2592
- }
2593
- // Disable for assignments in the typings.pyi file, since it defines special forms.
2594
- if (!isAllowedTypeForVariable && !fileInfo.isTypingStubFile) {
2595
- // This might be a union that was previously a type alias
2596
- // but was reconstituted in such a way that we lost the
2597
- // typeAliasInfo. Avoid the false positive error by suppressing
2598
- // the error when it looks like a plausible type alias type.
2599
- if (effectiveTypeInfo.includesIllegalTypeAliasDecl ||
2600
- !types_1.TypeBase.isInstantiable(type) ||
2601
- (flags & 2 /* DoNotSpecialize */) !== 0) {
2602
- addDiagnostic(fileInfo.diagnosticRuleSet.reportGeneralTypeIssues, diagnosticRules_1.DiagnosticRule.reportGeneralTypeIssues, localize_1.Localizer.Diagnostic.typeAnnotationVariable(), node);
2603
- type = types_1.UnknownType.create();
2616
+ // Detect, report, and fill in missing type arguments if appropriate.
2617
+ type = reportMissingTypeArguments(node, type, flags);
2618
+ setSymbolAccessed(fileInfo, symbol, node);
2619
+ if ((flags & 1024 /* ExpectingTypeAnnotation */) !== 0) {
2620
+ // Verify that the name does not refer to a (non type alias) variable.
2621
+ if (effectiveTypeInfo.includesVariableDecl && !type.typeAliasInfo) {
2622
+ let isAllowedTypeForVariable = (0, types_1.isTypeVar)(type) || (0, typeUtils_1.isTypeAliasPlaceholder)(type);
2623
+ if ((0, types_1.isClass)(type) && !type.includeSubclasses) {
2624
+ // This check exempts class types that are created by calling
2625
+ // NewType, NamedTuple, and by invoking a metaclass directly.
2626
+ isAllowedTypeForVariable = true;
2627
+ }
2628
+ // Disable for assignments in the typings.pyi file, since it defines special forms.
2629
+ if (!isAllowedTypeForVariable && !fileInfo.isTypingStubFile) {
2630
+ // This might be a union that was previously a type alias
2631
+ // but was reconstituted in such a way that we lost the
2632
+ // typeAliasInfo. Avoid the false positive error by suppressing
2633
+ // the error when it looks like a plausible type alias type.
2634
+ if (effectiveTypeInfo.includesIllegalTypeAliasDecl ||
2635
+ !types_1.TypeBase.isInstantiable(type) ||
2636
+ (flags & 2 /* DoNotSpecialize */) !== 0) {
2637
+ addDiagnostic(fileInfo.diagnosticRuleSet.reportGeneralTypeIssues, diagnosticRules_1.DiagnosticRule.reportGeneralTypeIssues, localize_1.Localizer.Diagnostic.typeAnnotationVariable(), node);
2638
+ type = types_1.UnknownType.create();
2639
+ }
2604
2640
  }
2605
2641
  }
2606
2642
  }
2607
2643
  }
2608
- }
2609
- else {
2610
- // Handle the special case of "reveal_type" and "reveal_locals".
2611
- if (name === 'reveal_type' || name === 'reveal_locals') {
2612
- type = types_1.AnyType.create();
2613
- }
2614
2644
  else {
2615
- addDiagnostic(fileInfo.diagnosticRuleSet.reportUndefinedVariable, diagnosticRules_1.DiagnosticRule.reportUndefinedVariable, localize_1.Localizer.Diagnostic.symbolIsUndefined().format({ name }), node);
2616
- type = types_1.UnknownType.create();
2645
+ // Handle the special case of "reveal_type" and "reveal_locals".
2646
+ if (name === 'reveal_type' || name === 'reveal_locals') {
2647
+ type = types_1.AnyType.create();
2648
+ }
2649
+ else {
2650
+ addDiagnostic(fileInfo.diagnosticRuleSet.reportUndefinedVariable, diagnosticRules_1.DiagnosticRule.reportUndefinedVariable, localize_1.Localizer.Diagnostic.symbolIsUndefined().format({ name }), node);
2651
+ type = types_1.UnknownType.create();
2652
+ }
2617
2653
  }
2618
2654
  }
2619
2655
  if ((0, types_1.isParamSpec)(type)) {
@@ -2628,7 +2664,7 @@ function createTypeEvaluator(importLookup, evaluatorOptions) {
2628
2664
  type.details.name === name) {
2629
2665
  // Handle the special case of a PEP 604 union. These can appear within
2630
2666
  // an implied type alias where we are not expecting a type.
2631
- const isPep604Union = ((_a = node.parent) === null || _a === void 0 ? void 0 : _a.nodeType) === 7 /* BinaryOperation */ &&
2667
+ const isPep604Union = ((_b = node.parent) === null || _b === void 0 ? void 0 : _b.nodeType) === 7 /* BinaryOperation */ &&
2632
2668
  node.parent.operator === 6 /* BitwiseOr */;
2633
2669
  if (!isPep604Union) {
2634
2670
  // A TypeVar in contexts where we're not expecting a type is
@@ -2716,6 +2752,20 @@ function createTypeEvaluator(importLookup, evaluatorOptions) {
2716
2752
  type = scopedTypeVarInfo.type;
2717
2753
  if ((flags & 2048 /* DisallowTypeVarsWithScopeId */) !== 0 && type.scopeId !== undefined) {
2718
2754
  if (!type.details.isSynthesized && !type.details.isParamSpec) {
2755
+ // This TypeVar already has a scope ID assigned to it. See if it
2756
+ // originates from type parameter syntax. If so, allow it.
2757
+ if (type.details.isTypeParamSyntax) {
2758
+ return type;
2759
+ }
2760
+ // If this type variable expression is used within a generic class,
2761
+ // function, or type alias that uses type parameter syntax, there is
2762
+ // no need to report an error here.
2763
+ const typeVarScopeNode = ParseTreeUtils.getTypeVarScopeNode(node);
2764
+ if (typeVarScopeNode &&
2765
+ typeVarScopeNode.typeParameters &&
2766
+ !typeVarScopeNode.typeParameters.parameters.some((t) => t.name === node)) {
2767
+ return type;
2768
+ }
2719
2769
  addDiagnostic(AnalyzerNodeInfo.getFileInfo(node).diagnosticRuleSet.reportGeneralTypeIssues, diagnosticRules_1.DiagnosticRule.reportGeneralTypeIssues, localize_1.Localizer.Diagnostic.typeVarUsedByOuterScope().format({ name: type.details.name }), node);
2720
2770
  }
2721
2771
  }
@@ -2741,6 +2791,14 @@ function createTypeEvaluator(importLookup, evaluatorOptions) {
2741
2791
  }
2742
2792
  }
2743
2793
  if (enclosingScope) {
2794
+ // If the enclosing scope is using type parameter syntax, traditional
2795
+ // type variables can't be used in this context.
2796
+ if (enclosingScope.typeParameters) {
2797
+ addDiagnostic(AnalyzerNodeInfo.getFileInfo(node).diagnosticRuleSet.reportGeneralTypeIssues, diagnosticRules_1.DiagnosticRule.reportGeneralTypeIssues, localize_1.Localizer.Diagnostic.typeParameterNotDeclared().format({
2798
+ name: type.details.name,
2799
+ container: enclosingScope.name.value,
2800
+ }), node);
2801
+ }
2744
2802
  type = types_1.TypeVarType.cloneForScopeId(type, getScopeIdForNode(enclosingScope), enclosingScope.name.value, enclosingScope.nodeType === 28 /* Function */
2745
2803
  ? 1 /* Function */
2746
2804
  : 0 /* Class */);
@@ -2834,50 +2892,48 @@ function createTypeEvaluator(importLookup, evaluatorOptions) {
2834
2892
  // Walks up the parse tree to find a function, class, or type alias
2835
2893
  // assignment that provides the context for a type variable.
2836
2894
  function findScopedTypeVar(node, type) {
2837
- var _a;
2838
2895
  let curNode = node;
2839
2896
  let nestedClassCount = 0;
2840
2897
  (0, debug_1.assert)(types_1.TypeBase.isInstantiable(type));
2841
2898
  while (curNode) {
2842
- // Generally, getTypeVarScopeNode should not include the function
2843
- // that contains the TypeVar in its signature, but we make an exception
2844
- // for TypeVars that are used in a member access expression to accommodate
2845
- // ParamSpecs (P.args and P.kwargs).
2846
- curNode = ParseTreeUtils.getTypeVarScopeNode(curNode, ((_a = node.parent) === null || _a === void 0 ? void 0 : _a.nodeType) === 35 /* MemberAccess */);
2899
+ curNode = ParseTreeUtils.getTypeVarScopeNode(curNode);
2847
2900
  if (!curNode) {
2848
2901
  break;
2849
2902
  }
2850
- let typeVarsForScope;
2903
+ let typeParametersForScope;
2904
+ let scopeUsesTypeParameterSyntax = false;
2851
2905
  if (curNode.nodeType === 10 /* Class */) {
2852
2906
  const classTypeInfo = getTypeOfClass(curNode);
2853
- if (classTypeInfo) {
2854
- typeVarsForScope = classTypeInfo.classType.details.typeParameters;
2907
+ if (classTypeInfo && !types_1.ClassType.isPartiallyEvaluated(classTypeInfo.classType)) {
2908
+ typeParametersForScope = classTypeInfo.classType.details.typeParameters;
2855
2909
  }
2910
+ scopeUsesTypeParameterSyntax = !!curNode.typeParameters;
2856
2911
  nestedClassCount++;
2857
2912
  }
2858
2913
  else if (curNode.nodeType === 28 /* Function */) {
2859
2914
  const functionTypeInfo = getTypeOfFunction(curNode);
2860
2915
  if (functionTypeInfo) {
2861
- typeVarsForScope = [];
2916
+ typeParametersForScope = [];
2862
2917
  functionTypeInfo.functionType.details.parameters.forEach((param) => {
2863
2918
  if (param.hasDeclaredType) {
2864
- (0, typeUtils_1.addTypeVarsToListIfUnique)(typeVarsForScope, (0, typeUtils_1.getTypeVarArgumentsRecursive)(param.type));
2919
+ (0, typeUtils_1.addTypeVarsToListIfUnique)(typeParametersForScope, (0, typeUtils_1.getTypeVarArgumentsRecursive)(param.type));
2865
2920
  }
2866
2921
  });
2867
2922
  if (functionTypeInfo.functionType.details.declaredReturnType) {
2868
- (0, typeUtils_1.addTypeVarsToListIfUnique)(typeVarsForScope, (0, typeUtils_1.getTypeVarArgumentsRecursive)(functionTypeInfo.functionType.details.declaredReturnType));
2923
+ (0, typeUtils_1.addTypeVarsToListIfUnique)(typeParametersForScope, (0, typeUtils_1.getTypeVarArgumentsRecursive)(functionTypeInfo.functionType.details.declaredReturnType));
2869
2924
  }
2870
2925
  }
2926
+ scopeUsesTypeParameterSyntax = !!curNode.typeParameters;
2871
2927
  }
2872
- else if (curNode.nodeType === 36 /* Module */) {
2873
- break;
2928
+ else if (curNode.nodeType === 77 /* TypeAlias */) {
2929
+ scopeUsesTypeParameterSyntax = !!curNode.typeParameters;
2874
2930
  }
2875
- if (typeVarsForScope) {
2876
- const match = typeVarsForScope.find((typeVar) => typeVar.details.name === type.details.name);
2931
+ if (typeParametersForScope) {
2932
+ const match = typeParametersForScope.find((typeVar) => typeVar.details.name === type.details.name);
2877
2933
  if (match === null || match === void 0 ? void 0 : match.scopeId) {
2878
2934
  // Use the scoped version of the TypeVar rather than the (unscoped) original type.
2879
2935
  type = types_1.TypeVarType.cloneForScopeId(type, match.scopeId, match.scopeName, match.scopeType);
2880
- return { type, foundInterveningClass: nestedClassCount > 1 };
2936
+ return { type, foundInterveningClass: nestedClassCount > 1 && !scopeUsesTypeParameterSyntax };
2881
2937
  }
2882
2938
  }
2883
2939
  curNode = curNode.parent;
@@ -2885,14 +2941,29 @@ function createTypeEvaluator(importLookup, evaluatorOptions) {
2885
2941
  // See if this is part of an assignment statement that is defining a type alias.
2886
2942
  curNode = node;
2887
2943
  while (curNode) {
2888
- if (curNode.nodeType === 3 /* Assignment */) {
2889
- const leftType = readTypeCache(curNode.leftExpression, 0 /* None */);
2944
+ let leftType;
2945
+ let typeAliasNode = undefined;
2946
+ if (curNode.nodeType === 77 /* TypeAlias */) {
2947
+ leftType = readTypeCache(curNode.name, 0 /* None */);
2948
+ typeAliasNode = curNode;
2949
+ }
2950
+ else if (curNode.nodeType === 3 /* Assignment */) {
2951
+ leftType = readTypeCache(curNode.leftExpression, 0 /* None */);
2952
+ }
2953
+ if (leftType) {
2890
2954
  // Is this a placeholder that was temporarily written to the cache for
2891
2955
  // purposes of resolving type aliases?
2892
2956
  if (leftType &&
2893
2957
  (0, types_1.isTypeVar)(leftType) &&
2894
2958
  leftType.details.recursiveTypeAliasScopeId &&
2895
2959
  leftType.details.recursiveTypeAliasName) {
2960
+ // Type alias statements cannot be used with old-style type variables.
2961
+ if (typeAliasNode && !type.details.isTypeParamSyntax) {
2962
+ addDiagnostic(AnalyzerNodeInfo.getFileInfo(node).diagnosticRuleSet.reportGeneralTypeIssues, diagnosticRules_1.DiagnosticRule.reportGeneralTypeIssues, localize_1.Localizer.Diagnostic.typeParameterNotDeclared().format({
2963
+ name: type.details.name,
2964
+ container: typeAliasNode.name.value,
2965
+ }), node);
2966
+ }
2896
2967
  return {
2897
2968
  type: types_1.TypeVarType.cloneForScopeId(type, leftType.details.recursiveTypeAliasScopeId, leftType.details.recursiveTypeAliasName, 2 /* TypeAlias */),
2898
2969
  foundInterveningClass: false,
@@ -4098,7 +4169,7 @@ function createTypeEvaluator(importLookup, evaluatorOptions) {
4098
4169
  }
4099
4170
  if ((0, typeUtils_1.isTypeAliasPlaceholder)(baseTypeResult.type)) {
4100
4171
  const typeArgTypes = getTypeArgs(node, flags).map((t) => (0, typeUtils_1.convertToInstance)(t.type));
4101
- const type = types_1.TypeBase.cloneForTypeAlias(baseTypeResult.type, baseTypeResult.type.details.recursiveTypeAliasName, '', baseTypeResult.type.details.recursiveTypeAliasScopeId, undefined, typeArgTypes);
4172
+ const type = types_1.TypeBase.cloneForTypeAlias(baseTypeResult.type, baseTypeResult.type.details.recursiveTypeAliasName, '', baseTypeResult.type.details.recursiveTypeAliasScopeId, baseTypeResult.type.details.recursiveTypeParameters, typeArgTypes);
4102
4173
  return { type, node };
4103
4174
  }
4104
4175
  let isIncomplete = false;
@@ -4773,7 +4844,7 @@ function createTypeEvaluator(importLookup, evaluatorOptions) {
4773
4844
  }
4774
4845
  const assertedType = (0, typeUtils_1.convertToInstance)(getTypeOfArgumentExpectingType(node.arguments[1]).type);
4775
4846
  if (!(0, types_1.isTypeSame)(assertedType, arg0TypeResult.type)) {
4776
- addError(localize_1.Localizer.Diagnostic.assertTypeTypeMismatch().format({
4847
+ addDiagnostic(AnalyzerNodeInfo.getFileInfo(node).diagnosticRuleSet.reportGeneralTypeIssues, diagnosticRules_1.DiagnosticRule.reportGeneralTypeIssues, localize_1.Localizer.Diagnostic.assertTypeTypeMismatch().format({
4777
4848
  expected: printType(assertedType),
4778
4849
  received: printType(arg0TypeResult.type),
4779
4850
  }), node.arguments[0].valueExpression);
@@ -5157,7 +5228,7 @@ function createTypeEvaluator(importLookup, evaluatorOptions) {
5157
5228
  }
5158
5229
  function validateOverloadedFunctionArguments(errorNode, argList, type, typeVarContext, skipUnknownArgCheck, expectedType) {
5159
5230
  let filteredMatchResults = [];
5160
- let contextFreeArgTypes = [];
5231
+ let contextFreeArgTypes;
5161
5232
  // Start by evaluating the types of the arguments without any expected
5162
5233
  // type. Also, filter the list of overloads based on the number of
5163
5234
  // positional and named arguments that are present. We do all of this
@@ -5177,21 +5248,6 @@ function createTypeEvaluator(importLookup, evaluatorOptions) {
5177
5248
  overloadIndex++;
5178
5249
  }
5179
5250
  });
5180
- // Also evaluate the types of each argument expression without regard to
5181
- // the expectedType. We'll use this to determine whether we need to do
5182
- // union expansion.
5183
- contextFreeArgTypes = argList.map((arg) => {
5184
- if (arg.type) {
5185
- return arg.type;
5186
- }
5187
- if (arg.valueExpression) {
5188
- const valueExpressionNode = arg.valueExpression;
5189
- return useSpeculativeMode(valueExpressionNode, () => {
5190
- return getTypeOfExpression(valueExpressionNode).type;
5191
- });
5192
- }
5193
- return types_1.AnyType.create();
5194
- });
5195
5251
  });
5196
5252
  filteredMatchResults = sortOverloadsByBestMatch(filteredMatchResults);
5197
5253
  // If there are no possible arg/param matches among the overloads,
@@ -5239,6 +5295,25 @@ function createTypeEvaluator(importLookup, evaluatorOptions) {
5239
5295
  }
5240
5296
  // We didn't find an overload match. Try to expand the next union
5241
5297
  // argument type into individual types and retry with the expanded types.
5298
+ if (!contextFreeArgTypes) {
5299
+ useSpeculativeMode(errorNode, () => {
5300
+ // Evaluate the types of each argument expression without regard to
5301
+ // the expectedType. We'll use this to determine whether we need to do
5302
+ // union expansion.
5303
+ contextFreeArgTypes = argList.map((arg) => {
5304
+ if (arg.type) {
5305
+ return arg.type;
5306
+ }
5307
+ if (arg.valueExpression) {
5308
+ const valueExpressionNode = arg.valueExpression;
5309
+ return useSpeculativeMode(valueExpressionNode, () => {
5310
+ return getTypeOfExpression(valueExpressionNode).type;
5311
+ });
5312
+ }
5313
+ return types_1.AnyType.create();
5314
+ });
5315
+ });
5316
+ }
5242
5317
  expandedArgTypes = expandArgumentUnionTypes(contextFreeArgTypes, expandedArgTypes);
5243
5318
  // Check for combinatoric explosion and break out of loop.
5244
5319
  if (!expandedArgTypes || expandedArgTypes.length > maxOverloadUnionExpansionCount) {
@@ -5637,6 +5712,10 @@ function createTypeEvaluator(importLookup, evaluatorOptions) {
5637
5712
  return (0, namedTuples_1.createNamedTupleType)(evaluatorInterface, errorNode, argList,
5638
5713
  /* includesTypes */ false);
5639
5714
  }
5715
+ // Handle the NewType specially, replacing the normal return type.
5716
+ if (expandedSubtype.details.builtInName === 'NewType') {
5717
+ return createNewType(errorNode, argList);
5718
+ }
5640
5719
  let effectiveTypeVarContext = typeVarContext;
5641
5720
  if (!effectiveTypeVarContext) {
5642
5721
  // If a typeVarContext wasn't provided by the caller, allocate one here.
@@ -5673,10 +5752,6 @@ function createTypeEvaluator(importLookup, evaluatorOptions) {
5673
5752
  argumentErrors = true;
5674
5753
  }
5675
5754
  }
5676
- // Handle the NewType specially, replacing the normal return type.
5677
- if (!functionResult.argumentErrors && expandedSubtype.details.builtInName === 'NewType') {
5678
- return createNewType(errorNode, argList);
5679
- }
5680
5755
  if (expandedSubtype.details.builtInName === '__import__') {
5681
5756
  // For the special __import__ type, we'll override the return type to be "Any".
5682
5757
  // This is required because we don't know what module was imported, and we don't
@@ -6845,7 +6920,7 @@ function createTypeEvaluator(importLookup, evaluatorOptions) {
6845
6920
  // scope.
6846
6921
  let eliminateUnsolvedInUnions = true;
6847
6922
  let curNode = errorNode;
6848
- while (true) {
6923
+ while (curNode) {
6849
6924
  const typeVarScopeNode = ParseTreeUtils.getTypeVarScopeNode(curNode);
6850
6925
  if (!typeVarScopeNode) {
6851
6926
  break;
@@ -6854,7 +6929,7 @@ function createTypeEvaluator(importLookup, evaluatorOptions) {
6854
6929
  if (typeVarContext.hasSolveForScope(typeVarScopeId)) {
6855
6930
  eliminateUnsolvedInUnions = false;
6856
6931
  }
6857
- curNode = typeVarScopeNode;
6932
+ curNode = typeVarScopeNode.parent;
6858
6933
  }
6859
6934
  // If the function is returning a callable, don't eliminate unsolved
6860
6935
  // type vars within a union. There are legit uses for unsolved type vars
@@ -7321,21 +7396,21 @@ function createTypeEvaluator(importLookup, evaluatorOptions) {
7321
7396
  }
7322
7397
  else if (paramName === 'covariant') {
7323
7398
  if (argList[i].valueExpression && getBooleanValue(argList[i].valueExpression)) {
7324
- if (typeVar.details.variance === 2 /* Contravariant */) {
7399
+ if (typeVar.details.declaredVariance === 3 /* Contravariant */) {
7325
7400
  addError(localize_1.Localizer.Diagnostic.typeVarVariance(), argList[i].valueExpression);
7326
7401
  }
7327
7402
  else {
7328
- typeVar.details.variance = 1 /* Covariant */;
7403
+ typeVar.details.declaredVariance = 2 /* Covariant */;
7329
7404
  }
7330
7405
  }
7331
7406
  }
7332
7407
  else if (paramName === 'contravariant') {
7333
7408
  if (argList[i].valueExpression && getBooleanValue(argList[i].valueExpression)) {
7334
- if (typeVar.details.variance === 1 /* Covariant */) {
7409
+ if (typeVar.details.declaredVariance === 2 /* Covariant */) {
7335
7410
  addError(localize_1.Localizer.Diagnostic.typeVarVariance(), argList[i].valueExpression);
7336
7411
  }
7337
7412
  else {
7338
- typeVar.details.variance = 2 /* Contravariant */;
7413
+ typeVar.details.declaredVariance = 3 /* Contravariant */;
7339
7414
  }
7340
7415
  }
7341
7416
  }
@@ -9796,7 +9871,7 @@ function createTypeEvaluator(importLookup, evaluatorOptions) {
9796
9871
  }
9797
9872
  return undefined;
9798
9873
  }
9799
- function transformTypeForTypeAlias(type, name, errorNode) {
9874
+ function transformTypeForTypeAlias(type, name, errorNode, typeParameters) {
9800
9875
  if (!types_1.TypeBase.isInstantiable(type)) {
9801
9876
  return type;
9802
9877
  }
@@ -9805,17 +9880,19 @@ function createTypeEvaluator(importLookup, evaluatorOptions) {
9805
9880
  if ((0, typeUtils_1.isTypeAliasPlaceholder)(type)) {
9806
9881
  return type;
9807
9882
  }
9808
- // Determine if there are any generic type parameters associated
9809
- // with this type alias.
9810
- let typeParameters = [];
9811
- // Skip this for a simple TypeVar (one that's not part of a union).
9812
- if (!(0, types_1.isTypeVar)(type) || types_1.TypeBase.isAnnotated(type)) {
9813
- (0, typeUtils_1.doForEachSubtype)(type, (subtype) => {
9814
- (0, typeUtils_1.addTypeVarsToListIfUnique)(typeParameters, (0, typeUtils_1.getTypeVarArgumentsRecursive)(subtype));
9815
- });
9883
+ if (!typeParameters) {
9884
+ // Determine if there are any generic type parameters associated
9885
+ // with this type alias.
9886
+ typeParameters = [];
9887
+ // Skip this for a simple TypeVar (one that's not part of a union).
9888
+ if (!(0, types_1.isTypeVar)(type) || types_1.TypeBase.isAnnotated(type)) {
9889
+ (0, typeUtils_1.doForEachSubtype)(type, (subtype) => {
9890
+ (0, typeUtils_1.addTypeVarsToListIfUnique)(typeParameters, (0, typeUtils_1.getTypeVarArgumentsRecursive)(subtype));
9891
+ });
9892
+ }
9893
+ // Don't include any synthesized type variables.
9894
+ typeParameters = typeParameters.filter((typeVar) => !typeVar.details.isSynthesized);
9816
9895
  }
9817
- // Don't include any synthesized type variables.
9818
- typeParameters = typeParameters.filter((typeVar) => !typeVar.details.isSynthesized);
9819
9896
  // Convert all type variables to instances.
9820
9897
  typeParameters = typeParameters.map((typeVar) => {
9821
9898
  if (types_1.TypeBase.isInstance(typeVar)) {
@@ -10016,7 +10093,9 @@ function createTypeEvaluator(importLookup, evaluatorOptions) {
10016
10093
  }
10017
10094
  if (!rightHandType) {
10018
10095
  // Determine whether there is a declared type.
10019
- const declaredType = getDeclaredTypeForExpression(node.leftExpression, { method: 'set' });
10096
+ const declaredType = getDeclaredTypeForExpression(node.leftExpression, {
10097
+ method: 'set',
10098
+ });
10020
10099
  let typeAliasNameNode;
10021
10100
  let isSpeculativeTypeAlias = false;
10022
10101
  if (isDeclaredTypeAlias(node.leftExpression)) {
@@ -10122,6 +10201,62 @@ function createTypeEvaluator(importLookup, evaluatorOptions) {
10122
10201
  /* allowAssignmentToFinalVar */ true, expectedTypeDiagAddendum);
10123
10202
  writeTypeCache(node, rightHandType, 0 /* None */, isIncomplete);
10124
10203
  }
10204
+ // Evaluates the type of a type alias (i.e. "type") statement. This code
10205
+ // path does not handle traditional type aliases, which are treated as
10206
+ // variables since they use normal variable assignment syntax.
10207
+ function getTypeOfTypeAlias(node) {
10208
+ const cachedType = readTypeCache(node.name, 0 /* None */);
10209
+ if (cachedType) {
10210
+ return cachedType;
10211
+ }
10212
+ // Synthesize a type variable that represents the type alias while we're
10213
+ // evaluating it. This allows us to handle recursive definitions.
10214
+ const typeAliasTypeVar = types_1.TypeVarType.createInstantiable(`__type_alias_${node.name.value}`);
10215
+ typeAliasTypeVar.details.isSynthesized = true;
10216
+ typeAliasTypeVar.details.recursiveTypeAliasName = node.name.value;
10217
+ const scopeId = getScopeIdForNode(node.name);
10218
+ typeAliasTypeVar.details.recursiveTypeAliasScopeId = scopeId;
10219
+ typeAliasTypeVar.scopeId = scopeId;
10220
+ // Write the type to the type cache. It will be replaced below.
10221
+ writeTypeCache(node.name, typeAliasTypeVar, /* flags */ undefined, /* isIncomplete */ false);
10222
+ // Set a partial type to handle recursive (self-referential) type aliases.
10223
+ const scope = ScopeUtils.getScopeForNode(node);
10224
+ const typeAliasSymbol = scope === null || scope === void 0 ? void 0 : scope.lookUpSymbolRecursive(node.name.value);
10225
+ const typeAliasDecl = AnalyzerNodeInfo.getDeclaration(node);
10226
+ if (typeAliasDecl && typeAliasSymbol) {
10227
+ setSymbolResolutionPartialType(typeAliasSymbol.symbol, typeAliasDecl, typeAliasTypeVar);
10228
+ }
10229
+ let typeParameters = [];
10230
+ if (node.typeParameters) {
10231
+ typeParameters = evaluateTypeParameterList(node.typeParameters);
10232
+ typeAliasTypeVar.details.recursiveTypeParameters = typeParameters;
10233
+ }
10234
+ const aliasTypeResult = getTypeOfExpressionExpectingType(node.expression);
10235
+ let isIncomplete = false;
10236
+ let aliasType = aliasTypeResult.type;
10237
+ if (aliasTypeResult.isIncomplete) {
10238
+ isIncomplete = true;
10239
+ }
10240
+ // Clear the temporary type we wrote above.
10241
+ deleteTypeCacheEntry(node.name);
10242
+ aliasType = transformTypeForTypeAlias(aliasType, node.name, node.expression, typeParameters);
10243
+ if ((0, typeUtils_1.isTypeAliasRecursive)(typeAliasTypeVar, aliasType)) {
10244
+ addDiagnostic(AnalyzerNodeInfo.getFileInfo(node).diagnosticRuleSet.reportGeneralTypeIssues, diagnosticRules_1.DiagnosticRule.reportGeneralTypeIssues, localize_1.Localizer.Diagnostic.typeAliasIsRecursiveDirect().format({
10245
+ name: node.name.value,
10246
+ }), node.expression);
10247
+ aliasType = types_1.UnknownType.create();
10248
+ }
10249
+ // Set the resulting type to the boundType of the original type alias
10250
+ // to support recursive type aliases.
10251
+ typeAliasTypeVar.details.boundType = aliasType;
10252
+ if (typeAliasTypeVar.details.illegalRecursionDetected) {
10253
+ addDiagnostic(AnalyzerNodeInfo.getFileInfo(node).diagnosticRuleSet.reportGeneralTypeIssues, diagnosticRules_1.DiagnosticRule.reportGeneralTypeIssues, localize_1.Localizer.Diagnostic.typeAliasIsRecursiveIndirect().format({
10254
+ name: node.name.value,
10255
+ }), node.name);
10256
+ }
10257
+ writeTypeCache(node.name, aliasType, 0 /* None */, isIncomplete);
10258
+ return aliasType;
10259
+ }
10125
10260
  function evaluateTypesForAugmentedAssignment(node) {
10126
10261
  if (readTypeCache(node, 0 /* None */)) {
10127
10262
  return;
@@ -10187,7 +10322,10 @@ function createTypeEvaluator(importLookup, evaluatorOptions) {
10187
10322
  writeTypeCache(node.name, classType, /* flags */ undefined, /* isIncomplete */ false);
10188
10323
  // Keep a list of unique type parameters that are used in the
10189
10324
  // base class arguments.
10190
- const typeParameters = [];
10325
+ let typeParameters = [];
10326
+ if (node.typeParameters) {
10327
+ typeParameters = evaluateTypeParameterList(node.typeParameters).map((t) => types_1.TypeVarType.cloneAsInstance(t));
10328
+ }
10191
10329
  // If the class derives from "Generic" directly, it will provide
10192
10330
  // all of the type parameters in the specified order.
10193
10331
  let genericTypeParameters;
@@ -10308,12 +10446,18 @@ function createTypeEvaluator(importLookup, evaluatorOptions) {
10308
10446
  (0, typeUtils_1.addTypeVarsToListIfUnique)(typeParameters, (0, typeUtils_1.getTypeVarArgumentsRecursive)(argType));
10309
10447
  if ((0, types_1.isInstantiableClass)(argType)) {
10310
10448
  if (types_1.ClassType.isBuiltIn(argType, 'Generic')) {
10311
- if (!genericTypeParameters) {
10312
- if (protocolTypeParameters) {
10313
- addDiagnostic(fileInfo.diagnosticRuleSet.reportGeneralTypeIssues, diagnosticRules_1.DiagnosticRule.reportGeneralTypeIssues, localize_1.Localizer.Diagnostic.duplicateGenericAndProtocolBase(), arg.valueExpression);
10449
+ // 'Generic' is implicitly added if type parameter syntax is used.
10450
+ if (node.typeParameters) {
10451
+ addDiagnostic(fileInfo.diagnosticRuleSet.reportGeneralTypeIssues, diagnosticRules_1.DiagnosticRule.reportGeneralTypeIssues, localize_1.Localizer.Diagnostic.genericBaseClassNotAllowed(), arg.valueExpression);
10452
+ }
10453
+ else {
10454
+ if (!genericTypeParameters) {
10455
+ if (protocolTypeParameters) {
10456
+ addDiagnostic(fileInfo.diagnosticRuleSet.reportGeneralTypeIssues, diagnosticRules_1.DiagnosticRule.reportGeneralTypeIssues, localize_1.Localizer.Diagnostic.duplicateGenericAndProtocolBase(), arg.valueExpression);
10457
+ }
10458
+ genericTypeParameters = [];
10459
+ (0, typeUtils_1.addTypeVarsToListIfUnique)(genericTypeParameters, (0, typeUtils_1.getTypeVarArgumentsRecursive)(argType));
10314
10460
  }
10315
- genericTypeParameters = [];
10316
- (0, typeUtils_1.addTypeVarsToListIfUnique)(genericTypeParameters, (0, typeUtils_1.getTypeVarArgumentsRecursive)(argType));
10317
10461
  }
10318
10462
  }
10319
10463
  else if (types_1.ClassType.isBuiltIn(argType, 'Protocol') &&
@@ -10325,6 +10469,10 @@ function createTypeEvaluator(importLookup, evaluatorOptions) {
10325
10469
  }
10326
10470
  protocolTypeParameters = [];
10327
10471
  (0, typeUtils_1.addTypeVarsToListIfUnique)(protocolTypeParameters, (0, typeUtils_1.getTypeVarArgumentsRecursive)(argType));
10472
+ if (node.typeParameters && protocolTypeParameters.length > 0) {
10473
+ addDiagnostic(fileInfo.diagnosticRuleSet.reportGeneralTypeIssues, diagnosticRules_1.DiagnosticRule.reportGeneralTypeIssues, localize_1.Localizer.Diagnostic.protocolBaseClassWithTypeArgs(), arg.valueExpression);
10474
+ protocolTypeParameters = [];
10475
+ }
10328
10476
  }
10329
10477
  }
10330
10478
  }
@@ -10387,10 +10535,14 @@ function createTypeEvaluator(importLookup, evaluatorOptions) {
10387
10535
  // If genericTypeParameters or protocolTypeParameters are provided,
10388
10536
  // make sure that typeParameters is a proper subset.
10389
10537
  genericTypeParameters = genericTypeParameters !== null && genericTypeParameters !== void 0 ? genericTypeParameters : protocolTypeParameters;
10390
- if (genericTypeParameters) {
10538
+ if (genericTypeParameters && !node.typeParameters) {
10391
10539
  verifyGenericTypeParameters(node.name, typeParameters, genericTypeParameters);
10392
10540
  }
10393
- classType.details.typeParameters = genericTypeParameters || typeParameters;
10541
+ classType.details.typeParameters = genericTypeParameters !== null && genericTypeParameters !== void 0 ? genericTypeParameters : typeParameters;
10542
+ // Determine if one or more type parameters is autovariance.
10543
+ if (classType.details.typeParameters.some((param) => param.details.declaredVariance === 0 /* Auto */ && param.computedVariance === undefined)) {
10544
+ classType.details.requiresVarianceInference = true;
10545
+ }
10394
10546
  // Make sure there's at most one variadic type parameter.
10395
10547
  const variadics = classType.details.typeParameters.filter((param) => (0, types_1.isVariadicTypeVar)(param));
10396
10548
  if (variadics.length > 1) {
@@ -10420,7 +10572,7 @@ function createTypeEvaluator(importLookup, evaluatorOptions) {
10420
10572
  const initMethod = classType.details.fields.get('__init__');
10421
10573
  if (initMethod) {
10422
10574
  const initDecls = initMethod.getTypedDeclarations();
10423
- if (initDecls.length === 1 && initDecls[0].type === 3 /* Function */) {
10575
+ if (initDecls.length === 1 && initDecls[0].type === 5 /* Function */) {
10424
10576
  const initDeclNode = initDecls[0].node;
10425
10577
  const initParams = initDeclNode.parameters;
10426
10578
  if (initParams.length > 1 &&
@@ -10583,6 +10735,79 @@ function createTypeEvaluator(importLookup, evaluatorOptions) {
10583
10735
  }
10584
10736
  return { classType, decoratedType };
10585
10737
  }
10738
+ function inferTypeParameterVarianceForClass(classType) {
10739
+ if (!classType.details.requiresVarianceInference) {
10740
+ return;
10741
+ }
10742
+ if (!objectType || !(0, types_1.isClassInstance)(objectType)) {
10743
+ return;
10744
+ }
10745
+ // Replace all of the type parameters with invariant TypeVars.
10746
+ const updatedTypeParams = classType.details.typeParameters.map((typeParam) => types_1.TypeVarType.cloneAsInvariant(typeParam));
10747
+ const updatedClassType = types_1.ClassType.cloneWithNewTypeParameters(classType, updatedTypeParams);
10748
+ const dummyTypeObject = types_1.ClassType.createInstantiable('__varianceDummy', '', '', '', 0, 0, undefined, undefined);
10749
+ updatedTypeParams.forEach((param, paramIndex) => {
10750
+ // Skip variadics and ParamSpecs.
10751
+ if (param.details.isVariadic || param.details.isParamSpec) {
10752
+ return;
10753
+ }
10754
+ // Skip type variables without auto-variance.
10755
+ if (param.details.declaredVariance !== 0 /* Auto */) {
10756
+ return;
10757
+ }
10758
+ // Replace all type arguments with a dummy type except for the
10759
+ // TypeVar of interest, which is replaced with an object instance.
10760
+ const srcTypeArgs = updatedTypeParams.map((p, i) => {
10761
+ if (p.details.isVariadic) {
10762
+ return p;
10763
+ }
10764
+ return i === paramIndex ? objectType : dummyTypeObject;
10765
+ });
10766
+ // Replace all type arguments with a dummy type except for the
10767
+ // TypeVar of interest, which is replaced with itself.
10768
+ const destTypeArgs = updatedTypeParams.map((p, i) => {
10769
+ return i === paramIndex || p.details.isVariadic ? p : dummyTypeObject;
10770
+ });
10771
+ const srcType = types_1.ClassType.cloneForSpecialization(updatedClassType, srcTypeArgs,
10772
+ /* isTypeArgumentExplicit */ true);
10773
+ const destType = types_1.ClassType.cloneForSpecialization(updatedClassType, destTypeArgs,
10774
+ /* isTypeArgumentExplicit */ true);
10775
+ const isDestSubtypeOfSrc = assignClassToSelf(srcType, destType);
10776
+ let inferredVariance;
10777
+ if (isDestSubtypeOfSrc) {
10778
+ inferredVariance = 2 /* Covariant */;
10779
+ }
10780
+ else {
10781
+ const isSrcSubtypeOfDest = assignClassToSelf(destType, srcType);
10782
+ if (isSrcSubtypeOfDest) {
10783
+ inferredVariance = 3 /* Contravariant */;
10784
+ }
10785
+ else {
10786
+ inferredVariance = 1 /* Invariant */;
10787
+ }
10788
+ }
10789
+ // We assume here that we don't need to clone the type var object
10790
+ // because it was already cloned when it was associated with this
10791
+ // class scope.
10792
+ classType.details.typeParameters[paramIndex].computedVariance = inferredVariance;
10793
+ });
10794
+ // Note that variance inference is complete.
10795
+ classType.details.requiresVarianceInference = false;
10796
+ }
10797
+ function evaluateTypeParameterList(node) {
10798
+ const paramTypes = [];
10799
+ node.parameters.forEach((param) => {
10800
+ const paramSymbol = AnalyzerNodeInfo.getTypeParameterSymbol(param.name);
10801
+ (0, debug_1.assert)(paramSymbol);
10802
+ const typeOfParam = getDeclaredTypeOfSymbol(paramSymbol, param.name);
10803
+ if (!typeOfParam || !(0, types_1.isTypeVar)(typeOfParam)) {
10804
+ return;
10805
+ }
10806
+ writeTypeCache(param.name, typeOfParam, 0 /* None */, /* isIncomplete */ false);
10807
+ paramTypes.push(typeOfParam);
10808
+ });
10809
+ return paramTypes;
10810
+ }
10586
10811
  function computeEffectiveMetaclass(classType, errorNode) {
10587
10812
  let effectiveMetaclass = classType.details.declaredMetaclass;
10588
10813
  let reportedMetaclassConflict = false;
@@ -10908,6 +11133,9 @@ function createTypeEvaluator(importLookup, evaluatorOptions) {
10908
11133
  }), node.functionAnnotationComment);
10909
11134
  }
10910
11135
  }
11136
+ if (node.typeParameters) {
11137
+ evaluateTypeParameterList(node.typeParameters);
11138
+ }
10911
11139
  const markParamAccessed = (param) => {
10912
11140
  if (param.name) {
10913
11141
  const symbolWithScope = lookUpSymbolRecursive(param.name, param.name.value, /* honorCodeFlow */ false);
@@ -11216,7 +11444,7 @@ function createTypeEvaluator(importLookup, evaluatorOptions) {
11216
11444
  const baseClassMemberInfo = (0, typeUtils_1.lookUpClassMember)(containingClassType, methodName, 1 /* SkipOriginalClass */);
11217
11445
  if (baseClassMemberInfo) {
11218
11446
  const memberDecls = baseClassMemberInfo.symbol.getDeclarations();
11219
- if (memberDecls.length === 1 && memberDecls[0].type === 3 /* Function */) {
11447
+ if (memberDecls.length === 1 && memberDecls[0].type === 5 /* Function */) {
11220
11448
  const baseClassMethodNode = memberDecls[0].node;
11221
11449
  // Does the signature match exactly with the exception of annotations?
11222
11450
  if (baseClassMethodNode.parameters.length === functionNode.parameters.length &&
@@ -11493,14 +11721,14 @@ function createTypeEvaluator(importLookup, evaluatorOptions) {
11493
11721
  // to recursion if there is a large number (1000's) of overloads.
11494
11722
  for (let i = 0; i < declIndex; i++) {
11495
11723
  const decl = decls[i];
11496
- if (decl.type === 3 /* Function */) {
11724
+ if (decl.type === 5 /* Function */) {
11497
11725
  getTypeOfFunction(decl.node);
11498
11726
  }
11499
11727
  }
11500
11728
  const overloadedTypes = [];
11501
11729
  // Look at the previous declaration's type.
11502
11730
  const prevDecl = decls[declIndex - 1];
11503
- if (prevDecl.type === 3 /* Function */) {
11731
+ if (prevDecl.type === 5 /* Function */) {
11504
11732
  const prevDeclDeclTypeInfo = getTypeOfFunction(prevDecl.node);
11505
11733
  if (prevDeclDeclTypeInfo) {
11506
11734
  if ((0, types_1.isFunction)(prevDeclDeclTypeInfo.decoratedType)) {
@@ -12050,19 +12278,19 @@ function createTypeEvaluator(importLookup, evaluatorOptions) {
12050
12278
  // case, we want to choose the last declaration.
12051
12279
  const filteredDecls = symbolWithScope.symbol
12052
12280
  .getDeclarations()
12053
- .filter((decl) => ParseTreeUtils.isNodeContainedWithin(node, decl.node) && decl.type === 6 /* Alias */);
12281
+ .filter((decl) => ParseTreeUtils.isNodeContainedWithin(node, decl.node) && decl.type === 8 /* Alias */);
12054
12282
  let aliasDecl = filteredDecls.length > 0 ? filteredDecls[filteredDecls.length - 1] : undefined;
12055
12283
  // If we didn't find an exact match, look for any alias associated with
12056
12284
  // this symbol. In cases where we have multiple ImportAs nodes that share
12057
12285
  // the same first-part name (e.g. "import asyncio" and "import asyncio.tasks"),
12058
12286
  // we may not find the declaration associated with this node.
12059
12287
  if (!aliasDecl) {
12060
- aliasDecl = symbolWithScope.symbol.getDeclarations().find((decl) => decl.type === 6 /* Alias */);
12288
+ aliasDecl = symbolWithScope.symbol.getDeclarations().find((decl) => decl.type === 8 /* Alias */);
12061
12289
  }
12062
12290
  if (!aliasDecl) {
12063
12291
  return undefined;
12064
12292
  }
12065
- (0, debug_1.assert)(aliasDecl.type === 6 /* Alias */);
12293
+ (0, debug_1.assert)(aliasDecl.type === 8 /* Alias */);
12066
12294
  const fileInfo = AnalyzerNodeInfo.getFileInfo(node);
12067
12295
  // Try to resolve the alias while honoring external visibility.
12068
12296
  const resolvedAliasInfo = resolveAliasDeclarationWithInfo(aliasDecl,
@@ -12099,7 +12327,7 @@ function createTypeEvaluator(importLookup, evaluatorOptions) {
12099
12327
  // expression or statement that contains it. This contextual evaluation
12100
12328
  // allows for bidirectional type evaluation.
12101
12329
  function evaluateTypesForExpressionInContext(node) {
12102
- var _a, _b, _c;
12330
+ var _a, _b, _c, _d, _e;
12103
12331
  let lastContextualExpression = node;
12104
12332
  let curNode = node;
12105
12333
  function isContextual(node) {
@@ -12168,6 +12396,10 @@ function createTypeEvaluator(importLookup, evaluatorOptions) {
12168
12396
  getTypeOfClass(node.parent);
12169
12397
  return;
12170
12398
  }
12399
+ else if (node.parent.nodeType === 77 /* TypeAlias */ && node.parent.name === node) {
12400
+ getTypeOfTypeAlias(node.parent);
12401
+ return;
12402
+ }
12171
12403
  else if (node.parent.nodeType === 29 /* Global */ ||
12172
12404
  node.parent.nodeType === 39 /* Nonlocal */) {
12173
12405
  // For global and nonlocal statements, allow forward references so
@@ -12206,15 +12438,32 @@ function createTypeEvaluator(importLookup, evaluatorOptions) {
12206
12438
  verifyDeleteExpression(lastContextualExpression);
12207
12439
  return;
12208
12440
  }
12441
+ // If this is the name node within a type parameter list, see if it's a type alias
12442
+ // definition. If so, we need to evaluate the type alias contextually.
12443
+ if (parent.nodeType === 75 /* TypeParameter */ && lastContextualExpression === parent.name) {
12444
+ if (((_a = parent.parent) === null || _a === void 0 ? void 0 : _a.nodeType) === 76 /* TypeParameterList */ &&
12445
+ ((_b = parent.parent.parent) === null || _b === void 0 ? void 0 : _b.nodeType) === 77 /* TypeAlias */) {
12446
+ getTypeOfTypeAlias(parent.parent.parent);
12447
+ return;
12448
+ }
12449
+ }
12450
+ if (parent.nodeType === 75 /* TypeParameter */) {
12451
+ getTypeOfExpression(parent.name);
12452
+ return;
12453
+ }
12454
+ if (parent.nodeType === 77 /* TypeAlias */) {
12455
+ getTypeOfTypeAlias(parent);
12456
+ return;
12457
+ }
12209
12458
  if (parent.nodeType === 5 /* AugmentedAssignment */) {
12210
12459
  evaluateTypesForAugmentedAssignment(parent);
12211
12460
  return;
12212
12461
  }
12213
12462
  if (parent.nodeType === 13 /* Decorator */) {
12214
- if (((_a = parent.parent) === null || _a === void 0 ? void 0 : _a.nodeType) === 10 /* Class */) {
12463
+ if (((_c = parent.parent) === null || _c === void 0 ? void 0 : _c.nodeType) === 10 /* Class */) {
12215
12464
  getTypeOfClass(parent.parent);
12216
12465
  }
12217
- else if (((_b = parent.parent) === null || _b === void 0 ? void 0 : _b.nodeType) === 28 /* Function */) {
12466
+ else if (((_d = parent.parent) === null || _d === void 0 ? void 0 : _d.nodeType) === 28 /* Function */) {
12218
12467
  getTypeOfFunction(parent.parent);
12219
12468
  }
12220
12469
  return;
@@ -12265,7 +12514,7 @@ function createTypeEvaluator(importLookup, evaluatorOptions) {
12265
12514
  return;
12266
12515
  }
12267
12516
  // A class argument must be evaluated in the context of the class declaration.
12268
- if (parent.nodeType === 1 /* Argument */ && ((_c = parent.parent) === null || _c === void 0 ? void 0 : _c.nodeType) === 10 /* Class */) {
12517
+ if (parent.nodeType === 1 /* Argument */ && ((_e = parent.parent) === null || _e === void 0 ? void 0 : _e.nodeType) === 10 /* Class */) {
12269
12518
  getTypeOfClass(parent.parent);
12270
12519
  return;
12271
12520
  }
@@ -12361,6 +12610,10 @@ function createTypeEvaluator(importLookup, evaluatorOptions) {
12361
12610
  }
12362
12611
  break;
12363
12612
  }
12613
+ case 77 /* TypeAlias */: {
12614
+ getTypeOfTypeAlias(curNode);
12615
+ return;
12616
+ }
12364
12617
  case 4 /* AssignmentExpression */: {
12365
12618
  getTypeOfExpression(curNode);
12366
12619
  return;
@@ -12887,10 +13140,12 @@ function createTypeEvaluator(importLookup, evaluatorOptions) {
12887
13140
  if (symbolWithScope && honorCodeFlow && scopeTypeHonorsCodeFlow) {
12888
13141
  // Filter the declarations based on flow reachability.
12889
13142
  const reachableDecls = symbolWithScope.symbol.getDeclarations().filter((decl) => {
12890
- if (decl.type !== 6 /* Alias */ && decl.type !== 0 /* Intrinsic */) {
13143
+ if (decl.type !== 8 /* Alias */ && decl.type !== 0 /* Intrinsic */) {
12891
13144
  // Is the declaration in the same execution scope as the "usageNode" node?
12892
13145
  const usageScope = ParseTreeUtils.getExecutionScopeNode(node);
12893
- const declNode = decl.type === 4 /* Class */ || decl.type === 3 /* Function */
13146
+ const declNode = decl.type === 6 /* Class */ ||
13147
+ decl.type === 5 /* Function */ ||
13148
+ decl.type === 4 /* TypeAlias */
12894
13149
  ? decl.node.name
12895
13150
  : decl.node;
12896
13151
  const declScope = ParseTreeUtils.getExecutionScopeNode(declNode);
@@ -13008,7 +13263,7 @@ function createTypeEvaluator(importLookup, evaluatorOptions) {
13008
13263
  if ((0, types_1.isFunction)(type)) {
13009
13264
  if (type.details.declaration) {
13010
13265
  const functionDecl = type.details.declaration;
13011
- if (functionDecl.type === 3 /* Function */) {
13266
+ if (functionDecl.type === 5 /* Function */) {
13012
13267
  const functionNode = functionDecl.node;
13013
13268
  const functionScope = AnalyzerNodeInfo.getScope(functionNode);
13014
13269
  if (functionScope) {
@@ -13072,7 +13327,7 @@ function createTypeEvaluator(importLookup, evaluatorOptions) {
13072
13327
  // The alias could have more decls that don't refer to this import. Filter
13073
13328
  // out the one(s) that specifically associated with this import statement.
13074
13329
  const declsForThisImport = symbolInScope.symbol.getDeclarations().filter((decl) => {
13075
- return decl.type === 6 /* Alias */ && decl.node === node.parent;
13330
+ return decl.type === 8 /* Alias */ && decl.node === node.parent;
13076
13331
  });
13077
13332
  (0, collectionUtils_1.appendArray)(declarations, (0, declarationUtils_1.getDeclarationsWithUsesLocalNameRemoved)(declsForThisImport));
13078
13333
  }
@@ -13081,7 +13336,7 @@ function createTypeEvaluator(importLookup, evaluatorOptions) {
13081
13336
  else if (node.parent &&
13082
13337
  node.parent.nodeType === 35 /* MemberAccess */ &&
13083
13338
  node === node.parent.memberName) {
13084
- let baseType = getType(node.parent.leftExpression);
13339
+ let baseType = getTypeOfExpression(node.parent.leftExpression, 2 /* DoNotSpecialize */).type;
13085
13340
  if (baseType) {
13086
13341
  baseType = makeTopLevelTypeVarsConcrete(baseType);
13087
13342
  const memberName = node.parent.memberName.value;
@@ -13196,9 +13451,17 @@ function createTypeEvaluator(importLookup, evaluatorOptions) {
13196
13451
  // Determine if this node is within a quoted type annotation.
13197
13452
  const isWithinTypeAnnotation = ParseTreeUtils.isWithinTypeAnnotation(node, !(0, analyzerFileInfo_1.isAnnotationEvaluationPostponed)(AnalyzerNodeInfo.getFileInfo(node)));
13198
13453
  const allowForwardReferences = isWithinTypeAnnotation || fileInfo.isStubFile;
13199
- const symbolWithScope = lookUpSymbolRecursive(node, node.value, !allowForwardReferences, isWithinTypeAnnotation);
13200
- if (symbolWithScope) {
13201
- (0, collectionUtils_1.appendArray)(declarations, symbolWithScope.symbol.getDeclarations());
13454
+ let symbol;
13455
+ const typeParamSymbol = AnalyzerNodeInfo.getTypeParameterSymbol(node);
13456
+ if (typeParamSymbol) {
13457
+ symbol = typeParamSymbol;
13458
+ }
13459
+ else {
13460
+ const symbolWithScope = lookUpSymbolRecursive(node, node.value, !allowForwardReferences, isWithinTypeAnnotation);
13461
+ symbol = symbolWithScope === null || symbolWithScope === void 0 ? void 0 : symbolWithScope.symbol;
13462
+ }
13463
+ if (symbol) {
13464
+ (0, collectionUtils_1.appendArray)(declarations, symbol.getDeclarations());
13202
13465
  }
13203
13466
  }
13204
13467
  return declarations;
@@ -13244,17 +13507,20 @@ function createTypeEvaluator(importLookup, evaluatorOptions) {
13244
13507
  }
13245
13508
  return types_1.UnknownType.create();
13246
13509
  }
13247
- case 4 /* Class */: {
13510
+ case 6 /* Class */: {
13248
13511
  const classTypeInfo = getTypeOfClass(declaration.node);
13249
13512
  return classTypeInfo === null || classTypeInfo === void 0 ? void 0 : classTypeInfo.decoratedType;
13250
13513
  }
13251
- case 5 /* SpecialBuiltInClass */: {
13514
+ case 7 /* SpecialBuiltInClass */: {
13252
13515
  return getTypeOfAnnotation(declaration.node.typeAnnotation);
13253
13516
  }
13254
- case 3 /* Function */: {
13517
+ case 5 /* Function */: {
13255
13518
  const functionTypeInfo = getTypeOfFunction(declaration.node);
13256
13519
  return functionTypeInfo === null || functionTypeInfo === void 0 ? void 0 : functionTypeInfo.decoratedType;
13257
13520
  }
13521
+ case 4 /* TypeAlias */: {
13522
+ return getTypeOfTypeAlias(declaration.node);
13523
+ }
13258
13524
  case 2 /* Parameter */: {
13259
13525
  let typeAnnotationNode = declaration.node.typeAnnotation || declaration.node.typeAnnotationComment;
13260
13526
  // If there wasn't an annotation, see if the parent function
@@ -13276,6 +13542,62 @@ function createTypeEvaluator(importLookup, evaluatorOptions) {
13276
13542
  }
13277
13543
  return undefined;
13278
13544
  }
13545
+ case 3 /* TypeParameter */: {
13546
+ let typeVar = types_1.TypeVarType.createInstantiable(declaration.node.name.value);
13547
+ if (declaration.node.typeParamCategory === parseNodes_1.TypeParameterCategory.TypeVarTuple) {
13548
+ typeVar.details.isVariadic = true;
13549
+ }
13550
+ else if (declaration.node.typeParamCategory === parseNodes_1.TypeParameterCategory.ParamSpec) {
13551
+ typeVar.details.isParamSpec = true;
13552
+ }
13553
+ if (declaration.node.boundExpression) {
13554
+ if (declaration.node.boundExpression.nodeType === 52 /* Tuple */) {
13555
+ const constraints = declaration.node.boundExpression.expressions.map((constraint) => {
13556
+ const constraintType = getTypeOfExpressionExpectingType(constraint).type;
13557
+ if ((0, typeUtils_1.requiresSpecialization)(constraintType, /* ignorePseudoGeneric */ true)) {
13558
+ addError(localize_1.Localizer.Diagnostic.typeVarGeneric(), constraint);
13559
+ }
13560
+ return (0, typeUtils_1.convertToInstance)(constraintType);
13561
+ });
13562
+ if (constraints.length < 2) {
13563
+ addDiagnostic(AnalyzerNodeInfo.getFileInfo(declaration.node.boundExpression).diagnosticRuleSet
13564
+ .reportGeneralTypeIssues, diagnosticRules_1.DiagnosticRule.reportGeneralTypeIssues, localize_1.Localizer.Diagnostic.typeVarSingleConstraint(), declaration.node.boundExpression);
13565
+ }
13566
+ else if (declaration.node.typeParamCategory === parseNodes_1.TypeParameterCategory.TypeVar) {
13567
+ typeVar.details.constraints = constraints;
13568
+ }
13569
+ }
13570
+ else {
13571
+ const boundType = getTypeOfExpressionExpectingType(declaration.node.boundExpression).type;
13572
+ if ((0, typeUtils_1.requiresSpecialization)(boundType, /* ignorePseudoGeneric */ true)) {
13573
+ addError(localize_1.Localizer.Diagnostic.typeVarGeneric(), declaration.node.boundExpression);
13574
+ }
13575
+ if (declaration.node.typeParamCategory === parseNodes_1.TypeParameterCategory.TypeVar) {
13576
+ typeVar.details.boundType = (0, typeUtils_1.convertToInstance)(boundType);
13577
+ }
13578
+ }
13579
+ }
13580
+ typeVar.details.isTypeParamSyntax = true;
13581
+ // Associate the type variable with the owning scope.
13582
+ const scopeNode = ParseTreeUtils.getTypeVarScopeNode(declaration.node);
13583
+ if (scopeNode) {
13584
+ let scopeType;
13585
+ if (scopeNode.nodeType === 10 /* Class */) {
13586
+ scopeType = 0 /* Class */;
13587
+ // Set the variance to "auto" for class-scoped TypeVars.
13588
+ typeVar.details.declaredVariance = 0 /* Auto */;
13589
+ }
13590
+ else if (scopeNode.nodeType === 28 /* Function */) {
13591
+ scopeType = 1 /* Function */;
13592
+ }
13593
+ else {
13594
+ (0, debug_1.assert)(scopeNode.nodeType === 77 /* TypeAlias */);
13595
+ scopeType = 2 /* TypeAlias */;
13596
+ }
13597
+ typeVar = types_1.TypeVarType.cloneForScopeId(typeVar, getScopeIdForNode(scopeNode.nodeType === 77 /* TypeAlias */ ? scopeNode.name : scopeNode), scopeNode.name.value, scopeType);
13598
+ }
13599
+ return typeVar;
13600
+ }
13279
13601
  case 1 /* Variable */: {
13280
13602
  const typeAnnotationNode = declaration.typeAnnotationNode;
13281
13603
  if (typeAnnotationNode) {
@@ -13313,7 +13635,7 @@ function createTypeEvaluator(importLookup, evaluatorOptions) {
13313
13635
  }
13314
13636
  return undefined;
13315
13637
  }
13316
- case 6 /* Alias */: {
13638
+ case 8 /* Alias */: {
13317
13639
  return undefined;
13318
13640
  }
13319
13641
  }
@@ -13360,11 +13682,11 @@ function createTypeEvaluator(importLookup, evaluatorOptions) {
13360
13682
  // If the resolved declaration is still an alias, the alias
13361
13683
  // is pointing at a module, and we need to synthesize a
13362
13684
  // module type.
13363
- if (resolvedDecl.type === 6 /* Alias */) {
13685
+ if (resolvedDecl.type === 8 /* Alias */) {
13364
13686
  // Build a module type that corresponds to the declaration and
13365
13687
  // its associated loader actions.
13366
13688
  let moduleName = resolvedDecl.moduleName;
13367
- if (decl.type === 6 /* Alias */) {
13689
+ if (decl.type === 8 /* Alias */) {
13368
13690
  if (decl.symbolName) {
13369
13691
  moduleName += '.' + decl.symbolName;
13370
13692
  }
@@ -13615,7 +13937,7 @@ function createTypeEvaluator(importLookup, evaluatorOptions) {
13615
13937
  considerDecl = false;
13616
13938
  }
13617
13939
  if (usageNode !== undefined) {
13618
- if (decl.type !== 6 /* Alias */) {
13940
+ if (decl.type !== 8 /* Alias */) {
13619
13941
  // Is the declaration in the same execution scope as the "usageNode" node?
13620
13942
  const usageScope = ParseTreeUtils.getExecutionScopeNode(usageNode);
13621
13943
  const declScope = ParseTreeUtils.getExecutionScopeNode(decl.node);
@@ -13728,9 +14050,9 @@ function createTypeEvaluator(importLookup, evaluatorOptions) {
13728
14050
  // reachable from the usage node (if specified). This can happen in
13729
14051
  // cases where a property symbol is redefined to add a setter, deleter,
13730
14052
  // etc.
13731
- if (typedDecls.length > 1 && usageNode) {
14053
+ if (usageNode && typedDecls.length > 1) {
13732
14054
  const filteredTypedDecls = typedDecls.filter((decl) => {
13733
- if (decl.type !== 6 /* Alias */) {
14055
+ if (decl.type !== 8 /* Alias */) {
13734
14056
  // Is the declaration in the same execution scope as the "usageNode" node?
13735
14057
  const usageScope = ParseTreeUtils.getExecutionScopeNode(usageNode);
13736
14058
  const declScope = ParseTreeUtils.getExecutionScopeNode(decl.node);
@@ -13742,9 +14064,10 @@ function createTypeEvaluator(importLookup, evaluatorOptions) {
13742
14064
  }
13743
14065
  return true;
13744
14066
  });
13745
- if (filteredTypedDecls.length > 0) {
13746
- typedDecls = filteredTypedDecls;
14067
+ if (filteredTypedDecls.length === 0) {
14068
+ return types_1.UnboundType.create();
13747
14069
  }
14070
+ typedDecls = filteredTypedDecls;
13748
14071
  }
13749
14072
  // Start with the last decl. If that's already being resolved,
13750
14073
  // use the next-to-last decl, etc. This can happen when resolving
@@ -13770,7 +14093,7 @@ function createTypeEvaluator(importLookup, evaluatorOptions) {
13770
14093
  // in the type cache. This exception is required to handle the
13771
14094
  // circular dependency between the "type" and "object" classes in
13772
14095
  // builtins.pyi (since "object" is a "type" and "type" is an "object").
13773
- if (popSymbolResolution(symbol) || decl.type === 4 /* Class */) {
14096
+ if (popSymbolResolution(symbol) || decl.type === 6 /* Class */) {
13774
14097
  return type;
13775
14098
  }
13776
14099
  }
@@ -14121,6 +14444,63 @@ function createTypeEvaluator(importLookup, evaluatorOptions) {
14121
14444
  }));
14122
14445
  return false;
14123
14446
  }
14447
+ // This function is used to validate or infer the variance of type
14448
+ // parameters within a class.
14449
+ function assignClassToSelf(destType, srcType, recursionCount = 0) {
14450
+ (0, debug_1.assert)(types_1.ClassType.isSameGenericClass(destType, srcType));
14451
+ (0, debug_1.assert)(destType.details.typeParameters.length > 0);
14452
+ const diag = new diagnostic_1.DiagnosticAddendum();
14453
+ const typeVarContext = new typeVarContext_1.TypeVarContext();
14454
+ let isAssignable = true;
14455
+ destType.details.fields.forEach((symbol, name) => {
14456
+ if (isAssignable && symbol.isClassMember() && !symbol.isIgnoredForProtocolMatch()) {
14457
+ const memberInfo = (0, typeUtils_1.lookUpClassMember)(srcType, name);
14458
+ (0, debug_1.assert)(memberInfo !== undefined);
14459
+ let destMemberType = getDeclaredTypeOfSymbol(symbol);
14460
+ if (destMemberType) {
14461
+ const srcMemberType = getTypeOfMember(memberInfo);
14462
+ destMemberType = (0, typeUtils_1.partiallySpecializeType)(destMemberType, destType);
14463
+ // Properties require special processing.
14464
+ if ((0, types_1.isClassInstance)(destMemberType) &&
14465
+ types_1.ClassType.isPropertyClass(destMemberType) &&
14466
+ (0, types_1.isClassInstance)(srcMemberType) &&
14467
+ types_1.ClassType.isPropertyClass(srcMemberType)) {
14468
+ if (!(0, properties_1.assignProperty)(evaluatorInterface, types_1.ClassType.cloneAsInstantiable(destMemberType), types_1.ClassType.cloneAsInstantiable(srcMemberType), destType, srcType, diag, typeVarContext,
14469
+ /* selfTypeVarContext */ undefined, recursionCount)) {
14470
+ isAssignable = false;
14471
+ }
14472
+ }
14473
+ else {
14474
+ const primaryDecl = symbol.getDeclarations()[0];
14475
+ // Class and instance variables that are mutable need to
14476
+ // enforce invariance.
14477
+ const flags = (primaryDecl === null || primaryDecl === void 0 ? void 0 : primaryDecl.type) === 1 /* Variable */ && !primaryDecl.isFinal
14478
+ ? 1 /* EnforceInvariance */
14479
+ : 0 /* Default */;
14480
+ if (!assignType(destMemberType, srcMemberType, diag, typeVarContext,
14481
+ /* srcTypeVarContext */ undefined, flags, recursionCount)) {
14482
+ isAssignable = false;
14483
+ }
14484
+ }
14485
+ }
14486
+ }
14487
+ });
14488
+ // Now handle generic base classes.
14489
+ destType.details.baseClasses.forEach((baseClass) => {
14490
+ if ((0, types_1.isInstantiableClass)(baseClass) &&
14491
+ !types_1.ClassType.isBuiltIn(baseClass, 'object') &&
14492
+ !types_1.ClassType.isBuiltIn(baseClass, 'Protocol') &&
14493
+ !types_1.ClassType.isBuiltIn(baseClass, 'Generic') &&
14494
+ baseClass.details.typeParameters.length > 0) {
14495
+ const specializedDestBaseClass = (0, typeUtils_1.specializeForBaseClass)(destType, baseClass);
14496
+ const specializedSrcBaseClass = (0, typeUtils_1.specializeForBaseClass)(srcType, baseClass);
14497
+ if (!assignClassToSelf(specializedDestBaseClass, specializedSrcBaseClass, recursionCount)) {
14498
+ isAssignable = false;
14499
+ }
14500
+ }
14501
+ });
14502
+ return isAssignable;
14503
+ }
14124
14504
  function assignTupleTypeArgs(destType, srcType, diag, typeVarContext, flags, recursionCount) {
14125
14505
  var _a, _b;
14126
14506
  const destTypeArgs = [...((_a = destType.tupleTypeArguments) !== null && _a !== void 0 ? _a : [])];
@@ -14214,6 +14594,7 @@ function createTypeEvaluator(importLookup, evaluatorOptions) {
14214
14594
  let curSrcType = srcType;
14215
14595
  let curTypeVarContext = destTypeVarContext !== null && destTypeVarContext !== void 0 ? destTypeVarContext : new typeVarContext_1.TypeVarContext((0, typeUtils_1.getTypeVarScopeId)(destType));
14216
14596
  let effectiveFlags = flags;
14597
+ inferTypeParameterVarianceForClass(destType);
14217
14598
  // If we're using a private typeVarContext, don't skip solving type vars.
14218
14599
  if (!destTypeVarContext) {
14219
14600
  effectiveFlags &= ~8 /* SkipSolveTypeVars */;
@@ -14294,6 +14675,7 @@ function createTypeEvaluator(importLookup, evaluatorOptions) {
14294
14675
  function verifyTypeArgumentsAssignable(destType, srcType, diag, destTypeVarContext, srcTypeVarContext, flags, recursionCount) {
14295
14676
  var _a, _b, _c;
14296
14677
  (0, debug_1.assert)(types_1.ClassType.isSameGenericClass(destType, srcType));
14678
+ inferTypeParameterVarianceForClass(destType);
14297
14679
  const destTypeParams = types_1.ClassType.getTypeParameters(destType);
14298
14680
  let destTypeArgs;
14299
14681
  let srcTypeArgs;
@@ -14320,21 +14702,24 @@ function createTypeEvaluator(importLookup, evaluatorOptions) {
14320
14702
  const destTypeArg = destArgIndex >= 0 ? destTypeArgs[destArgIndex] : types_1.UnknownType.create();
14321
14703
  const destTypeParam = destArgIndex < destTypeParams.length ? destTypeParams[destArgIndex] : undefined;
14322
14704
  const assignmentDiag = new diagnostic_1.DiagnosticAddendum();
14323
- if (!destTypeParam || destTypeParam.details.variance === 1 /* Covariant */) {
14705
+ if (!destTypeParam || types_1.TypeVarType.getVariance(destTypeParam) === 2 /* Covariant */) {
14324
14706
  if (!assignType(destTypeArg, srcTypeArg, assignmentDiag, destTypeVarContext, srcTypeVarContext, flags | 128 /* RetainLiteralsForTypeVar */, recursionCount)) {
14325
- if (destTypeParam) {
14326
- if (diag) {
14707
+ if (diag) {
14708
+ if (destTypeParam) {
14327
14709
  const childDiag = diag.createAddendum();
14328
14710
  childDiag.addMessage(localize_1.Localizer.DiagnosticAddendum.typeVarIsCovariant().format({
14329
14711
  name: types_1.TypeVarType.getReadableName(destTypeParam),
14330
14712
  }));
14331
14713
  childDiag.addAddendum(assignmentDiag);
14332
14714
  }
14715
+ else {
14716
+ diag.addAddendum(assignmentDiag);
14717
+ }
14333
14718
  }
14334
14719
  return false;
14335
14720
  }
14336
14721
  }
14337
- else if (destTypeParam.details.variance === 2 /* Contravariant */) {
14722
+ else if (types_1.TypeVarType.getVariance(destTypeParam) === 3 /* Contravariant */) {
14338
14723
  if (!assignType(srcTypeArg, destTypeArg, assignmentDiag, srcTypeVarContext, destTypeVarContext, (flags ^ 2 /* ReverseTypeVarMatching */) | 128 /* RetainLiteralsForTypeVar */, recursionCount)) {
14339
14724
  if (diag) {
14340
14725
  const childDiag = diag.createAddendum();
@@ -14992,10 +15377,7 @@ function createTypeEvaluator(importLookup, evaluatorOptions) {
14992
15377
  if (isSubtypeSubsumed || subtypeIndex === innerSubtypeIndex || (0, types_1.isAnyOrUnknown)(innerSubtype)) {
14993
15378
  return;
14994
15379
  }
14995
- if (assignType(innerSubtype, concreteSubtype,
14996
- /* diag */ undefined,
14997
- /* destTypeVarContext */ undefined,
14998
- /* srcTypeVarContext */ undefined, 0 /* Default */, recursionCount)) {
15380
+ if (isProperSubtype(innerSubtype, concreteSubtype, recursionCount)) {
14999
15381
  isSubtypeSubsumed = true;
15000
15382
  }
15001
15383
  });
@@ -15015,6 +15397,20 @@ function createTypeEvaluator(importLookup, evaluatorOptions) {
15015
15397
  }
15016
15398
  return true;
15017
15399
  }
15400
+ // Determines whether the srcType is a subtype of destType but the converse
15401
+ // is not true. It's important that we check both directions to avoid
15402
+ // matches for types like `tuple[Any]` and `tuple[int]` from being considered
15403
+ // proper subtypes of each other.
15404
+ function isProperSubtype(destType, srcType, recursionCount) {
15405
+ return (assignType(destType, srcType,
15406
+ /* diag */ undefined,
15407
+ /* destTypeVarContext */ undefined,
15408
+ /* srcTypeVarContext */ undefined, 0 /* Default */, recursionCount) &&
15409
+ !assignType(srcType, destType,
15410
+ /* diag */ undefined,
15411
+ /* destTypeVarContext */ undefined,
15412
+ /* srcTypeVarContext */ undefined, 0 /* Default */, recursionCount));
15413
+ }
15018
15414
  function assignToUnionType(destType, srcType, diag, destTypeVarContext, srcTypeVarContext, flags, recursionCount) {
15019
15415
  // If we need to enforce invariance, the source needs to be compatible
15020
15416
  // with all subtypes in the dest, unless those subtypes are subclasses
@@ -16281,7 +16677,7 @@ function createTypeEvaluator(importLookup, evaluatorOptions) {
16281
16677
  }
16282
16678
  function getAbstractMethods(classType) {
16283
16679
  const symbolTable = new Map();
16284
- classType.details.mro.forEach((mroClass) => {
16680
+ types_1.ClassType.getReverseMro(classType).forEach((mroClass) => {
16285
16681
  if ((0, types_1.isInstantiableClass)(mroClass)) {
16286
16682
  // See if this class is introducing a new abstract method that has not been
16287
16683
  // introduced previously or if it is overriding an abstract method with
@@ -16290,10 +16686,14 @@ function createTypeEvaluator(importLookup, evaluatorOptions) {
16290
16686
  // We do a quick-and-dirty evaluation of methods based on
16291
16687
  // decorators to determine which ones are abstract. This allows
16292
16688
  // us to avoid evaluating the full function types.
16293
- if (symbol.isClassMember()) {
16689
+ // Handle named tuple fields as though they are class members here.
16690
+ // We model them as instance variables, but they're actually implemented
16691
+ // using class variable descriptors, and these overwrite a class variable
16692
+ // abstract method.
16693
+ if (symbol.isClassMember() || symbol.isNamedTupleMemberMember()) {
16294
16694
  let isAbstract;
16295
16695
  const decl = (0, symbolUtils_1.getLastTypedDeclaredForSymbol)(symbol);
16296
- if (decl && decl.type === 3 /* Function */) {
16696
+ if (decl && decl.type === 5 /* Function */) {
16297
16697
  const functionFlags = getFunctionFlagsFromDecorators(decl.node, true);
16298
16698
  isAbstract = !!(functionFlags & 8 /* AbstractMethod */);
16299
16699
  }
@@ -16304,14 +16704,16 @@ function createTypeEvaluator(importLookup, evaluatorOptions) {
16304
16704
  // "overrides" it with an instance variable.
16305
16705
  isAbstract = false;
16306
16706
  }
16307
- if (!symbolTable.has(symbolName)) {
16707
+ if (isAbstract) {
16308
16708
  symbolTable.set(symbolName, {
16309
16709
  symbol,
16310
16710
  symbolName,
16311
- isAbstract,
16312
16711
  classType: mroClass,
16313
16712
  });
16314
16713
  }
16714
+ else {
16715
+ symbolTable.delete(symbolName);
16716
+ }
16315
16717
  }
16316
16718
  });
16317
16719
  }
@@ -16319,9 +16721,7 @@ function createTypeEvaluator(importLookup, evaluatorOptions) {
16319
16721
  // Create a final list of methods that are abstract.
16320
16722
  const methodList = [];
16321
16723
  symbolTable.forEach((method) => {
16322
- if (method.isAbstract) {
16323
- methodList.push(method);
16324
- }
16724
+ methodList.push(method);
16325
16725
  });
16326
16726
  return methodList;
16327
16727
  }
@@ -16569,6 +16969,7 @@ function createTypeEvaluator(importLookup, evaluatorOptions) {
16569
16969
  assignType,
16570
16970
  validateOverrideMethod,
16571
16971
  assignTypeToExpression,
16972
+ assignClassToSelf,
16572
16973
  getTypedDictClassType,
16573
16974
  getTupleClassType,
16574
16975
  getObjectType,
@@ -16576,6 +16977,7 @@ function createTypeEvaluator(importLookup, evaluatorOptions) {
16576
16977
  getTypingType,
16577
16978
  verifyTypeArgumentsAssignable,
16578
16979
  inferReturnTypeIfNecessary,
16980
+ inferTypeParameterVarianceForClass,
16579
16981
  addError,
16580
16982
  addWarning,
16581
16983
  addInformation,