@zzzen/pyright-internal 1.2.0-dev.20230827 → 1.2.0-dev.20230910

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 (191) hide show
  1. package/dist/analyzer/binder.js +4 -1
  2. package/dist/analyzer/binder.js.map +1 -1
  3. package/dist/analyzer/checker.js +40 -14
  4. package/dist/analyzer/checker.js.map +1 -1
  5. package/dist/analyzer/codeFlowEngine.js +1 -2
  6. package/dist/analyzer/codeFlowEngine.js.map +1 -1
  7. package/dist/analyzer/constraintSolver.js +5 -0
  8. package/dist/analyzer/constraintSolver.js.map +1 -1
  9. package/dist/analyzer/constructors.js +16 -7
  10. package/dist/analyzer/constructors.js.map +1 -1
  11. package/dist/analyzer/declarationUtils.js +2 -0
  12. package/dist/analyzer/declarationUtils.js.map +1 -1
  13. package/dist/analyzer/decorators.js +16 -1
  14. package/dist/analyzer/decorators.js.map +1 -1
  15. package/dist/analyzer/deprecatedSymbols.js +13 -2
  16. package/dist/analyzer/deprecatedSymbols.js.map +1 -1
  17. package/dist/analyzer/importResolver.d.ts +6 -4
  18. package/dist/analyzer/importResolver.js +20 -18
  19. package/dist/analyzer/importResolver.js.map +1 -1
  20. package/dist/analyzer/namedTuples.js +1 -1
  21. package/dist/analyzer/namedTuples.js.map +1 -1
  22. package/dist/analyzer/packageTypeVerifier.d.ts +3 -3
  23. package/dist/analyzer/packageTypeVerifier.js +8 -11
  24. package/dist/analyzer/packageTypeVerifier.js.map +1 -1
  25. package/dist/analyzer/parentDirectoryCache.js +1 -1
  26. package/dist/analyzer/parentDirectoryCache.js.map +1 -1
  27. package/dist/analyzer/program.d.ts +9 -22
  28. package/dist/analyzer/program.js +117 -105
  29. package/dist/analyzer/program.js.map +1 -1
  30. package/dist/analyzer/protocols.js +3 -1
  31. package/dist/analyzer/protocols.js.map +1 -1
  32. package/dist/analyzer/pythonPathUtils.js +10 -8
  33. package/dist/analyzer/pythonPathUtils.js.map +1 -1
  34. package/dist/analyzer/service.d.ts +6 -3
  35. package/dist/analyzer/service.js +40 -20
  36. package/dist/analyzer/service.js.map +1 -1
  37. package/dist/analyzer/sourceFile.d.ts +6 -4
  38. package/dist/analyzer/sourceFile.js +9 -16
  39. package/dist/analyzer/sourceFile.js.map +1 -1
  40. package/dist/analyzer/sourceFileInfo.d.ts +62 -0
  41. package/dist/analyzer/sourceFileInfo.js +145 -0
  42. package/dist/analyzer/sourceFileInfo.js.map +1 -0
  43. package/dist/analyzer/sourceMapper.d.ts +1 -1
  44. package/dist/analyzer/typeDocStringUtils.js +1 -1
  45. package/dist/analyzer/typeEvaluator.js +361 -262
  46. package/dist/analyzer/typeEvaluator.js.map +1 -1
  47. package/dist/analyzer/typeEvaluatorTypes.d.ts +10 -8
  48. package/dist/analyzer/typeEvaluatorTypes.js +11 -8
  49. package/dist/analyzer/typeEvaluatorTypes.js.map +1 -1
  50. package/dist/analyzer/typeGuards.js +116 -20
  51. package/dist/analyzer/typeGuards.js.map +1 -1
  52. package/dist/analyzer/typeUtils.d.ts +6 -4
  53. package/dist/analyzer/typeUtils.js +104 -63
  54. package/dist/analyzer/typeUtils.js.map +1 -1
  55. package/dist/analyzer/typeWalker.js +1 -1
  56. package/dist/analyzer/typeWalker.js.map +1 -1
  57. package/dist/analyzer/types.d.ts +1 -0
  58. package/dist/analyzer/types.js +8 -0
  59. package/dist/analyzer/types.js.map +1 -1
  60. package/dist/backgroundAnalysis.d.ts +1 -2
  61. package/dist/backgroundAnalysis.js +2 -2
  62. package/dist/backgroundAnalysis.js.map +1 -1
  63. package/dist/backgroundAnalysisBase.d.ts +1 -2
  64. package/dist/backgroundAnalysisBase.js +4 -4
  65. package/dist/backgroundAnalysisBase.js.map +1 -1
  66. package/dist/backgroundThreadBase.d.ts +1 -1
  67. package/dist/backgroundThreadBase.js +1 -0
  68. package/dist/backgroundThreadBase.js.map +1 -1
  69. package/dist/common/commandLineOptions.d.ts +1 -0
  70. package/dist/common/commandLineOptions.js.map +1 -1
  71. package/dist/common/configOptions.d.ts +4 -1
  72. package/dist/common/configOptions.js +18 -5
  73. package/dist/common/configOptions.js.map +1 -1
  74. package/dist/common/console.d.ts +3 -0
  75. package/dist/common/console.js +8 -1
  76. package/dist/common/console.js.map +1 -1
  77. package/dist/common/extensibility.d.ts +10 -1
  78. package/dist/common/extensibility.js.map +1 -1
  79. package/dist/common/fileSystem.d.ts +3 -0
  80. package/dist/common/fileSystem.js +8 -1
  81. package/dist/common/fileSystem.js.map +1 -1
  82. package/dist/common/pathUtils.d.ts +2 -15
  83. package/dist/common/pathUtils.js +9 -84
  84. package/dist/common/pathUtils.js.map +1 -1
  85. package/dist/common/realFileSystem.js +22 -13
  86. package/dist/common/realFileSystem.js.map +1 -1
  87. package/dist/common/serviceProvider.d.ts +1 -4
  88. package/dist/common/serviceProvider.js +4 -4
  89. package/dist/common/serviceProvider.js.map +1 -1
  90. package/dist/common/serviceProviderExtensions.d.ts +10 -4
  91. package/dist/common/serviceProviderExtensions.js +43 -1
  92. package/dist/common/serviceProviderExtensions.js.map +1 -1
  93. package/dist/languageServerBase.d.ts +9 -9
  94. package/dist/languageServerBase.js +5 -4
  95. package/dist/languageServerBase.js.map +1 -1
  96. package/dist/languageService/analyzerServiceExecutor.js +3 -2
  97. package/dist/languageService/analyzerServiceExecutor.js.map +1 -1
  98. package/dist/languageService/completionProvider.d.ts +7 -5
  99. package/dist/languageService/completionProvider.js +190 -176
  100. package/dist/languageService/completionProvider.js.map +1 -1
  101. package/dist/languageService/completionProviderUtils.d.ts +1 -1
  102. package/dist/languageService/completionProviderUtils.js +1 -1
  103. package/dist/languageService/completionProviderUtils.js.map +1 -1
  104. package/dist/localization/localize.d.ts +14 -0
  105. package/dist/localization/localize.js +8 -0
  106. package/dist/localization/localize.js.map +1 -1
  107. package/dist/localization/package.nls.cs.json +26 -17
  108. package/dist/localization/package.nls.de.json +26 -17
  109. package/dist/localization/package.nls.en-us.json +9 -2
  110. package/dist/localization/package.nls.es.json +26 -17
  111. package/dist/localization/package.nls.fr.json +26 -17
  112. package/dist/localization/package.nls.it.json +26 -17
  113. package/dist/localization/package.nls.ja.json +26 -17
  114. package/dist/localization/package.nls.ko.json +26 -17
  115. package/dist/localization/package.nls.pl.json +26 -17
  116. package/dist/localization/package.nls.pt-br.json +26 -17
  117. package/dist/localization/package.nls.qps-ploc.json +14 -5
  118. package/dist/localization/package.nls.ru.json +26 -17
  119. package/dist/localization/package.nls.tr.json +26 -17
  120. package/dist/localization/package.nls.zh-cn.json +26 -17
  121. package/dist/localization/package.nls.zh-tw.json +26 -17
  122. package/dist/pyright.js +6 -4
  123. package/dist/pyright.js.map +1 -1
  124. package/dist/server.d.ts +2 -2
  125. package/dist/server.js +8 -10
  126. package/dist/server.js.map +1 -1
  127. package/dist/tests/chainedSourceFiles.test.js +4 -1
  128. package/dist/tests/chainedSourceFiles.test.js.map +1 -1
  129. package/dist/tests/checker.test.js +11 -11
  130. package/dist/tests/checker.test.js.map +1 -1
  131. package/dist/tests/completions.test.js +57 -0
  132. package/dist/tests/completions.test.js.map +1 -1
  133. package/dist/tests/config.test.js +28 -22
  134. package/dist/tests/config.test.js.map +1 -1
  135. package/dist/tests/fourslash/completions.dictionary.keys.complex.fourslash.js +5 -5
  136. package/dist/tests/fourslash/completions.dictionary.keys.complex.fourslash.js.map +1 -1
  137. package/dist/tests/fourslash/completions.dictionary.keys.expression.fourslash.js +11 -9
  138. package/dist/tests/fourslash/completions.dictionary.keys.expression.fourslash.js.map +1 -1
  139. package/dist/tests/fourslash/completions.dictionary.keys.literalTypes.fourslash.js +14 -14
  140. package/dist/tests/fourslash/completions.dictionary.keys.literalTypes.fourslash.js.map +1 -1
  141. package/dist/tests/fourslash/completions.dictionary.keys.simple.fourslash.js +12 -12
  142. package/dist/tests/fourslash/completions.dictionary.keys.simple.fourslash.js.map +1 -1
  143. package/dist/tests/fourslash/completions.dictionary.keys.stringLiterals.fourslash.js +9 -9
  144. package/dist/tests/fourslash/completions.dictionary.keys.stringLiterals.fourslash.js.map +1 -1
  145. package/dist/tests/fourslash/completions.dictionary.keys.symbols.fourslash.js +3 -3
  146. package/dist/tests/fourslash/completions.dictionary.keys.symbols.fourslash.js.map +1 -1
  147. package/dist/tests/fourslash/completions.fstring.stringLiteral.fourslash.js +3 -3
  148. package/dist/tests/fourslash/completions.fstring.stringLiteral.fourslash.js.map +1 -1
  149. package/dist/tests/fourslash/completions.indexer.keys.getitem.fourslash.js +4 -4
  150. package/dist/tests/fourslash/completions.indexer.keys.getitem.fourslash.js.map +1 -1
  151. package/dist/tests/fourslash/fourslash.d.ts +1 -0
  152. package/dist/tests/fourslash/missingModuleSource.fourslash.js +4 -1
  153. package/dist/tests/fourslash/missingModuleSource.fourslash.js.map +1 -1
  154. package/dist/tests/harness/fourslash/testLanguageService.js +4 -1
  155. package/dist/tests/harness/fourslash/testLanguageService.js.map +1 -1
  156. package/dist/tests/harness/fourslash/testState.Consts.d.ts +1 -0
  157. package/dist/tests/harness/fourslash/testState.Consts.js +2 -0
  158. package/dist/tests/harness/fourslash/testState.Consts.js.map +1 -1
  159. package/dist/tests/harness/fourslash/testState.d.ts +2 -0
  160. package/dist/tests/harness/fourslash/testState.js +9 -2
  161. package/dist/tests/harness/fourslash/testState.js.map +1 -1
  162. package/dist/tests/harness/vfs/filesystem.js +10 -6
  163. package/dist/tests/harness/vfs/filesystem.js.map +1 -1
  164. package/dist/tests/importResolver.test.js +14 -9
  165. package/dist/tests/importResolver.test.js.map +1 -1
  166. package/dist/tests/localizer.test.js +1 -1
  167. package/dist/tests/localizer.test.js.map +1 -1
  168. package/dist/tests/pathUtils.test.js +13 -21
  169. package/dist/tests/pathUtils.test.js.map +1 -1
  170. package/dist/tests/service.test.js +55 -0
  171. package/dist/tests/service.test.js.map +1 -1
  172. package/dist/tests/sourceFile.test.js +4 -2
  173. package/dist/tests/sourceFile.test.js.map +1 -1
  174. package/dist/tests/testState.test.js +1 -1
  175. package/dist/tests/testState.test.js.map +1 -1
  176. package/dist/tests/testUtils.js +3 -5
  177. package/dist/tests/testUtils.js.map +1 -1
  178. package/dist/tests/typeEvaluator1.test.js +2 -2
  179. package/dist/tests/typeEvaluator2.test.js +5 -1
  180. package/dist/tests/typeEvaluator2.test.js.map +1 -1
  181. package/dist/tests/typeEvaluator3.test.js +8 -4
  182. package/dist/tests/typeEvaluator3.test.js.map +1 -1
  183. package/dist/tests/typeEvaluator4.test.js +4 -0
  184. package/dist/tests/typeEvaluator4.test.js.map +1 -1
  185. package/dist/tests/typeEvaluator5.test.js +1 -1
  186. package/dist/tests/workspaceEditUtils.test.js +24 -20
  187. package/dist/tests/workspaceEditUtils.test.js.map +1 -1
  188. package/dist/workspaceFactory.d.ts +1 -0
  189. package/dist/workspaceFactory.js +7 -4
  190. package/dist/workspaceFactory.js.map +1 -1
  191. package/package.json +1 -1
@@ -1048,6 +1048,7 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
1048
1048
  // Type stub found, but source is missing.
1049
1049
  this._evaluator.addDiagnostic(this._fileInfo.diagnosticRuleSet.reportMissingModuleSource, diagnosticRules_1.DiagnosticRule.reportMissingModuleSource, localize_1.Localizer.Diagnostic.importSourceResolveFailure().format({
1050
1050
  importName: importResult.importName,
1051
+ venv: this._fileInfo.executionEnvironment.name,
1051
1052
  }), node);
1052
1053
  }
1053
1054
  _validateConditionalIsBool(node) {
@@ -1104,15 +1105,22 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
1104
1105
  }
1105
1106
  const exprTypeResult = this._evaluator.getTypeOfExpression(expression);
1106
1107
  let isExprFunction = true;
1108
+ let isCoroutine = false;
1107
1109
  (0, typeUtils_1.doForEachSubtype)(exprTypeResult.type, (subtype) => {
1108
1110
  subtype = this._evaluator.makeTopLevelTypeVarsConcrete(subtype);
1109
1111
  if (!(0, types_1.isFunction)(subtype) && !(0, types_1.isOverloadedFunction)(subtype)) {
1110
1112
  isExprFunction = false;
1111
1113
  }
1114
+ if ((0, types_1.isClassInstance)(subtype) && types_1.ClassType.isBuiltIn(subtype, 'Coroutine')) {
1115
+ isCoroutine = true;
1116
+ }
1112
1117
  });
1113
1118
  if (isExprFunction) {
1114
1119
  this._evaluator.addDiagnostic(this._fileInfo.diagnosticRuleSet.reportUnnecessaryComparison, diagnosticRules_1.DiagnosticRule.reportUnnecessaryComparison, localize_1.Localizer.Diagnostic.functionInConditionalExpression(), expression);
1115
1120
  }
1121
+ if (isCoroutine) {
1122
+ this._evaluator.addDiagnostic(this._fileInfo.diagnosticRuleSet.reportUnnecessaryComparison, diagnosticRules_1.DiagnosticRule.reportUnnecessaryComparison, localize_1.Localizer.Diagnostic.coroutineInConditionalExpression(), expression);
1123
+ }
1116
1124
  }
1117
1125
  _reportUnusedExpression(node) {
1118
1126
  var _a, _b;
@@ -1989,18 +1997,24 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
1989
1997
  // is implicitly initialized by the synthesized `__init__` method and
1990
1998
  // therefore has an implied assignment.
1991
1999
  let isImplicitlyAssigned = false;
2000
+ // Is this a class variable within a protocol class? If so, it can
2001
+ // be marked final without providing a value.
2002
+ let isProtocolClass = false;
1992
2003
  if (symbol.isClassMember() && !symbol.isClassVar()) {
1993
2004
  const containingClass = ParseTreeUtils.getEnclosingClass(firstDecl.node, /* stopAtFunction */ true);
1994
2005
  if (containingClass) {
1995
2006
  const classType = this._evaluator.getTypeOfClass(containingClass);
1996
- if (classType &&
1997
- (0, types_1.isClass)(classType.decoratedType) &&
1998
- types_1.ClassType.isDataClass(classType.decoratedType)) {
1999
- isImplicitlyAssigned = true;
2007
+ if (classType && (0, types_1.isClass)(classType.decoratedType)) {
2008
+ if (types_1.ClassType.isDataClass(classType.decoratedType)) {
2009
+ isImplicitlyAssigned = true;
2010
+ }
2011
+ if (types_1.ClassType.isProtocolClass(classType.decoratedType)) {
2012
+ isProtocolClass = true;
2013
+ }
2000
2014
  }
2001
2015
  }
2002
2016
  }
2003
- if (!isImplicitlyAssigned) {
2017
+ if (!isImplicitlyAssigned && !isProtocolClass) {
2004
2018
  this._evaluator.addError(localize_1.Localizer.Diagnostic.finalUnassigned().format({ name }), firstDecl.node);
2005
2019
  }
2006
2020
  }
@@ -2491,7 +2505,7 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
2491
2505
  // derives from an unknown type. In this case, we'll add an
2492
2506
  // unknown type into the filtered type list to avoid any
2493
2507
  // false positives.
2494
- const isClassRelationshipIndeterminate = filterIsSubclass && filterIsSubclass && !types_1.ClassType.isSameGenericClass(varType, filterType);
2508
+ const isClassRelationshipIndeterminate = filterIsSuperclass && filterIsSubclass && !types_1.ClassType.isSameGenericClass(varType, filterType);
2495
2509
  if (isClassRelationshipIndeterminate) {
2496
2510
  filteredTypes.push(types_1.UnknownType.create());
2497
2511
  }
@@ -2627,6 +2641,22 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
2627
2641
  }
2628
2642
  let errorMessage;
2629
2643
  let deprecatedMessage;
2644
+ function getDeprecatedMessageForFunction(functionType) {
2645
+ if (functionType.details.declaration &&
2646
+ functionType.details.declaration.node.nodeType === 28 /* Function */) {
2647
+ const containingClass = ParseTreeUtils.getEnclosingClass(functionType.details.declaration.node,
2648
+ /* stopAtFunction */ true);
2649
+ if (containingClass) {
2650
+ return localize_1.Localizer.Diagnostic.deprecatedMethod().format({
2651
+ name: functionType.details.name || '<anonymous>',
2652
+ className: containingClass.name.value,
2653
+ });
2654
+ }
2655
+ }
2656
+ return localize_1.Localizer.Diagnostic.deprecatedFunction().format({
2657
+ name: functionType.details.name,
2658
+ });
2659
+ }
2630
2660
  function getDeprecatedMessageForOverloadedCall(evaluator, type) {
2631
2661
  // Determine if the node is part of a call expression. If so,
2632
2662
  // we can determine which overload(s) were used to satisfy
@@ -2642,9 +2672,7 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
2642
2672
  if (overload.details.deprecatedMessage !== undefined) {
2643
2673
  if (node.value === overload.details.name) {
2644
2674
  deprecatedMessage = overload.details.deprecatedMessage;
2645
- errorMessage = localize_1.Localizer.Diagnostic.deprecatedFunction().format({
2646
- name: overload.details.name,
2647
- });
2675
+ errorMessage = getDeprecatedMessageForFunction(overload);
2648
2676
  }
2649
2677
  else if ((0, types_1.isInstantiableClass)(type) && overload.details.name === '__init__') {
2650
2678
  deprecatedMessage = overload.details.deprecatedMessage;
@@ -2673,9 +2701,7 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
2673
2701
  else if ((0, types_1.isFunction)(subtype)) {
2674
2702
  if (subtype.details.deprecatedMessage !== undefined && node.value === subtype.details.name) {
2675
2703
  deprecatedMessage = subtype.details.deprecatedMessage;
2676
- errorMessage = localize_1.Localizer.Diagnostic.deprecatedFunction().format({
2677
- name: subtype.details.name || '<anonymous>',
2678
- });
2704
+ errorMessage = getDeprecatedMessageForFunction(subtype);
2679
2705
  }
2680
2706
  }
2681
2707
  else if ((0, types_1.isOverloadedFunction)(subtype)) {
@@ -3177,7 +3203,7 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
3177
3203
  if (!types_1.ClassType.isDataClass(classType)) {
3178
3204
  return;
3179
3205
  }
3180
- const postInitMember = (0, typeUtils_1.lookUpClassMember)(classType, '__post_init__', 2 /* SkipBaseClasses */ | 16 /* DeclaredTypesOnly */);
3206
+ const postInitMember = (0, typeUtils_1.lookUpClassMember)(classType, '__post_init__', 2 /* SkipBaseClasses */ | 32 /* DeclaredTypesOnly */);
3181
3207
  // If there's no __post_init__ method, there's nothing to check.
3182
3208
  if (!postInitMember) {
3183
3209
  return;
@@ -3507,7 +3533,7 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
3507
3533
  // __call__ method, skip this check.
3508
3534
  const metaclass = newMember.classType.details.effectiveMetaclass;
3509
3535
  if (metaclass && (0, types_1.isClass)(metaclass) && !types_1.ClassType.isBuiltIn(metaclass, 'type')) {
3510
- const callMethod = (0, typeUtils_1.lookUpClassMember)(metaclass, '__call__', 32 /* SkipTypeBaseClass */ | 8 /* SkipInstanceVariables */);
3536
+ const callMethod = (0, typeUtils_1.lookUpClassMember)(metaclass, '__call__', 64 /* SkipTypeBaseClass */ | 8 /* SkipInstanceVariables */);
3511
3537
  if (callMethod) {
3512
3538
  return;
3513
3539
  }