@zzzen/pyright-internal 1.2.0-dev.20250309 → 1.2.0-dev.20250323

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 (107) hide show
  1. package/dist/analyzer/analyzerFileInfo.d.ts +1 -0
  2. package/dist/analyzer/analyzerFileInfo.js.map +1 -1
  3. package/dist/analyzer/binder.js +21 -13
  4. package/dist/analyzer/binder.js.map +1 -1
  5. package/dist/analyzer/checker.d.ts +3 -0
  6. package/dist/analyzer/checker.js +58 -9
  7. package/dist/analyzer/checker.js.map +1 -1
  8. package/dist/analyzer/codeFlowTypes.d.ts +2 -2
  9. package/dist/analyzer/codeFlowTypes.js +9 -0
  10. package/dist/analyzer/codeFlowTypes.js.map +1 -1
  11. package/dist/analyzer/constructorTransform.js +1 -1
  12. package/dist/analyzer/constructorTransform.js.map +1 -1
  13. package/dist/analyzer/constructors.js +7 -1
  14. package/dist/analyzer/constructors.js.map +1 -1
  15. package/dist/analyzer/declaration.d.ts +1 -1
  16. package/dist/analyzer/declaration.js.map +1 -1
  17. package/dist/analyzer/importResolver.d.ts +2 -0
  18. package/dist/analyzer/importResolver.js +29 -6
  19. package/dist/analyzer/importResolver.js.map +1 -1
  20. package/dist/analyzer/importResult.d.ts +1 -0
  21. package/dist/analyzer/operations.js +10 -2
  22. package/dist/analyzer/operations.js.map +1 -1
  23. package/dist/analyzer/parameterUtils.d.ts +15 -0
  24. package/dist/analyzer/parameterUtils.js +59 -1
  25. package/dist/analyzer/parameterUtils.js.map +1 -1
  26. package/dist/analyzer/parseTreeUtils.d.ts +2 -0
  27. package/dist/analyzer/parseTreeUtils.js +19 -0
  28. package/dist/analyzer/parseTreeUtils.js.map +1 -1
  29. package/dist/analyzer/program.js +17 -4
  30. package/dist/analyzer/program.js.map +1 -1
  31. package/dist/analyzer/programTypes.d.ts +2 -2
  32. package/dist/analyzer/programTypes.js.map +1 -1
  33. package/dist/analyzer/service.d.ts +3 -3
  34. package/dist/analyzer/service.js +16 -6
  35. package/dist/analyzer/service.js.map +1 -1
  36. package/dist/analyzer/sourceFile.d.ts +2 -1
  37. package/dist/analyzer/sourceFile.js +3 -1
  38. package/dist/analyzer/sourceFile.js.map +1 -1
  39. package/dist/analyzer/typeEvaluator.js +236 -245
  40. package/dist/analyzer/typeEvaluator.js.map +1 -1
  41. package/dist/analyzer/typeEvaluatorTypes.d.ts +3 -1
  42. package/dist/analyzer/typeEvaluatorTypes.js.map +1 -1
  43. package/dist/analyzer/typeUtils.js +8 -7
  44. package/dist/analyzer/typeUtils.js.map +1 -1
  45. package/dist/analyzer/typeWalker.js +1 -1
  46. package/dist/analyzer/typeWalker.js.map +1 -1
  47. package/dist/analyzer/types.d.ts +6 -5
  48. package/dist/analyzer/types.js +15 -23
  49. package/dist/analyzer/types.js.map +1 -1
  50. package/dist/common/cancellationUtils.d.ts +3 -0
  51. package/dist/common/cancellationUtils.js +8 -1
  52. package/dist/common/cancellationUtils.js.map +1 -1
  53. package/dist/common/languageServerInterface.d.ts +0 -2
  54. package/dist/common/languageServerInterface.js.map +1 -1
  55. package/dist/common/serviceKeys.d.ts +2 -0
  56. package/dist/common/serviceKeys.js +1 -0
  57. package/dist/common/serviceKeys.js.map +1 -1
  58. package/dist/common/serviceProviderExtensions.d.ts +2 -0
  59. package/dist/common/serviceProviderExtensions.js +9 -2
  60. package/dist/common/serviceProviderExtensions.js.map +1 -1
  61. package/dist/languageServerBase.d.ts +7 -3
  62. package/dist/languageServerBase.js +126 -5
  63. package/dist/languageServerBase.js.map +1 -1
  64. package/dist/languageService/tooltipUtils.js +2 -2
  65. package/dist/languageService/tooltipUtils.js.map +1 -1
  66. package/dist/localization/package.nls.cs.json +1 -1
  67. package/dist/localization/package.nls.de.json +1 -1
  68. package/dist/localization/package.nls.es.json +1 -1
  69. package/dist/localization/package.nls.fr.json +1 -1
  70. package/dist/localization/package.nls.it.json +1 -1
  71. package/dist/localization/package.nls.ja.json +1 -1
  72. package/dist/localization/package.nls.ko.json +1 -1
  73. package/dist/localization/package.nls.pl.json +1 -1
  74. package/dist/localization/package.nls.pt-br.json +1 -1
  75. package/dist/localization/package.nls.ru.json +1 -1
  76. package/dist/localization/package.nls.tr.json +1 -1
  77. package/dist/localization/package.nls.zh-cn.json +1 -1
  78. package/dist/localization/package.nls.zh-tw.json +1 -1
  79. package/dist/pyright.js +9 -3
  80. package/dist/pyright.js.map +1 -1
  81. package/dist/readonlyAugmentedFileSystem.js +4 -0
  82. package/dist/readonlyAugmentedFileSystem.js.map +1 -1
  83. package/dist/server.js +1 -2
  84. package/dist/server.js.map +1 -1
  85. package/dist/tests/checker.test.js +11 -0
  86. package/dist/tests/checker.test.js.map +1 -1
  87. package/dist/tests/fourslash/import.pytyped.privateSymbols.fourslash.js +18 -0
  88. package/dist/tests/fourslash/import.pytyped.privateSymbols.fourslash.js.map +1 -1
  89. package/dist/tests/languageServer.test.js +97 -57
  90. package/dist/tests/languageServer.test.js.map +1 -1
  91. package/dist/tests/lsp/customLsp.d.ts +8 -1
  92. package/dist/tests/lsp/customLsp.js +1 -0
  93. package/dist/tests/lsp/customLsp.js.map +1 -1
  94. package/dist/tests/lsp/languageServer.js +12 -0
  95. package/dist/tests/lsp/languageServer.js.map +1 -1
  96. package/dist/tests/lsp/languageServerTestUtils.d.ts +7 -3
  97. package/dist/tests/lsp/languageServerTestUtils.js +90 -6
  98. package/dist/tests/lsp/languageServerTestUtils.js.map +1 -1
  99. package/dist/tests/sourceFile.test.js +5 -4
  100. package/dist/tests/sourceFile.test.js.map +1 -1
  101. package/dist/tests/typeEvaluator1.test.js +6 -2
  102. package/dist/tests/typeEvaluator1.test.js.map +1 -1
  103. package/dist/tests/typeEvaluator4.test.js +1 -1
  104. package/dist/tests/typeEvaluator5.test.js +1 -1
  105. package/dist/tests/typeEvaluator6.test.js +1 -1
  106. package/dist/types.d.ts +6 -2
  107. package/package.json +1 -1
@@ -142,6 +142,7 @@ export interface ArgBase {
142
142
  typeResult?: TypeResult | undefined;
143
143
  valueExpression?: ExpressionNode | undefined;
144
144
  active?: boolean | undefined;
145
+ enforceIterable?: boolean | undefined;
145
146
  }
146
147
  export interface ArgWithType extends ArgBase {
147
148
  typeResult: TypeResult;
@@ -214,6 +215,7 @@ export interface CallResult {
214
215
  isTypeIncomplete?: boolean | undefined;
215
216
  argumentErrors?: boolean;
216
217
  anyOrUnknownArg?: UnknownType | AnyType;
218
+ unpackedArgOfUnknownLength?: boolean;
217
219
  activeParam?: FunctionParam | undefined;
218
220
  specializedInitSelfType?: Type | undefined;
219
221
  overloadsUsedForCall?: FunctionType[];
@@ -367,7 +369,7 @@ export interface TypeEvaluator {
367
369
  getCallSignatureInfo: (node: CallNode, activeIndex: number, activeOrFake: boolean) => CallSignatureInfo | undefined;
368
370
  getAbstractSymbols: (classType: ClassType) => AbstractSymbol[];
369
371
  narrowConstrainedTypeVar: (node: ParseNode, typeVar: TypeVarType) => Type | undefined;
370
- isTypeComparable: (leftType: Type, rightType: Type) => boolean;
372
+ isTypeComparable: (leftType: Type, rightType: Type, assumeIsOperator?: boolean) => boolean;
371
373
  assignType: (destType: Type, srcType: Type, diag?: DiagnosticAddendum, constraints?: ConstraintTracker, flags?: AssignTypeFlags, recursionCount?: number) => boolean;
372
374
  validateOverrideMethod: (baseMethod: Type, overrideMethod: FunctionType | OverloadedType, baseClass: ClassType | undefined, diag: DiagnosticAddendum, enforceParamNames?: boolean) => boolean;
373
375
  validateCallArgs: (errorNode: ExpressionNode, argList: Arg[], callTypeResult: TypeResult, constraints: ConstraintTracker | undefined, skipUnknownArgCheck: boolean | undefined, inferenceContext: InferenceContext | undefined) => CallResult;
@@ -1 +1 @@
1
- {"version":3,"file":"typeEvaluatorTypes.js","sourceRoot":"","sources":["../../../../../src/analyzer/typeEvaluatorTypes.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"typeEvaluatorTypes.js","sourceRoot":"","sources":["../../../../../src/analyzer/typeEvaluatorTypes.ts"],"names":[],"mappings":"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"}
@@ -2322,8 +2322,8 @@ function _requiresSpecialization(type, options, recursionCount = 0) {
2322
2322
  return true;
2323
2323
  }
2324
2324
  }
2325
- else if (type.priv.inferredReturnType) {
2326
- if (requiresSpecialization(type.priv.inferredReturnType?.type, options, recursionCount)) {
2325
+ else if (type.shared.inferredReturnType) {
2326
+ if (requiresSpecialization(type.shared.inferredReturnType?.type, options, recursionCount)) {
2327
2327
  return true;
2328
2328
  }
2329
2329
  }
@@ -3005,9 +3005,10 @@ class TypeVarTransformer {
3005
3005
  }
3006
3006
  }
3007
3007
  let specializedInferredReturnType;
3008
- if (functionType.priv.inferredReturnType) {
3009
- specializedInferredReturnType = this.apply(functionType.priv.inferredReturnType?.type, recursionCount);
3010
- if (specializedInferredReturnType !== functionType.priv.inferredReturnType?.type) {
3008
+ if (functionType.shared.inferredReturnType) {
3009
+ specializedInferredReturnType = this.apply(functionType.shared.inferredReturnType?.type, recursionCount);
3010
+ if (specializedInferredReturnType !== functionType.shared.inferredReturnType?.type) {
3011
+ specializedParams.returnType = specializedInferredReturnType;
3011
3012
  typesRequiredSpecialization = true;
3012
3013
  }
3013
3014
  }
@@ -3019,7 +3020,7 @@ class TypeVarTransformer {
3019
3020
  }
3020
3021
  }
3021
3022
  // Do we need to update the strippedFirstParamType?
3022
- if (functionType.priv.strippedFirstParamType) {
3023
+ if (functionType.priv.strippedFirstParamType && !(0, types_1.isAnyOrUnknown)(functionType.priv.strippedFirstParamType)) {
3023
3024
  const newStrippedType = this.apply(functionType.priv.strippedFirstParamType, recursionCount);
3024
3025
  if (newStrippedType !== functionType.priv.strippedFirstParamType) {
3025
3026
  functionType = types_1.TypeBase.cloneType(functionType);
@@ -3034,7 +3035,7 @@ class TypeVarTransformer {
3034
3035
  }
3035
3036
  // If there was no unpacked variadic type variable, we're done.
3036
3037
  if (!variadicTypesToUnpack) {
3037
- return types_1.FunctionType.specialize(functionType, specializedParams, specializedInferredReturnType);
3038
+ return types_1.FunctionType.specialize(functionType, specializedParams);
3038
3039
  }
3039
3040
  // Unpack the tuple and synthesize a new function in the process.
3040
3041
  const newFunctionType = types_1.TypeBase.isInstantiable(functionType)