@zzzen/pyright-internal 1.2.0-dev.20260906 → 1.2.0-dev.20260920

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 (135) hide show
  1. package/dist/analyzer/checker.d.ts +2 -1
  2. package/dist/analyzer/checker.js +80 -5
  3. package/dist/analyzer/checker.js.map +1 -1
  4. package/dist/analyzer/constraintSolver.js +10 -2
  5. package/dist/analyzer/constraintSolver.js.map +1 -1
  6. package/dist/analyzer/constructors.js +7 -18
  7. package/dist/analyzer/constructors.js.map +1 -1
  8. package/dist/analyzer/decorators.js +45 -2
  9. package/dist/analyzer/decorators.js.map +1 -1
  10. package/dist/analyzer/program.js +1 -0
  11. package/dist/analyzer/program.js.map +1 -1
  12. package/dist/analyzer/sourceFileInfo.d.ts +0 -1
  13. package/dist/analyzer/sourceFileInfo.js +0 -3
  14. package/dist/analyzer/sourceFileInfo.js.map +1 -1
  15. package/dist/analyzer/typeCacheUtils.d.ts +1 -0
  16. package/dist/analyzer/typeCacheUtils.js +28 -1
  17. package/dist/analyzer/typeCacheUtils.js.map +1 -1
  18. package/dist/analyzer/typeEvaluator.d.ts +1 -1
  19. package/dist/analyzer/typeEvaluator.js +63 -389
  20. package/dist/analyzer/typeEvaluator.js.map +1 -1
  21. package/dist/analyzer/typeEvaluatorTypes.d.ts +1 -0
  22. package/dist/analyzer/typedDicts.js +3 -7
  23. package/dist/analyzer/typedDicts.js.map +1 -1
  24. package/dist/analyzer/types.js +7 -0
  25. package/dist/analyzer/types.js.map +1 -1
  26. package/dist/common/configOptions.d.ts +1 -0
  27. package/dist/common/configOptions.js +16 -0
  28. package/dist/common/configOptions.js.map +1 -1
  29. package/dist/common/envVarUtils.js +3 -3
  30. package/dist/common/envVarUtils.js.map +1 -1
  31. package/dist/common/extensibility.d.ts +0 -1
  32. package/dist/common/extensibility.js.map +1 -1
  33. package/dist/common/fileSystem.d.ts +1 -0
  34. package/dist/common/fileSystem.js.map +1 -1
  35. package/dist/common/realFileSystem.d.ts +1 -0
  36. package/dist/common/realFileSystem.js +12 -0
  37. package/dist/common/realFileSystem.js.map +1 -1
  38. package/dist/fileSystemMapping.d.ts +1 -1
  39. package/dist/fileSystemMapping.js +3 -0
  40. package/dist/fileSystemMapping.js.map +1 -1
  41. package/dist/languageService/completionProvider.d.ts +2 -1
  42. package/dist/languageService/completionProvider.js +4 -1
  43. package/dist/languageService/completionProvider.js.map +1 -1
  44. package/dist/localization/package.nls.cs.json +1 -0
  45. package/dist/localization/package.nls.de.json +1 -0
  46. package/dist/localization/package.nls.es.json +1 -0
  47. package/dist/localization/package.nls.fr.json +1 -0
  48. package/dist/localization/package.nls.it.json +1 -0
  49. package/dist/localization/package.nls.ja.json +1 -0
  50. package/dist/localization/package.nls.ko.json +1 -0
  51. package/dist/localization/package.nls.pl.json +1 -0
  52. package/dist/localization/package.nls.pt-br.json +1 -0
  53. package/dist/localization/package.nls.qps-ploc.json +1 -0
  54. package/dist/localization/package.nls.ru.json +1 -0
  55. package/dist/localization/package.nls.tr.json +1 -0
  56. package/dist/localization/package.nls.zh-cn.json +1 -0
  57. package/dist/localization/package.nls.zh-tw.json +1 -0
  58. package/dist/readonlyAugmentedFileSystem.d.ts +1 -0
  59. package/dist/readonlyAugmentedFileSystem.js +3 -0
  60. package/dist/readonlyAugmentedFileSystem.js.map +1 -1
  61. package/dist/tests/checker.test.js +8 -0
  62. package/dist/tests/checker.test.js.map +1 -1
  63. package/dist/tests/envVarUtils.test.js +16 -0
  64. package/dist/tests/envVarUtils.test.js.map +1 -1
  65. package/dist/tests/evaluationTrace.integration.test.d.ts +1 -0
  66. package/dist/tests/evaluationTrace.integration.test.js +266 -0
  67. package/dist/tests/evaluationTrace.integration.test.js.map +1 -0
  68. package/dist/tests/evaluationTrace.test.d.ts +1 -0
  69. package/dist/tests/evaluationTrace.test.js +422 -0
  70. package/dist/tests/evaluationTrace.test.js.map +1 -0
  71. package/dist/tests/evaluationTrace.viewer.test.d.ts +1 -0
  72. package/dist/tests/evaluationTrace.viewer.test.js +529 -0
  73. package/dist/tests/evaluationTrace.viewer.test.js.map +1 -0
  74. package/dist/tests/fileSystemMapping.test.js +3 -0
  75. package/dist/tests/fileSystemMapping.test.js.map +1 -1
  76. package/dist/tests/harness/vfs/filesystem.d.ts +1 -0
  77. package/dist/tests/harness/vfs/filesystem.js +3 -0
  78. package/dist/tests/harness/vfs/filesystem.js.map +1 -1
  79. package/dist/tests/importResolver.test.js +5 -0
  80. package/dist/tests/importResolver.test.js.map +1 -1
  81. package/dist/tests/mypyPrimerAnalysis.test.d.ts +1 -0
  82. package/dist/tests/mypyPrimerAnalysis.test.js +1779 -0
  83. package/dist/tests/mypyPrimerAnalysis.test.js.map +1 -0
  84. package/dist/tests/mypyPrimerMcp.test.d.ts +1 -0
  85. package/dist/tests/mypyPrimerMcp.test.js +186 -0
  86. package/dist/tests/mypyPrimerMcp.test.js.map +1 -0
  87. package/dist/tests/typeCacheUtils.test.js +15 -0
  88. package/dist/tests/typeCacheUtils.test.js.map +1 -1
  89. package/dist/tests/typeEvaluator1.test.js +2 -2
  90. package/dist/tests/typeEvaluator6.test.js +155 -3
  91. package/dist/tests/typeEvaluator6.test.js.map +1 -1
  92. package/dist/tests/typeEvaluator7.test.js +4 -0
  93. package/dist/tests/typeEvaluator7.test.js.map +1 -1
  94. package/dist/tests/typeUtils.test.js +15 -0
  95. package/dist/tests/typeUtils.test.js.map +1 -1
  96. package/dist/trace/capture.d.ts +31 -0
  97. package/dist/trace/capture.js +272 -0
  98. package/dist/trace/capture.js.map +1 -0
  99. package/dist/trace/cli.d.ts +1 -0
  100. package/dist/trace/cli.js +196 -0
  101. package/dist/trace/cli.js.map +1 -0
  102. package/dist/trace/nativeAdapter.d.ts +16 -0
  103. package/dist/trace/nativeAdapter.js +422 -0
  104. package/dist/trace/nativeAdapter.js.map +1 -0
  105. package/dist/trace/nativeBridge.d.ts +46 -0
  106. package/dist/trace/nativeBridge.js +416 -0
  107. package/dist/trace/nativeBridge.js.map +1 -0
  108. package/dist/trace/reader.d.ts +83 -0
  109. package/dist/trace/reader.js +296 -0
  110. package/dist/trace/reader.js.map +1 -0
  111. package/dist/trace/recorder.d.ts +59 -0
  112. package/dist/trace/recorder.js +303 -0
  113. package/dist/trace/recorder.js.map +1 -0
  114. package/dist/trace/runtimeLoader.d.ts +23 -0
  115. package/dist/trace/runtimeLoader.js +172 -0
  116. package/dist/trace/runtimeLoader.js.map +1 -0
  117. package/dist/trace/viewerAssets.d.ts +2 -0
  118. package/dist/trace/viewerAssets.js +76 -0
  119. package/dist/trace/viewerAssets.js.map +1 -0
  120. package/dist/trace/viewerClient.d.ts +1 -0
  121. package/dist/trace/viewerClient.js +485 -0
  122. package/dist/trace/viewerClient.js.map +1 -0
  123. package/dist/trace/viewerModel.d.ts +308 -0
  124. package/dist/trace/viewerModel.js +524 -0
  125. package/dist/trace/viewerModel.js.map +1 -0
  126. package/dist/trace/viewerServer.d.ts +7 -0
  127. package/dist/trace/viewerServer.js +185 -0
  128. package/dist/trace/viewerServer.js.map +1 -0
  129. package/dist/typeServer/typeServerFileSystem.d.ts +1 -0
  130. package/dist/typeServer/typeServerFileSystem.js +3 -0
  131. package/dist/typeServer/typeServerFileSystem.js.map +1 -1
  132. package/dist/typeServer/virtualFileOverlayFileSystem.d.ts +1 -0
  133. package/dist/typeServer/virtualFileOverlayFileSystem.js +3 -0
  134. package/dist/typeServer/virtualFileOverlayFileSystem.js.map +1 -1
  135. package/package.json +4 -2
@@ -1,4 +1,4 @@
1
- import { AssertNode, AssignmentExpressionNode, AssignmentNode, AugmentedAssignmentNode, AwaitNode, BinaryOperationNode, CallNode, CaseNode, ClassNode, ComprehensionIfNode, ComprehensionNode, DelNode, DictionaryNode, ErrorNode, ExceptNode, ForNode, FormatStringNode, FunctionNode, GlobalNode, IfNode, ImportAsNode, ImportFromAsNode, ImportFromNode, IndexNode, LambdaNode, ListNode, MatchNode, MemberAccessNode, ModuleNameNode, NameNode, NonlocalNode, ParseNode, PatternClassNode, RaiseNode, ReturnNode, SetNode, SliceNode, StatementListNode, StringListNode, SuiteNode, TernaryNode, TryNode, TupleNode, TypeAliasNode, TypeAnnotationNode, TypeParameterListNode, TypeParameterNode, UnaryOperationNode, UnpackNode, WhileNode, WithNode, YieldFromNode, YieldNode } from '../parser/parseNodes';
1
+ import { AssertNode, AssignmentExpressionNode, AssignmentNode, AugmentedAssignmentNode, AwaitNode, BinaryOperationNode, CallNode, CaseNode, ClassNode, ComprehensionIfNode, ComprehensionNode, DelNode, DecoratorNode, DictionaryNode, ErrorNode, ExceptNode, ForNode, FormatStringNode, FunctionNode, GlobalNode, IfNode, ImportAsNode, ImportFromAsNode, ImportFromNode, IndexNode, LambdaNode, ListNode, MatchNode, MemberAccessNode, ModuleNameNode, NameNode, NonlocalNode, ParseNode, PatternClassNode, RaiseNode, ReturnNode, SetNode, SliceNode, StatementListNode, StringListNode, SuiteNode, TernaryNode, TryNode, TupleNode, TypeAliasNode, TypeAnnotationNode, TypeParameterListNode, TypeParameterNode, UnaryOperationNode, UnpackNode, WhileNode, WithNode, YieldFromNode, YieldNode } from '../parser/parseNodes';
2
2
  import { ParserOutput } from '../parser/parser';
3
3
  import * as AnalyzerNodeInfo from './analyzerNodeInfo';
4
4
  import { ImportResolver } from './importResolver';
@@ -21,6 +21,7 @@ export declare class Checker extends ParseTreeWalker {
21
21
  visitSuite(node: SuiteNode): boolean;
22
22
  visitStatementList(node: StatementListNode): boolean;
23
23
  visitClass(node: ClassNode): boolean;
24
+ visitDecorator(node: DecoratorNode): boolean;
24
25
  visitFunction(node: FunctionNode): boolean;
25
26
  visitLambda(node: LambdaNode): boolean;
26
27
  visitCall(node: CallNode): boolean;
@@ -58,6 +58,7 @@ const localize_1 = require("../localization/localize");
58
58
  const parseNodes_1 = require("../parser/parseNodes");
59
59
  const stringTokenUtils_1 = require("../parser/stringTokenUtils");
60
60
  const AnalyzerNodeInfo = __importStar(require("./analyzerNodeInfo"));
61
+ const constraintSolution_1 = require("./constraintSolution");
61
62
  const constraintTracker_1 = require("./constraintTracker");
62
63
  const constructors_1 = require("./constructors");
63
64
  const dataClasses_1 = require("./dataClasses");
@@ -79,7 +80,6 @@ const staticExpressions_1 = require("./staticExpressions");
79
80
  const SymbolNameUtils = __importStar(require("./symbolNameUtils"));
80
81
  const symbolUtils_1 = require("./symbolUtils");
81
82
  const typedDicts_1 = require("./typedDicts");
82
- const typeEvaluator_1 = require("./typeEvaluator");
83
83
  const typeEvaluatorTypes_1 = require("./typeEvaluatorTypes");
84
84
  const typeGuards_1 = require("./typeGuards");
85
85
  const types_1 = require("./types");
@@ -118,7 +118,7 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
118
118
  if (isPrintCodeComplexityEnabled) {
119
119
  console.log(`Code complexity of module ${this._fileInfo.fileUri.toUserVisibleString()} is ${codeComplexity.toString()}`);
120
120
  }
121
- if (codeComplexity > typeEvaluator_1.maxCodeComplexity) {
121
+ if (codeComplexity > this._evaluator.getMaxCodeComplexity()) {
122
122
  this._evaluator.addDiagnosticForTextRange(this._fileInfo, diagnosticRules_1.DiagnosticRule.reportGeneralTypeIssues, localize_1.LocMessage.codeTooComplexToAnalyze(), { start: 0, length: 0 });
123
123
  }
124
124
  this._walkStatementsAndReportUnreachable(this._moduleNode.d.statements);
@@ -219,6 +219,11 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
219
219
  this._scopedNodes.push(node);
220
220
  return false;
221
221
  }
222
+ visitDecorator(node) {
223
+ // Class type evaluation can defer identity-factory arguments, so full checking must validate the expression.
224
+ this._evaluator.getTypeOfExpression(node.d.expr);
225
+ return true;
226
+ }
222
227
  visitFunction(node) {
223
228
  if (node.d.typeParams) {
224
229
  this.walk(node.d.typeParams);
@@ -400,7 +405,7 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
400
405
  }
401
406
  });
402
407
  const codeComplexity = this._nodeInfo.getCodeFlowComplexity(node);
403
- const isTooComplexToAnalyze = codeComplexity > typeEvaluator_1.maxCodeComplexity;
408
+ const isTooComplexToAnalyze = codeComplexity > this._evaluator.getMaxCodeComplexity();
404
409
  if (isPrintCodeComplexityEnabled) {
405
410
  console.log(`Code complexity of function ${node.d.name.d.value} is ${codeComplexity.toString()}`);
406
411
  }
@@ -2506,8 +2511,78 @@ class Checker extends parseTreeWalker_1.ParseTreeWalker {
2506
2511
  }
2507
2512
  // If both declarations are functions, it's OK if they
2508
2513
  // both have the same signatures.
2509
- if (!isInSameStatementList && primaryType && otherType && (0, types_1.isTypeSame)(primaryType, otherType)) {
2510
- duplicateIsOk = true;
2514
+ if (!isInSameStatementList && primaryType && otherType) {
2515
+ let adjustedOtherType = otherType;
2516
+ let typeParamsMatch = true;
2517
+ if ((0, types_1.isFunction)(primaryType) &&
2518
+ (0, types_1.isFunction)(otherType) &&
2519
+ primaryType.shared.typeVarScopeId &&
2520
+ otherType.shared.typeVarScopeId) {
2521
+ const primaryTypeParams = primaryType.shared.typeParams.filter((typeParam) => typeParam.priv.scopeId === primaryType.shared.typeVarScopeId);
2522
+ const otherTypeParams = otherType.shared.typeParams.filter((typeParam) => typeParam.priv.scopeId === otherType.shared.typeVarScopeId);
2523
+ typeParamsMatch = primaryTypeParams.length === otherTypeParams.length;
2524
+ if (typeParamsMatch && otherTypeParams.length > 0) {
2525
+ // Local type parameter names are not part of a generic function signature.
2526
+ // Align parameters by position, but verify their metadata before substitution.
2527
+ const solution = new constraintSolution_1.ConstraintSolution();
2528
+ otherTypeParams.forEach((typeParam, index) => {
2529
+ solution.setType(typeParam, primaryTypeParams[index]);
2530
+ });
2531
+ for (let index = 0; index < primaryTypeParams.length; index++) {
2532
+ const primaryTypeParam = primaryTypeParams[index];
2533
+ const otherTypeParam = otherTypeParams[index];
2534
+ if (primaryTypeParam.shared.kind !== otherTypeParam.shared.kind ||
2535
+ primaryTypeParam.shared.isSynthesized !== otherTypeParam.shared.isSynthesized ||
2536
+ primaryTypeParam.shared.declaredVariance !== otherTypeParam.shared.declaredVariance) {
2537
+ typeParamsMatch = false;
2538
+ break;
2539
+ }
2540
+ const primaryBound = primaryTypeParam.shared.boundType;
2541
+ const otherBound = otherTypeParam.shared.boundType
2542
+ ? (0, typeUtils_1.applySolvedTypeVars)(otherTypeParam.shared.boundType, solution)
2543
+ : undefined;
2544
+ if (!!primaryBound !== !!otherBound ||
2545
+ (primaryBound && otherBound && !(0, types_1.isTypeSame)(primaryBound, otherBound))) {
2546
+ typeParamsMatch = false;
2547
+ break;
2548
+ }
2549
+ if (primaryTypeParam.shared.constraints.length !==
2550
+ otherTypeParam.shared.constraints.length) {
2551
+ typeParamsMatch = false;
2552
+ break;
2553
+ }
2554
+ if (primaryTypeParam.shared.constraints.some((constraint, constraintIndex) => !(0, types_1.isTypeSame)(constraint, (0, typeUtils_1.applySolvedTypeVars)(otherTypeParam.shared.constraints[constraintIndex], solution)))) {
2555
+ typeParamsMatch = false;
2556
+ break;
2557
+ }
2558
+ if (primaryTypeParam.shared.isDefaultExplicit !==
2559
+ otherTypeParam.shared.isDefaultExplicit) {
2560
+ typeParamsMatch = false;
2561
+ break;
2562
+ }
2563
+ if (primaryTypeParam.shared.isDefaultExplicit &&
2564
+ !(0, types_1.isTypeSame)(primaryTypeParam.shared.defaultType, (0, typeUtils_1.applySolvedTypeVars)(otherTypeParam.shared.defaultType, solution))) {
2565
+ typeParamsMatch = false;
2566
+ break;
2567
+ }
2568
+ }
2569
+ if (typeParamsMatch) {
2570
+ adjustedOtherType = (0, typeUtils_1.applySolvedTypeVars)(otherType, solution);
2571
+ }
2572
+ }
2573
+ }
2574
+ let parameterOptionalityMatches = true;
2575
+ if ((0, types_1.isFunction)(primaryType) && (0, types_1.isFunction)(adjustedOtherType)) {
2576
+ const primaryParameters = primaryType.shared.parameters;
2577
+ const otherParameters = adjustedOtherType.shared.parameters;
2578
+ parameterOptionalityMatches =
2579
+ primaryParameters.length === otherParameters.length &&
2580
+ primaryParameters.every((_param, index) => !!types_1.FunctionType.getParamDefaultType(primaryType, index) ===
2581
+ !!types_1.FunctionType.getParamDefaultType(adjustedOtherType, index));
2582
+ }
2583
+ if (typeParamsMatch && parameterOptionalityMatches && (0, types_1.isTypeSame)(primaryType, adjustedOtherType)) {
2584
+ duplicateIsOk = true;
2585
+ }
2511
2586
  }
2512
2587
  if (primaryDecl.type === 3 /* DeclarationType.TypeParam */) {
2513
2588
  // The error will be reported elsewhere if a type parameter is