Skip to content

Commit

Permalink
pull-pylance-with-pyright-1.1.392-20250115-224906
Browse files Browse the repository at this point in the history
  • Loading branch information
github-actions[bot] committed Jan 15, 2025
1 parent 36a58cd commit bc04af2
Show file tree
Hide file tree
Showing 17 changed files with 194 additions and 66 deletions.
17 changes: 14 additions & 3 deletions packages/pyright-internal/src/languageService/hoverProvider.ts
Original file line number Diff line number Diff line change
Expand Up @@ -187,9 +187,20 @@ export function getVariableTypeText(
}
}

// Handle the case where type is a function and was assigned to a variable.
if (type.category === TypeCategory.Function || type.category === TypeCategory.Overloaded) {
return getToolTipForType(type, label, name, evaluator, /* isProperty */ false, functionSignatureDisplay);
if (
type.category === TypeCategory.Function ||
type.category === TypeCategory.Overloaded ||
typeNode.parent?.nodeType === ParseNodeType.Call
) {
return getToolTipForType(
type,
label,
name,
evaluator,
/* isProperty */ false,
functionSignatureDisplay,
typeNode
);
}

const typeText = typeVarName ?? name + ': ' + evaluator.printType(getTypeForToolTip(evaluator, typeNode));
Expand Down
18 changes: 17 additions & 1 deletion packages/pyright-internal/src/languageService/tooltipUtils.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
* completion suggestions, etc.
*/

import { getBoundCallMethod } from '../analyzer/constructors';
import { Declaration, DeclarationType, VariableDeclaration } from '../analyzer/declaration';
import * as ParseTreeUtils from '../analyzer/parseTreeUtils';
import { SourceMapper } from '../analyzer/sourceMapper';
Expand Down Expand Up @@ -51,8 +52,23 @@ export function getToolTipForType(
name: string,
evaluator: TypeEvaluator,
isProperty: boolean,
functionSignatureDisplay: SignatureDisplayType
functionSignatureDisplay: SignatureDisplayType,
typeNode?: ExpressionNode
): string {
// Support __call__ method for class instances to show the signature of the method
if (type.category === TypeCategory.Class && isClassInstance(type) && typeNode) {
const callMethodResult = getBoundCallMethod(evaluator, typeNode, type);
if (
callMethodResult?.type.category === TypeCategory.Function ||
callMethodResult?.type.category === TypeCategory.Overloaded
) {
// narrow down specific overload if possible
const methodType = bindFunctionToClassOrObjectToolTip(evaluator, typeNode, type, callMethodResult.type);
if (methodType) {
type = methodType;
}
}
}
let signatureString = '';
if (isOverloaded(type)) {
signatureString = label.length > 0 ? `(${label})\n` : '';
Expand Down
13 changes: 8 additions & 5 deletions packages/pyright-internal/src/localization/package.nls.cs.json
Original file line number Diff line number Diff line change
Expand Up @@ -344,6 +344,7 @@
"noneNotIterable": "Objekt typu None není možné použít jako iterovatelnou hodnotu",
"noneNotSubscriptable": "Objekt typu “None“ nelze zadat jako dolní index",
"noneNotUsableWith": "Object of type \"None\" cannot be used with \"with\"",
"noneNotUsableWithAsync": "Object of type \"None\" cannot be used with \"async with\"",
"noneOperator": "Operátor {operator} se pro None nepodporuje",
"noneUnknownMember": "{name} není známý atribut None.",
"notRequiredArgCount": "Za NotRequired byl očekáván jeden argument typu",
Expand Down Expand Up @@ -396,6 +397,7 @@
"parenthesizedContextManagerIllegal": "Parentheses within \"with\" statement requires Python 3.9 or newer",
"patternNeverMatches": "Vzor se nikdy nebude shodovat s typem předmětu {type}",
"positionArgAfterNamedArg": "Poziční argument se nemůže objevit za argumenty klíčového slova",
"positionArgAfterUnpackedDictArg": "Positional argument cannot appear after keyword argument unpacking",
"positionOnlyAfterArgs": "Oddělovač parametrů jen pro pozici není povolený za parametrem *.",
"positionOnlyAfterKeywordOnly": "Parametr / se musí zobrazit před parametrem *",
"positionOnlyAfterNon": "Parametr jen pro pozici není povolený za parametrem, který není jen pro pozici.",
Expand Down Expand Up @@ -519,7 +521,8 @@
"typeNotSupportBinaryOperatorBidirectional": "Operátor {operator} není podporován pro typy „{leftType}“ a „{rightType}“, pokud se očekává typ „{expectedType}“",
"typeNotSupportUnaryOperator": "Operátor {operator} se pro typ {type} nepodporuje",
"typeNotSupportUnaryOperatorBidirectional": "Operátor {operator} není podporován pro typ {type}, když očekávaný typ je {expectedType}",
"typeNotUsableWith": "Objekt typu {type} není možné použít s typem with, protože neimplementuje metodu {method}",
"typeNotUsableWith": "Object of type \"{type}\" cannot be used with \"with\" because it does not correctly implement {method}",
"typeNotUsableWithAsync": "Object of type \"{type}\" cannot be used with \"async with\" because it does not correctly implement {method}",
"typeParameterBoundNotAllowed": "Vazbu nebo omezení nelze použít s parametrem variadického typu ani s parametrem ParamSpec",
"typeParameterConstraintTuple": "Omezení parametru typu musí být řazená kolekce členů dvou nebo více typů",
"typeParameterExistingTypeParameter": "Parametr typu {name} se už používá",
Expand Down Expand Up @@ -815,10 +818,10 @@
"unhashableType": "Typ „{type}“ nejde zatřiďovat",
"uninitializedAbstractVariable": "Proměnná instance {name} je definovaná v abstraktní základní třídě {classType}, ale neinicializovala se",
"unreachableExcept": "{exceptionType} je podtřídou {parentType}",
"useDictInstead": "Use dict[T1, T2] to indicate a dictionary type",
"useListInstead": "Use list[T] to indicate a list type or T1 | T2 to indicate a union type",
"useTupleInstead": "Use tuple[T1, ..., Tn] to indicate a tuple type or T1 | T2 to indicate a union type",
"useTypeInstead": "Use type[T] instead",
"useDictInstead": "Označte typ slovníku pomocí dict[T1, T2]",
"useListInstead": "Použijte list[T] k označení typu seznamu (list) nebo T1 | T2 k označení typu sjednocení (union).",
"useTupleInstead": "Použijte tuple[T1, ..., Tn] k označení typu řazené kolekce členů (tuple) nebo T1 | T2 k označení typu sjednocení (union).",
"useTypeInstead": "Místo toho použít type[T]",
"varianceMismatchForClass": "Odchylka argumentu typu „{typeVarName}“ není kompatibilní se základní třídou „{className}“",
"varianceMismatchForTypeAlias": "Rozptyl argumentu typu „{typeVarName}“ není kompatibilní s typem „{typeAliasParam}“"
},
Expand Down
13 changes: 8 additions & 5 deletions packages/pyright-internal/src/localization/package.nls.de.json
Original file line number Diff line number Diff line change
Expand Up @@ -344,6 +344,7 @@
"noneNotIterable": "Ein Objekt vom Typ \"None\" kann nicht als iterierbarer Wert verwendet werden.",
"noneNotSubscriptable": "Das Objekt vom Typ \"None\" kann nicht tiefgestellt werden.",
"noneNotUsableWith": "Object of type \"None\" cannot be used with \"with\"",
"noneNotUsableWithAsync": "Object of type \"None\" cannot be used with \"async with\"",
"noneOperator": "Der Operator \"{operator}\" wird für den \"{None}\" nicht unterstützt.",
"noneUnknownMember": "„{name}“ ist kein bekanntes Attribut von „None“",
"notRequiredArgCount": "Nach \"NotRequired\" wurde ein einzelnes Typargument erwartet.",
Expand Down Expand Up @@ -396,6 +397,7 @@
"parenthesizedContextManagerIllegal": "Parentheses within \"with\" statement requires Python 3.9 or newer",
"patternNeverMatches": "Das Muster wird für den Antragstellertyp \"{type}\" nie abgeglichen",
"positionArgAfterNamedArg": "Ein Positionsargument darf nicht nach Schlüsselwortargumenten stehen.",
"positionArgAfterUnpackedDictArg": "Positional argument cannot appear after keyword argument unpacking",
"positionOnlyAfterArgs": "Das Parametertrennzeichen \"Nur Position\" ist nach dem Parameter \"*\" nicht zulässig.",
"positionOnlyAfterKeywordOnly": "Der Parameter \"/\" muss vor dem Parameter \"*\" stehen.",
"positionOnlyAfterNon": "Der Parameter \"Nur Position\" ist nach einem Parameter, der nicht vom Typ \"Nur Position\" ist, nicht zulässig.",
Expand Down Expand Up @@ -519,7 +521,8 @@
"typeNotSupportBinaryOperatorBidirectional": "Der Operator \"{operator}\" wird für die Typen \"{leftType}\" und \"{rightType}\" nicht unterstützt, wenn der erwartete Typ \"{expectedType}\" ist.",
"typeNotSupportUnaryOperator": "Der Operator \"{operator}\" wird für den Typ \"{type}\" nicht unterstützt.",
"typeNotSupportUnaryOperatorBidirectional": "Der Operator \"{operator}\" wird für den Typ \"{type}\" nicht unterstützt, wenn der erwartete Typ \"{expectedType}\" ist.",
"typeNotUsableWith": "Ein Objekt vom Typ \"{type}\" kann nicht mit \"with\" verwendet werden, da es nicht {method} implementiert.",
"typeNotUsableWith": "Object of type \"{type}\" cannot be used with \"with\" because it does not correctly implement {method}",
"typeNotUsableWithAsync": "Object of type \"{type}\" cannot be used with \"async with\" because it does not correctly implement {method}",
"typeParameterBoundNotAllowed": "\"Bound\" oder \"constraint\" kann nicht mit einem variadic-Typparameter oder ParamSpec verwendet werden.",
"typeParameterConstraintTuple": "Die Typparametereinschränkung muss ein Tupel mit mindestens zwei Typen sein.",
"typeParameterExistingTypeParameter": "Der Typparameter \"{name}\" wird bereits verwendet.",
Expand Down Expand Up @@ -815,10 +818,10 @@
"unhashableType": "Der Typ \"{type}\" kann nicht mit einem Hash erstellt werden.",
"uninitializedAbstractVariable": "Die Instanzvariable \"{name}\" ist in einer abstrakten Basisklasse \"{classType}\" definiert, aber nicht initialisiert.",
"unreachableExcept": "\"{exceptionType}\" ist eine Unterklasse von \"{parentType}\"",
"useDictInstead": "Use dict[T1, T2] to indicate a dictionary type",
"useListInstead": "Use list[T] to indicate a list type or T1 | T2 to indicate a union type",
"useTupleInstead": "Use tuple[T1, ..., Tn] to indicate a tuple type or T1 | T2 to indicate a union type",
"useTypeInstead": "Use type[T] instead",
"useDictInstead": "Verwenden Sie dict[T1, T2], um einen Wörterbuchtyp anzugeben.",
"useListInstead": "Verwenden Sie list[T], um einen list-Typ anzugeben, oder T1 | T2, um einen union-Typ anzugeben.",
"useTupleInstead": "Verwenden Sie tuple[T1, ..., Tn], um einen tuple-Typ anzugeben, oder T1 | T2, um einen union-Typ anzugeben.",
"useTypeInstead": "Verwenden Sie stattdessen type[T].",
"varianceMismatchForClass": "Die Varianz des Typarguments \"{typeVarName}\" ist nicht mit der Basisklasse \"{className}\" kompatibel",
"varianceMismatchForTypeAlias": "Die Varianz des Typarguments \"{typeVarName}\" ist nicht mit \"{typeAliasParam}\" kompatibel"
},
Expand Down
13 changes: 8 additions & 5 deletions packages/pyright-internal/src/localization/package.nls.es.json
Original file line number Diff line number Diff line change
Expand Up @@ -344,6 +344,7 @@
"noneNotIterable": "No se puede utilizar un objeto de tipo \"None\" como valor iterable",
"noneNotSubscriptable": "El objeto de tipo \"None\" no se puede suscribir",
"noneNotUsableWith": "Object of type \"None\" cannot be used with \"with\"",
"noneNotUsableWithAsync": "Object of type \"None\" cannot be used with \"async with\"",
"noneOperator": "El operador \"{operator}\" no es compatible con \"None\".",
"noneUnknownMember": "\"{name}\" no es un atributo conocido de \"None\"",
"notRequiredArgCount": "Se esperaba un único argumento de tipo después de \"NotRequired\".",
Expand Down Expand Up @@ -396,6 +397,7 @@
"parenthesizedContextManagerIllegal": "Parentheses within \"with\" statement requires Python 3.9 or newer",
"patternNeverMatches": "El patrón nunca coincidirá para el tipo de asunto \"{type}\"",
"positionArgAfterNamedArg": "El argumento posicional no puede aparecer después de los argumentos de palabra clave",
"positionArgAfterUnpackedDictArg": "Positional argument cannot appear after keyword argument unpacking",
"positionOnlyAfterArgs": "No se permite el separador de parámetros de un solo puesto después del parámetro \"*\".",
"positionOnlyAfterKeywordOnly": "El parámetro \"/\" debe aparecer antes del parámetro \"*\".",
"positionOnlyAfterNon": "Parámetro de un solo puesto no permitido después del parámetro que no es de solo posición",
Expand Down Expand Up @@ -519,7 +521,8 @@
"typeNotSupportBinaryOperatorBidirectional": "No se admite el operador \"{operator}\" para los tipos \"{leftType}\" y \"{rightType}\" cuando el tipo esperado es \"{expectedType}\"",
"typeNotSupportUnaryOperator": "El operador \"{operator}\" no se admite para el tipo \"{type}\"",
"typeNotSupportUnaryOperatorBidirectional": "Operador \"{operator}\" no admitido para el tipo \"{type}\" cuando el tipo esperado es \"{expectedType}\"",
"typeNotUsableWith": "El objeto de tipo \"{type}\" no puede utilizarse con \"con\" porque no implementa {method}.",
"typeNotUsableWith": "Object of type \"{type}\" cannot be used with \"with\" because it does not correctly implement {method}",
"typeNotUsableWithAsync": "Object of type \"{type}\" cannot be used with \"async with\" because it does not correctly implement {method}",
"typeParameterBoundNotAllowed": "No se pueden usar límites o restricciones con un parámetro de tipo variádico o ParamSpec",
"typeParameterConstraintTuple": "La restricción del parámetro de tipo debe ser una tupla de dos o más tipos",
"typeParameterExistingTypeParameter": "El parámetro de tipo \"{name}\" ya está en uso",
Expand Down Expand Up @@ -815,10 +818,10 @@
"unhashableType": "El tipo \"{type}\" no admite hash",
"uninitializedAbstractVariable": "La variable de instancia \"{name}\" está definida en la clase base abstracta \"{classType} \" pero no inicializada.",
"unreachableExcept": "\"{exceptionType}\" es una subclase de \"{parentType}\"",
"useDictInstead": "Use dict[T1, T2] to indicate a dictionary type",
"useListInstead": "Use list[T] to indicate a list type or T1 | T2 to indicate a union type",
"useTupleInstead": "Use tuple[T1, ..., Tn] to indicate a tuple type or T1 | T2 to indicate a union type",
"useTypeInstead": "Use type[T] instead",
"useDictInstead": "Utilice dict[T1, T2] para indicar un tipo de diccionario",
"useListInstead": "Utilice list[T] para indicar un tipo de list o T1 | T2 para indicar un tipo de union",
"useTupleInstead": "Utilice tuple[T1, ..., Tn] para indicar un tipo de tuple o T1 | T2 para indicar un tipo de union",
"useTypeInstead": "Utilice type[T] en su lugar",
"varianceMismatchForClass": "La varianza del argumento de tipo \"{typeVarName}\" no es compatible con la clase base \"{className}\"",
"varianceMismatchForTypeAlias": "La varianza del argumento de tipo \"{typeVarName}\" no es compatible con \"{typeAliasParam}\""
},
Expand Down
13 changes: 8 additions & 5 deletions packages/pyright-internal/src/localization/package.nls.fr.json
Original file line number Diff line number Diff line change
Expand Up @@ -344,6 +344,7 @@
"noneNotIterable": "L’objet de type « None » ne peut pas être utilisé en tant que valeur itérable",
"noneNotSubscriptable": "L’objet de type « None » n’est pas inscriptible",
"noneNotUsableWith": "Object of type \"None\" cannot be used with \"with\"",
"noneNotUsableWithAsync": "Object of type \"None\" cannot be used with \"async with\"",
"noneOperator": "L’opérateur « {operator} » n’est pas pris en charge pour « None »",
"noneUnknownMember": "« {name} » n’est pas un attribut connu de « None »",
"notRequiredArgCount": "Argument de type unique attendu après « NotRequired »",
Expand Down Expand Up @@ -396,6 +397,7 @@
"parenthesizedContextManagerIllegal": "Parentheses within \"with\" statement requires Python 3.9 or newer",
"patternNeverMatches": "Le modèle ne sera jamais mis en correspondance pour le type d’objet « {type} »",
"positionArgAfterNamedArg": "L’argument positionnel ne peut pas apparaître après les arguments de mot clé",
"positionArgAfterUnpackedDictArg": "Positional argument cannot appear after keyword argument unpacking",
"positionOnlyAfterArgs": "Séparateur de paramètres de position seule non autorisé après le paramètre « * »",
"positionOnlyAfterKeywordOnly": "Le paramètre « / » doit apparaître avant le paramètre « * »",
"positionOnlyAfterNon": "Paramètre de position seule non autorisé après un paramètre qui n’est pas en position seule",
Expand Down Expand Up @@ -519,7 +521,8 @@
"typeNotSupportBinaryOperatorBidirectional": "L'opérateur \"{operator}\" n'est pas pris en charge pour les types \"{leftType}\" et \"{rightType}\" lorsque le type attendu est \"{expectedType}\"",
"typeNotSupportUnaryOperator": "L'opérateur \"{operator}\" n'est pas pris en charge pour le type \"{type}\"",
"typeNotSupportUnaryOperatorBidirectional": "L’opérateur « {operator} » n’est pas pris en charge pour le type « {type} » quand le type attendu est « {expectedType} »",
"typeNotUsableWith": "L’objet de type \"{type}\" ne peut pas être utilisé avec « with », car il n’implémente pas {method}",
"typeNotUsableWith": "Object of type \"{type}\" cannot be used with \"with\" because it does not correctly implement {method}",
"typeNotUsableWithAsync": "Object of type \"{type}\" cannot be used with \"async with\" because it does not correctly implement {method}",
"typeParameterBoundNotAllowed": "La limite ou la contrainte ne peut pas être utilisée avec un paramètre de type variadique ou ParamSpec",
"typeParameterConstraintTuple": "La contrainte de paramètre de type doit être un tuple de plusieurs types",
"typeParameterExistingTypeParameter": "Le paramètre de type « {name} » est déjà utilisé",
Expand Down Expand Up @@ -815,10 +818,10 @@
"unhashableType": "Le type \"{type}\" n'est pas hachable",
"uninitializedAbstractVariable": "La variable d’instance « {name} » est définie dans la classe de base abstraite « {classType} » mais n’est pas initialisée",
"unreachableExcept": "« {exceptionType} » est une sous-classe de « {parentType} »",
"useDictInstead": "Use dict[T1, T2] to indicate a dictionary type",
"useListInstead": "Use list[T] to indicate a list type or T1 | T2 to indicate a union type",
"useTupleInstead": "Use tuple[T1, ..., Tn] to indicate a tuple type or T1 | T2 to indicate a union type",
"useTypeInstead": "Use type[T] instead",
"useDictInstead": "Utilisez dict[T1, T2] pour indiquer un type de dictionnaire",
"useListInstead": "Utiliser list[T] pour indiquer un type de liste ou T1 | T2 pour indiquer un type d’union",
"useTupleInstead": "Utiliser tuple[T1, ..., Tn] pour indiquer un type de tuple ou T1 | T2 pour indiquer un type d’union",
"useTypeInstead": "Utiliser type[T] à la place",
"varianceMismatchForClass": "La variance de l'argument de type \"{typeVarName}\" est incompatible avec la classe de base \"{className}\"",
"varianceMismatchForTypeAlias": "La variance de l'argument de type \"{typeVarName}\" est incompatible avec \"{typeAliasParam}\""
},
Expand Down
Loading

0 comments on commit bc04af2

Please sign in to comment.