@zzzen/pyright-internal 1.2.0-dev.20260823 → 1.2.0-dev.20260906
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.
- package/dist/analyzer/analyzerNodeInfo.d.ts +4 -0
- package/dist/analyzer/analyzerNodeInfo.js +29 -8
- package/dist/analyzer/analyzerNodeInfo.js.map +1 -1
- package/dist/analyzer/backgroundAnalysisProgram.d.ts +2 -1
- package/dist/analyzer/backgroundAnalysisProgram.js +4 -8
- package/dist/analyzer/backgroundAnalysisProgram.js.map +1 -1
- package/dist/analyzer/checker.js +31 -25
- package/dist/analyzer/checker.js.map +1 -1
- package/dist/analyzer/constructorTransform.js +8 -0
- package/dist/analyzer/constructorTransform.js.map +1 -1
- package/dist/analyzer/dataClasses.js +9 -3
- package/dist/analyzer/dataClasses.js.map +1 -1
- package/dist/analyzer/parseTreeUtils.js +12 -13
- package/dist/analyzer/parseTreeUtils.js.map +1 -1
- package/dist/analyzer/program.js +4 -1
- package/dist/analyzer/program.js.map +1 -1
- package/dist/analyzer/sentinel.d.ts +2 -2
- package/dist/analyzer/sentinel.js +3 -3
- package/dist/analyzer/sentinel.js.map +1 -1
- package/dist/analyzer/service.d.ts +8 -11
- package/dist/analyzer/service.js +27 -96
- package/dist/analyzer/service.js.map +1 -1
- package/dist/analyzer/sourceFile.js +1 -0
- package/dist/analyzer/sourceFile.js.map +1 -1
- package/dist/analyzer/sourceFileInfo.d.ts +1 -0
- package/dist/analyzer/sourceFileInfo.js +3 -0
- package/dist/analyzer/sourceFileInfo.js.map +1 -1
- package/dist/analyzer/typeEvaluator.js +93 -32
- package/dist/analyzer/typeEvaluator.js.map +1 -1
- package/dist/analyzer/typeGuards.js +133 -10
- package/dist/analyzer/typeGuards.js.map +1 -1
- package/dist/analyzer/typeStubGeneration.d.ts +64 -0
- package/dist/analyzer/typeStubGeneration.js +226 -0
- package/dist/analyzer/typeStubGeneration.js.map +1 -0
- package/dist/analyzer/typeStubMessages.d.ts +4 -0
- package/dist/analyzer/typeStubMessages.js +25 -0
- package/dist/analyzer/typeStubMessages.js.map +1 -0
- package/dist/analyzer/typeStubOutput.d.ts +9 -0
- package/dist/analyzer/typeStubOutput.js +52 -0
- package/dist/analyzer/typeStubOutput.js.map +1 -0
- package/dist/analyzer/typeStubRenderer.d.ts +5 -0
- package/dist/analyzer/{typeStubWriter.js → typeStubRenderer.js} +11 -93
- package/dist/analyzer/typeStubRenderer.js.map +1 -0
- package/dist/analyzer/typeUtils.d.ts +1 -0
- package/dist/analyzer/typeUtils.js +112 -0
- package/dist/analyzer/typeUtils.js.map +1 -1
- package/dist/analyzer/types.d.ts +2 -0
- package/dist/analyzer/types.js +84 -58
- package/dist/analyzer/types.js.map +1 -1
- package/dist/backgroundAnalysisBase.d.ts +5 -4
- package/dist/backgroundAnalysisBase.js +11 -19
- package/dist/backgroundAnalysisBase.js.map +1 -1
- package/dist/commands/createTypeStub.d.ts +2 -6
- package/dist/commands/createTypeStub.js +14 -27
- package/dist/commands/createTypeStub.js.map +1 -1
- package/dist/common/commandLineOptions.d.ts +0 -1
- package/dist/common/commandLineOptions.js.map +1 -1
- package/dist/common/extensibility.d.ts +1 -0
- package/dist/common/extensibility.js.map +1 -1
- package/dist/languageServerBase.d.ts +1 -1
- package/dist/languageServerBase.js +2 -2
- package/dist/languageServerBase.js.map +1 -1
- package/dist/languageService/analyzerServiceExecutor.d.ts +1 -3
- package/dist/languageService/analyzerServiceExecutor.js +8 -28
- package/dist/languageService/analyzerServiceExecutor.js.map +1 -1
- package/dist/languageService/fileWatcherDynamicFeature.d.ts +6 -4
- package/dist/languageService/fileWatcherDynamicFeature.js +19 -15
- package/dist/languageService/fileWatcherDynamicFeature.js.map +1 -1
- package/dist/languageService/hoverProvider.d.ts +1 -1
- package/dist/languageService/hoverProvider.js +13 -8
- package/dist/languageService/hoverProvider.js.map +1 -1
- package/dist/languageService/tooltipUtils.d.ts +2 -1
- package/dist/languageService/tooltipUtils.js +15 -17
- package/dist/languageService/tooltipUtils.js.map +1 -1
- package/dist/localization/localize.d.ts +1 -0
- package/dist/localization/localize.js +1 -0
- package/dist/localization/localize.js.map +1 -1
- package/dist/localization/package.nls.cs.json +4 -0
- package/dist/localization/package.nls.de.json +4 -0
- package/dist/localization/package.nls.en-us.json +1 -0
- package/dist/localization/package.nls.es.json +4 -0
- package/dist/localization/package.nls.fr.json +4 -0
- package/dist/localization/package.nls.it.json +4 -0
- package/dist/localization/package.nls.ja.json +4 -0
- package/dist/localization/package.nls.ko.json +4 -0
- package/dist/localization/package.nls.pl.json +4 -0
- package/dist/localization/package.nls.pt-br.json +4 -0
- package/dist/localization/package.nls.qps-ploc.json +4 -0
- package/dist/localization/package.nls.ru.json +4 -0
- package/dist/localization/package.nls.tr.json +4 -0
- package/dist/localization/package.nls.zh-cn.json +4 -0
- package/dist/localization/package.nls.zh-tw.json +4 -0
- package/dist/parser/parser.js +7 -1
- package/dist/parser/parser.js.map +1 -1
- package/dist/parser/tokenizer.js +3 -5
- package/dist/parser/tokenizer.js.map +1 -1
- package/dist/pyright.js +30 -17
- package/dist/pyright.js.map +1 -1
- package/dist/tests/analyzerNodeInfo.test.js +32 -0
- package/dist/tests/analyzerNodeInfo.test.js.map +1 -1
- package/dist/tests/config.test.js +0 -1
- package/dist/tests/config.test.js.map +1 -1
- package/dist/tests/fourslash/hover.builtinDocstrings.fourslash.js +5 -5
- package/dist/tests/fourslash/hover.docFromSrc.stubs-package.fourslash.js +0 -1
- package/dist/tests/fourslash/hover.docFromSrc.stubs-package.fourslash.js.map +1 -1
- package/dist/tests/fourslash/hover.fourslash.js +1 -1
- package/dist/tests/fourslash/hover.import.django.view.fourslash.js +1 -1
- package/dist/tests/fourslash/hover.plainText.fourslash.js +1 -1
- package/dist/tests/hoverProvider.test.js +2 -2
- package/dist/tests/parseTreeUtils.test.js +41 -0
- package/dist/tests/parseTreeUtils.test.js.map +1 -1
- package/dist/tests/pyrightCli.test.d.ts +1 -0
- package/dist/tests/pyrightCli.test.js +205 -0
- package/dist/tests/pyrightCli.test.js.map +1 -0
- package/dist/tests/service.test.js +152 -0
- package/dist/tests/service.test.js.map +1 -1
- package/dist/tests/typeEquality.test.d.ts +1 -0
- package/dist/tests/typeEquality.test.js +95 -0
- package/dist/tests/typeEquality.test.js.map +1 -0
- package/dist/tests/typeEvaluator1.test.js +11 -0
- package/dist/tests/typeEvaluator1.test.js.map +1 -1
- package/dist/tests/typeEvaluator2.test.js +4 -0
- package/dist/tests/typeEvaluator2.test.js.map +1 -1
- package/dist/tests/typeEvaluator3.test.js +8 -0
- package/dist/tests/typeEvaluator3.test.js.map +1 -1
- package/dist/tests/typeEvaluator4.test.js +4 -0
- package/dist/tests/typeEvaluator4.test.js.map +1 -1
- package/dist/tests/typeEvaluator5.test.js +1 -1
- package/dist/tests/typeEvaluator6.test.js +5 -1
- package/dist/tests/typeEvaluator6.test.js.map +1 -1
- package/dist/tests/typeEvaluator8.test.js +4 -0
- package/dist/tests/typeEvaluator8.test.js.map +1 -1
- package/dist/tests/typeServer/stubGenerator.test.d.ts +1 -0
- package/dist/tests/typeServer/stubGenerator.test.js +73 -0
- package/dist/tests/typeServer/stubGenerator.test.js.map +1 -0
- package/dist/tests/typeStubGeneration.test.d.ts +1 -0
- package/dist/tests/typeStubGeneration.test.js +397 -0
- package/dist/tests/typeStubGeneration.test.js.map +1 -0
- package/dist/tests/typeStubOutput.test.d.ts +1 -0
- package/dist/tests/typeStubOutput.test.js +136 -0
- package/dist/tests/typeStubOutput.test.js.map +1 -0
- package/dist/tests/typeUtils.test.d.ts +1 -0
- package/dist/tests/typeUtils.test.js +133 -0
- package/dist/tests/typeUtils.test.js.map +1 -0
- package/dist/typeServer/stubGenerator.js +32 -7
- package/dist/typeServer/stubGenerator.js.map +1 -1
- package/package.json +1 -1
- package/dist/analyzer/typeStubWriter.d.ts +0 -17
- package/dist/analyzer/typeStubWriter.js.map +0 -1
package/dist/analyzer/types.js
CHANGED
|
@@ -821,6 +821,14 @@ var ClassType;
|
|
|
821
821
|
return !!(classType.shared.flags & 67108864 /* ClassTypeFlags.EnumMemberSetMayBeDynamicallyModified */);
|
|
822
822
|
}
|
|
823
823
|
ClassType.isEnumMemberSetMayBeDynamicallyModified = isEnumMemberSetMayBeDynamicallyModified;
|
|
824
|
+
function isNamedTupleClass(classType) {
|
|
825
|
+
return classType.shared.namedTupleEntries !== undefined;
|
|
826
|
+
}
|
|
827
|
+
ClassType.isNamedTupleClass = isNamedTupleClass;
|
|
828
|
+
function isDefinedAtSource(classType, fileUri, typeSourceId) {
|
|
829
|
+
return classType.shared.fileUri.equals(fileUri) && classType.shared.typeSourceId === typeSourceId;
|
|
830
|
+
}
|
|
831
|
+
ClassType.isDefinedAtSource = isDefinedAtSource;
|
|
824
832
|
function isPropertyClass(classType) {
|
|
825
833
|
return !!(classType.shared.flags & 128 /* ClassTypeFlags.PropertyClass */);
|
|
826
834
|
}
|
|
@@ -2350,6 +2358,7 @@ function isTypeSame(type1, type2, options = {}, recursionCount = 0) {
|
|
|
2350
2358
|
return true;
|
|
2351
2359
|
}
|
|
2352
2360
|
recursionCount++;
|
|
2361
|
+
const recursiveOptions = options.ignoreTypeFlags ? { ...options, ignoreTypeFlags: false } : options;
|
|
2353
2362
|
if (options.honorTypeForm) {
|
|
2354
2363
|
const typeForm1 = type1.props?.typeForm;
|
|
2355
2364
|
const typeForm2 = type2.props?.typeForm;
|
|
@@ -2377,31 +2386,35 @@ function isTypeSame(type1, type2, options = {}, recursionCount = 0) {
|
|
|
2377
2386
|
}
|
|
2378
2387
|
if (!options.ignorePseudoGeneric || !ClassType.isPseudoGenericClass(type1)) {
|
|
2379
2388
|
// Make sure the type args match.
|
|
2380
|
-
|
|
2381
|
-
|
|
2382
|
-
|
|
2389
|
+
const type1TupleTypeArgs = type1.priv.tupleTypeArgs;
|
|
2390
|
+
const type2TupleTypeArgs = classType2.priv.tupleTypeArgs;
|
|
2391
|
+
if (type1TupleTypeArgs && type2TupleTypeArgs) {
|
|
2383
2392
|
if (type1TupleTypeArgs.length !== type2TupleTypeArgs.length) {
|
|
2384
2393
|
return false;
|
|
2385
2394
|
}
|
|
2386
|
-
|
|
2387
|
-
|
|
2388
|
-
|
|
2389
|
-
|
|
2390
|
-
|
|
2391
|
-
|
|
2395
|
+
if (type1TupleTypeArgs !== type2TupleTypeArgs) {
|
|
2396
|
+
for (let i = 0; i < type1TupleTypeArgs.length; i++) {
|
|
2397
|
+
if (!isTypeSame(type1TupleTypeArgs[i].type, type2TupleTypeArgs[i].type, recursiveOptions, recursionCount)) {
|
|
2398
|
+
return false;
|
|
2399
|
+
}
|
|
2400
|
+
if (type1TupleTypeArgs[i].isUnbounded !== type2TupleTypeArgs[i].isUnbounded) {
|
|
2401
|
+
return false;
|
|
2402
|
+
}
|
|
2392
2403
|
}
|
|
2393
2404
|
}
|
|
2394
2405
|
}
|
|
2395
2406
|
else {
|
|
2396
|
-
const type1TypeArgs = type1.priv.typeArgs
|
|
2397
|
-
const type2TypeArgs = classType2.priv.typeArgs
|
|
2398
|
-
|
|
2399
|
-
|
|
2400
|
-
|
|
2401
|
-
|
|
2402
|
-
|
|
2403
|
-
|
|
2404
|
-
|
|
2407
|
+
const type1TypeArgs = type1.priv.typeArgs;
|
|
2408
|
+
const type2TypeArgs = classType2.priv.typeArgs;
|
|
2409
|
+
if (type1TypeArgs !== type2TypeArgs) {
|
|
2410
|
+
const typeArgCount = Math.max(type1TypeArgs?.length ?? 0, type2TypeArgs?.length ?? 0);
|
|
2411
|
+
for (let i = 0; i < typeArgCount; i++) {
|
|
2412
|
+
// Assume that missing type args are "Unknown".
|
|
2413
|
+
const typeArg1 = type1TypeArgs && i < type1TypeArgs.length ? type1TypeArgs[i] : UnknownType.create();
|
|
2414
|
+
const typeArg2 = type2TypeArgs && i < type2TypeArgs.length ? type2TypeArgs[i] : UnknownType.create();
|
|
2415
|
+
if (!isTypeSame(typeArg1, typeArg2, recursiveOptions, recursionCount)) {
|
|
2416
|
+
return false;
|
|
2417
|
+
}
|
|
2405
2418
|
}
|
|
2406
2419
|
}
|
|
2407
2420
|
}
|
|
@@ -2437,35 +2450,43 @@ function isTypeSame(type1, type2, options = {}, recursionCount = 0) {
|
|
|
2437
2450
|
if (FunctionType.isGradualCallableForm(type1) !== FunctionType.isGradualCallableForm(functionType2)) {
|
|
2438
2451
|
return false;
|
|
2439
2452
|
}
|
|
2440
|
-
const
|
|
2441
|
-
const
|
|
2442
|
-
|
|
2443
|
-
|
|
2444
|
-
|
|
2445
|
-
|
|
2446
|
-
|
|
2447
|
-
|
|
2448
|
-
|
|
2449
|
-
|
|
2450
|
-
|
|
2451
|
-
|
|
2452
|
-
|
|
2453
|
-
|
|
2454
|
-
|
|
2455
|
-
|
|
2453
|
+
const specializedTypes1 = type1.priv.specializedTypes;
|
|
2454
|
+
const specializedTypes2 = functionType2.priv.specializedTypes;
|
|
2455
|
+
if (type1.shared === functionType2.shared && specializedTypes1 === specializedTypes2) {
|
|
2456
|
+
return true;
|
|
2457
|
+
}
|
|
2458
|
+
const haveSameParamSignature = params1 === params2 && specializedTypes1?.parameterTypes === specializedTypes2?.parameterTypes;
|
|
2459
|
+
if (!haveSameParamSignature) {
|
|
2460
|
+
const positionOnlyIndex1 = params1.findIndex((param) => isPositionOnlySeparator(param));
|
|
2461
|
+
const positionOnlyIndex2 = params2.findIndex((param) => isPositionOnlySeparator(param));
|
|
2462
|
+
// Make sure the parameter details match.
|
|
2463
|
+
for (let i = 0; i < params1.length; i++) {
|
|
2464
|
+
const param1 = params1[i];
|
|
2465
|
+
const param2 = params2[i];
|
|
2466
|
+
if (param1.category !== param2.category) {
|
|
2467
|
+
return false;
|
|
2468
|
+
}
|
|
2469
|
+
const isName1Relevant = positionOnlyIndex1 !== undefined && i > positionOnlyIndex1;
|
|
2470
|
+
const isName2Relevant = positionOnlyIndex2 !== undefined && i > positionOnlyIndex2;
|
|
2471
|
+
if (isName1Relevant !== isName2Relevant) {
|
|
2472
|
+
return false;
|
|
2473
|
+
}
|
|
2474
|
+
if (isName1Relevant) {
|
|
2475
|
+
if (param1.name !== param2.name) {
|
|
2476
|
+
return false;
|
|
2477
|
+
}
|
|
2478
|
+
}
|
|
2479
|
+
else if (isPositionOnlySeparator(param1) && isPositionOnlySeparator(param2)) {
|
|
2480
|
+
continue;
|
|
2481
|
+
}
|
|
2482
|
+
else if (isKeywordOnlySeparator(param1) && isKeywordOnlySeparator(param2)) {
|
|
2483
|
+
continue;
|
|
2484
|
+
}
|
|
2485
|
+
const param1Type = FunctionType.getParamType(type1, i);
|
|
2486
|
+
const param2Type = FunctionType.getParamType(functionType2, i);
|
|
2487
|
+
if (!isTypeSame(param1Type, param2Type, recursiveOptions, recursionCount)) {
|
|
2456
2488
|
return false;
|
|
2457
2489
|
}
|
|
2458
|
-
}
|
|
2459
|
-
else if (isPositionOnlySeparator(param1) && isPositionOnlySeparator(param2)) {
|
|
2460
|
-
continue;
|
|
2461
|
-
}
|
|
2462
|
-
else if (isKeywordOnlySeparator(param1) && isKeywordOnlySeparator(param2)) {
|
|
2463
|
-
continue;
|
|
2464
|
-
}
|
|
2465
|
-
const param1Type = FunctionType.getParamType(type1, i);
|
|
2466
|
-
const param2Type = FunctionType.getParamType(functionType2, i);
|
|
2467
|
-
if (!isTypeSame(param1Type, param2Type, { ...options, ignoreTypeFlags: false }, recursionCount)) {
|
|
2468
|
-
return false;
|
|
2469
2490
|
}
|
|
2470
2491
|
}
|
|
2471
2492
|
// Make sure the return types match.
|
|
@@ -2486,7 +2507,7 @@ function isTypeSame(type1, type2, options = {}, recursionCount = 0) {
|
|
|
2486
2507
|
if (return1Type || return2Type) {
|
|
2487
2508
|
if (!return1Type ||
|
|
2488
2509
|
!return2Type ||
|
|
2489
|
-
!isTypeSame(return1Type, return2Type,
|
|
2510
|
+
!isTypeSame(return1Type, return2Type, recursiveOptions, recursionCount)) {
|
|
2490
2511
|
return false;
|
|
2491
2512
|
}
|
|
2492
2513
|
}
|
|
@@ -2495,6 +2516,9 @@ function isTypeSame(type1, type2, options = {}, recursionCount = 0) {
|
|
|
2495
2516
|
case 5 /* TypeCategory.Overloaded */: {
|
|
2496
2517
|
// Make sure the overload counts match.
|
|
2497
2518
|
const functionType2 = type2;
|
|
2519
|
+
if (type1.priv._overloads === functionType2.priv._overloads) {
|
|
2520
|
+
return true;
|
|
2521
|
+
}
|
|
2498
2522
|
if (type1.priv._overloads.length !== functionType2.priv._overloads.length) {
|
|
2499
2523
|
return false;
|
|
2500
2524
|
}
|
|
@@ -2514,6 +2538,9 @@ function isTypeSame(type1, type2, options = {}, recursionCount = 0) {
|
|
|
2514
2538
|
if (subtypes1.length !== subtypes2.length) {
|
|
2515
2539
|
return false;
|
|
2516
2540
|
}
|
|
2541
|
+
if (subtypes1 === subtypes2) {
|
|
2542
|
+
return true;
|
|
2543
|
+
}
|
|
2517
2544
|
// The types do not have a particular order, so we need to
|
|
2518
2545
|
// do the comparison in an order-independent manner.
|
|
2519
2546
|
const exclusionSet = new Set();
|
|
@@ -2537,7 +2564,7 @@ function isTypeSame(type1, type2, options = {}, recursionCount = 0) {
|
|
|
2537
2564
|
// Assume that missing type args are "Any".
|
|
2538
2565
|
const typeArg1 = i < type1TypeArgs.length ? type1TypeArgs[i] : AnyType.create();
|
|
2539
2566
|
const typeArg2 = i < type2TypeArgs.length ? type2TypeArgs[i] : AnyType.create();
|
|
2540
|
-
if (!isTypeSame(typeArg1, typeArg2,
|
|
2567
|
+
if (!isTypeSame(typeArg1, typeArg2, recursiveOptions, recursionCount)) {
|
|
2541
2568
|
return false;
|
|
2542
2569
|
}
|
|
2543
2570
|
}
|
|
@@ -2564,26 +2591,25 @@ function isTypeSame(type1, type2, options = {}, recursionCount = 0) {
|
|
|
2564
2591
|
}
|
|
2565
2592
|
const boundType1 = type1.shared.boundType;
|
|
2566
2593
|
const boundType2 = type2TypeVar.shared.boundType;
|
|
2567
|
-
if (boundType1) {
|
|
2568
|
-
if (!boundType2
|
|
2569
|
-
!isTypeSame(boundType1, boundType2, { ...options, ignoreTypeFlags: false }, recursionCount)) {
|
|
2594
|
+
if (boundType1 !== boundType2) {
|
|
2595
|
+
if (!boundType1 || !boundType2) {
|
|
2570
2596
|
return false;
|
|
2571
2597
|
}
|
|
2572
|
-
|
|
2573
|
-
else {
|
|
2574
|
-
if (boundType2) {
|
|
2598
|
+
if (!isTypeSame(boundType1, boundType2, recursiveOptions, recursionCount)) {
|
|
2575
2599
|
return false;
|
|
2576
2600
|
}
|
|
2577
2601
|
}
|
|
2578
2602
|
const constraints1 = type1.shared.constraints;
|
|
2579
2603
|
const constraints2 = type2TypeVar.shared.constraints;
|
|
2580
|
-
if (constraints1
|
|
2581
|
-
|
|
2582
|
-
}
|
|
2583
|
-
for (let i = 0; i < constraints1.length; i++) {
|
|
2584
|
-
if (!isTypeSame(constraints1[i], constraints2[i], { ...options, ignoreTypeFlags: false }, recursionCount)) {
|
|
2604
|
+
if (constraints1 !== constraints2) {
|
|
2605
|
+
if (constraints1.length !== constraints2.length) {
|
|
2585
2606
|
return false;
|
|
2586
2607
|
}
|
|
2608
|
+
for (let i = 0; i < constraints1.length; i++) {
|
|
2609
|
+
if (!isTypeSame(constraints1[i], constraints2[i], recursiveOptions, recursionCount)) {
|
|
2610
|
+
return false;
|
|
2611
|
+
}
|
|
2612
|
+
}
|
|
2587
2613
|
}
|
|
2588
2614
|
return true;
|
|
2589
2615
|
}
|