@zzzen/pyright-internal 1.2.0-dev.20240324 → 1.2.0-dev.20240407

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 (327) hide show
  1. package/dist/analyzer/analyzerFileInfo.d.ts +0 -1
  2. package/dist/analyzer/analyzerFileInfo.js.map +1 -1
  3. package/dist/analyzer/binder.js +15 -8
  4. package/dist/analyzer/binder.js.map +1 -1
  5. package/dist/analyzer/cacheManager.d.ts +12 -0
  6. package/dist/analyzer/cacheManager.js +63 -3
  7. package/dist/analyzer/cacheManager.js.map +1 -1
  8. package/dist/analyzer/checker.d.ts +2 -3
  9. package/dist/analyzer/checker.js +18 -13
  10. package/dist/analyzer/checker.js.map +1 -1
  11. package/dist/analyzer/codeFlowEngine.js +14 -2
  12. package/dist/analyzer/codeFlowEngine.js.map +1 -1
  13. package/dist/analyzer/codeFlowTypes.d.ts +1 -0
  14. package/dist/analyzer/codeFlowTypes.js.map +1 -1
  15. package/dist/analyzer/constraintSolver.js +20 -3
  16. package/dist/analyzer/constraintSolver.js.map +1 -1
  17. package/dist/analyzer/constructorTransform.js +2 -2
  18. package/dist/analyzer/constructorTransform.js.map +1 -1
  19. package/dist/analyzer/constructors.d.ts +3 -2
  20. package/dist/analyzer/constructors.js +76 -54
  21. package/dist/analyzer/constructors.js.map +1 -1
  22. package/dist/analyzer/dataClasses.js +7 -6
  23. package/dist/analyzer/dataClasses.js.map +1 -1
  24. package/dist/analyzer/declaration.js +1 -1
  25. package/dist/analyzer/declaration.js.map +1 -1
  26. package/dist/analyzer/enums.js +8 -3
  27. package/dist/analyzer/enums.js.map +1 -1
  28. package/dist/analyzer/functionTransform.js +1 -1
  29. package/dist/analyzer/functionTransform.js.map +1 -1
  30. package/dist/analyzer/importResolver.js +19 -17
  31. package/dist/analyzer/importResolver.js.map +1 -1
  32. package/dist/analyzer/importStatementUtils.d.ts +6 -6
  33. package/dist/analyzer/importStatementUtils.js +42 -42
  34. package/dist/analyzer/importStatementUtils.js.map +1 -1
  35. package/dist/analyzer/namedTuples.js +3 -1
  36. package/dist/analyzer/namedTuples.js.map +1 -1
  37. package/dist/analyzer/packageTypeVerifier.js +7 -7
  38. package/dist/analyzer/packageTypeVerifier.js.map +1 -1
  39. package/dist/analyzer/parseTreeUtils.d.ts +6 -5
  40. package/dist/analyzer/parseTreeUtils.js +12 -13
  41. package/dist/analyzer/parseTreeUtils.js.map +1 -1
  42. package/dist/analyzer/patternMatching.js +15 -4
  43. package/dist/analyzer/patternMatching.js.map +1 -1
  44. package/dist/analyzer/program.d.ts +5 -10
  45. package/dist/analyzer/program.js +35 -30
  46. package/dist/analyzer/program.js.map +1 -1
  47. package/dist/analyzer/programTypes.d.ts +11 -0
  48. package/dist/analyzer/programTypes.js +11 -0
  49. package/dist/analyzer/programTypes.js.map +1 -0
  50. package/dist/analyzer/properties.js +10 -10
  51. package/dist/analyzer/properties.js.map +1 -1
  52. package/dist/analyzer/protocols.js +5 -5
  53. package/dist/analyzer/protocols.js.map +1 -1
  54. package/dist/analyzer/service.d.ts +3 -2
  55. package/dist/analyzer/service.js +24 -15
  56. package/dist/analyzer/service.js.map +1 -1
  57. package/dist/analyzer/sourceFile.d.ts +5 -3
  58. package/dist/analyzer/sourceFile.js +112 -75
  59. package/dist/analyzer/sourceFile.js.map +1 -1
  60. package/dist/analyzer/sourceFileInfoUtils.js +4 -4
  61. package/dist/analyzer/sourceFileInfoUtils.js.map +1 -1
  62. package/dist/analyzer/sourceMapper.js +6 -6
  63. package/dist/analyzer/symbol.d.ts +4 -1
  64. package/dist/analyzer/symbol.js +10 -0
  65. package/dist/analyzer/symbol.js.map +1 -1
  66. package/dist/analyzer/symbolUtils.d.ts +1 -0
  67. package/dist/analyzer/symbolUtils.js +11 -1
  68. package/dist/analyzer/symbolUtils.js.map +1 -1
  69. package/dist/analyzer/tracePrinter.js +2 -2
  70. package/dist/analyzer/tracePrinter.js.map +1 -1
  71. package/dist/analyzer/typeDocStringUtils.js +1 -1
  72. package/dist/analyzer/typeDocStringUtils.js.map +1 -1
  73. package/dist/analyzer/typeEvaluator.js +159 -73
  74. package/dist/analyzer/typeEvaluator.js.map +1 -1
  75. package/dist/analyzer/typeGuards.js +16 -9
  76. package/dist/analyzer/typeGuards.js.map +1 -1
  77. package/dist/analyzer/typeStubWriter.js +1 -1
  78. package/dist/analyzer/typeStubWriter.js.map +1 -1
  79. package/dist/analyzer/typeUtils.d.ts +2 -2
  80. package/dist/analyzer/typeUtils.js +33 -20
  81. package/dist/analyzer/typeUtils.js.map +1 -1
  82. package/dist/analyzer/typedDicts.js +32 -20
  83. package/dist/analyzer/typedDicts.js.map +1 -1
  84. package/dist/analyzer/types.d.ts +5 -1
  85. package/dist/analyzer/types.js +20 -0
  86. package/dist/analyzer/types.js.map +1 -1
  87. package/dist/backgroundAnalysis.d.ts +1 -0
  88. package/dist/backgroundAnalysis.js +6 -2
  89. package/dist/backgroundAnalysis.js.map +1 -1
  90. package/dist/backgroundAnalysisBase.d.ts +2 -1
  91. package/dist/backgroundAnalysisBase.js +6 -1
  92. package/dist/backgroundAnalysisBase.js.map +1 -1
  93. package/dist/backgroundThreadBase.d.ts +1 -0
  94. package/dist/backgroundThreadBase.js +19 -10
  95. package/dist/backgroundThreadBase.js.map +1 -1
  96. package/dist/commands/commandController.d.ts +2 -1
  97. package/dist/commands/commandController.js +3 -0
  98. package/dist/commands/commandController.js.map +1 -1
  99. package/dist/commands/createTypeStub.d.ts +1 -1
  100. package/dist/commands/createTypeStub.js +3 -3
  101. package/dist/commands/createTypeStub.js.map +1 -1
  102. package/dist/commands/dumpFileDebugInfoCommand.d.ts +1 -1
  103. package/dist/commands/dumpFileDebugInfoCommand.js +5 -5
  104. package/dist/commands/dumpFileDebugInfoCommand.js.map +1 -1
  105. package/dist/commands/quickActionCommand.d.ts +1 -1
  106. package/dist/commands/quickActionCommand.js +2 -2
  107. package/dist/commands/quickActionCommand.js.map +1 -1
  108. package/dist/commands/restartServer.d.ts +1 -1
  109. package/dist/common/cancellationUtils.js +2 -2
  110. package/dist/common/cancellationUtils.js.map +1 -1
  111. package/dist/common/caseSensitivityDetector.d.ts +6 -0
  112. package/dist/common/caseSensitivityDetector.js +18 -0
  113. package/dist/common/caseSensitivityDetector.js.map +1 -0
  114. package/dist/common/commandLineOptions.d.ts +3 -2
  115. package/dist/common/commandLineOptions.js.map +1 -1
  116. package/dist/common/commandUtils.js +1 -1
  117. package/dist/common/commandUtils.js.map +1 -1
  118. package/dist/common/configOptions.js +3 -3
  119. package/dist/common/configOptions.js.map +1 -1
  120. package/dist/common/envVarUtils.d.ts +1 -0
  121. package/dist/common/envVarUtils.js +42 -7
  122. package/dist/common/envVarUtils.js.map +1 -1
  123. package/dist/common/extensibility.d.ts +4 -3
  124. package/dist/common/extensibility.js.map +1 -1
  125. package/dist/common/fileBasedCancellationUtils.js +2 -2
  126. package/dist/common/fileBasedCancellationUtils.js.map +1 -1
  127. package/dist/common/fileSystem.d.ts +0 -1
  128. package/dist/common/fileSystem.js.map +1 -1
  129. package/dist/common/fullAccessHost.js +4 -3
  130. package/dist/common/fullAccessHost.js.map +1 -1
  131. package/dist/common/languageServerInterface.d.ts +62 -0
  132. package/dist/common/languageServerInterface.js +10 -0
  133. package/dist/common/languageServerInterface.js.map +1 -0
  134. package/dist/common/realFileSystem.d.ts +8 -4
  135. package/dist/common/realFileSystem.js +56 -17
  136. package/dist/common/realFileSystem.js.map +1 -1
  137. package/dist/common/serviceKeys.d.ts +21 -0
  138. package/dist/common/serviceKeys.js +26 -0
  139. package/dist/common/serviceKeys.js.map +1 -0
  140. package/dist/common/serviceProviderExtensions.d.ts +3 -15
  141. package/dist/common/serviceProviderExtensions.js +23 -27
  142. package/dist/common/serviceProviderExtensions.js.map +1 -1
  143. package/dist/common/textEditTracker.d.ts +5 -5
  144. package/dist/common/textEditTracker.js +35 -35
  145. package/dist/common/textEditTracker.js.map +1 -1
  146. package/dist/common/uri/constantUri.d.ts +36 -0
  147. package/dist/common/uri/constantUri.js +112 -0
  148. package/dist/common/uri/constantUri.js.map +1 -0
  149. package/dist/common/uri/emptyUri.d.ts +3 -31
  150. package/dist/common/uri/emptyUri.js +3 -84
  151. package/dist/common/uri/emptyUri.js.map +1 -1
  152. package/dist/common/uri/fileUri.d.ts +1 -0
  153. package/dist/common/uri/fileUri.js +3 -2
  154. package/dist/common/uri/fileUri.js.map +1 -1
  155. package/dist/common/uri/uri.d.ts +11 -3
  156. package/dist/common/uri/uri.js +31 -20
  157. package/dist/common/uri/uri.js.map +1 -1
  158. package/dist/common/uri/uriUtils.d.ts +11 -5
  159. package/dist/common/uri/uriUtils.js +31 -53
  160. package/dist/common/uri/uriUtils.js.map +1 -1
  161. package/dist/common/workspaceEditUtils.js +4 -4
  162. package/dist/common/workspaceEditUtils.js.map +1 -1
  163. package/dist/languageServerBase.d.ts +11 -59
  164. package/dist/languageServerBase.js +18 -8
  165. package/dist/languageServerBase.js.map +1 -1
  166. package/dist/languageService/analyzerServiceExecutor.d.ts +1 -1
  167. package/dist/languageService/analyzerServiceExecutor.js +4 -5
  168. package/dist/languageService/analyzerServiceExecutor.js.map +1 -1
  169. package/dist/languageService/autoImporter.d.ts +3 -3
  170. package/dist/languageService/autoImporter.js +2 -1
  171. package/dist/languageService/autoImporter.js.map +1 -1
  172. package/dist/languageService/callHierarchyProvider.js +6 -6
  173. package/dist/languageService/callHierarchyProvider.js.map +1 -1
  174. package/dist/languageService/codeActionProvider.js +43 -42
  175. package/dist/languageService/codeActionProvider.js.map +1 -1
  176. package/dist/languageService/completionProvider.d.ts +2 -2
  177. package/dist/languageService/completionProvider.js +10 -11
  178. package/dist/languageService/completionProvider.js.map +1 -1
  179. package/dist/languageService/definitionProvider.js +3 -3
  180. package/dist/languageService/definitionProvider.js.map +1 -1
  181. package/dist/languageService/documentHighlightProvider.js +2 -2
  182. package/dist/languageService/documentHighlightProvider.js.map +1 -1
  183. package/dist/languageService/documentSymbolCollector.js +3 -3
  184. package/dist/languageService/documentSymbolCollector.js.map +1 -1
  185. package/dist/languageService/documentSymbolProvider.d.ts +3 -2
  186. package/dist/languageService/documentSymbolProvider.js +4 -3
  187. package/dist/languageService/documentSymbolProvider.js.map +1 -1
  188. package/dist/languageService/hoverProvider.js +2 -2
  189. package/dist/languageService/hoverProvider.js.map +1 -1
  190. package/dist/languageService/importSorter.d.ts +2 -2
  191. package/dist/languageService/importSorter.js +1 -1
  192. package/dist/languageService/importSorter.js.map +1 -1
  193. package/dist/languageService/referencesProvider.d.ts +4 -4
  194. package/dist/languageService/referencesProvider.js +4 -4
  195. package/dist/languageService/referencesProvider.js.map +1 -1
  196. package/dist/languageService/signatureHelpProvider.js +4 -4
  197. package/dist/languageService/signatureHelpProvider.js.map +1 -1
  198. package/dist/languageService/symbolIndexer.d.ts +5 -2
  199. package/dist/languageService/symbolIndexer.js +21 -11
  200. package/dist/languageService/symbolIndexer.js.map +1 -1
  201. package/dist/languageService/workspaceSymbolProvider.js +2 -2
  202. package/dist/languageService/workspaceSymbolProvider.js.map +1 -1
  203. package/dist/localization/localize.d.ts +3 -0
  204. package/dist/localization/localize.js +22 -16
  205. package/dist/localization/localize.js.map +1 -1
  206. package/dist/localization/package.nls.cs.json +1 -0
  207. package/dist/localization/package.nls.de.json +1 -0
  208. package/dist/localization/package.nls.en-us.json +1 -0
  209. package/dist/localization/package.nls.es.json +1 -0
  210. package/dist/localization/package.nls.fr.json +1 -0
  211. package/dist/localization/package.nls.it.json +1 -0
  212. package/dist/localization/package.nls.ja.json +1 -0
  213. package/dist/localization/package.nls.ko.json +1 -0
  214. package/dist/localization/package.nls.pl.json +1 -0
  215. package/dist/localization/package.nls.pt-br.json +1 -0
  216. package/dist/localization/package.nls.qps-ploc.json +1 -0
  217. package/dist/localization/package.nls.ru.json +1 -0
  218. package/dist/localization/package.nls.tr.json +1 -0
  219. package/dist/localization/package.nls.zh-cn.json +1 -0
  220. package/dist/localization/package.nls.zh-tw.json +1 -0
  221. package/dist/nodeMain.d.ts +1 -1
  222. package/dist/nodeMain.js +2 -2
  223. package/dist/nodeMain.js.map +1 -1
  224. package/dist/parser/parser.d.ts +7 -4
  225. package/dist/parser/parser.js +7 -5
  226. package/dist/parser/parser.js.map +1 -1
  227. package/dist/pyright.js +6 -6
  228. package/dist/pyright.js.map +1 -1
  229. package/dist/pyrightFileSystem.d.ts +3 -1
  230. package/dist/pyrightFileSystem.js +14 -9
  231. package/dist/pyrightFileSystem.js.map +1 -1
  232. package/dist/readonlyAugmentedFileSystem.d.ts +0 -1
  233. package/dist/readonlyAugmentedFileSystem.js +0 -3
  234. package/dist/readonlyAugmentedFileSystem.js.map +1 -1
  235. package/dist/server.d.ts +4 -2
  236. package/dist/server.js +15 -11
  237. package/dist/server.js.map +1 -1
  238. package/dist/tests/cacheManager.test.js +35 -0
  239. package/dist/tests/cacheManager.test.js.map +1 -1
  240. package/dist/tests/chainedSourceFiles.test.js +18 -18
  241. package/dist/tests/chainedSourceFiles.test.js.map +1 -1
  242. package/dist/tests/completions.test.js +4 -4
  243. package/dist/tests/completions.test.js.map +1 -1
  244. package/dist/tests/config.test.js +19 -14
  245. package/dist/tests/config.test.js.map +1 -1
  246. package/dist/tests/documentSymbolCollector.test.js +2 -3
  247. package/dist/tests/documentSymbolCollector.test.js.map +1 -1
  248. package/dist/tests/envVarUtils.test.js +77 -2
  249. package/dist/tests/envVarUtils.test.js.map +1 -1
  250. package/dist/tests/filesystem.test.js +13 -13
  251. package/dist/tests/filesystem.test.js.map +1 -1
  252. package/dist/tests/fourSlashParser.test.js +10 -10
  253. package/dist/tests/fourSlashParser.test.js.map +1 -1
  254. package/dist/tests/harness/fourslash/fourSlashParser.js +12 -10
  255. package/dist/tests/harness/fourslash/fourSlashParser.js.map +1 -1
  256. package/dist/tests/harness/fourslash/fourSlashTypes.d.ts +1 -0
  257. package/dist/tests/harness/fourslash/fourSlashTypes.js.map +1 -1
  258. package/dist/tests/harness/fourslash/testLanguageService.d.ts +3 -2
  259. package/dist/tests/harness/fourslash/testLanguageService.js +2 -2
  260. package/dist/tests/harness/fourslash/testLanguageService.js.map +1 -1
  261. package/dist/tests/harness/fourslash/testState.d.ts +6 -6
  262. package/dist/tests/harness/fourslash/testState.js +42 -37
  263. package/dist/tests/harness/fourslash/testState.js.map +1 -1
  264. package/dist/tests/harness/fourslash/workspaceEditTestUtils.js +1 -1
  265. package/dist/tests/harness/fourslash/workspaceEditTestUtils.js.map +1 -1
  266. package/dist/tests/harness/testHost.d.ts +7 -0
  267. package/dist/tests/harness/testHost.js +33 -14
  268. package/dist/tests/harness/testHost.js.map +1 -1
  269. package/dist/tests/harness/vfs/factory.d.ts +3 -4
  270. package/dist/tests/harness/vfs/factory.js +7 -6
  271. package/dist/tests/harness/vfs/factory.js.map +1 -1
  272. package/dist/tests/harness/vfs/filesystem.d.ts +5 -3
  273. package/dist/tests/harness/vfs/filesystem.js +22 -15
  274. package/dist/tests/harness/vfs/filesystem.js.map +1 -1
  275. package/dist/tests/importResolver.test.js +35 -34
  276. package/dist/tests/importResolver.test.js.map +1 -1
  277. package/dist/tests/importStatementUtils.test.js +9 -10
  278. package/dist/tests/importStatementUtils.test.js.map +1 -1
  279. package/dist/tests/ipythonMode.test.js +1 -1
  280. package/dist/tests/ipythonMode.test.js.map +1 -1
  281. package/dist/tests/logger.test.js +1 -1
  282. package/dist/tests/logger.test.js.map +1 -1
  283. package/dist/tests/lsp/languageServer.js +6 -5
  284. package/dist/tests/lsp/languageServer.js.map +1 -1
  285. package/dist/tests/lsp/languageServerTestUtils.d.ts +1 -1
  286. package/dist/tests/lsp/languageServerTestUtils.js +15 -10
  287. package/dist/tests/lsp/languageServerTestUtils.js.map +1 -1
  288. package/dist/tests/parseTreeUtils.test.js +1 -2
  289. package/dist/tests/parseTreeUtils.test.js.map +1 -1
  290. package/dist/tests/parser.test.js +14 -14
  291. package/dist/tests/parser.test.js.map +1 -1
  292. package/dist/tests/pyrightFileSystem.test.js +6 -5
  293. package/dist/tests/pyrightFileSystem.test.js.map +1 -1
  294. package/dist/tests/serialization.test.js +5 -5
  295. package/dist/tests/serialization.test.js.map +1 -1
  296. package/dist/tests/service.test.js +16 -25
  297. package/dist/tests/service.test.js.map +1 -1
  298. package/dist/tests/signatureHelp.test.js +1 -1
  299. package/dist/tests/signatureHelp.test.js.map +1 -1
  300. package/dist/tests/sourceFile.test.js +8 -5
  301. package/dist/tests/sourceFile.test.js.map +1 -1
  302. package/dist/tests/sourceMapperUtils.test.js +4 -4
  303. package/dist/tests/sourceMapperUtils.test.js.map +1 -1
  304. package/dist/tests/testState.test.js +5 -5
  305. package/dist/tests/testState.test.js.map +1 -1
  306. package/dist/tests/testStateUtils.js +8 -6
  307. package/dist/tests/testStateUtils.js.map +1 -1
  308. package/dist/tests/testUtils.d.ts +4 -8
  309. package/dist/tests/testUtils.js +9 -10
  310. package/dist/tests/testUtils.js.map +1 -1
  311. package/dist/tests/textEditUtil.test.js +3 -3
  312. package/dist/tests/textEditUtil.test.js.map +1 -1
  313. package/dist/tests/typeEvaluator1.test.js +1 -1
  314. package/dist/tests/typeEvaluator1.test.js.map +1 -1
  315. package/dist/tests/typeEvaluator3.test.js +11 -5
  316. package/dist/tests/typeEvaluator3.test.js.map +1 -1
  317. package/dist/tests/typePrinter.test.js.map +1 -1
  318. package/dist/tests/uri.test.js +220 -199
  319. package/dist/tests/uri.test.js.map +1 -1
  320. package/dist/tests/workspaceEditUtils.test.js +7 -7
  321. package/dist/tests/workspaceEditUtils.test.js.map +1 -1
  322. package/dist/tests/zipfs.test.js +7 -5
  323. package/dist/tests/zipfs.test.js.map +1 -1
  324. package/dist/workspaceFactory.d.ts +15 -6
  325. package/dist/workspaceFactory.js +16 -10
  326. package/dist/workspaceFactory.js.map +1 -1
  327. package/package.json +5 -5
@@ -878,12 +878,23 @@ function isLiteralType(type) {
878
878
  return types_1.TypeBase.isInstance(type) && type.literalValue !== undefined;
879
879
  }
880
880
  exports.isLiteralType = isLiteralType;
881
- function isLiteralTypeOrUnion(type) {
881
+ function isLiteralTypeOrUnion(type, allowNone = false) {
882
882
  if ((0, types_1.isClassInstance)(type)) {
883
+ if (allowNone && isNoneInstance(type)) {
884
+ return true;
885
+ }
883
886
  return type.literalValue !== undefined;
884
887
  }
885
888
  if ((0, types_1.isUnion)(type)) {
886
- return !(0, types_1.findSubtype)(type, (subtype) => !(0, types_1.isClassInstance)(subtype) || subtype.literalValue === undefined);
889
+ return !(0, types_1.findSubtype)(type, (subtype) => {
890
+ if (!(0, types_1.isClassInstance)(subtype)) {
891
+ return true;
892
+ }
893
+ if (isNoneInstance(subtype)) {
894
+ return !allowNone;
895
+ }
896
+ return subtype.literalValue === undefined;
897
+ });
887
898
  }
888
899
  return false;
889
900
  }
@@ -989,10 +1000,10 @@ function isMaybeDescriptorInstance(type, requireSetter = false) {
989
1000
  if (!(0, types_1.isClassInstance)(type)) {
990
1001
  return false;
991
1002
  }
992
- if (!type.details.fields.has('__get__')) {
1003
+ if (!types_1.ClassType.getSymbolTable(type).has('__get__')) {
993
1004
  return false;
994
1005
  }
995
- if (requireSetter && !type.details.fields.has('__set__')) {
1006
+ if (requireSetter && !types_1.ClassType.getSymbolTable(type).has('__set__')) {
996
1007
  return false;
997
1008
  }
998
1009
  return true;
@@ -1216,14 +1227,14 @@ function getProtocolSymbolsRecursive(classType, symbolMap, classFlags = 16384 /*
1216
1227
  getProtocolSymbolsRecursive(baseClass, symbolMap, classFlags, recursionCount + 1);
1217
1228
  }
1218
1229
  });
1219
- classType.details.fields.forEach((symbol, name) => {
1230
+ types_1.ClassType.getSymbolTable(classType).forEach((symbol, name) => {
1220
1231
  if (!symbol.isIgnoredForProtocolMatch()) {
1221
1232
  symbolMap.set(name, {
1222
1233
  symbol,
1223
1234
  classType,
1224
1235
  isInstanceMember: symbol.isInstanceMember(),
1225
1236
  isClassMember: symbol.isClassMember(),
1226
- isClassVar: symbol.isClassVar(),
1237
+ isClassVar: (0, symbolUtils_1.isEffectivelyClassVar)(symbol, /* isDataclass */ false),
1227
1238
  isTypeDeclared: symbol.hasTypedDeclarations(),
1228
1239
  skippedUndeclaredType: false,
1229
1240
  });
@@ -1282,7 +1293,9 @@ function lookUpClassMember(classType, memberName, flags = 0 /* MemberAccessFlags
1282
1293
  if (metaclass && (0, types_1.isClass)(metaclass) && !types_1.ClassType.isBuiltIn(metaclass, 'type')) {
1283
1294
  const metaMemberItr = getClassMemberIterator(metaclass, memberName, 32 /* MemberAccessFlags.SkipClassMembers */);
1284
1295
  const metaMember = (_a = metaMemberItr.next()) === null || _a === void 0 ? void 0 : _a.value;
1285
- if (metaMember) {
1296
+ // If the metaclass defines the member and we didn't hit an Unknown
1297
+ // class in the metaclass MRO, use the metaclass member.
1298
+ if (metaMember && !(0, types_1.isAnyOrUnknown)(metaMember.classType)) {
1286
1299
  // Set the isClassMember to true because it's a class member from the
1287
1300
  // perspective of the classType.
1288
1301
  metaMember.isClassMember = true;
@@ -1344,7 +1357,7 @@ function* getClassMemberIterator(classType, memberName, flags = 0 /* MemberAcces
1344
1357
  if (!(0, types_1.isInstantiableClass)(specializedMroClass)) {
1345
1358
  continue;
1346
1359
  }
1347
- const memberFields = specializedMroClass.details.fields;
1360
+ const memberFields = types_1.ClassType.getSymbolTable(specializedMroClass);
1348
1361
  // Look at instance members first if requested.
1349
1362
  if ((flags & 16 /* MemberAccessFlags.SkipInstanceMembers */) === 0) {
1350
1363
  const symbol = memberFields.get(memberName);
@@ -1355,7 +1368,7 @@ function* getClassMemberIterator(classType, memberName, flags = 0 /* MemberAcces
1355
1368
  symbol,
1356
1369
  isInstanceMember: true,
1357
1370
  isClassMember: symbol.isClassMember(),
1358
- isClassVar: symbol.isClassVar(),
1371
+ isClassVar: (0, symbolUtils_1.isEffectivelyClassVar)(symbol, types_1.ClassType.isDataClass(specializedMroClass)),
1359
1372
  classType: specializedMroClass,
1360
1373
  isTypeDeclared: hasDeclaredType,
1361
1374
  skippedUndeclaredType,
@@ -1393,7 +1406,7 @@ function* getClassMemberIterator(classType, memberName, flags = 0 /* MemberAcces
1393
1406
  symbol,
1394
1407
  isInstanceMember,
1395
1408
  isClassMember,
1396
- isClassVar: symbol.isClassVar(),
1409
+ isClassVar: (0, symbolUtils_1.isEffectivelyClassVar)(symbol, isDataclass),
1397
1410
  classType: specializedMroClass,
1398
1411
  isTypeDeclared: hasDeclaredType,
1399
1412
  skippedUndeclaredType,
@@ -1475,14 +1488,14 @@ function getClassFieldsRecursive(classType) {
1475
1488
  types_1.ClassType.getReverseMro(classType).forEach((mroClass) => {
1476
1489
  const specializedMroClass = partiallySpecializeType(mroClass, classType);
1477
1490
  if ((0, types_1.isClass)(specializedMroClass)) {
1478
- specializedMroClass.details.fields.forEach((symbol, name) => {
1491
+ types_1.ClassType.getSymbolTable(specializedMroClass).forEach((symbol, name) => {
1479
1492
  if (!symbol.isIgnoredForProtocolMatch() && symbol.hasTypedDeclarations()) {
1480
1493
  memberMap.set(name, {
1481
1494
  classType: specializedMroClass,
1482
1495
  symbol,
1483
1496
  isInstanceMember: symbol.isInstanceMember(),
1484
1497
  isClassMember: symbol.isClassMember(),
1485
- isClassVar: symbol.isClassVar(),
1498
+ isClassVar: (0, symbolUtils_1.isEffectivelyClassVar)(symbol, types_1.ClassType.isDataClass(specializedMroClass)),
1486
1499
  isTypeDeclared: true,
1487
1500
  skippedUndeclaredType: false,
1488
1501
  });
@@ -1500,8 +1513,11 @@ function getClassFieldsRecursive(classType) {
1500
1513
  exports.getClassFieldsRecursive = getClassFieldsRecursive;
1501
1514
  // Combines two lists of type var types, maintaining the combined order
1502
1515
  // but removing any duplicates.
1503
- function addTypeVarsToListIfUnique(list1, list2) {
1516
+ function addTypeVarsToListIfUnique(list1, list2, typeVarScopeId) {
1504
1517
  for (const type2 of list2) {
1518
+ if (typeVarScopeId && type2.scopeId !== typeVarScopeId) {
1519
+ continue;
1520
+ }
1505
1521
  if (!list1.find((type1) => (0, types_1.isTypeSame)(convertToInstance(type1), convertToInstance(type2)))) {
1506
1522
  list1.push(type2);
1507
1523
  }
@@ -2006,7 +2022,7 @@ function getMembersForClass(classType, symbolTable, includeInstanceVars) {
2006
2022
  if ((0, types_1.isInstantiableClass)(mroClass)) {
2007
2023
  // Add any new member variables from this class.
2008
2024
  const isClassTypedDict = types_1.ClassType.isTypedDictClass(mroClass);
2009
- mroClass.details.fields.forEach((symbol, name) => {
2025
+ types_1.ClassType.getSymbolTable(mroClass).forEach((symbol, name) => {
2010
2026
  if (symbol.isClassMember() || (includeInstanceVars && symbol.isInstanceMember())) {
2011
2027
  if (!isClassTypedDict || !(0, symbolUtils_1.isTypedDictMemberAccessedThroughIndex)(symbol)) {
2012
2028
  if (!symbol.isInitVar()) {
@@ -2031,7 +2047,7 @@ function getMembersForClass(classType, symbolTable, includeInstanceVars) {
2031
2047
  if (metaclass && (0, types_1.isInstantiableClass)(metaclass)) {
2032
2048
  for (const mroClass of metaclass.details.mro) {
2033
2049
  if ((0, types_1.isInstantiableClass)(mroClass)) {
2034
- mroClass.details.fields.forEach((symbol, name) => {
2050
+ types_1.ClassType.getSymbolTable(mroClass).forEach((symbol, name) => {
2035
2051
  const existingSymbol = symbolTable.get(name);
2036
2052
  if (!existingSymbol) {
2037
2053
  symbolTable.set(name, symbol);
@@ -3362,11 +3378,8 @@ class ApplySolvedTypeVarsTransformer extends TypeVarTransformer {
3362
3378
  });
3363
3379
  }
3364
3380
  }
3365
- if ((0, types_1.isTypeVar)(replacement) &&
3366
- typeVar.isVariadicInUnion &&
3367
- replacement.details.isVariadic &&
3368
- !replacement.isVariadicInUnion) {
3369
- return types_1.TypeVarType.cloneForUnpacked(replacement, /* isInUnion */ true);
3381
+ if ((0, types_1.isTypeVar)(replacement) && typeVar.isVariadicUnpacked && replacement.details.isVariadic) {
3382
+ return types_1.TypeVarType.cloneForUnpacked(replacement, typeVar.isVariadicInUnion);
3370
3383
  }
3371
3384
  return replacement;
3372
3385
  }