@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
|
@@ -117,6 +117,7 @@ exports.computeMroLinearization = computeMroLinearization;
|
|
|
117
117
|
exports.getDeclaringModulesForType = getDeclaringModulesForType;
|
|
118
118
|
exports.convertTypeToParamSpecValue = convertTypeToParamSpecValue;
|
|
119
119
|
exports.simplifyFunctionToParamSpec = simplifyFunctionToParamSpec;
|
|
120
|
+
exports.transformTypePair = transformTypePair;
|
|
120
121
|
const collectionUtils_1 = require("../common/collectionUtils");
|
|
121
122
|
const debug_1 = require("../common/debug");
|
|
122
123
|
const constraintSolution_1 = require("./constraintSolution");
|
|
@@ -2712,6 +2713,117 @@ function simplifyFunctionToParamSpec(type) {
|
|
|
2712
2713
|
}
|
|
2713
2714
|
return type;
|
|
2714
2715
|
}
|
|
2716
|
+
// Recursively transforms two structurally-aligned type trees. The callback
|
|
2717
|
+
// decides whether an aligned node should be replaced; this function owns only
|
|
2718
|
+
// the traversal and cloning needed to preserve the source tree's shape.
|
|
2719
|
+
function transformTypePair(sourceType, targetType, transformNode) {
|
|
2720
|
+
return transformTypePairRecursive(sourceType, targetType, transformNode, new Set(), 0);
|
|
2721
|
+
}
|
|
2722
|
+
function transformTypePairRecursive(sourceType, targetType, transformNode, pendingTypes, recursionCount) {
|
|
2723
|
+
const replacementType = transformNode(sourceType, targetType);
|
|
2724
|
+
if (replacementType) {
|
|
2725
|
+
return replacementType;
|
|
2726
|
+
}
|
|
2727
|
+
if (recursionCount > types_1.maxTypeRecursionCount || pendingTypes.has(sourceType)) {
|
|
2728
|
+
return sourceType;
|
|
2729
|
+
}
|
|
2730
|
+
pendingTypes.add(sourceType);
|
|
2731
|
+
try {
|
|
2732
|
+
if ((0, types_1.isFunction)(sourceType) && (0, types_1.isFunction)(targetType)) {
|
|
2733
|
+
if (sourceType.shared.parameters.length !== targetType.shared.parameters.length) {
|
|
2734
|
+
return sourceType;
|
|
2735
|
+
}
|
|
2736
|
+
const parameterTypes = sourceType.shared.parameters.map((_, index) => transformTypePairRecursive(types_1.FunctionType.getParamType(sourceType, index), types_1.FunctionType.getParamType(targetType, index), transformNode, pendingTypes, recursionCount + 1));
|
|
2737
|
+
const parameterDefaultTypes = sourceType.shared.parameters.map((_, index) => {
|
|
2738
|
+
const sourceDefaultType = types_1.FunctionType.getParamDefaultType(sourceType, index);
|
|
2739
|
+
const targetDefaultType = types_1.FunctionType.getParamDefaultType(targetType, index);
|
|
2740
|
+
return sourceDefaultType && targetDefaultType
|
|
2741
|
+
? transformTypePairRecursive(sourceDefaultType, targetDefaultType, transformNode, pendingTypes, recursionCount + 1)
|
|
2742
|
+
: sourceDefaultType;
|
|
2743
|
+
});
|
|
2744
|
+
const sourceReturnType = types_1.FunctionType.getEffectiveReturnType(sourceType);
|
|
2745
|
+
const targetReturnType = types_1.FunctionType.getEffectiveReturnType(targetType);
|
|
2746
|
+
const returnType = sourceReturnType && targetReturnType
|
|
2747
|
+
? transformTypePairRecursive(sourceReturnType, targetReturnType, transformNode, pendingTypes, recursionCount + 1)
|
|
2748
|
+
: sourceReturnType;
|
|
2749
|
+
if (parameterTypes.every((type, index) => type === types_1.FunctionType.getParamType(sourceType, index)) &&
|
|
2750
|
+
parameterDefaultTypes.every((type, index) => type === types_1.FunctionType.getParamDefaultType(sourceType, index)) &&
|
|
2751
|
+
returnType === sourceReturnType) {
|
|
2752
|
+
return sourceType;
|
|
2753
|
+
}
|
|
2754
|
+
const transformedType = types_1.FunctionType.clone(sourceType);
|
|
2755
|
+
transformedType.priv.specializedTypes = {
|
|
2756
|
+
parameterTypes,
|
|
2757
|
+
parameterDefaultTypes,
|
|
2758
|
+
returnType,
|
|
2759
|
+
};
|
|
2760
|
+
return transformedType;
|
|
2761
|
+
}
|
|
2762
|
+
if ((0, types_1.isTypeVar)(sourceType) && (0, types_1.isTypeVar)(targetType)) {
|
|
2763
|
+
if (sourceType.shared.constraints.length !== targetType.shared.constraints.length) {
|
|
2764
|
+
return sourceType;
|
|
2765
|
+
}
|
|
2766
|
+
const constraints = sourceType.shared.constraints.map((constraint, index) => transformTypePairRecursive(constraint, targetType.shared.constraints[index], transformNode, pendingTypes, recursionCount + 1));
|
|
2767
|
+
const boundType = sourceType.shared.boundType && targetType.shared.boundType
|
|
2768
|
+
? transformTypePairRecursive(sourceType.shared.boundType, targetType.shared.boundType, transformNode, pendingTypes, recursionCount + 1)
|
|
2769
|
+
: sourceType.shared.boundType;
|
|
2770
|
+
const defaultType = transformTypePairRecursive(sourceType.shared.defaultType, targetType.shared.defaultType, transformNode, pendingTypes, recursionCount + 1);
|
|
2771
|
+
if (constraints.every((type, index) => type === sourceType.shared.constraints[index]) &&
|
|
2772
|
+
boundType === sourceType.shared.boundType &&
|
|
2773
|
+
defaultType === sourceType.shared.defaultType) {
|
|
2774
|
+
return sourceType;
|
|
2775
|
+
}
|
|
2776
|
+
const transformedType = types_1.TypeBase.cloneType(sourceType);
|
|
2777
|
+
transformedType.shared = {
|
|
2778
|
+
...sourceType.shared,
|
|
2779
|
+
constraints,
|
|
2780
|
+
boundType,
|
|
2781
|
+
defaultType,
|
|
2782
|
+
};
|
|
2783
|
+
return transformedType;
|
|
2784
|
+
}
|
|
2785
|
+
if ((0, types_1.isUnion)(sourceType) && (0, types_1.isUnion)(targetType)) {
|
|
2786
|
+
if (sourceType.priv.subtypes.length !== targetType.priv.subtypes.length) {
|
|
2787
|
+
return sourceType;
|
|
2788
|
+
}
|
|
2789
|
+
const subtypes = sourceType.priv.subtypes.map((subtype, index) => {
|
|
2790
|
+
const transformedSubtype = transformTypePairRecursive(subtype, targetType.priv.subtypes[index], transformNode, pendingTypes, recursionCount + 1);
|
|
2791
|
+
return (0, types_1.isNever)(transformedSubtype) || (0, types_1.isUnion)(transformedSubtype) ? subtype : transformedSubtype;
|
|
2792
|
+
});
|
|
2793
|
+
if (subtypes.every((type, index) => type === sourceType.priv.subtypes[index])) {
|
|
2794
|
+
return sourceType;
|
|
2795
|
+
}
|
|
2796
|
+
const transformedType = types_1.TypeBase.cloneType(sourceType);
|
|
2797
|
+
transformedType.priv.subtypes = subtypes;
|
|
2798
|
+
return transformedType;
|
|
2799
|
+
}
|
|
2800
|
+
if ((0, types_1.isClass)(sourceType) && (0, types_1.isClass)(targetType)) {
|
|
2801
|
+
if (sourceType.shared.fullName !== targetType.shared.fullName ||
|
|
2802
|
+
types_1.TypeBase.isInstance(sourceType) !== types_1.TypeBase.isInstance(targetType) ||
|
|
2803
|
+
sourceType.priv.typeArgs?.length !== targetType.priv.typeArgs?.length ||
|
|
2804
|
+
sourceType.priv.tupleTypeArgs?.length !== targetType.priv.tupleTypeArgs?.length) {
|
|
2805
|
+
return sourceType;
|
|
2806
|
+
}
|
|
2807
|
+
const typeArgs = sourceType.priv.typeArgs?.map((typeArg, index) => transformTypePairRecursive(typeArg, targetType.priv.typeArgs[index], transformNode, pendingTypes, recursionCount + 1));
|
|
2808
|
+
const tupleTypeArgs = sourceType.priv.tupleTypeArgs?.map((tupleTypeArg, index) => ({
|
|
2809
|
+
...tupleTypeArg,
|
|
2810
|
+
type: transformTypePairRecursive(tupleTypeArg.type, targetType.priv.tupleTypeArgs[index].type, transformNode, pendingTypes, recursionCount + 1),
|
|
2811
|
+
}));
|
|
2812
|
+
if (!typeArgs?.some((type, index) => type !== sourceType.priv.typeArgs[index]) &&
|
|
2813
|
+
!tupleTypeArgs?.some((tupleTypeArg, index) => tupleTypeArg.type !== sourceType.priv.tupleTypeArgs[index].type)) {
|
|
2814
|
+
return sourceType;
|
|
2815
|
+
}
|
|
2816
|
+
const transformedType = types_1.TypeBase.cloneType(sourceType);
|
|
2817
|
+
transformedType.priv.typeArgs = typeArgs;
|
|
2818
|
+
transformedType.priv.tupleTypeArgs = tupleTypeArgs;
|
|
2819
|
+
return transformedType;
|
|
2820
|
+
}
|
|
2821
|
+
return sourceType;
|
|
2822
|
+
}
|
|
2823
|
+
finally {
|
|
2824
|
+
pendingTypes.delete(sourceType);
|
|
2825
|
+
}
|
|
2826
|
+
}
|
|
2715
2827
|
// Recursively walks a type and calls a callback for each TypeVar, allowing
|
|
2716
2828
|
// it to be replaced with something else.
|
|
2717
2829
|
class TypeVarTransformer {
|