From e1bb702325f2c6c2fff8c9e7b548c4d6d9dec19e Mon Sep 17 00:00:00 2001 From: Azure Piplines <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 6 Nov 2024 07:05:49 +0000 Subject: [PATCH] pull-pylance-with-pyright-1.1.388-20241106-070225 --- packages/pyright-internal/package-lock.json | 6 ++-- .../src/analyzer/importResolver.ts | 12 +++---- .../pyright-internal/src/analyzer/service.ts | 3 +- .../src/analyzer/serviceUtils.ts | 4 +-- .../pyright-internal/src/common/pathConsts.ts | 3 ++ .../src/languageService/autoImporter.ts | 32 +++++++++---------- .../fileWatcherDynamicFeature.ts | 2 +- .../src/localization/package.nls.cs.json | 1 + .../src/localization/package.nls.de.json | 3 +- .../src/localization/package.nls.es.json | 3 +- .../src/localization/package.nls.fr.json | 1 + .../src/localization/package.nls.it.json | 3 +- .../src/localization/package.nls.ja.json | 1 + .../src/localization/package.nls.ko.json | 1 + .../src/localization/package.nls.pl.json | 1 + .../src/localization/package.nls.pt-br.json | 1 + .../localization/package.nls.qps-ploc.json | 1 + .../src/localization/package.nls.ru.json | 1 + .../src/localization/package.nls.tr.json | 1 + .../src/localization/package.nls.zh-cn.json | 1 + .../src/localization/package.nls.zh-tw.json | 1 + .../src/tests/harness/fourslash/testState.ts | 18 ++++++++++- .../tests/harness/fourslash/testStateUtils.ts | 2 +- 23 files changed, 66 insertions(+), 36 deletions(-) diff --git a/packages/pyright-internal/package-lock.json b/packages/pyright-internal/package-lock.json index b8527a9ed6af..4c081e268177 100644 --- a/packages/pyright-internal/package-lock.json +++ b/packages/pyright-internal/package-lock.json @@ -2518,9 +2518,9 @@ } }, "node_modules/core-js-pure": { - "version": "3.38.1", - "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.38.1.tgz", - "integrity": "sha512-BY8Etc1FZqdw1glX0XNOq2FDwfrg/VGqoZOZCdaL+UmdaqDwQwYXkMJT4t6In+zfEfOJDcM9T0KdbBeJg8KKCQ==", + "version": "3.39.0", + "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.39.0.tgz", + "integrity": "sha512-7fEcWwKI4rJinnK+wLTezeg2smbFFdSBP6E2kQZNbnzM2s1rpKQ6aaRteZSSg7FLU3P0HGGVo/gbpfanU36urg==", "hasInstallScript": true, "funding": { "type": "opencollective", diff --git a/packages/pyright-internal/src/analyzer/importResolver.ts b/packages/pyright-internal/src/analyzer/importResolver.ts index a65227a73b76..98f40af556fc 100644 --- a/packages/pyright-internal/src/analyzer/importResolver.ts +++ b/packages/pyright-internal/src/analyzer/importResolver.ts @@ -509,6 +509,12 @@ export class ImportResolver { return excludes; } + // Intended to be overridden by subclasses to provide additional stub + // path capabilities. Return undefined if no extra stub path were found. + getTypeshedPathEx(execEnv: ExecutionEnvironment, importFailureInfo: string[]): Uri | undefined { + return undefined; + } + protected readdirEntriesCached(uri: Uri): Dirent[] { const cachedValue = this._cachedEntriesForPath.get(uri.key); if (cachedValue) { @@ -744,12 +750,6 @@ export class ImportResolver { ); } - // Intended to be overridden by subclasses to provide additional stub - // path capabilities. Return undefined if no extra stub path were found. - protected getTypeshedPathEx(execEnv: ExecutionEnvironment, importFailureInfo: string[]): Uri | undefined { - return undefined; - } - // Intended to be overridden by subclasses to provide additional stub // resolving capabilities. Return undefined if no stubs were found for // this import. diff --git a/packages/pyright-internal/src/analyzer/service.ts b/packages/pyright-internal/src/analyzer/service.ts index fca567fd8e34..bd750e4da01a 100644 --- a/packages/pyright-internal/src/analyzer/service.ts +++ b/packages/pyright-internal/src/analyzer/service.ts @@ -28,7 +28,7 @@ import { EditableProgram, ProgramView } from '../common/extensibility'; import { FileSystem } from '../common/fileSystem'; import { FileWatcher, FileWatcherEventType, ignoredWatchEventFunction } from '../common/fileWatcher'; import { Host, HostFactory, NoAccessHost } from '../common/host'; -import { defaultStubsDirectory } from '../common/pathConsts'; +import { configFileName, defaultStubsDirectory } from '../common/pathConsts'; import { getFileName, isRootedDiskPath, normalizeSlashes } from '../common/pathUtils'; import { PythonVersion } from '../common/pythonVersion'; import { ServiceKeys } from '../common/serviceKeys'; @@ -59,7 +59,6 @@ import { ImportResolver, ImportResolverFactory, createImportedModuleDescriptor } import { MaxAnalysisTime, Program } from './program'; import { findPythonSearchPaths } from './pythonPathUtils'; import { - configFileName, findConfigFile, findConfigFileHereOrUp, findPyprojectTomlFile, diff --git a/packages/pyright-internal/src/analyzer/serviceUtils.ts b/packages/pyright-internal/src/analyzer/serviceUtils.ts index 94bea3a95f40..43d631bfc994 100644 --- a/packages/pyright-internal/src/analyzer/serviceUtils.ts +++ b/packages/pyright-internal/src/analyzer/serviceUtils.ts @@ -1,10 +1,8 @@ import { ReadOnlyFileSystem } from '../common/fileSystem'; +import { configFileName, pyprojectTomlName } from '../common/pathConsts'; import { Uri } from '../common/uri/uri'; import { forEachAncestorDirectory } from '../common/uri/uriUtils'; -export const configFileName = 'pyrightconfig.json'; -export const pyprojectTomlName = 'pyproject.toml'; - export function findPyprojectTomlFileHereOrUp(fs: ReadOnlyFileSystem, searchPath: Uri): Uri | undefined { return forEachAncestorDirectory(searchPath, (ancestor) => findPyprojectTomlFile(fs, ancestor)); } diff --git a/packages/pyright-internal/src/common/pathConsts.ts b/packages/pyright-internal/src/common/pathConsts.ts index 8158145b401e..5b177db1ff33 100644 --- a/packages/pyright-internal/src/common/pathConsts.ts +++ b/packages/pyright-internal/src/common/pathConsts.ts @@ -15,3 +15,6 @@ export const distPackages = 'dist-packages'; export const src = 'src'; export const stubsSuffix = '-stubs'; export const defaultStubsDirectory = 'typings'; +export const requirementsFileName = 'requirements.txt'; +export const pyprojectTomlName = 'pyproject.toml'; +export const configFileName = 'pyrightconfig.json'; diff --git a/packages/pyright-internal/src/languageService/autoImporter.ts b/packages/pyright-internal/src/languageService/autoImporter.ts index e82f490203f9..be034ec93e22 100644 --- a/packages/pyright-internal/src/languageService/autoImporter.ts +++ b/packages/pyright-internal/src/languageService/autoImporter.ts @@ -51,8 +51,8 @@ export interface AutoImportSymbol { } export interface ModuleSymbolTable { - uri: Uri; - forEach(callbackfn: (symbol: AutoImportSymbol, name: string, library: boolean) => void): void; + readonly uri: Uri; + getSymbols(): Generator<{ symbol: AutoImportSymbol; name: string; library: boolean }>; } export type ModuleSymbolMap = Map; @@ -138,34 +138,34 @@ export function buildModuleSymbolsMap(files: readonly SourceFileInfo[]): ModuleS moduleSymbolMap.set(uri.key, { uri, - forEach(callbackfn: (value: AutoImportSymbol, key: string, library: boolean) => void): void { - symbolTable.forEach((symbol, name) => { + *getSymbols() { + for (const [name, symbol] of symbolTable) { if (!isVisibleExternally(symbol)) { - return; + continue; } const declarations = symbol.getDeclarations(); if (!declarations || declarations.length === 0) { - return; + continue; } const declaration = declarations[0]; if (!declaration) { - return; + continue; } if (declaration.type === DeclarationType.Alias && isUserCode(file)) { // We don't include import alias in auto import // for workspace files. - return; + continue; } const variableKind = declaration.type === DeclarationType.Variable && !declaration.isConstant && !declaration.isFinal ? SymbolKind.Variable : undefined; - callbackfn({ symbol, kind: variableKind }, name, /* library */ !isUserCode(file)); - }); + yield { symbol: { symbol, kind: variableKind }, name, library: !isUserCode(file) }; + } }, }); return; @@ -351,9 +351,9 @@ export class AutoImporter { } const dotCount = StringUtils.getCharacterCount(importSource, '.'); - topLevelSymbols.forEach((autoImportSymbol, name) => { + for (const { symbol: autoImportSymbol, name } of topLevelSymbols.getSymbols()) { if (!this.shouldIncludeVariable(autoImportSymbol, name, fileProperties.isStub)) { - return; + continue; } // For very short matching strings, we will require an exact match. Otherwise @@ -361,12 +361,12 @@ export class AutoImporter { // characters, we can do a fuzzy match. const isSimilar = this._isSimilar(word, name, similarityLimit); if (!isSimilar) { - return; + continue; } const alreadyIncluded = this._containsName(name, importSource, results); if (alreadyIncluded) { - return; + continue; } // We will collect all aliases and then process it later @@ -392,7 +392,7 @@ export class AutoImporter { }, importAliasMap ); - return; + continue; } const nameForImportFrom = this.getNameForImportFrom(/* library */ !fileProperties.isUserCode, moduleUri); @@ -416,7 +416,7 @@ export class AutoImporter { originalName: name, originalDeclUri: moduleUri, }); - }); + } // If the current file is in a directory that also contains an "__init__.py[i]" // file, we can use that directory name as an implicit import target. diff --git a/packages/pyright-internal/src/languageService/fileWatcherDynamicFeature.ts b/packages/pyright-internal/src/languageService/fileWatcherDynamicFeature.ts index 46ea339d7d25..fcfcb9295b1d 100644 --- a/packages/pyright-internal/src/languageService/fileWatcherDynamicFeature.ts +++ b/packages/pyright-internal/src/languageService/fileWatcherDynamicFeature.ts @@ -15,9 +15,9 @@ import { import { FileSystem } from '../common/fileSystem'; import { deduplicateFolders, isFile } from '../common/uri/uriUtils'; import { DynamicFeature } from './dynamicFeature'; -import { configFileName } from '../analyzer/serviceUtils'; import { Workspace } from '../workspaceFactory'; import { isDefined } from '../common/core'; +import { configFileName } from '../common/pathConsts'; export class FileWatcherDynamicFeature extends DynamicFeature { constructor( diff --git a/packages/pyright-internal/src/localization/package.nls.cs.json b/packages/pyright-internal/src/localization/package.nls.cs.json index 73d99815c7f1..73014ae92790 100644 --- a/packages/pyright-internal/src/localization/package.nls.cs.json +++ b/packages/pyright-internal/src/localization/package.nls.cs.json @@ -374,6 +374,7 @@ "paramAnnotationMissing": "Chybí poznámka typu pro parametr „{name}“", "paramAssignmentMismatch": "Výraz typu „{sourceType}“ nelze přiřadit k parametru typu „{paramType}“", "paramNameMissing": "Žádný parametr s názvem {name}", + "paramSpecArgsKwargsDuplicate": "Argumenty pro ParamSpec {type} již byly zadány.", "paramSpecArgsKwargsUsage": "Atributy args a kwargs ParamSpec se musí vyskytovat v signatuře funkce.", "paramSpecArgsMissing": "Chybí argumenty pro parametr ParamSpec {type}", "paramSpecArgsUsage": "Atribut args ParamSpec je platný jenom v případě, že se používá s parametrem *args.", diff --git a/packages/pyright-internal/src/localization/package.nls.de.json b/packages/pyright-internal/src/localization/package.nls.de.json index 5f4924d10d6f..e6a94fb3262b 100644 --- a/packages/pyright-internal/src/localization/package.nls.de.json +++ b/packages/pyright-internal/src/localization/package.nls.de.json @@ -374,6 +374,7 @@ "paramAnnotationMissing": "Typanmerkung fehlt für Parameter \"{name}\"", "paramAssignmentMismatch": "Ein Ausdruck vom Typ \"{sourceType}\" kann keinem Parameter vom Typ \"{paramType}\" zugewiesen werden.", "paramNameMissing": "Kein Parameter mit dem Namen \"{name}\"", + "paramSpecArgsKwargsDuplicate": "Es wurden bereits Argumente für ParamSpec \"{type}\" bereitgestellt", "paramSpecArgsKwargsUsage": "Die Attribute „args“ und „kwargs“ von ParamSpec müssen beide innerhalb einer Funktionssignatur auftreten", "paramSpecArgsMissing": "Argumente für ParamSpec \"{type}\" fehlen.", "paramSpecArgsUsage": "Das Attribut „args“ von ParamSpec ist nur gültig, wenn es mit dem Parameter „*args“ verwendet wird", @@ -562,7 +563,7 @@ "typedDictEntryName": "Für den Wörterbucheintragsnamen wurde ein Zeichenfolgenliteral erwartet.", "typedDictEntryUnique": "Namen innerhalb eines Wörterbuchs müssen eindeutig sein.", "typedDictExtraArgs": "Zusätzliche TypedDict-Argumente werden nicht unterstützt.", - "typedDictExtraItemsClosed": "A TypedDict cannot be closed if it supports extra items", + "typedDictExtraItemsClosed": "Ein TypedDict kann nicht auf closed (geschlossen) gesetzt werden, wenn es zusätzliche Elemente unterstützt.", "typedDictFieldNotRequiredRedefinition": "Das TypedDict-Element „{name}“ kann nicht als „NotRequired“ neu definiert werden.", "typedDictFieldReadOnlyRedefinition": "Das TypedDict-Element „{name}“ kann nicht als „ReadOnly“ neu definiert werden.", "typedDictFieldRequiredRedefinition": "Das TypedDict-Element „{name}“ kann nicht als „Required“ neu definiert werden.", diff --git a/packages/pyright-internal/src/localization/package.nls.es.json b/packages/pyright-internal/src/localization/package.nls.es.json index 078a0c1a70a7..597f81cee934 100644 --- a/packages/pyright-internal/src/localization/package.nls.es.json +++ b/packages/pyright-internal/src/localization/package.nls.es.json @@ -374,6 +374,7 @@ "paramAnnotationMissing": "Falta la anotación de tipo para el parámetro \"{name}\"", "paramAssignmentMismatch": "La expresión de tipo \"{sourceType}\" no se puede asignar al parámetro de tipo \"{paramType}\"", "paramNameMissing": "Ningún parámetro llamado \"{name}\"", + "paramSpecArgsKwargsDuplicate": "Ya se han proporcionado los argumentos para ParamSpec \"{type}\".", "paramSpecArgsKwargsUsage": "Los atributos \"args\" y \"kwargs\" de ParamSpec deben aparecer ambos dentro de una firma de función", "paramSpecArgsMissing": "Faltan argumentos para ParamSpec \"{type}\".", "paramSpecArgsUsage": "El atributo \"args\" de ParamSpec solo es válido cuando se usa con el parámetro *args.", @@ -562,7 +563,7 @@ "typedDictEntryName": "Cadena literal esperada para el nombre de la entrada del diccionario", "typedDictEntryUnique": "Los nombres dentro de un diccionario deben ser únicos", "typedDictExtraArgs": "No se admiten argumentos TypedDict adicionales", - "typedDictExtraItemsClosed": "A TypedDict cannot be closed if it supports extra items", + "typedDictExtraItemsClosed": "Un TypedDict no puede tener el estado closed si admite elementos adicionales", "typedDictFieldNotRequiredRedefinition": "El elemento TypedDict \"{name}\" no se puede redefinir como NotRequired", "typedDictFieldReadOnlyRedefinition": "El elemento TypedDict \"{name}\" no se puede redefinir como ReadOnly", "typedDictFieldRequiredRedefinition": "El elemento TypedDict \"{name}\" no se puede redefinir como Required", diff --git a/packages/pyright-internal/src/localization/package.nls.fr.json b/packages/pyright-internal/src/localization/package.nls.fr.json index 7069ba60cbed..a23c418101d2 100644 --- a/packages/pyright-internal/src/localization/package.nls.fr.json +++ b/packages/pyright-internal/src/localization/package.nls.fr.json @@ -374,6 +374,7 @@ "paramAnnotationMissing": "L'annotation de type est manquante pour le paramètre \"{name}\"", "paramAssignmentMismatch": "L'expression de type \"{sourceType}\" ne peut pas être affectée au paramètre de type \"{paramType}\"", "paramNameMissing": "Aucun paramètre nommé « {name} »", + "paramSpecArgsKwargsDuplicate": "Des arguments pour ParamSpec « {type} » ont déjà été fournis", "paramSpecArgsKwargsUsage": "Les attributs « args » et « kwargs » de ParamSpec doivent apparaître tous les deux dans une signature de fonction", "paramSpecArgsMissing": "Les arguments pour ParamSpec « {type} » sont manquants", "paramSpecArgsUsage": "L’attribut « args » de ParamSpec n’est valide que lorsqu’il est utilisé avec le paramètre *args", diff --git a/packages/pyright-internal/src/localization/package.nls.it.json b/packages/pyright-internal/src/localization/package.nls.it.json index 61d20841dbd1..2d7ee070ebf2 100644 --- a/packages/pyright-internal/src/localization/package.nls.it.json +++ b/packages/pyright-internal/src/localization/package.nls.it.json @@ -374,6 +374,7 @@ "paramAnnotationMissing": "Annotazione di tipo mancante per il parametro \"{name}\"", "paramAssignmentMismatch": "Non è possibile assegnare l'espressione di tipo \"{sourceType}\" al parametro di tipo \"{paramType}\"", "paramNameMissing": "Nessun parametro denominato \"{name}\"", + "paramSpecArgsKwargsDuplicate": "Gli argomenti per ParamSpec \"{type}\" sono già stati specificati", "paramSpecArgsKwargsUsage": "Gli attributi \"args\" e \"kwargs\" di ParamSpec devono essere entrambi visualizzati all'interno di una firma di funzione", "paramSpecArgsMissing": "Gli argomenti per ParamSpec \"{type}\" sono mancanti", "paramSpecArgsUsage": "L'attributo \"args\" di ParamSpec è valido solo se usato con il parametro *args", @@ -562,7 +563,7 @@ "typedDictEntryName": "Valore letterale stringa previsto per il nome della voce del dizionario", "typedDictEntryUnique": "I nomi all'interno di un dizionario devono essere univoci", "typedDictExtraArgs": "Argomenti TypedDict aggiuntivi non supportati", - "typedDictExtraItemsClosed": "A TypedDict cannot be closed if it supports extra items", + "typedDictExtraItemsClosed": "TypedDict non può avere il valore “closed” se supporta elementi aggiuntivi", "typedDictFieldNotRequiredRedefinition": "Non è possibile ridefinire il campo TypedDict \"{name}\" come NotRequired", "typedDictFieldReadOnlyRedefinition": "Non è possibile ridefinire l’elemento TypedDict \"{name}\" come ReadOnly", "typedDictFieldRequiredRedefinition": "Non è possibile ridefinire il campo TypedDict \"{name}\" come Required", diff --git a/packages/pyright-internal/src/localization/package.nls.ja.json b/packages/pyright-internal/src/localization/package.nls.ja.json index 0ec193de429c..a4b052acf8f6 100644 --- a/packages/pyright-internal/src/localization/package.nls.ja.json +++ b/packages/pyright-internal/src/localization/package.nls.ja.json @@ -374,6 +374,7 @@ "paramAnnotationMissing": "パラメーター \"{name}\" に型注釈がありません", "paramAssignmentMismatch": "型 \"{sourceType}\" の式を型 \"{paramType}\" のパラメーターに割り当てることはできません", "paramNameMissing": "\"{name}\" という名前のパラメーターがありません", + "paramSpecArgsKwargsDuplicate": "ParamSpec \"{type}\" の引数は既に指定されています", "paramSpecArgsKwargsUsage": "ParamSpec の \"args\" 属性と \"kwargs\" 属性の両方が関数シグネチャ内に含まれている必要があります", "paramSpecArgsMissing": "ParamSpec \"{type}\" の引数がありません", "paramSpecArgsUsage": "ParamSpec の \"args\" 属性は、*args パラメーターと共に使用する場合にのみ有効です", diff --git a/packages/pyright-internal/src/localization/package.nls.ko.json b/packages/pyright-internal/src/localization/package.nls.ko.json index 230e3fa9d459..ed9f6bcf872a 100644 --- a/packages/pyright-internal/src/localization/package.nls.ko.json +++ b/packages/pyright-internal/src/localization/package.nls.ko.json @@ -374,6 +374,7 @@ "paramAnnotationMissing": "‘{name}’ 매개 변수에 대한 형식 주석이 없습니다.", "paramAssignmentMismatch": "‘{sourceType}’ 형식의 식을 ‘{paramType}’ 형식의 매개 변수에 할당할 수 없습니다.", "paramNameMissing": "이름이 \"{name}\"인 매개 변수가 없습니다.", + "paramSpecArgsKwargsDuplicate": "ParamSpec \"{type}\" 인수가 이미 제공되었습니다.", "paramSpecArgsKwargsUsage": "ParamSpec의 \"args\" 및 \"kwargs\" 특성은 모두 함수 서명 내에 나타나야 함", "paramSpecArgsMissing": "ParamSpec \"{type}\"에 대한 인수가 없습니다.", "paramSpecArgsUsage": "ParamSpec의 \"args\" 특성은 *args 매개 변수와 함께 사용할 경우에만 유효함", diff --git a/packages/pyright-internal/src/localization/package.nls.pl.json b/packages/pyright-internal/src/localization/package.nls.pl.json index 4dc4ca2cc14d..cea7c96969be 100644 --- a/packages/pyright-internal/src/localization/package.nls.pl.json +++ b/packages/pyright-internal/src/localization/package.nls.pl.json @@ -374,6 +374,7 @@ "paramAnnotationMissing": "Brak adnotacji typu dla parametru „{name}”", "paramAssignmentMismatch": "Wyrażenia typu „{sourceType}” nie można przypisać do parametru typu „{paramType}”", "paramNameMissing": "Brak parametru o nazwie „{name}”", + "paramSpecArgsKwargsDuplicate": "Argumenty parametru ParamSpec „{type}” zostały już podane", "paramSpecArgsKwargsUsage": "Atrybuty „args” i „kwargs” specyfikacji ParamSpec muszą znajdować się w sygnaturze funkcji", "paramSpecArgsMissing": "Brak argumentów dla parametru ParamSpec „{type}”.", "paramSpecArgsUsage": "Atrybut „args” parametru ParamSpec jest ważna tylko wtedy, gdy jest używana z parametrem *args", diff --git a/packages/pyright-internal/src/localization/package.nls.pt-br.json b/packages/pyright-internal/src/localization/package.nls.pt-br.json index d7795ca7fc90..8ad094e1de40 100644 --- a/packages/pyright-internal/src/localization/package.nls.pt-br.json +++ b/packages/pyright-internal/src/localization/package.nls.pt-br.json @@ -374,6 +374,7 @@ "paramAnnotationMissing": "A anotação de tipo está ausente para o parâmetro \"{name}\"", "paramAssignmentMismatch": "A expressão do tipo \"{sourceType}\" não pode ser atribuída ao parâmetro do tipo \"{paramType}\"", "paramNameMissing": "Nenhum parâmetro chamado \"{name}\"", + "paramSpecArgsKwargsDuplicate": "Os argumentos para ParamSpec \"{type}\" já foram fornecidos", "paramSpecArgsKwargsUsage": "Os atributos \"args\" e \"kwargs\" de ParamSpec devem aparecer dentro de uma assinatura de função", "paramSpecArgsMissing": "Argumentos para ParamSpec \"{type}\" estão ausentes", "paramSpecArgsUsage": "O atributo \"args\" de ParamSpec é válido somente quando usado com o parâmetro *args", diff --git a/packages/pyright-internal/src/localization/package.nls.qps-ploc.json b/packages/pyright-internal/src/localization/package.nls.qps-ploc.json index d32a2ca12322..c1ca0cd8f0f5 100644 --- a/packages/pyright-internal/src/localization/package.nls.qps-ploc.json +++ b/packages/pyright-internal/src/localization/package.nls.qps-ploc.json @@ -374,6 +374,7 @@ "paramAnnotationMissing": "[1OYGc][นั้Tÿpë æññøtætïøñ ïs mïssïñg før pæræmëtër \"{ñæmë}\"Ấğ倪İЂҰक्र्तिृまẤğ倪İЂҰนั้ढूँ]", "paramAssignmentMismatch": "[Q8zha][นั้Ëxprëssïøñ øf tÿpë \"{søµrçëTÿpë}\" çæññøt þë æssïgñëð tø pæræmëtër øf tÿpë \"{pæræmTÿpë}\"Ấğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्นั้ढूँ]", "paramNameMissing": "[ivXu4][นั้Ñø pæræmëtër ñæmëð \"{ñæmë}\"Ấğ倪İЂҰक्र्तिृนั้ढूँ]", + "paramSpecArgsKwargsDuplicate": "[4Ie64][นั้Ærgµmëñts før ParamSpec \"{tÿpë}\" hævë ælrëæðÿ þëëñ prøvïðëðẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्นั้ढूँ]", "paramSpecArgsKwargsUsage": "[oVRV0][นั้\"args\" æñð \"kwargs\" ættrïþµtës øf ParamSpec mµst þøth æppëær wïthïñ æ fµñçtïøñ sïgñætµrëẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्นั้ढूँ]", "paramSpecArgsMissing": "[rd6zO][นั้Ærgµmëñts før ParamSpec \"{tÿpë}\" ærë mïssïñgẤğ倪İЂҰक्र्तिृまẤğ倪İนั้ढूँ]", "paramSpecArgsUsage": "[2U9SN][นั้\"args\" ættrïþµtë øf ParamSpec ïs vælïð øñlÿ whëñ µsëð wïth *args pæræmëtërẤğ倪İЂҰक्र्तिृまẤğ倪İЂҰक्र्तिृまẤğนั้ढूँ]", diff --git a/packages/pyright-internal/src/localization/package.nls.ru.json b/packages/pyright-internal/src/localization/package.nls.ru.json index b52f3bb73451..a7db1bcd3449 100644 --- a/packages/pyright-internal/src/localization/package.nls.ru.json +++ b/packages/pyright-internal/src/localization/package.nls.ru.json @@ -374,6 +374,7 @@ "paramAnnotationMissing": "Отсутствует заметка с типом для параметра \"{name}\"", "paramAssignmentMismatch": "Выражение типа \"{sourceType}\" не может быть назначено параметру типа \"{paramType}\"", "paramNameMissing": "Параметра с именем \"{name}\" не существует", + "paramSpecArgsKwargsDuplicate": "Аргументы для \"{type}\" ParamSpec уже предоставлены", "paramSpecArgsKwargsUsage": "Атрибуты \"args\" и \"kwargs\" ParamSpec должны одновременно присутствовать в сигнатуре функции", "paramSpecArgsMissing": "Отсутствуют аргументы для \"{type}\" ParamSpec", "paramSpecArgsUsage": "Атрибут \"args\" ParamSpec допустим только при использовании с параметром *args", diff --git a/packages/pyright-internal/src/localization/package.nls.tr.json b/packages/pyright-internal/src/localization/package.nls.tr.json index 7056a298c444..3d2ad4488aee 100644 --- a/packages/pyright-internal/src/localization/package.nls.tr.json +++ b/packages/pyright-internal/src/localization/package.nls.tr.json @@ -374,6 +374,7 @@ "paramAnnotationMissing": "\"{name}\" parametresi için tür ek açıklaması eksik", "paramAssignmentMismatch": "\"{sourceType}\" türündeki ifade, \"{paramType}\" türündeki parametreye atanamaz", "paramNameMissing": "\"{name}\" adlı parametre yok", + "paramSpecArgsKwargsDuplicate": "\"{type}\" ParamSpec'i için bağımsız değişkenler zaten sağlandı", "paramSpecArgsKwargsUsage": "ParamSpec'in \"args\" ve \"kwargs\" özniteliklerinin ikisi de işlev imzasında görünmelidir", "paramSpecArgsMissing": "ParamSpec \"{type}\" bağımsız değişkenleri eksik", "paramSpecArgsUsage": "ParamSpec'in \"args\" özniteliği yalnızca *args parametresiyle kullanıldığında geçerlidir", diff --git a/packages/pyright-internal/src/localization/package.nls.zh-cn.json b/packages/pyright-internal/src/localization/package.nls.zh-cn.json index 5b961feb1701..0ca3c7000258 100644 --- a/packages/pyright-internal/src/localization/package.nls.zh-cn.json +++ b/packages/pyright-internal/src/localization/package.nls.zh-cn.json @@ -374,6 +374,7 @@ "paramAnnotationMissing": "参数“{name}”缺少类型批注", "paramAssignmentMismatch": "无法将\"{sourceType}\"类型的表达式分配给\"{paramType}\"类型的参数", "paramNameMissing": "没有名为“{name}”的参数", + "paramSpecArgsKwargsDuplicate": "已提供 ParamSpec \"{type}\" 的参数", "paramSpecArgsKwargsUsage": "ParamSpec 的 \"args\" 和 \"kwargs\" 属性必须同时出现在函数签名中", "paramSpecArgsMissing": "缺少 ParamSpec“{type}”的参数", "paramSpecArgsUsage": "ParamSpec 的 \"args\" 属性仅在与 *args 参数一起使用时有效", diff --git a/packages/pyright-internal/src/localization/package.nls.zh-tw.json b/packages/pyright-internal/src/localization/package.nls.zh-tw.json index d061f01ae7a2..6320308c6a29 100644 --- a/packages/pyright-internal/src/localization/package.nls.zh-tw.json +++ b/packages/pyright-internal/src/localization/package.nls.zh-tw.json @@ -374,6 +374,7 @@ "paramAnnotationMissing": "參數 \"{name}\" 遺漏了型別註釋", "paramAssignmentMismatch": "無法將型別 \"{sourceType}\" 的運算式指派給型別 \"{paramType}\" 的參數", "paramNameMissing": "沒有名為 \"{name}\" 的參數", + "paramSpecArgsKwargsDuplicate": "ParamSpec \"{type}\" 的引數已提供", "paramSpecArgsKwargsUsage": "ParamSpec 的 \"args\" 和 \"kwargs\" 屬性都必須出現在函式簽章內", "paramSpecArgsMissing": "ParamSpec \"{type}\" 的引數遺失", "paramSpecArgsUsage": "只有搭配 *args 參數使用時,ParamSpec 的 \"args\" 屬性才有效", diff --git a/packages/pyright-internal/src/tests/harness/fourslash/testState.ts b/packages/pyright-internal/src/tests/harness/fourslash/testState.ts index f1550a1870c8..1b86ff0382ca 100644 --- a/packages/pyright-internal/src/tests/harness/fourslash/testState.ts +++ b/packages/pyright-internal/src/tests/harness/fourslash/testState.ts @@ -693,6 +693,13 @@ export class TestState { continue; } + const uri = Uri.file(range.fileName, this.serviceProvider); + const sourceFile = this.program.getSourceFile(uri); + if (!sourceFile) { + this.raiseError(`source file not found: ${range.fileName}`); + } + const diagnostics = sourceFile.getDiagnostics(this.configOptions) || []; + const codeActions = await this._getCodeActions(range); if (verifyMode === 'exact') { if (codeActions.length !== map[name].codeActions.length) { @@ -734,8 +741,17 @@ export class TestState { if (verifyMode === 'excluded' && matches.length > 0) { this.raiseError(`unexpected result: ${stringify(map[name])}`); } else if (verifyMode !== 'excluded' && matches.length !== 1) { + const uri = Uri.file('test2.py', this.serviceProvider); + const sourceFile = this.program.getSourceFile(uri); + const symbolsInTest2 = sourceFile + ? ', symbols in test2.py: ' + + Array.from(sourceFile.getModuleSymbolTable()?.keys() ?? []).join(',') + : ''; + this.raiseError( - `doesn't contain expected result: ${stringify(expected)}, actual: ${stringify(codeActions)}` + `doesn't contain expected result: ${stringify(expected)}, actual: ${stringify( + codeActions + )}, diagnostics: ${stringify(diagnostics)}${symbolsInTest2}` ); } } diff --git a/packages/pyright-internal/src/tests/harness/fourslash/testStateUtils.ts b/packages/pyright-internal/src/tests/harness/fourslash/testStateUtils.ts index 1a37068e35b4..885558580910 100644 --- a/packages/pyright-internal/src/tests/harness/fourslash/testStateUtils.ts +++ b/packages/pyright-internal/src/tests/harness/fourslash/testStateUtils.ts @@ -14,7 +14,7 @@ import { combinePaths, getBaseFileName } from '../../../common/pathUtils'; import { getStringComparer } from '../../../common/stringUtils'; import * as vfs from '../vfs/filesystem'; import { FourSlashData, FourSlashFile, GlobalMetadataOptionNames, Marker, MetadataOptionNames } from './fourSlashTypes'; -import { configFileName } from '../../../analyzer/serviceUtils'; +import { configFileName } from '../../../common/pathConsts'; export function createVfsInfoFromFourSlashData(projectRoot: string, testData: FourSlashData) { const metaProjectRoot = testData.globalOptions[GlobalMetadataOptionNames.projectRoot];